{"version":3,"mappings":"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kBACA,eACA,oBACA,mBACA,kBACA,oBACA,iCACA,8BACA,4BACA,0BACA,6BACA,4BACA,iCACA,0BACA,6BACA,6BACA,4BACA,4BACA,gBACA,mBACA,mBACA,gBACA,yBACA,mBACA,gBACA,iBACA,uBACA,oBACA,iBACA,gBACA,wBACA,uBACA,iBACA,kBACA,kBACA,iBACA,kBACA,oBACA,qBACA,kBACA,iBACA,kBACA,uBACA,iBACA,uBACA,iBACA,kBACA,mBACA,mBACA,mBACA,sBACA,sBACA,oBACA,oBACA,kBACA,oBACA,qBACA,kBACA,qBACA,oBACA,oBACA,iBACA,kBACA,iBACA,qBACA,+BACA,uBACA,0BACA,6BACA,4BACA,wBACA,4BACA,0BACA,iBACA,kBACA,kBACA,iBACA,8BACA,8BACA,qBACA,iBACA,eACA,sBACA,wBACA,iBACA,kBACA,iBACA,kBACA,qBACA,oBACA,mBACA,oBACA,iBACA,qBACA,sBACA,mBACA,kBACA,oBACA,qBACA,qBACA,iBACA,mBACA,kBACA,eACA,kBACA,8BACA,8BACA,iCACA,kBACA,iBACA,sBACA,qBACA,kBACA,yBACA,wBACA,sBACA,sBACA,sBACA,uBACA,iBACA,iBACA,mBACA,qBACA,mBACA,mBACA,wBACA,oBACA,uBACA,gBACA,wBACA,mBACA,mBACA,mBACA,oBACA,qBACA,wBACA,sBACA,gBACA,sBACA,kBACA,kBACA,kBACA,oBACA,qBACA,mBACA,kBACA,sBACA,mBACA,mBACA,4BACA,uBACA,oBACA,qBACA,oBACA,qBACA,mBACA,mBACA,oBACA,sBACA,YACA,cACA,aACA,cACA,aACA,cACA,gBACA,cACA,eACA,eACA,YACA,eACA,eACA,cACA,eACA,cACA,aACA,kBACA,eACA,gBACA,aACA,YACA,aACA,gBACA,iBACA,YACA,cACA,mBACA,iBACA,YACA,eACA,gBACA,eACA,gBACA,iBACA,aACA,iBACA,eACA,iBACA,gBACA,eACA,mBACA,oBACA,eACA,cACA,aACA,eACA,gBACA,cACA,cACA,eACA,oBACA,mBACA,YACA,YACA,kBACA,iBACA,iBACA,aACA,iBACA,cACA,gBACA,iBACA,aACA,gBACA,iBACA,qBACA,cACA,gBACA,eACA,cACA,eACA,aACA,aACA,mBACA,cACA,gBACA,iBACA,mBACA,eACA,cACA,qBACA,eACA,kBACA,mBACA,kBACA,sBACA,iBACA,mBACA,qBACA,yBACA,qBACA,mBACA,qBACA,qBACA,wBACA,mBACA,mBACA,kBACA,mBACA,qBACA,sBACA,sBACA,kBACA,mBACA,mBACA,iBACA,mBACA,gBACA,kBACA,gBACA,oBACA,kBACA,mBACA,kBACA,kBACA,kBACA,oBACA,gBACA,mBACA,kBACA,kBACA,qBACA,kBACA,gBACA,qBACA,cACA,eACA,gBACA,mBACA,gBACA,oBACA,gBACA,eACA,mBACA,eACA,gBACA,gBACA,iBACA,cACA,eACA,mBACA,gBACA,cACA,cACA,gBACA,oBACA,kBACA,iBACA,oBACA,gBACA,eACA,mBACA,iBACA,gBACA,mBACA,kBACA,eACA,iBACA,gBACA,iBACA,mBACA,gBACA,gBACA,oBACA,gBACA,sBACA,gBACA,mBACA,eACA,gBACA,mBACA,cACA,kBACA,mBACA,iBACA,iBACA,eACA,mBACA,uBACA,kBACA,gBACA,iBACA,gBACA,oBACA,kBACA,eACA,mBACA,oBACA,kBACA,sBACA,eACA,mBACA,mBACA,qBACA,iBACA,oBACA,iBACA,oBACA,iBACA,gBACA,eACA,kBACA,iBACA,oBACA,gBACA,mBACA,kBACA,uBACA,oBACA,iBACA,iBACA,iBACA,oBACA,eACA,gBACD,ECpaMilD,GAAsB/Q,GAAU,WAAY,iBAAkB,MAAM,EACpEgR,GAAehR,GAAU,WAAY,UAAW,EAAK,EACrDiR,GAAUD,GACbA,GAAa,IAAI,CAAC,CAAE,KAAAE,EAAM,KAAA5gE,CAAI,KAAQ,CACtC,GAAI4gE,EAAK,YAAW,EAAG,QAAQ,IAAK,GAAG,EACvC,KAAA5gE,CACH,EAAI,EACD,GAEH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","names":["activePinia","setActivePinia","pinia","piniaSymbol","isPlainObject","o","MutationType","createPinia","scope","effectScope","state","ref","_p","toBeInstalled","markRaw","app","plugin","noop","addSubscription","subscriptions","callback","detached","onCleanup","removeSubscription","getCurrentScope","onScopeDispose","triggerSubscriptions","args","fallbackRunWithContext","fn","ACTION_MARKER","ACTION_NAME","mergeReactiveObjects","target","patchToApply","value","key","subPatch","targetValue","isRef","isReactive","skipHydrateSymbol","shouldHydrate","obj","assign","isComputed","createOptionsStore","id","options","hot","actions","getters","initialState","store","setup","localState","toRefs","computedGetters","name","computed","createSetupStore","$id","isOptionsStore","optionsForPlugin","$subscribeOptions","isListening","isSyncListening","actionSubscriptions","debuggerEvents","activeListener","$patch","partialStateOrMutator","subscriptionMutation","myListenerId","nextTick","$reset","newState","$state","$dispose","action","wrappedAction","afterCallbackSet","onErrorCallbackSet","after","onError","ret","error","partialStore","stopWatcher","watch","reactive","setupStore","prop","actionValue","toRaw","extender","defineStore","setupOptions","isSetupStore","useStore","hasContext","hasInjectionContext","inject","mapStoreSuffix","mapStores","stores","reduced","spawnDialog","dialog","props","container","element","resolve","reject","createApp","rest","payload","root","factory","module","this","global","Toastify","version","divElement","property","avatarElement","closeElement","event","width","self","x","getAxisOffsetAValue","y","xOffset","yOffset","rootElement","elementToInsert","toastElement","topLeftOffsetSize","topRightOffsetSize","offsetSize","allToasts","classUsed","i","containsClass","height","offset","axis","elem","yourClass","_hoisted_1","_hoisted_2","_hoisted_3","_sfc_main","defineComponent","__props","shouldShowAlert","iconPath","mdiAlertDecagram","mdiCheckboxMarkedCircle","mdiInformation","mdiAlert","_ctx","_cache","openBlock","createElementBlock","normalizeClass","unref","isLegacy","renderSlot","createVNode","NcIconSvgWrapper","createElementVNode","toDisplayString","createCommentVNode","NcNoteCard","_export_sfc","IconMove","IconCopy","gtBuilder","getGettextBuilder","data","language","translations","bundle","translation","gt","n","t","logger","getLoggerBuilder","FilePickerClosed","FilePicker","title","multiSelect","mimeTypeFilter","directoriesAllowed","noMenu","buttons","path","filter","canPick","disabledNavigation","FilePickerVue","__vitePreload","nodes","node","FilePickerBuilder","ms","button","type","basename","label","allow","getFilePickerBuilder","TOAST_ARIA_LIVE_OFF","TOAST_ARIA_LIVE_POLITE","TOAST_ARIA_LIVE_ASSERTIVE","ToastAriaLive","ToastAriaLive2","TOAST_DEFAULT_TIMEOUT","showMessage","classes","isNode","ariaLive","toast","showError","text","showWarning","showInfo","showSuccess","__emit","emit","dialogButtons","handleUnload","onMounted","onUnmounted","createBlock","NcDialog","$event","withCtx","Dialog","#name","#text","#buttons","#severity","severity","DialogBuilder","ActionGlobalMixin","NC_ACTIONS_IS_SEMANTIC_MENU","createElementId","useModel","mdiCheckboxBlankOutline","mdiCheckboxMarked","_hoisted_4","_hoisted_5","_sfc_render","$props","$setup","$data","$options","_component_NcIconSvgWrapper","resolveComponent","withDirectives","vModelCheckbox","NcActionCheckbox","nameId","createTextVNode","NcEmptyContent","mergeModels","__expose","modelValue","focus","select","attrs","useAttrs","textAreaElement","useTemplateRef","internalPlaceholder","ariaDescribedby","ariaDescribedby2","handleInput","mergeProps","mdiCheck","mdiAlertCircleOutline","NcTextArea","Binary","aString","aValue","b64","o1","o2","o3","h1","h2","h3","h4","bits","ac","enc","tmp_arr","r","dec","DURATION_LETTERS","DATA_PROPS_TO_COPY","Duration","aSeconds","string","aStr","pos","dict","chunks","numeric","parseDurationChunk","aData","seconds","secs","trunc","aOther","thisSeconds","otherSeconds","str","hasWeeks","letter","number","object","num","isStrictlyNaN","Period","parts","Time","end","aProp","aLenient","fromDateOrDateTimeString","dateProp","dt","month","year","_daysInMonth","days","aDayOfYear","aYear","doy","tt","is_leap","strictParseInt","zone","zoneId","Timezone","timeData","aProperty","aDate","useUTC","aZone","aWeekStart","dow","wkst","yr","LTRS","dom","#epochTime","a","b","attr","val","day","hour","minute","second","timezone","TimezoneService","firstDow","dowCacheKey","q","m","Y","h","result","aFirstDayOfWeek","delta","aDayOfWeek","aPos","daysInMonth","weekday","start","otherDay","startDow","endDow","wnCacheKey","week1","isoyear","daysBetween","answer","aDuration","mult","unixTime","other","tz","rc","copy","zone_equals","design","pad2","aExtraDays","aExtraHours","aExtraMinutes","aExtraSeconds","aTime","minutesOverflow","hoursOverflow","daysOverflow","yearsOverflow","time","date","len","CHAR","VALUE_DELIMITER","PARAM_DELIMITER","PARAM_NAME_DELIMITER","DEFAULT_VALUE_TYPE$1","DEFAULT_PARAM_TYPE","RFC6868_REPLACE_MAP$1","parse","input","err","line","ParserError","designSet","valuePos","paramPos","lastParamIndex","lastValuePos","params","parsedParams","parsedParamLength","accumulator","currentValue","newComponent","valueType","multiValue","structuredValue","propertyDetails","splitName","ungroupedName","lastParam","delim","lcname","mvdelim","extendedValue","propValuePos","nextPos","length_before","delimiter","buffer","innerMulti","lastPos","unescapedIndexOf","firstChar","newlineOffset","OPTIONS","from_zone","to_zone","utcOffset","#utcTimezone","#localTimezone","change","hours","minutes","Component","jCal","tt_change","change_num","change_num_to_use","step","clone","zone_change","tmp_change","prev_zone_change","want_daylight","idx","binsearchInsert","today","changesEndYear","subcomps","compLen","compIdx","aComponent","changes","dtstart","convert_tzoffset","init_changes","changebase","rdate","rrule","iterator","occ","zones","utc","tzid","updateTimezones","vcal","allsubs","properties","vtimezones","reqTzid","comp","formatClassType","search","list","seekVal","cmpfunc","low","high","mid","cmpval","aSrc","aDeep","arr","foldline","aLine","line_length","cp","ICALmodule","extend","source","descr","helpers","UtcOffset","instance","factor","VCardTime","aIcalType","part","v","s","e","tmz","splitzone","tm","dtlen","tmlen","hasDashDate","hasDashTime","icaltype","d","mm","hasYear","hasMonth","hasDay","hasHour","hasMinute","hasSecond","datepart","timepart","RecurIterator","Recur","InvalidRecurrenceRuleError","wkdy","dayName","untilYear","tempLast","initLast","bydow","dayOfMonth","normalized","again","before","valid","invalid_count","inc","this_freq","end_of_data","week_no","rules","newRules","ruleIdx","rule","isInit","byMonthDay","byDay","dateIdx","dateLen","dayLen","dataIsValid","lastDay","initMonth","nextMonth","monthsCounter","next","dayIdx","data_valid","setpos","setpos_total","last_day","coded_day","startOfWeek","matches","aRuleType","aInterval","aDateAttr","aFollowingAttr","aPreviousIncr","has_by_rule","dta","years","aFactor","aNextIncrement","nextunit","validWeeks","monthIdx","first_week","last_week","weekIdx","partCount","t1","t2","monthday","t3","first_dow","doy_offset","last_dow","by_month_day","spIndex","bydayParts","month_day","first_matching_day","last_matching_day","expandedDays","weekno","daysInYear","days_list","tmp","start_dow","end_dow","end_year_day","tmp_start_doy","first","last","this_dow","aRules","j","one","two","indexMapValue","ruleMapValue","pass","ruleType","bydata","weekNo","req","deftime","VALID_DAY_NAMES","VALID_BYDAY_PART","DOW_MAP","REVERSE_DOW_MAP","entry","ALLOWED_FREQ","fmtIcal","values","ucname","partDesign","partArr","partSet","optionDesign","aStart","aType","aValues","aStartTime","aRecurrenceId","iter","uckey","res","k","kparts","parseNumericValue","min","max","FROM_ICAL_NEWLINE","TO_ICAL_NEWLINE","FROM_VCARD_NEWLINE","TO_VCARD_NEWLINE","createTextType","fromNewline","toNewline","structuredEscape","replaceNewline","regEx","DEFAULT_TYPE_TEXT","DEFAULT_TYPE_TEXT_MULTI","DEFAULT_TYPE_TEXT_STRUCTURED","DEFAULT_TYPE_INTEGER","DEFAULT_TYPE_DATETIME_DATE","DEFAULT_TYPE_DATETIME","DEFAULT_TYPE_URI","DEFAULT_TYPE_UTCOFFSET","DEFAULT_TYPE_RECUR","DEFAULT_TYPE_DATE_ANDOR_TIME","replaceNewlineReplace","newline","commonProperties","commonValues","parsed","icalParams","icalValues","aBinary","aRecur","icalProperties","vcardValues","isFromIcal","lastChar","signChar","sign","c","vcardParams","vcardProperties","vcard3Values","vcard3Params","vcard3Properties","icalSet","vcardSet","vcard3Set","componentName","LINE_ENDING","DEFAULT_VALUE_TYPE","RFC6868_REPLACE_MAP","stringify","component","propIdx","propLen","designSetName","comps","noFold","jsName","groupName","paramName","paramDesign","propDetails","isDefault","force","NAME_INDEX$1","PROP_INDEX","TYPE_INDEX","VALUE_INDEX","Property","parent","p","designSetChanged","index","parameters","details","NAME_INDEX","PROPERTY_INDEX","COMPONENT_INDEX","PROPERTY_NAME_INDEX","PROPERTY_VALUE_INDEX","parentDesign","versionProp","jCalLen","jCalIndex","cache","nameOrObject","objects","cached","nameOrComp","removed","nameOrProp","hydratedZone","RecurExpansion","item","compare","maxTries","currentTry","toJSON","propertyName","iters","iterTime","iterIdx","chosenIter","Event","compareRangeException","rangeItem","occurrence","utcId","rangeExceptionId","exception","startDiff","original","newStart","startTime","endDate","duration","propName","ComponentParser","ical","components","_createElementBlock","_mergeProps","_createElementVNode","_openBlock","ShareType","GROUP_ALL_CONTACTS","GROUP_NO_GROUP_CONTACTS","GROUP_RECENTLY_CONTACTED","CHART_ALL_CONTACTS","ROUTE_CIRCLE","ROUTE_CHART","ROUTE_USER_GROUP","CONTACTS_SETTINGS","ELLIPSIS_COUNT","MEMBER_LEVEL_NONE","MEMBER_LEVEL_MEMBER","MEMBER_LEVEL_MODERATOR","MEMBER_LEVEL_ADMIN","MEMBER_LEVEL_OWNER","MEMBER_TYPE_USER","MEMBER_TYPE_GROUP","MEMBER_TYPE_MAIL","MEMBER_TYPE_CONTACT","MEMBER_TYPE_CIRCLE","CIRCLE_DESC","CIRCLE_CONFIG_PERSONAL","CIRCLE_CONFIG_SYSTEM","CIRCLE_CONFIG_VISIBLE","CIRCLE_CONFIG_OPEN","CIRCLE_CONFIG_INVITE","CIRCLE_CONFIG_REQUEST","CIRCLE_CONFIG_FRIEND","CIRCLE_CONFIG_PROTECTED","CIRCLE_CONFIG_NO_OWNER","CIRCLE_CONFIG_HIDDEN","CIRCLE_CONFIG_BACKEND","CIRCLE_CONFIG_LOCAL","CIRCLE_CONFIG_ROOT","CIRCLE_CONFIG_CIRCLE_INVITE","CIRCLE_CONFIG_FEDERATED","CIRCLES_MEMBER_LEVELS","PUBLIC_CIRCLE_CONFIG","CIRCLES_MEMBER_GROUPING","SHARES_TYPES_MEMBER_MAP","MemberLevels","MemberTypes","CircleConfigs","MemberStatus","getChart","allNodes","currentNode","children","child","transformNode","contact","generateUrl","otherContacts","$store","CircleEdit","getCircles","axios","generateOcsUrl","getCircle","circleId","createCircle","personal","local","deleteCircle","editCircle","joinCircle","leaveCircle","getCircleMembers","addMembers","members","deleteMember","memberId","response","changeMemberLevel","level","acceptMember","editCircleSetting","setting","Member","circle","Circle","initiator","owner","member","singleId","config","IsMobileMixin","useIsMobile","mitt","exports","hasOwnProperty","placeholder","mapping","require$$0","fallbackHolder","require$$1","push","baseArity","func","baseAry","cloneArray","array","length","createCloner","flatSpread","lastIndex","otherArgs","wrapImmutable","cloner","baseConvert","util","isLib","isObj","defaultHolder","forceCurry","forceFixed","forceRearg","pristine","ary","curry","each","isArray","isError","isFunction","isWeakMap","keys","rearg","toInteger","toPath","aryMethodKeys","wrappers","castArray","iteratee","arity","mixin","pairs","pair","nthArg","indexes","runInContext","context","castCap","iterateeRearg","iterateeAry","castCurry","castFixed","castRearg","cloneByPath","nested","convertLib","_","createConverter","realName","methodName","oldOptions","newUtil","newFunc","newOptions","overArg","transform","wrap","wrapped","wrapper","aryKey","otherName","afterRearg","alias","_baseConvert","identity","identity_1","freeGlobal","_freeGlobal","freeSelf","_root","Symbol","_Symbol","objectProto","nativeObjectToString","symToStringTag","getRawTag","isOwn","tag","unmasked","_getRawTag","objectToString","_objectToString","require$$2","nullTag","undefinedTag","baseGetTag","_baseGetTag","isObject","isObject_1","asyncTag","funcTag","genTag","proxyTag","isFunction_1","coreJsData","_coreJsData","maskSrcKey","uid","isMasked","_isMasked","funcProto","funcToString","toSource","_toSource","require$$3","reRegExpChar","reIsHostCtor","reIsNative","baseIsNative","pattern","_baseIsNative","getValue","_getValue","getNative","_getNative","WeakMap","_WeakMap","metaMap","_metaMap","baseSetData","_baseSetData","objectCreate","baseCreate","proto","_baseCreate","createCtor","Ctor","thisBinding","_createCtor","WRAP_BIND_FLAG","createBind","bitmask","thisArg","isBind","_createBind","apply","_apply","nativeMax","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","_composeArgs","composeArgsRight","holdersIndex","rightIndex","rightLength","_composeArgsRight","countHolders","_countHolders","baseLodash","_baseLodash","MAX_ARRAY_LENGTH","LazyWrapper","_LazyWrapper","noop_1","getData","_getData","realNames","_realNames","getFuncName","otherFunc","_getFuncName","LodashWrapper","chainAll","_LodashWrapper","isArray_1","isObjectLike","isObjectLike_1","copyArray","_copyArray","wrapperClone","_wrapperClone","require$$4","require$$5","lodash","wrapperLodash","isLaziable","funcName","_isLaziable","HOT_COUNT","HOT_SPAN","nativeNow","shortOut","count","lastCalled","stamp","remaining","_shortOut","setData","_setData","reWrapDetails","reSplitDetails","getWrapDetails","match","_getWrapDetails","reWrapComment","insertWrapDetails","_insertWrapDetails","constant","constant_1","defineProperty","_defineProperty","baseSetToString","_baseSetToString","setToString","_setToString","arrayEach","_arrayEach","baseFindIndex","predicate","fromIndex","fromRight","_baseFindIndex","baseIsNaN","_baseIsNaN","strictIndexOf","_strictIndexOf","baseIndexOf","_baseIndexOf","arrayIncludes","_arrayIncludes","WRAP_BIND_KEY_FLAG","WRAP_CURRY_FLAG","WRAP_CURRY_RIGHT_FLAG","WRAP_PARTIAL_FLAG","WRAP_PARTIAL_RIGHT_FLAG","WRAP_ARY_FLAG","WRAP_REARG_FLAG","WRAP_FLIP_FLAG","wrapFlags","updateWrapDetails","_updateWrapDetails","setWrapToString","reference","_setWrapToString","WRAP_CURRY_BOUND_FLAG","createRecurry","wrapFunc","argPos","isCurry","newHolders","newHoldersRight","newPartials","newPartialsRight","newData","_createRecurry","getHolder","_getHolder","MAX_SAFE_INTEGER","reIsUint","isIndex","_isIndex","nativeMin","reorder","arrLength","oldArray","_reorder","PLACEHOLDER","replaceHolders","resIndex","_replaceHolders","require$$6","require$$7","require$$8","createHybrid","partialsRight","holdersRight","isAry","isBindKey","isFlip","holdersCount","_createHybrid","createCurry","_createCurry","createPartial","_createPartial","mergeData","srcBitmask","newBitmask","isCommon","isCombo","_mergeData","reWhitespace","trimmedEndIndex","_trimmedEndIndex","reTrimStart","baseTrim","_baseTrim","symbolTag","isSymbol","isSymbol_1","NAN","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","toNumber","isBinary","toNumber_1","INFINITY","MAX_INTEGER","toFinite","toFinite_1","remainder","toInteger_1","require$$9","FUNC_ERROR_TEXT","createWrap","setter","_createWrap","guard","ary_1","baseAssignValue","_baseAssignValue","eq","eq_1","assignValue","objValue","_assignValue","copyObject","customizer","isNew","newValue","_copyObject","baseTimes","_baseTimes","argsTag","baseIsArguments","_baseIsArguments","propertyIsEnumerable","isArguments","isArguments_1","stubFalse","stubFalse_1","freeExports","freeModule","moduleExports","Buffer","nativeIsBuffer","isBuffer","isLength","isLength_1","arrayTag","boolTag","dateTag","errorTag","mapTag","numberTag","objectTag","regexpTag","setTag","stringTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","typedArrayTags","baseIsTypedArray","_baseIsTypedArray","baseUnary","_baseUnary","freeProcess","nodeUtil","types","nodeIsTypedArray","isTypedArray","isTypedArray_1","arrayLikeKeys","inherited","isArr","isArg","isBuff","isType","skipIndexes","_arrayLikeKeys","isPrototype","_isPrototype","arg","_overArg","nativeKeys","_nativeKeys","baseKeys","_baseKeys","isArrayLike","isArrayLike_1","keys_1","baseAssign","_baseAssign","listCacheClear","_listCacheClear","assocIndexOf","_assocIndexOf","arrayProto","splice","listCacheDelete","_listCacheDelete","listCacheGet","_listCacheGet","listCacheHas","_listCacheHas","listCacheSet","_listCacheSet","ListCache","entries","_ListCache","stackClear","_stackClear","stackDelete","_stackDelete","stackGet","_stackGet","stackHas","_stackHas","Map","_Map","nativeCreate","_nativeCreate","hashClear","_hashClear","hashDelete","_hashDelete","HASH_UNDEFINED","hashGet","_hashGet","hashHas","_hashHas","hashSet","_hashSet","Hash","_Hash","mapCacheClear","_mapCacheClear","isKeyable","_isKeyable","getMapData","map","_getMapData","mapCacheDelete","_mapCacheDelete","mapCacheGet","_mapCacheGet","mapCacheHas","_mapCacheHas","mapCacheSet","size","_mapCacheSet","MapCache","_MapCache","LARGE_ARRAY_SIZE","stackSet","_stackSet","Stack","_Stack","nativeKeysIn","_nativeKeysIn","baseKeysIn","isProto","_baseKeysIn","keysIn","keysIn_1","baseAssignIn","_baseAssignIn","allocUnsafe","cloneBuffer","isDeep","arrayFilter","_arrayFilter","stubArray","stubArray_1","nativeGetSymbols","getSymbols","symbol","_getSymbols","copySymbols","_copySymbols","arrayPush","_arrayPush","getPrototype","_getPrototype","getSymbolsIn","_getSymbolsIn","copySymbolsIn","_copySymbolsIn","baseGetAllKeys","keysFunc","symbolsFunc","_baseGetAllKeys","getAllKeys","_getAllKeys","getAllKeysIn","_getAllKeysIn","DataView","_DataView","Promise","_Promise","Set","_Set","promiseTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","ctorString","_getTag","initCloneArray","_initCloneArray","Uint8Array","_Uint8Array","cloneArrayBuffer","arrayBuffer","_cloneArrayBuffer","cloneDataView","dataView","_cloneDataView","reFlags","cloneRegExp","regexp","_cloneRegExp","symbolProto","symbolValueOf","cloneSymbol","_cloneSymbol","cloneTypedArray","typedArray","_cloneTypedArray","initCloneByTag","_initCloneByTag","initCloneObject","_initCloneObject","baseIsMap","_baseIsMap","nodeIsMap","isMap","isMap_1","baseIsSet","_baseIsSet","nodeIsSet","isSet","isSet_1","require$$10","require$$11","require$$12","require$$13","require$$14","require$$15","require$$16","require$$17","require$$18","require$$19","require$$20","require$$21","CLONE_DEEP_FLAG","CLONE_FLAT_FLAG","CLONE_SYMBOLS_FLAG","cloneableTags","baseClone","stack","isFlat","isFull","isFunc","stacked","subValue","_baseClone","clone_1","curry_1","objectCtorString","isPlainObject_1","domExcTag","isError_1","isWeakMap_1","setCacheAdd","_setCacheAdd","setCacheHas","_setCacheHas","SetCache","_SetCache","arraySome","_arraySome","cacheHas","_cacheHas","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","equalArrays","equalFunc","isPartial","othLength","arrStacked","othStacked","seen","arrValue","othValue","compared","othIndex","_equalArrays","mapToArray","_mapToArray","setToArray","set","_setToArray","equalByTag","convert","_equalByTag","equalObjects","objProps","objLength","othProps","objStacked","skipCtor","objCtor","othCtor","_equalObjects","baseIsEqualDeep","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","_baseIsEqualDeep","baseIsEqual","_baseIsEqual","baseIsMatch","matchData","noCustomizer","srcValue","_baseIsMatch","isStrictComparable","_isStrictComparable","getMatchData","_getMatchData","matchesStrictComparable","_matchesStrictComparable","baseMatches","_baseMatches","reIsDeepProp","reIsPlainProp","isKey","_isKey","memoize","resolver","memoized","memoize_1","MAX_MEMOIZE_SIZE","memoizeCapped","_memoizeCapped","rePropName","reEscapeChar","stringToPath","quote","subString","_stringToPath","arrayMap","_arrayMap","symbolToString","baseToString","_baseToString","toString","toString_1","castPath","_castPath","toKey","_toKey","baseGet","_baseGet","get","defaultValue","get_1","baseHasIn","_baseHasIn","hasPath","hasFunc","_hasPath","hasIn","hasIn_1","baseMatchesProperty","_baseMatchesProperty","baseProperty","_baseProperty","basePropertyDeep","_basePropertyDeep","property_1","baseIteratee","_baseIteratee","iteratee_1","spreadableSymbol","isFlattenable","_isFlattenable","baseFlatten","depth","isStrict","_baseFlatten","flatten","flatten_1","overRest","_overRest","flatRest","_flatRest","rearg_1","toPath_1","_util","convert_1","basePropertyOf","_basePropertyOf","htmlEscapes","escapeHtmlChar","_escapeHtmlChar","reUnescapedHtml","reHasUnescapedHtml","escape","_escape","_falseOptions","IconPlus","IconAddressBook","IconEmail","IconPhone","IconDelete","IconPencil","IconMapMaker","IconMultiple","IconWeb","IconCakeVariant","IconMessageReplyText","IconHeart","IconAccountSupervisor","IconAccount","IconCalendarHeartOutline","IconCoffin","IconBadgeAccountHorizontal","IconCloud","IconMessageProcessing","IconMap","IconText","IconTranslateVariant","IconAccountBoxMultiple","IconAccountSwitch","_createBlock","_component_IconPlus","_component_IconAddressBook","_component_IconEmail","_component_IconPhone","_component_IconDelete","_component_IconPencil","_component_IconMapMaker","_component_IconMultiple","_component_IconWeb","_component_IconCakeVariant","_component_IconMessageReplyText","_component_IconHeart","_component_IconAccountSupervisor","_component_IconAccount","_component_IconCalendarHeartOutline","_component_IconCoffin","_component_IconBadgeAccountHorizontal","_component_IconCloud","_component_IconMessageProcessing","_component_IconMap","_component_IconText","_component_IconTranslateVariant","_component_IconAccountBoxMultiple","_component_IconAccountSwitch","OrgChartsMixin","sanitizeSVG_1","svgDisallowed","getWindow","readAsText","svg","isFile","fileReader","sanitizeSVG","window","svgText","playground","svgEl","hasScriptAttr","globalName","b64Data","contentType","sliceSize","byteCharacters","byteArrays","slice","byteNumbers","byteArray","blob","byteToHex","unsafeStringify","getRandomValues","rnds8","rng","randomUUID","native","_v4","buf","rnds","v4","addGroupedProperties","vCard","madeChanges","propGroup","setPropertyAlias","setTypeMultiValueSeparateDQuote","ICAL","updateDesignSet","getDevtoolsGlobalHook","getTarget","isProxyAvailable","HOOK_SETUP","HOOK_PLUGIN_SETTINGS_SET","supported","perf","isPerformanceSupported","_a","now","ApiProxy","hook","defaultSettings","localSettingsSaveId","currentSettings","raw","pluginId","_target","setupDevtoolsPlugin","pluginDescriptor","setupFn","descriptor","enableProxy","proxy","storeKey","forEachValue","isPromise","partial","genericSubscribe","subs","resetStore","installModule","resetStoreState","oldState","oldScope","wrappedGetters","computedObj","computedCache","enableStrictMode","rootState","isRoot","namespace","parentState","getNestedState","moduleName","makeLocalContext","mutation","namespacedType","registerMutation","handler","registerAction","getter","registerGetter","noNamespace","_type","_payload","_options","unifyObjectStyle","makeLocalGetters","gettersProxy","splitPos","localType","rawGetter","LABEL_VUEX_BINDINGS","MUTATIONS_LAYER_ID","ACTIONS_LAYER_ID","INSPECTOR_ID","actionId","addDevtools","api","COLOR_LIME_500","flattenStoreForInspectorTree","formatStoreForInspectorTree","modulePath","formatStoreForInspectorState","getStoreModule","COLOR_DARK","COLOR_WHITE","TAG_NAMESPACED","extractNameFromPath","gettersKeys","storeState","tree","transformPathsToObjectTree","canThrow","leafKey","moduleMap","names","cb","Module","rawModule","runtime","rawState","prototypeAccessors$1","ModuleCollection","rawRootModule","update","this$1$1","newModule","rawChildModule","targetModule","Store","plugins","strict","devtools","dispatch","commit","prototypeAccessors","injectKey","useDevtools","sub","committing","isCirclesEnabled","loadState","Node$1","Queue","#head","#tail","#size","Node","current","pLimit","concurrency","validateConcurrency","queue","activeCount","resumeNext","run","function_","arguments_","enqueue","internalResolve","generator","newConcurrency","iterable","promises","Parser","document2","parser","dateObj","childNode","ns","hrefs","hrefNode","privileges","privilegeNode","addressDatas","addressDataNode","collations","collationNode","compNode","calendarDatas","calendarDataNode","users","userNode","DAV","IETF_CALDAV","IETF_CARDDAV","OWNCLOUD","NEXTCLOUD","APPLE","CALENDARSERVER","SABREDAV","NS_MAP","short","namespaceUtility","serializer","prefixMap","getRootSkeleton","skeleton","childrenWrapper","argument","serialize","json","xmlify","xmlDoc","localName","getPrefixedNameForNamespace","attribute","localName2","AttachError","attach","NetworkRequestAbortedError","NetworkRequestError","NetworkRequestHttpError","NetworkRequestServerError","NetworkRequestClientError","Request","baseUrl","defaultHeaders","url","headers","abortSignal","body","destination","overwrite","dPropChildren","method","assignHeaders","getDefaultHeaders","wasRequestSuccessful","responseBody","pathname","slashPos","responses","responseNode","href","parsedProperties","propStats","propStatNode","status","getStatusCodeFromString","propNode","uuidv4","prefix","suffix","uri","isAvailable","uri2","positionLastDash","firstPart","lastPart","DAVEventListener","listener","dListener","listenersToCall","listenersToCallAndRemove","debugFactory","davCollectionPropSet","xmlified","debug$8","DavObject","request","forceReFetch","collection","ex","xmlNamespace","xmlName","mutable","debug$7","DavCollection","updatedProperty","propSet","dPropSet","ownResourceType","foreignResourceType","ownDiff","foreignDiff","identifier","token","collectionType","debug$6","davCollectionPublishable","Base","xml","debug$5","davCollectionShareable","principalScheme","writeable","summary","setProp","oSetChildren","VObject","calendarPropSet$1","debug$4","Calendar","elm","from","to","addressBookDataProperty","Subscription","calendarPropSet","ScheduleInbox","ScheduleOutbox","recipient","calendarData","success","CalendarTrashBin","DeletedCalendar","debug$3","CalendarHome","collections","displayname","color","supportedComponentSet","order","supportedComponent","xmlBody","addressBookPropSet","VCard","debug$2","AddressBook","limit","test","debug$1","AddressBookHome","prinicipalPropSet","Principal","principalURI","debug","DavClient","factories","principalUrl","propFindList","propFindResponse","optionsResponse","address","story","propFindListItem","query","displayName","capacity","features","roomType","propSearch","props2","principalCollectionUrl","principal","calendarHomes","calendarHome","addressBookHomes","addressbookHome","principalCollectionSets","principalCollection","dav","xhrProvider","getRequestToken","xhr","oldOpen","client","generateRemoteUrl","parseVcf","addressbook","vCards","contacts","Contact","usePrincipalsStore","sortAddressbooks","addressbooks","getContactCount","ab","groupA","getPriorityGroup","groupB","countA","countB","principalsStore","addressbookModel","mapDavCollectionToAddressbook","sharee","mapDavShareeToSharee","mutations","newAddressbook","newName","user","isGroup","newSharee","share","shareIndex","MinimalContactProperties","failed","vcf","requests","vData","groups","newContact","settings","circles","failure","newCircle","circleName","isPersonal","isLocal","selection","leave","ActionsMixin","ActionButton","_component_ActionButton","_createVNode","_component_IconCopy","_createTextVNode","omitYear","dateObject","_component_NcActionCheckbox","defaultProfileState","localesState","locales","code","ActionCopyNtoFN","NcActionToggleYear","selectType","prev","fieldOrder","rfcProps","badGenderType","gender","option","opt","duplicateTypes","fixed","results","icalString","param","invalidREV","missingFN","fullName","checks","validate","check","sortData","nameA","nameB","score","sortedContact","oldKey","etag","orderKey","group","groupNames","oldGroupName","newGroupName","total","stage","importState","modules","isEmpty","ContactKindProperties","vcard","uuid","shallowRef","rev","photo","encoding","photoType","photoB64","photoB64Data","imageSvg","b64toBlob","groupsProp","org","MinimalContactPropertiesLower","hookCallback","hooks","setHookCallback","hasOwnProp","isObjectEmpty","isUndefined","isNumber","isDate","arrLen","createUTC","format","locale","createLocalOrUTC","defaultParsingFlags","getParsingFlags","some","fun","isValid","flags","parsedParts","isNowValid","createInvalid","momentProperties","updateInProgress","copyConfig","momentPropertiesLen","Moment","isMoment","warn","msg","deprecate","firstTime","argLen","deprecations","deprecateSimple","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","calendar","mom","output","zeroFill","targetLength","forceSign","absNumber","zerosToFill","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","ordinal","removeFormattingTokens","makeFormatFunction","formatMoment","expandFormat","replaceLongDateFormatTokens","defaultLongDateFormat","longDateFormat","formatUpper","tok","defaultInvalidDate","invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","defaultRelativeTime","relativeTime","withoutSuffix","isFuture","pastFuture","diff","aliases","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedInput","normalizedProp","priorities","getPrioritizedUnits","unitsObj","u","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","match1to2NoLeadingZero","match1to2HasZero","regexes","addRegexToken","regex","strictRegex","localeData","getParseRegexForToken","unescapeFormat","regexEscape","matched","p1","p2","p3","p4","absFloor","toInt","argumentForCoercion","coercedNumber","tokens","addParseToken","tokenLen","addWeekParseToken","addTimeToArrayFromToken","isLeapYear","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","getSetYear","makeGetSet","getIsLeapYear","unit","keepTime","set$1","isUTC","stringGet","stringSet","prioritized","prioritizedLen","mod","indexOf","modMonth","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","localeMonthsShort","handleStrictParse","monthName","ii","llc","localeMonthsParse","setMonth","getSetMonth","getDaysInMonth","monthsShortRegex","computeMonthsParse","monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","shortP","longP","createDate","M","createUTCDate","firstWeekOffset","fwd","fwdlw","dayOfYearFromWeeks","week","localWeekday","weekOffset","dayOfYear","resYear","resDayOfYear","weekOfYear","resWeek","weeksInYear","weekOffsetNext","localeWeek","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","parseIsoWeekday","shiftWeekdays","ws","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","weekdays","localeWeekdaysShort","localeWeekdaysMin","handleStrictParse$1","weekdayName","localeWeekdaysParse","getSetDayOfWeek","getSetLocaleDayOfWeek","getSetISODayOfWeek","weekdaysRegex","computeWeekdaysParse","weekdaysShortRegex","weekdaysMinRegex","minPieces","minp","shortp","longp","hFormat","kFormat","meridiem","lowercase","matchMeridiem","kInput","pos1","pos2","localeIsPM","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","isLower","baseConfig","localeFamilies","globalLocale","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","split","loadLocale","isLocaleNameSane","oldLocale","aliasedRequire","require","getSetGlobalLocale","getLocale","defineLocale","updateLocale","tmpLocale","listLocales","checkOverflow","overflow","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","rfc2822","obsOffsets","configFromISO","l","allowTime","dateFormat","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","weekdayProvided","weekdayActual","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","configFromString","defaults","currentDateArray","nowValue","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","w","weekYear","temp","weekdayOverflow","curWeek","createLocal","skipped","stringLength","totalParsedInputLength","era","meridiemFixWrap","isPm","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","configFromObject","dayOrDate","createFromConfig","prepareConfig","configFromInput","prototypeMin","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","orderLen","isValid$1","createInvalid$1","createDuration","quarters","months","weeks","milliseconds","isDuration","absRound","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","separator","offsetFromString","chunkOffset","matcher","chunk","cloneWithOffset","model","getDateOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","isUtcOffset","isUtc","aspNetRegex","isoRegex","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","base","createAdder","direction","period","dur","isAdding","updateOffset","add","subtract","isString","isMomentInput","isNumberOrStringArray","isMomentInputObject","objectTest","propertyTest","propertyLen","arrayTest","dataTypeTest","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","formats","sod","isAfter","localInput","isBefore","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","wholeMonthDiff","anchor","anchor2","adjust","toISOString","keepOffset","inspect","datetime","inputString","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOf","startOfDate","endOf","valueOf","unix","toDate","toArray","toObject","isValid$2","parsingFlags","invalidAt","creationData","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","localeEras","eras","localeErasParse","eraName","abbr","narrow","localeErasConvertYear","dir","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","erasAbbrRegex","erasNarrowRegex","abbrPieces","namePieces","narrowPieces","erasName","erasAbbr","erasNarrow","addWeekYearFormatToken","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetSecond","getSetMillisecond","parseMs","getZoneAbbr","getZoneName","createUnix","createInZone","preParsePostFormat","proto$1","get$1","field","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","mathAbs","abs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","makeAs","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","valueOf$1","clone$1","get$2","makeGetter","round","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","humanize","argWithSuffix","argThresholds","withSuffix","th","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","proto$2","pluralForm","plurals","pluralize","f","months$1","symbolMap","pluralForm$1","plurals$1","pluralize$1","months$2","symbolMap$1","numberMap","symbolMap$2","numberMap$1","symbolMap$3","numberMap$2","pluralForm$2","plurals$2","pluralize$2","months$3","suffixes","plural","word","forms","relativeTimeWithPlural","lastDigit","last2Digits","symbolMap$4","numberMap$3","symbolMap$5","numberMap$4","symbolMap$6","numberMap$5","relativeTimeWithMutation","specialMutationForYears","lastNumber","softMutation","mutationTable","monthsParse","monthsRegex$1","monthsStrictRegex","monthsShortStrictRegex","fullWeekdaysParse","shortWeekdaysParse","minWeekdaysParse","processRelativeTime","translate","months$4","monthsShort","monthsParse$1","monthsRegex$2","plural$1","translate$1","affix","lookup","processRelativeTime$1","processRelativeTime$2","processRelativeTime$3","months$5","isFunction$1","momentToFormat","monthsShortDot","monthsShort$1","monthsParse$2","monthsRegex$3","monthsShortDot$1","monthsShort$2","monthsParse$3","monthsRegex$4","monthsShortDot$2","monthsShort$3","monthsParse$4","monthsRegex$5","monthsShortDot$3","monthsShort$4","monthsParse$5","monthsRegex$6","processRelativeTime$4","symbolMap$7","numberMap$6","numbersPast","numbersFuture","translate$2","verbalNumber","monthsStrictRegex$1","monthsShortStrictRegex$1","monthsRegex$7","monthsParse$6","monthsShortWithDots","monthsShortWithoutDots","months$6","monthsShort$5","weekdays$1","weekdaysShort","weekdaysMin","months$7","monthsShort$6","weekdays$2","weekdaysShort$1","weekdaysMin$1","processRelativeTime$5","processRelativeTime$6","symbolMap$8","numberMap$7","symbolMap$9","numberMap$8","monthsParse$7","shortMonthsParse","translate$3","weekEndings","translate$4","plural$2","translate$5","$0","$1","$2","suffixes$1","symbolMap$a","numberMap$9","symbolMap$b","numberMap$a","isUpper","processRelativeTime$7","ezafeNumSuffix","ll","symbolMap$c","numberMap$b","months$8","suffixes$2","processRelativeTime$8","processFutureTime","eifelerRegelAppliesToNumber","processPastTime","firstDigit","translateSeconds","translateSingular","special","translate$6","units$1","format$1","relativeTimeWithPlural$1","relativeTimeWithSingular","relativeSeconds","translator","wordKey","lastWeekDays","translate$7","symbolMap$d","numberMap$c","relativeTimeMr","symbolMap$e","numberMap$d","symbolMap$f","numberMap$e","monthsShortWithDots$1","monthsShortWithoutDots$1","monthsParse$8","monthsRegex$8","monthsShortWithDots$2","monthsShortWithoutDots$2","monthsParse$9","monthsRegex$9","symbolMap$g","numberMap$f","monthsNominative","monthsSubjective","monthsParse$a","plural$3","translate$8","relativeTimeWithPlural$2","plural$4","relativeTimeWithPlural$3","monthsParse$b","months$9","days$1","months$a","monthsShort$7","plural$5","translate$9","processRelativeTime$9","translator$1","translator$2","symbolMap$h","numberMap$g","suffixes$3","suffixes$4","numbersNouns","translateFuture","translatePast","translate$a","numberNoun","numberAsNoun","hundred","ten","suffixes$5","processRelativeTime$a","plural$6","relativeTimeWithPlural$4","weekdaysCaseReplace","nounCase","processHoursFunction","months$b","days$2","moment","NcActions","NcActionButton","_component_NcActions","_component_NcActionButton","_Fragment","_renderList","_resolveDynamicComponent","Actions","PropertyTitleIcon","_component_PropertyTitleIcon","_toDisplayString","_renderSlot","_component_Actions","PropertyMixin","debounce","NcSelect","DateTimePicker","PropertyTitle","PropertyActions","objMap","acc","cur","forceYear","ignoreYear","datetimeData","_hoisted_6","_hoisted_8","_component_PropertyTitle","_component_NcSelect","_component_DateTimePicker","_component_PropertyActions","NcTextField","_hoisted_7","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_component_NcTextField","selected","assertString","checkHost","isRegExp","host","isByteLength","_assertString","_interopRequireDefault","_typeof","merge","isFQDN","_merge","default_fqdn_options","tld","isIP","IPv4SegmentFormat","IPv4AddressFormat","IPv4AddressRegExp","IPv6SegmentFormat","IPv6AddressRegExp","ipAddress","isEmail","_checkHost","_isByteLength","_isFQDN","_isIP","default_email_options","splitNameAddress","emailUserPart","gmailUserPart","quotedEmailUser","emailUserUtf8Part","quotedEmailUserUtf8","defaultMaxEmailLength","validateDisplayName","display_name","display_name_without_quotes","contains_illegal","all_start_with_back_slash","display_email","domain","lower_domain","username","_user_parts","noBracketdomain","user_parts","_i","OpenInNewIcon","textarea","_component_NcTextArea","_component_OpenInNewIcon","matchTypes","selectedTypes","intersection","PropertyMultipleText","PropertyDateTime","PropertySelect","PropertyText","selectedType","matchingType","manager","el","inputs","_normalizeClass"],"ignoreList":[0,1,2,3,4,5,6,7,8,9,10,13,14,15,17,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,89,90,91,92,93,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,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,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,259,260,261,262,263,264,266,267,268,269,270,271,273,274,275,298,299,306,307,308,309,310,311,312,313],"sources":["../node_modules/pinia/dist/pinia.mjs","../node_modules/@nextcloud/vue/dist/functions/dialog/index.mjs","../node_modules/toastify-js/src/toastify.js","../node_modules/@nextcloud/vue/dist/chunks/NcNoteCard-Cok_4Fld.mjs","../node_modules/@nextcloud/dialogs/dist/chunks/index-JpgrUA2Z.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcActionCheckbox-DeHAMd23.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcEmptyContent-B8-90BSI.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcTextArea-PIs9Kt0A.mjs","../node_modules/ical.js/dist/ical.js","../node_modules/vue-material-design-icons/Plus.vue","../node_modules/@nextcloud/sharing/dist/share/ShareType.js","../src/models/constants.ts","../src/utils/chartUtils.js","../node_modules/vue-material-design-icons/ContentCopy.vue","../node_modules/vue-material-design-icons/PencilOutline.vue","../node_modules/vue-material-design-icons/TrashCanOutline.vue","../src/services/circles.ts","../node_modules/vue-material-design-icons/AccountMultipleOutline.vue","../src/models/member.ts","../src/models/circle.ts","../src/mixins/IsMobileMixin.ts","../node_modules/mitt/dist/mitt.mjs","../node_modules/lodash/fp/_mapping.js","../node_modules/lodash/fp/placeholder.js","../node_modules/lodash/fp/_baseConvert.js","../node_modules/lodash/identity.js","../node_modules/lodash/_freeGlobal.js","../node_modules/lodash/_root.js","../node_modules/lodash/_Symbol.js","../node_modules/lodash/_getRawTag.js","../node_modules/lodash/_objectToString.js","../node_modules/lodash/_baseGetTag.js","../node_modules/lodash/isObject.js","../node_modules/lodash/isFunction.js","../node_modules/lodash/_coreJsData.js","../node_modules/lodash/_isMasked.js","../node_modules/lodash/_toSource.js","../node_modules/lodash/_baseIsNative.js","../node_modules/lodash/_getValue.js","../node_modules/lodash/_getNative.js","../node_modules/lodash/_WeakMap.js","../node_modules/lodash/_metaMap.js","../node_modules/lodash/_baseSetData.js","../node_modules/lodash/_baseCreate.js","../node_modules/lodash/_createCtor.js","../node_modules/lodash/_createBind.js","../node_modules/lodash/_apply.js","../node_modules/lodash/_composeArgs.js","../node_modules/lodash/_composeArgsRight.js","../node_modules/lodash/_countHolders.js","../node_modules/lodash/_baseLodash.js","../node_modules/lodash/_LazyWrapper.js","../node_modules/lodash/noop.js","../node_modules/lodash/_getData.js","../node_modules/lodash/_realNames.js","../node_modules/lodash/_getFuncName.js","../node_modules/lodash/_LodashWrapper.js","../node_modules/lodash/isArray.js","../node_modules/lodash/isObjectLike.js","../node_modules/lodash/_copyArray.js","../node_modules/lodash/_wrapperClone.js","../node_modules/lodash/wrapperLodash.js","../node_modules/lodash/_isLaziable.js","../node_modules/lodash/_shortOut.js","../node_modules/lodash/_setData.js","../node_modules/lodash/_getWrapDetails.js","../node_modules/lodash/_insertWrapDetails.js","../node_modules/lodash/constant.js","../node_modules/lodash/_defineProperty.js","../node_modules/lodash/_baseSetToString.js","../node_modules/lodash/_setToString.js","../node_modules/lodash/_arrayEach.js","../node_modules/lodash/_baseFindIndex.js","../node_modules/lodash/_baseIsNaN.js","../node_modules/lodash/_strictIndexOf.js","../node_modules/lodash/_baseIndexOf.js","../node_modules/lodash/_arrayIncludes.js","../node_modules/lodash/_updateWrapDetails.js","../node_modules/lodash/_setWrapToString.js","../node_modules/lodash/_createRecurry.js","../node_modules/lodash/_getHolder.js","../node_modules/lodash/_isIndex.js","../node_modules/lodash/_reorder.js","../node_modules/lodash/_replaceHolders.js","../node_modules/lodash/_createHybrid.js","../node_modules/lodash/_createCurry.js","../node_modules/lodash/_createPartial.js","../node_modules/lodash/_mergeData.js","../node_modules/lodash/_trimmedEndIndex.js","../node_modules/lodash/_baseTrim.js","../node_modules/lodash/isSymbol.js","../node_modules/lodash/toNumber.js","../node_modules/lodash/toFinite.js","../node_modules/lodash/toInteger.js","../node_modules/lodash/_createWrap.js","../node_modules/lodash/ary.js","../node_modules/lodash/_baseAssignValue.js","../node_modules/lodash/eq.js","../node_modules/lodash/_assignValue.js","../node_modules/lodash/_copyObject.js","../node_modules/lodash/_baseTimes.js","../node_modules/lodash/_baseIsArguments.js","../node_modules/lodash/isArguments.js","../node_modules/lodash/stubFalse.js","../node_modules/lodash/isBuffer.js","../node_modules/lodash/isLength.js","../node_modules/lodash/_baseIsTypedArray.js","../node_modules/lodash/_baseUnary.js","../node_modules/lodash/_nodeUtil.js","../node_modules/lodash/isTypedArray.js","../node_modules/lodash/_arrayLikeKeys.js","../node_modules/lodash/_isPrototype.js","../node_modules/lodash/_overArg.js","../node_modules/lodash/_nativeKeys.js","../node_modules/lodash/_baseKeys.js","../node_modules/lodash/isArrayLike.js","../node_modules/lodash/keys.js","../node_modules/lodash/_baseAssign.js","../node_modules/lodash/_listCacheClear.js","../node_modules/lodash/_assocIndexOf.js","../node_modules/lodash/_listCacheDelete.js","../node_modules/lodash/_listCacheGet.js","../node_modules/lodash/_listCacheHas.js","../node_modules/lodash/_listCacheSet.js","../node_modules/lodash/_ListCache.js","../node_modules/lodash/_stackClear.js","../node_modules/lodash/_stackDelete.js","../node_modules/lodash/_stackGet.js","../node_modules/lodash/_stackHas.js","../node_modules/lodash/_Map.js","../node_modules/lodash/_nativeCreate.js","../node_modules/lodash/_hashClear.js","../node_modules/lodash/_hashDelete.js","../node_modules/lodash/_hashGet.js","../node_modules/lodash/_hashHas.js","../node_modules/lodash/_hashSet.js","../node_modules/lodash/_Hash.js","../node_modules/lodash/_mapCacheClear.js","../node_modules/lodash/_isKeyable.js","../node_modules/lodash/_getMapData.js","../node_modules/lodash/_mapCacheDelete.js","../node_modules/lodash/_mapCacheGet.js","../node_modules/lodash/_mapCacheHas.js","../node_modules/lodash/_mapCacheSet.js","../node_modules/lodash/_MapCache.js","../node_modules/lodash/_stackSet.js","../node_modules/lodash/_Stack.js","../node_modules/lodash/_nativeKeysIn.js","../node_modules/lodash/_baseKeysIn.js","../node_modules/lodash/keysIn.js","../node_modules/lodash/_baseAssignIn.js","../node_modules/lodash/_cloneBuffer.js","../node_modules/lodash/_arrayFilter.js","../node_modules/lodash/stubArray.js","../node_modules/lodash/_getSymbols.js","../node_modules/lodash/_copySymbols.js","../node_modules/lodash/_arrayPush.js","../node_modules/lodash/_getPrototype.js","../node_modules/lodash/_getSymbolsIn.js","../node_modules/lodash/_copySymbolsIn.js","../node_modules/lodash/_baseGetAllKeys.js","../node_modules/lodash/_getAllKeys.js","../node_modules/lodash/_getAllKeysIn.js","../node_modules/lodash/_DataView.js","../node_modules/lodash/_Promise.js","../node_modules/lodash/_Set.js","../node_modules/lodash/_getTag.js","../node_modules/lodash/_initCloneArray.js","../node_modules/lodash/_Uint8Array.js","../node_modules/lodash/_cloneArrayBuffer.js","../node_modules/lodash/_cloneDataView.js","../node_modules/lodash/_cloneRegExp.js","../node_modules/lodash/_cloneSymbol.js","../node_modules/lodash/_cloneTypedArray.js","../node_modules/lodash/_initCloneByTag.js","../node_modules/lodash/_initCloneObject.js","../node_modules/lodash/_baseIsMap.js","../node_modules/lodash/isMap.js","../node_modules/lodash/_baseIsSet.js","../node_modules/lodash/isSet.js","../node_modules/lodash/_baseClone.js","../node_modules/lodash/clone.js","../node_modules/lodash/curry.js","../node_modules/lodash/isPlainObject.js","../node_modules/lodash/isError.js","../node_modules/lodash/isWeakMap.js","../node_modules/lodash/_setCacheAdd.js","../node_modules/lodash/_setCacheHas.js","../node_modules/lodash/_SetCache.js","../node_modules/lodash/_arraySome.js","../node_modules/lodash/_cacheHas.js","../node_modules/lodash/_equalArrays.js","../node_modules/lodash/_mapToArray.js","../node_modules/lodash/_setToArray.js","../node_modules/lodash/_equalByTag.js","../node_modules/lodash/_equalObjects.js","../node_modules/lodash/_baseIsEqualDeep.js","../node_modules/lodash/_baseIsEqual.js","../node_modules/lodash/_baseIsMatch.js","../node_modules/lodash/_isStrictComparable.js","../node_modules/lodash/_getMatchData.js","../node_modules/lodash/_matchesStrictComparable.js","../node_modules/lodash/_baseMatches.js","../node_modules/lodash/_isKey.js","../node_modules/lodash/memoize.js","../node_modules/lodash/_memoizeCapped.js","../node_modules/lodash/_stringToPath.js","../node_modules/lodash/_arrayMap.js","../node_modules/lodash/_baseToString.js","../node_modules/lodash/toString.js","../node_modules/lodash/_castPath.js","../node_modules/lodash/_toKey.js","../node_modules/lodash/_baseGet.js","../node_modules/lodash/get.js","../node_modules/lodash/_baseHasIn.js","../node_modules/lodash/_hasPath.js","../node_modules/lodash/hasIn.js","../node_modules/lodash/_baseMatchesProperty.js","../node_modules/lodash/_baseProperty.js","../node_modules/lodash/_basePropertyDeep.js","../node_modules/lodash/property.js","../node_modules/lodash/_baseIteratee.js","../node_modules/lodash/iteratee.js","../node_modules/lodash/_isFlattenable.js","../node_modules/lodash/_baseFlatten.js","../node_modules/lodash/flatten.js","../node_modules/lodash/_overRest.js","../node_modules/lodash/_flatRest.js","../node_modules/lodash/rearg.js","../node_modules/lodash/toPath.js","../node_modules/lodash/fp/_util.js","../node_modules/lodash/fp/convert.js","../node_modules/lodash/_basePropertyOf.js","../node_modules/lodash/_escapeHtmlChar.js","../node_modules/lodash/escape.js","../node_modules/lodash/fp/_falseOptions.js","../node_modules/lodash/fp/escape.js","../node_modules/vue-material-design-icons/AccountOutline.vue","../node_modules/vue-material-design-icons/EmailOutline.vue","../node_modules/vue-material-design-icons/MessageProcessingOutline.vue","../node_modules/vue-material-design-icons/PhoneOutline.vue","../node_modules/vue-material-design-icons/AccountBoxMultipleOutline.vue","../node_modules/vue-material-design-icons/AccountSupervisorOutline.vue","../node_modules/vue-material-design-icons/AccountSwitchOutline.vue","../node_modules/vue-material-design-icons/BadgeAccountHorizontalOutline.vue","../node_modules/vue-material-design-icons/CakeVariantOutline.vue","../node_modules/vue-material-design-icons/CalendarHeartOutline.vue","../node_modules/vue-material-design-icons/CloudOutline.vue","../node_modules/vue-material-design-icons/Coffin.vue","../node_modules/vue-material-design-icons/HeartOutline.vue","../node_modules/vue-material-design-icons/MapMarkerOutline.vue","../node_modules/vue-material-design-icons/MapOutline.vue","../node_modules/vue-material-design-icons/MessageReplyTextOutline.vue","../node_modules/vue-material-design-icons/Text.vue","../node_modules/vue-material-design-icons/TranslateVariant.vue","../node_modules/vue-material-design-icons/Web.vue","../src/components/Icons/IconAddressBook.vue","../src/components/Properties/PropertyTitleIcon.vue","../src/mixins/OrgChartsMixin.js","../node_modules/@mattkrick/sanitize-svg/dist/lib/sanitizeSVG.js","../node_modules/b64-to-blob/b64toBlob.js","../node_modules/uuid/dist/stringify.js","../node_modules/uuid/dist/rng.js","../node_modules/uuid/dist/native.js","../node_modules/uuid/dist/v4.js","../src/services/updateDesignSet.js","../node_modules/vuex/node_modules/@vue/devtools-api/lib/esm/env.js","../node_modules/vuex/node_modules/@vue/devtools-api/lib/esm/const.js","../node_modules/vuex/node_modules/@vue/devtools-api/lib/esm/time.js","../node_modules/vuex/node_modules/@vue/devtools-api/lib/esm/proxy.js","../node_modules/vuex/node_modules/@vue/devtools-api/lib/esm/index.js","../node_modules/vuex/dist/vuex.esm-bundler.js","../src/services/isCirclesEnabled.js","../node_modules/yocto-queue/index.js","../node_modules/p-limit/index.js","../node_modules/@nextcloud/cdav-library/dist/index.mjs","../src/services/cdav.js","../src/services/parseVcf.js","../src/store/principals.js","../src/utils/addressbookUtils.js","../src/store/addressbooks.js","../src/store/circles.js","../src/mixins/ActionsMixin.js","../src/components/Actions/ActionCopyNtoFN.vue","../src/components/Actions/NcActionToggleYear.vue","../src/models/zones.js","../src/models/rfcProps.js","../src/services/checks/badGenderType.js","../src/services/checks/duplicateTypes.js","../src/services/checks/invalidREV.js","../src/services/checks/missingFN.js","../src/services/checks/index.js","../src/services/validate.js","../src/store/contacts.js","../src/store/groups.js","../src/store/importState.js","../src/store/index.js","../src/models/contact.js","../node_modules/moment/min/moment-with-locales.js","../node_modules/@nextcloud/moment/dist/index.mjs","../src/components/Properties/PropertyActions.vue","../src/components/Properties/PropertyTitle.vue","../src/mixins/PropertyMixin.js","../src/components/Properties/PropertyDateTime.vue","../src/components/Properties/PropertyMultipleText.vue","../src/components/Properties/PropertySelect.vue","../node_modules/validator/lib/util/assertString.js","../node_modules/validator/lib/util/checkHost.js","../node_modules/validator/lib/isByteLength.js","../node_modules/validator/lib/util/merge.js","../node_modules/validator/lib/isFQDN.js","../node_modules/validator/lib/isIP.js","../node_modules/validator/lib/isEmail.js","../node_modules/vue-material-design-icons/OpenInNew.vue","../src/components/Properties/PropertyText.vue","../src/utils/matchTypes.ts","../src/components/ContactDetails/ContactDetailsProperty.vue"],"sourcesContent":["/*!\n * pinia v3.0.4\n * (c) 2025 Eduardo San Martin Morote\n * @license MIT\n */\nimport { hasInjectionContext, inject, toRaw, watch, unref, markRaw, effectScope, ref, isRef, isReactive, getCurrentScope, onScopeDispose, getCurrentInstance, reactive, toRef, nextTick, computed, toRefs } from 'vue';\nimport { setupDevtoolsPlugin } from '@vue/devtools-api';\n\nconst IS_CLIENT = typeof window !== 'undefined';\n\n/**\n * setActivePinia must be called to handle SSR at the top of functions like\n * `fetch`, `setup`, `serverPrefetch` and others\n */\nlet activePinia;\n/**\n * Sets or unsets the active pinia. Used in SSR and internally when calling\n * actions and getters\n *\n * @param pinia - Pinia instance\n */\n// @ts-expect-error: cannot constrain the type of the return\nconst setActivePinia = (pinia) => (activePinia = pinia);\n/**\n * Get the currently active pinia if there is any.\n */\nconst getActivePinia = (process.env.NODE_ENV !== 'production')\n ? () => {\n const pinia = hasInjectionContext() && inject(piniaSymbol);\n if (!pinia && !IS_CLIENT) {\n console.error(`[🍍]: Pinia instance not found in context. This falls back to the global activePinia which exposes you to cross-request pollution on the server. Most of the time, it means you are calling \"useStore()\" in the wrong place.\\n` +\n `Read https://vuejs.org/guide/reusability/composables.html to learn more`);\n }\n return pinia || activePinia;\n }\n : () => (hasInjectionContext() && inject(piniaSymbol)) || activePinia;\nconst piniaSymbol = ((process.env.NODE_ENV !== 'production') ? Symbol('pinia') : /* istanbul ignore next */ Symbol());\n\nfunction isPlainObject(\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\no) {\n return (o &&\n typeof o === 'object' &&\n Object.prototype.toString.call(o) === '[object Object]' &&\n typeof o.toJSON !== 'function');\n}\n// type DeepReadonly = { readonly [P in keyof T]: DeepReadonly }\n// TODO: can we change these to numbers?\n/**\n * Possible types for SubscriptionCallback\n */\nvar MutationType;\n(function (MutationType) {\n /**\n * Direct mutation of the state:\n *\n * - `store.name = 'new name'`\n * - `store.$state.name = 'new name'`\n * - `store.list.push('new item')`\n */\n MutationType[\"direct\"] = \"direct\";\n /**\n * Mutated the state with `$patch` and an object\n *\n * - `store.$patch({ name: 'newName' })`\n */\n MutationType[\"patchObject\"] = \"patch object\";\n /**\n * Mutated the state with `$patch` and a function\n *\n * - `store.$patch(state => state.name = 'newName')`\n */\n MutationType[\"patchFunction\"] = \"patch function\";\n // maybe reset? for $state = {} and $reset\n})(MutationType || (MutationType = {}));\n\n/*\n * FileSaver.js A saveAs() FileSaver implementation.\n *\n * Originally by Eli Grey, adapted as an ESM module by Eduardo San Martin\n * Morote.\n *\n * License : MIT\n */\n// The one and only way of getting global scope in all environments\n// https://stackoverflow.com/q/3277182/1008999\nconst _global = /*#__PURE__*/ (() => typeof window === 'object' && window.window === window\n ? window\n : typeof self === 'object' && self.self === self\n ? self\n : typeof global === 'object' && global.global === global\n ? global\n : typeof globalThis === 'object'\n ? globalThis\n : { HTMLElement: null })();\nfunction bom(blob, { autoBom = false } = {}) {\n // prepend BOM for UTF-8 XML and text/* types (including HTML)\n // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF\n if (autoBom &&\n /^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\n return new Blob([String.fromCharCode(0xfeff), blob], { type: blob.type });\n }\n return blob;\n}\nfunction download(url, name, opts) {\n const xhr = new XMLHttpRequest();\n xhr.open('GET', url);\n xhr.responseType = 'blob';\n xhr.onload = function () {\n saveAs(xhr.response, name, opts);\n };\n xhr.onerror = function () {\n console.error('could not download file');\n };\n xhr.send();\n}\nfunction corsEnabled(url) {\n const xhr = new XMLHttpRequest();\n // use sync to avoid popup blocker\n xhr.open('HEAD', url, false);\n try {\n xhr.send();\n }\n catch (e) { }\n return xhr.status >= 200 && xhr.status <= 299;\n}\n// `a.click()` doesn't work for all browsers (#465)\nfunction click(node) {\n try {\n node.dispatchEvent(new MouseEvent('click'));\n }\n catch (e) {\n const evt = new MouseEvent('click', {\n bubbles: true,\n cancelable: true,\n view: window,\n detail: 0,\n screenX: 80,\n screenY: 20,\n clientX: 80,\n clientY: 20,\n ctrlKey: false,\n altKey: false,\n shiftKey: false,\n metaKey: false,\n button: 0,\n relatedTarget: null,\n });\n node.dispatchEvent(evt);\n }\n}\nconst _navigator = typeof navigator === 'object' ? navigator : { userAgent: '' };\n// Detect WebView inside a native macOS app by ruling out all browsers\n// We just need to check for 'Safari' because all other browsers (besides Firefox) include that too\n// https://www.whatismybrowser.com/guides/the-latest-user-agent/macos\nconst isMacOSWebView = /*#__PURE__*/ (() => /Macintosh/.test(_navigator.userAgent) &&\n /AppleWebKit/.test(_navigator.userAgent) &&\n !/Safari/.test(_navigator.userAgent))();\nconst saveAs = !IS_CLIENT\n ? () => { } // noop\n : // Use download attribute first if possible (#193 Lumia mobile) unless this is a macOS WebView or mini program\n typeof HTMLAnchorElement !== 'undefined' &&\n 'download' in HTMLAnchorElement.prototype &&\n !isMacOSWebView\n ? downloadSaveAs\n : // Use msSaveOrOpenBlob as a second approach\n 'msSaveOrOpenBlob' in _navigator\n ? msSaveAs\n : // Fallback to using FileReader and a popup\n fileSaverSaveAs;\nfunction downloadSaveAs(blob, name = 'download', opts) {\n const a = document.createElement('a');\n a.download = name;\n a.rel = 'noopener'; // tabnabbing\n // TODO: detect chrome extensions & packaged apps\n // a.target = '_blank'\n if (typeof blob === 'string') {\n // Support regular links\n a.href = blob;\n if (a.origin !== location.origin) {\n if (corsEnabled(a.href)) {\n download(blob, name, opts);\n }\n else {\n a.target = '_blank';\n click(a);\n }\n }\n else {\n click(a);\n }\n }\n else {\n // Support blobs\n a.href = URL.createObjectURL(blob);\n setTimeout(function () {\n URL.revokeObjectURL(a.href);\n }, 4e4); // 40s\n setTimeout(function () {\n click(a);\n }, 0);\n }\n}\nfunction msSaveAs(blob, name = 'download', opts) {\n if (typeof blob === 'string') {\n if (corsEnabled(blob)) {\n download(blob, name, opts);\n }\n else {\n const a = document.createElement('a');\n a.href = blob;\n a.target = '_blank';\n setTimeout(function () {\n click(a);\n });\n }\n }\n else {\n // @ts-ignore: works on windows\n navigator.msSaveOrOpenBlob(bom(blob, opts), name);\n }\n}\nfunction fileSaverSaveAs(blob, name, opts, popup) {\n // Open a popup immediately do go around popup blocker\n // Mostly only available on user interaction and the fileReader is async so...\n popup = popup || open('', '_blank');\n if (popup) {\n popup.document.title = popup.document.body.innerText = 'downloading...';\n }\n if (typeof blob === 'string')\n return download(blob, name, opts);\n const force = blob.type === 'application/octet-stream';\n const isSafari = /constructor/i.test(String(_global.HTMLElement)) || 'safari' in _global;\n const isChromeIOS = /CriOS\\/[\\d]+/.test(navigator.userAgent);\n if ((isChromeIOS || (force && isSafari) || isMacOSWebView) &&\n typeof FileReader !== 'undefined') {\n // Safari doesn't allow downloading of blob URLs\n const reader = new FileReader();\n reader.onloadend = function () {\n let url = reader.result;\n if (typeof url !== 'string') {\n popup = null;\n throw new Error('Wrong reader.result type');\n }\n url = isChromeIOS\n ? url\n : url.replace(/^data:[^;]*;/, 'data:attachment/file;');\n if (popup) {\n popup.location.href = url;\n }\n else {\n location.assign(url);\n }\n popup = null; // reverse-tabnabbing #460\n };\n reader.readAsDataURL(blob);\n }\n else {\n const url = URL.createObjectURL(blob);\n if (popup)\n popup.location.assign(url);\n else\n location.href = url;\n popup = null; // reverse-tabnabbing #460\n setTimeout(function () {\n URL.revokeObjectURL(url);\n }, 4e4); // 40s\n }\n}\n\n/**\n * Shows a toast or console.log\n *\n * @param message - message to log\n * @param type - different color of the tooltip\n */\nfunction toastMessage(message, type) {\n const piniaMessage = '🍍 ' + message;\n if (typeof __VUE_DEVTOOLS_TOAST__ === 'function') {\n // No longer available :(\n __VUE_DEVTOOLS_TOAST__(piniaMessage, type);\n }\n else if (type === 'error') {\n console.error(piniaMessage);\n }\n else if (type === 'warn') {\n console.warn(piniaMessage);\n }\n else {\n console.log(piniaMessage);\n }\n}\nfunction isPinia(o) {\n return '_a' in o && 'install' in o;\n}\n\n/**\n * This file contain devtools actions, they are not Pinia actions.\n */\n// ---\nfunction checkClipboardAccess() {\n if (!('clipboard' in navigator)) {\n toastMessage(`Your browser doesn't support the Clipboard API`, 'error');\n return true;\n }\n}\nfunction checkNotFocusedError(error) {\n if (error instanceof Error &&\n error.message.toLowerCase().includes('document is not focused')) {\n toastMessage('You need to activate the \"Emulate a focused page\" setting in the \"Rendering\" panel of devtools.', 'warn');\n return true;\n }\n return false;\n}\nasync function actionGlobalCopyState(pinia) {\n if (checkClipboardAccess())\n return;\n try {\n await navigator.clipboard.writeText(JSON.stringify(pinia.state.value));\n toastMessage('Global state copied to clipboard.');\n }\n catch (error) {\n if (checkNotFocusedError(error))\n return;\n toastMessage(`Failed to serialize the state. Check the console for more details.`, 'error');\n console.error(error);\n }\n}\nasync function actionGlobalPasteState(pinia) {\n if (checkClipboardAccess())\n return;\n try {\n loadStoresState(pinia, JSON.parse(await navigator.clipboard.readText()));\n toastMessage('Global state pasted from clipboard.');\n }\n catch (error) {\n if (checkNotFocusedError(error))\n return;\n toastMessage(`Failed to deserialize the state from clipboard. Check the console for more details.`, 'error');\n console.error(error);\n }\n}\nasync function actionGlobalSaveState(pinia) {\n try {\n saveAs(new Blob([JSON.stringify(pinia.state.value)], {\n type: 'text/plain;charset=utf-8',\n }), 'pinia-state.json');\n }\n catch (error) {\n toastMessage(`Failed to export the state as JSON. Check the console for more details.`, 'error');\n console.error(error);\n }\n}\nlet fileInput;\nfunction getFileOpener() {\n if (!fileInput) {\n fileInput = document.createElement('input');\n fileInput.type = 'file';\n fileInput.accept = '.json';\n }\n function openFile() {\n return new Promise((resolve, reject) => {\n fileInput.onchange = async () => {\n const files = fileInput.files;\n if (!files)\n return resolve(null);\n const file = files.item(0);\n if (!file)\n return resolve(null);\n return resolve({ text: await file.text(), file });\n };\n // @ts-ignore: TODO: changed from 4.3 to 4.4\n fileInput.oncancel = () => resolve(null);\n fileInput.onerror = reject;\n fileInput.click();\n });\n }\n return openFile;\n}\nasync function actionGlobalOpenStateFile(pinia) {\n try {\n const open = getFileOpener();\n const result = await open();\n if (!result)\n return;\n const { text, file } = result;\n loadStoresState(pinia, JSON.parse(text));\n toastMessage(`Global state imported from \"${file.name}\".`);\n }\n catch (error) {\n toastMessage(`Failed to import the state from JSON. Check the console for more details.`, 'error');\n console.error(error);\n }\n}\nfunction loadStoresState(pinia, state) {\n for (const key in state) {\n const storeState = pinia.state.value[key];\n // store is already instantiated, patch it\n if (storeState) {\n Object.assign(storeState, state[key]);\n }\n else {\n // store is not instantiated, set the initial state\n pinia.state.value[key] = state[key];\n }\n }\n}\n\nfunction formatDisplay(display) {\n return {\n _custom: {\n display,\n },\n };\n}\nconst PINIA_ROOT_LABEL = '🍍 Pinia (root)';\nconst PINIA_ROOT_ID = '_root';\nfunction formatStoreForInspectorTree(store) {\n return isPinia(store)\n ? {\n id: PINIA_ROOT_ID,\n label: PINIA_ROOT_LABEL,\n }\n : {\n id: store.$id,\n label: store.$id,\n };\n}\nfunction formatStoreForInspectorState(store) {\n if (isPinia(store)) {\n const storeNames = Array.from(store._s.keys());\n const storeMap = store._s;\n const state = {\n state: storeNames.map((storeId) => ({\n editable: true,\n key: storeId,\n value: store.state.value[storeId],\n })),\n getters: storeNames\n .filter((id) => storeMap.get(id)._getters)\n .map((id) => {\n const store = storeMap.get(id);\n return {\n editable: false,\n key: id,\n value: store._getters.reduce((getters, key) => {\n getters[key] = store[key];\n return getters;\n }, {}),\n };\n }),\n };\n return state;\n }\n const state = {\n state: Object.keys(store.$state).map((key) => ({\n editable: true,\n key,\n value: store.$state[key],\n })),\n };\n // avoid adding empty getters\n if (store._getters && store._getters.length) {\n state.getters = store._getters.map((getterName) => ({\n editable: false,\n key: getterName,\n value: store[getterName],\n }));\n }\n if (store._customProperties.size) {\n state.customProperties = Array.from(store._customProperties).map((key) => ({\n editable: true,\n key,\n value: store[key],\n }));\n }\n return state;\n}\nfunction formatEventData(events) {\n if (!events)\n return {};\n if (Array.isArray(events)) {\n // TODO: handle add and delete for arrays and objects\n return events.reduce((data, event) => {\n data.keys.push(event.key);\n data.operations.push(event.type);\n data.oldValue[event.key] = event.oldValue;\n data.newValue[event.key] = event.newValue;\n return data;\n }, {\n oldValue: {},\n keys: [],\n operations: [],\n newValue: {},\n });\n }\n else {\n return {\n operation: formatDisplay(events.type),\n key: formatDisplay(events.key),\n oldValue: events.oldValue,\n newValue: events.newValue,\n };\n }\n}\nfunction formatMutationType(type) {\n switch (type) {\n case MutationType.direct:\n return 'mutation';\n case MutationType.patchFunction:\n return '$patch';\n case MutationType.patchObject:\n return '$patch';\n default:\n return 'unknown';\n }\n}\n\n// timeline can be paused when directly changing the state\nlet isTimelineActive = true;\nconst componentStateTypes = [];\nconst MUTATIONS_LAYER_ID = 'pinia:mutations';\nconst INSPECTOR_ID = 'pinia';\nconst { assign: assign$1 } = Object;\n/**\n * Gets the displayed name of a store in devtools\n *\n * @param id - id of the store\n * @returns a formatted string\n */\nconst getStoreType = (id) => '🍍 ' + id;\n/**\n * Add the pinia plugin without any store. Allows displaying a Pinia plugin tab\n * as soon as it is added to the application.\n *\n * @param app - Vue application\n * @param pinia - pinia instance\n */\nfunction registerPiniaDevtools(app, pinia) {\n setupDevtoolsPlugin({\n id: 'dev.esm.pinia',\n label: 'Pinia 🍍',\n logo: 'https://pinia.vuejs.org/logo.svg',\n packageName: 'pinia',\n homepage: 'https://pinia.vuejs.org',\n componentStateTypes,\n app,\n }, (api) => {\n if (typeof api.now !== 'function') {\n toastMessage('You seem to be using an outdated version of Vue Devtools. Are you still using the Beta release instead of the stable one? You can find the links at https://devtools.vuejs.org/guide/installation.html.');\n }\n api.addTimelineLayer({\n id: MUTATIONS_LAYER_ID,\n label: `Pinia 🍍`,\n color: 0xe5df88,\n });\n api.addInspector({\n id: INSPECTOR_ID,\n label: 'Pinia 🍍',\n icon: 'storage',\n treeFilterPlaceholder: 'Search stores',\n actions: [\n {\n icon: 'content_copy',\n action: () => {\n actionGlobalCopyState(pinia);\n },\n tooltip: 'Serialize and copy the state',\n },\n {\n icon: 'content_paste',\n action: async () => {\n await actionGlobalPasteState(pinia);\n api.sendInspectorTree(INSPECTOR_ID);\n api.sendInspectorState(INSPECTOR_ID);\n },\n tooltip: 'Replace the state with the content of your clipboard',\n },\n {\n icon: 'save',\n action: () => {\n actionGlobalSaveState(pinia);\n },\n tooltip: 'Save the state as a JSON file',\n },\n {\n icon: 'folder_open',\n action: async () => {\n await actionGlobalOpenStateFile(pinia);\n api.sendInspectorTree(INSPECTOR_ID);\n api.sendInspectorState(INSPECTOR_ID);\n },\n tooltip: 'Import the state from a JSON file',\n },\n ],\n nodeActions: [\n {\n icon: 'restore',\n tooltip: 'Reset the state (with \"$reset\")',\n action: (nodeId) => {\n const store = pinia._s.get(nodeId);\n if (!store) {\n toastMessage(`Cannot reset \"${nodeId}\" store because it wasn't found.`, 'warn');\n }\n else if (typeof store.$reset !== 'function') {\n toastMessage(`Cannot reset \"${nodeId}\" store because it doesn't have a \"$reset\" method implemented.`, 'warn');\n }\n else {\n store.$reset();\n toastMessage(`Store \"${nodeId}\" reset.`);\n }\n },\n },\n ],\n });\n api.on.inspectComponent((payload) => {\n const proxy = (payload.componentInstance &&\n payload.componentInstance.proxy);\n if (proxy && proxy._pStores) {\n const piniaStores = payload.componentInstance.proxy._pStores;\n Object.values(piniaStores).forEach((store) => {\n payload.instanceData.state.push({\n type: getStoreType(store.$id),\n key: 'state',\n editable: true,\n value: store._isOptionsAPI\n ? {\n _custom: {\n value: toRaw(store.$state),\n actions: [\n {\n icon: 'restore',\n tooltip: 'Reset the state of this store',\n action: () => store.$reset(),\n },\n ],\n },\n }\n : // NOTE: workaround to unwrap transferred refs\n Object.keys(store.$state).reduce((state, key) => {\n state[key] = store.$state[key];\n return state;\n }, {}),\n });\n if (store._getters && store._getters.length) {\n payload.instanceData.state.push({\n type: getStoreType(store.$id),\n key: 'getters',\n editable: false,\n value: store._getters.reduce((getters, key) => {\n try {\n getters[key] = store[key];\n }\n catch (error) {\n // @ts-expect-error: we just want to show it in devtools\n getters[key] = error;\n }\n return getters;\n }, {}),\n });\n }\n });\n }\n });\n api.on.getInspectorTree((payload) => {\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n let stores = [pinia];\n stores = stores.concat(Array.from(pinia._s.values()));\n payload.rootNodes = (payload.filter\n ? stores.filter((store) => '$id' in store\n ? store.$id\n .toLowerCase()\n .includes(payload.filter.toLowerCase())\n : PINIA_ROOT_LABEL.toLowerCase().includes(payload.filter.toLowerCase()))\n : stores).map(formatStoreForInspectorTree);\n }\n });\n // Expose pinia instance as $pinia to window\n globalThis.$pinia = pinia;\n api.on.getInspectorState((payload) => {\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n const inspectedStore = payload.nodeId === PINIA_ROOT_ID\n ? pinia\n : pinia._s.get(payload.nodeId);\n if (!inspectedStore) {\n // this could be the selected store restored for a different project\n // so it's better not to say anything here\n return;\n }\n if (inspectedStore) {\n // Expose selected store as $store to window\n if (payload.nodeId !== PINIA_ROOT_ID)\n globalThis.$store = toRaw(inspectedStore);\n payload.state = formatStoreForInspectorState(inspectedStore);\n }\n }\n });\n api.on.editInspectorState((payload) => {\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n const inspectedStore = payload.nodeId === PINIA_ROOT_ID\n ? pinia\n : pinia._s.get(payload.nodeId);\n if (!inspectedStore) {\n return toastMessage(`store \"${payload.nodeId}\" not found`, 'error');\n }\n const { path } = payload;\n if (!isPinia(inspectedStore)) {\n // access only the state\n if (path.length !== 1 ||\n !inspectedStore._customProperties.has(path[0]) ||\n path[0] in inspectedStore.$state) {\n path.unshift('$state');\n }\n }\n else {\n // Root access, we can omit the `.value` because the devtools API does it for us\n path.unshift('state');\n }\n isTimelineActive = false;\n payload.set(inspectedStore, path, payload.state.value);\n isTimelineActive = true;\n }\n });\n api.on.editComponentState((payload) => {\n if (payload.type.startsWith('🍍')) {\n const storeId = payload.type.replace(/^🍍\\s*/, '');\n const store = pinia._s.get(storeId);\n if (!store) {\n return toastMessage(`store \"${storeId}\" not found`, 'error');\n }\n const { path } = payload;\n if (path[0] !== 'state') {\n return toastMessage(`Invalid path for store \"${storeId}\":\\n${path}\\nOnly state can be modified.`);\n }\n // rewrite the first entry to be able to directly set the state as\n // well as any other path\n path[0] = '$state';\n isTimelineActive = false;\n payload.set(store, path, payload.state.value);\n isTimelineActive = true;\n }\n });\n });\n}\nfunction addStoreToDevtools(app, store) {\n if (!componentStateTypes.includes(getStoreType(store.$id))) {\n componentStateTypes.push(getStoreType(store.$id));\n }\n setupDevtoolsPlugin({\n id: 'dev.esm.pinia',\n label: 'Pinia 🍍',\n logo: 'https://pinia.vuejs.org/logo.svg',\n packageName: 'pinia',\n homepage: 'https://pinia.vuejs.org',\n componentStateTypes,\n app,\n settings: {\n logStoreChanges: {\n label: 'Notify about new/deleted stores',\n type: 'boolean',\n defaultValue: true,\n },\n // useEmojis: {\n // label: 'Use emojis in messages ⚡️',\n // type: 'boolean',\n // defaultValue: true,\n // },\n },\n }, (api) => {\n // gracefully handle errors\n const now = typeof api.now === 'function' ? api.now.bind(api) : Date.now;\n store.$onAction(({ after, onError, name, args }) => {\n const groupId = runningActionId++;\n api.addTimelineEvent({\n layerId: MUTATIONS_LAYER_ID,\n event: {\n time: now(),\n title: '🛫 ' + name,\n subtitle: 'start',\n data: {\n store: formatDisplay(store.$id),\n action: formatDisplay(name),\n args,\n },\n groupId,\n },\n });\n after((result) => {\n activeAction = undefined;\n api.addTimelineEvent({\n layerId: MUTATIONS_LAYER_ID,\n event: {\n time: now(),\n title: '🛬 ' + name,\n subtitle: 'end',\n data: {\n store: formatDisplay(store.$id),\n action: formatDisplay(name),\n args,\n result,\n },\n groupId,\n },\n });\n });\n onError((error) => {\n activeAction = undefined;\n api.addTimelineEvent({\n layerId: MUTATIONS_LAYER_ID,\n event: {\n time: now(),\n logType: 'error',\n title: '💥 ' + name,\n subtitle: 'end',\n data: {\n store: formatDisplay(store.$id),\n action: formatDisplay(name),\n args,\n error,\n },\n groupId,\n },\n });\n });\n }, true);\n store._customProperties.forEach((name) => {\n watch(() => unref(store[name]), (newValue, oldValue) => {\n api.notifyComponentUpdate();\n api.sendInspectorState(INSPECTOR_ID);\n if (isTimelineActive) {\n api.addTimelineEvent({\n layerId: MUTATIONS_LAYER_ID,\n event: {\n time: now(),\n title: 'Change',\n subtitle: name,\n data: {\n newValue,\n oldValue,\n },\n groupId: activeAction,\n },\n });\n }\n }, { deep: true });\n });\n store.$subscribe(({ events, type }, state) => {\n api.notifyComponentUpdate();\n api.sendInspectorState(INSPECTOR_ID);\n if (!isTimelineActive)\n return;\n // rootStore.state[store.id] = state\n const eventData = {\n time: now(),\n title: formatMutationType(type),\n data: assign$1({ store: formatDisplay(store.$id) }, formatEventData(events)),\n groupId: activeAction,\n };\n if (type === MutationType.patchFunction) {\n eventData.subtitle = '⤵️';\n }\n else if (type === MutationType.patchObject) {\n eventData.subtitle = '🧩';\n }\n else if (events && !Array.isArray(events)) {\n eventData.subtitle = events.type;\n }\n if (events) {\n eventData.data['rawEvent(s)'] = {\n _custom: {\n display: 'DebuggerEvent',\n type: 'object',\n tooltip: 'raw DebuggerEvent[]',\n value: events,\n },\n };\n }\n api.addTimelineEvent({\n layerId: MUTATIONS_LAYER_ID,\n event: eventData,\n });\n }, { detached: true, flush: 'sync' });\n const hotUpdate = store._hotUpdate;\n store._hotUpdate = markRaw((newStore) => {\n hotUpdate(newStore);\n api.addTimelineEvent({\n layerId: MUTATIONS_LAYER_ID,\n event: {\n time: now(),\n title: '🔥 ' + store.$id,\n subtitle: 'HMR update',\n data: {\n store: formatDisplay(store.$id),\n info: formatDisplay(`HMR update`),\n },\n },\n });\n // update the devtools too\n api.notifyComponentUpdate();\n api.sendInspectorTree(INSPECTOR_ID);\n api.sendInspectorState(INSPECTOR_ID);\n });\n const { $dispose } = store;\n store.$dispose = () => {\n $dispose();\n api.notifyComponentUpdate();\n api.sendInspectorTree(INSPECTOR_ID);\n api.sendInspectorState(INSPECTOR_ID);\n api.getSettings().logStoreChanges &&\n toastMessage(`Disposed \"${store.$id}\" store 🗑`);\n };\n // trigger an update so it can display new registered stores\n api.notifyComponentUpdate();\n api.sendInspectorTree(INSPECTOR_ID);\n api.sendInspectorState(INSPECTOR_ID);\n api.getSettings().logStoreChanges &&\n toastMessage(`\"${store.$id}\" store installed 🆕`);\n });\n}\nlet runningActionId = 0;\nlet activeAction;\n/**\n * Patches a store to enable action grouping in devtools by wrapping the store with a Proxy that is passed as the\n * context of all actions, allowing us to set `runningAction` on each access and effectively associating any state\n * mutation to the action.\n *\n * @param store - store to patch\n * @param actionNames - list of actionst to patch\n */\nfunction patchActionForGrouping(store, actionNames, wrapWithProxy) {\n // original actions of the store as they are given by pinia. We are going to override them\n const actions = actionNames.reduce((storeActions, actionName) => {\n // use toRaw to avoid tracking #541\n storeActions[actionName] = toRaw(store)[actionName];\n return storeActions;\n }, {});\n for (const actionName in actions) {\n store[actionName] = function () {\n // the running action id is incremented in a before action hook\n const _actionId = runningActionId;\n const trackedStore = wrapWithProxy\n ? new Proxy(store, {\n get(...args) {\n activeAction = _actionId;\n return Reflect.get(...args);\n },\n set(...args) {\n activeAction = _actionId;\n return Reflect.set(...args);\n },\n })\n : store;\n // For Setup Stores we need https://github.com/tc39/proposal-async-context\n activeAction = _actionId;\n const retValue = actions[actionName].apply(trackedStore, arguments);\n // this is safer as async actions in Setup Stores would associate mutations done outside of the action\n activeAction = undefined;\n return retValue;\n };\n }\n}\n/**\n * pinia.use(devtoolsPlugin)\n */\nfunction devtoolsPlugin({ app, store, options }) {\n // HMR module\n if (store.$id.startsWith('__hot:')) {\n return;\n }\n // detect option api vs setup api\n store._isOptionsAPI = !!options.state;\n // Do not overwrite actions mocked by @pinia/testing (#2298)\n if (!store._p._testing) {\n patchActionForGrouping(store, Object.keys(options.actions), store._isOptionsAPI);\n // Upgrade the HMR to also update the new actions\n const originalHotUpdate = store._hotUpdate;\n toRaw(store)._hotUpdate = function (newStore) {\n originalHotUpdate.apply(this, arguments);\n patchActionForGrouping(store, Object.keys(newStore._hmrPayload.actions), !!store._isOptionsAPI);\n };\n }\n addStoreToDevtools(app, \n // FIXME: is there a way to allow the assignment from Store to StoreGeneric?\n store);\n}\n\n/**\n * Creates a Pinia instance to be used by the application\n */\nfunction createPinia() {\n const scope = effectScope(true);\n // NOTE: here we could check the window object for a state and directly set it\n // if there is anything like it with Vue 3 SSR\n const state = scope.run(() => ref({}));\n let _p = [];\n // plugins added before calling app.use(pinia)\n let toBeInstalled = [];\n const pinia = markRaw({\n install(app) {\n // this allows calling useStore() outside of a component setup after\n // installing pinia's plugin\n setActivePinia(pinia);\n pinia._a = app;\n app.provide(piniaSymbol, pinia);\n app.config.globalProperties.$pinia = pinia;\n /* istanbul ignore else */\n if ((((process.env.NODE_ENV !== 'production') || (typeof __VUE_PROD_DEVTOOLS__ !== 'undefined' && __VUE_PROD_DEVTOOLS__)) && !(process.env.NODE_ENV === 'test')) && IS_CLIENT) {\n registerPiniaDevtools(app, pinia);\n }\n toBeInstalled.forEach((plugin) => _p.push(plugin));\n toBeInstalled = [];\n },\n use(plugin) {\n if (!this._a) {\n toBeInstalled.push(plugin);\n }\n else {\n _p.push(plugin);\n }\n return this;\n },\n _p,\n // it's actually undefined here\n // @ts-expect-error\n _a: null,\n _e: scope,\n _s: new Map(),\n state,\n });\n // pinia devtools rely on dev only features so they cannot be forced unless\n // the dev build of Vue is used. Avoid old browsers like IE11.\n if ((((process.env.NODE_ENV !== 'production') || (typeof __VUE_PROD_DEVTOOLS__ !== 'undefined' && __VUE_PROD_DEVTOOLS__)) && !(process.env.NODE_ENV === 'test')) && IS_CLIENT && typeof Proxy !== 'undefined') {\n pinia.use(devtoolsPlugin);\n }\n return pinia;\n}\n/**\n * Dispose a Pinia instance by stopping its effectScope and removing the state, plugins and stores. This is mostly\n * useful in tests, with both a testing pinia or a regular pinia and in applications that use multiple pinia instances.\n * Once disposed, the pinia instance cannot be used anymore.\n *\n * @param pinia - pinia instance\n */\nfunction disposePinia(pinia) {\n pinia._e.stop();\n pinia._s.clear();\n pinia._p.splice(0);\n pinia.state.value = {};\n // @ts-expect-error: non valid\n pinia._a = null;\n}\n\n/**\n * Checks if a function is a `StoreDefinition`.\n *\n * @param fn - object to test\n * @returns true if `fn` is a StoreDefinition\n */\nconst isUseStore = (fn) => {\n return typeof fn === 'function' && typeof fn.$id === 'string';\n};\n/**\n * Mutates in place `newState` with `oldState` to _hot update_ it. It will\n * remove any key not existing in `newState` and recursively merge plain\n * objects.\n *\n * @param newState - new state object to be patched\n * @param oldState - old state that should be used to patch newState\n * @returns - newState\n */\nfunction patchObject(newState, oldState) {\n // no need to go through symbols because they cannot be serialized anyway\n for (const key in oldState) {\n const subPatch = oldState[key];\n // skip the whole sub tree\n if (!(key in newState)) {\n continue;\n }\n const targetValue = newState[key];\n if (isPlainObject(targetValue) &&\n isPlainObject(subPatch) &&\n !isRef(subPatch) &&\n !isReactive(subPatch)) {\n newState[key] = patchObject(targetValue, subPatch);\n }\n else {\n // objects are either a bit more complex (e.g. refs) or primitives, so we\n // just set the whole thing\n newState[key] = subPatch;\n }\n }\n return newState;\n}\n/**\n * Creates an _accept_ function to pass to `import.meta.hot` in Vite applications.\n *\n * @example\n * ```js\n * const useUser = defineStore(...)\n * if (import.meta.hot) {\n * import.meta.hot.accept(acceptHMRUpdate(useUser, import.meta.hot))\n * }\n * ```\n *\n * @param initialUseStore - return of the defineStore to hot update\n * @param hot - `import.meta.hot`\n */\nfunction acceptHMRUpdate(initialUseStore, hot) {\n // strip as much as possible from iife.prod\n if (!(process.env.NODE_ENV !== 'production')) {\n return () => { };\n }\n return (newModule) => {\n const pinia = hot.data.pinia || initialUseStore._pinia;\n if (!pinia) {\n // this store is still not used\n return;\n }\n // preserve the pinia instance across loads\n hot.data.pinia = pinia;\n // console.log('got data', newStore)\n for (const exportName in newModule) {\n const useStore = newModule[exportName];\n // console.log('checking for', exportName)\n if (isUseStore(useStore) && pinia._s.has(useStore.$id)) {\n // console.log('Accepting update for', useStore.$id)\n const id = useStore.$id;\n if (id !== initialUseStore.$id) {\n console.warn(`The id of the store changed from \"${initialUseStore.$id}\" to \"${id}\". Reloading.`);\n // return import.meta.hot.invalidate()\n return hot.invalidate();\n }\n const existingStore = pinia._s.get(id);\n if (!existingStore) {\n console.log(`[Pinia]: skipping hmr because store doesn't exist yet`);\n return;\n }\n useStore(pinia, existingStore);\n }\n }\n };\n}\n\nconst noop = () => { };\nfunction addSubscription(subscriptions, callback, detached, onCleanup = noop) {\n subscriptions.add(callback);\n const removeSubscription = () => {\n const isDel = subscriptions.delete(callback);\n isDel && onCleanup();\n };\n if (!detached && getCurrentScope()) {\n onScopeDispose(removeSubscription);\n }\n return removeSubscription;\n}\nfunction triggerSubscriptions(subscriptions, ...args) {\n subscriptions.forEach((callback) => {\n callback(...args);\n });\n}\n\nconst fallbackRunWithContext = (fn) => fn();\n/**\n * Marks a function as an action for `$onAction`\n * @internal\n */\nconst ACTION_MARKER = Symbol();\n/**\n * Action name symbol. Allows to add a name to an action after defining it\n * @internal\n */\nconst ACTION_NAME = Symbol();\nfunction mergeReactiveObjects(target, patchToApply) {\n // Handle Map instances\n if (target instanceof Map && patchToApply instanceof Map) {\n patchToApply.forEach((value, key) => target.set(key, value));\n }\n else if (target instanceof Set && patchToApply instanceof Set) {\n // Handle Set instances\n patchToApply.forEach(target.add, target);\n }\n // no need to go through symbols because they cannot be serialized anyway\n for (const key in patchToApply) {\n if (!patchToApply.hasOwnProperty(key))\n continue;\n const subPatch = patchToApply[key];\n const targetValue = target[key];\n if (isPlainObject(targetValue) &&\n isPlainObject(subPatch) &&\n target.hasOwnProperty(key) &&\n !isRef(subPatch) &&\n !isReactive(subPatch)) {\n // NOTE: here I wanted to warn about inconsistent types but it's not possible because in setup stores one might\n // start the value of a property as a certain type e.g. a Map, and then for some reason, during SSR, change that\n // to `undefined`. When trying to hydrate, we want to override the Map with `undefined`.\n target[key] = mergeReactiveObjects(targetValue, subPatch);\n }\n else {\n // @ts-expect-error: subPatch is a valid value\n target[key] = subPatch;\n }\n }\n return target;\n}\nconst skipHydrateSymbol = (process.env.NODE_ENV !== 'production')\n ? Symbol('pinia:skipHydration')\n : /* istanbul ignore next */ Symbol();\n/**\n * Tells Pinia to skip the hydration process of a given object. This is useful in setup stores (only) when you return a\n * stateful object in the store but it isn't really state. e.g. returning a router instance in a setup store.\n *\n * @param obj - target object\n * @returns obj\n */\nfunction skipHydrate(obj) {\n return Object.defineProperty(obj, skipHydrateSymbol, {});\n}\n/**\n * Returns whether a value should be hydrated\n *\n * @param obj - target variable\n * @returns true if `obj` should be hydrated\n */\nfunction shouldHydrate(obj) {\n return (!isPlainObject(obj) ||\n !Object.prototype.hasOwnProperty.call(obj, skipHydrateSymbol));\n}\nconst { assign } = Object;\nfunction isComputed(o) {\n return !!(isRef(o) && o.effect);\n}\nfunction createOptionsStore(id, options, pinia, hot) {\n const { state, actions, getters } = options;\n const initialState = pinia.state.value[id];\n let store;\n function setup() {\n if (!initialState && (!(process.env.NODE_ENV !== 'production') || !hot)) {\n /* istanbul ignore if */\n pinia.state.value[id] = state ? state() : {};\n }\n // avoid creating a state in pinia.state.value\n const localState = (process.env.NODE_ENV !== 'production') && hot\n ? // use ref() to unwrap refs inside state TODO: check if this is still necessary\n toRefs(ref(state ? state() : {}).value)\n : toRefs(pinia.state.value[id]);\n return assign(localState, actions, Object.keys(getters || {}).reduce((computedGetters, name) => {\n if ((process.env.NODE_ENV !== 'production') && name in localState) {\n console.warn(`[🍍]: A getter cannot have the same name as another state property. Rename one of them. Found with \"${name}\" in store \"${id}\".`);\n }\n computedGetters[name] = markRaw(computed(() => {\n setActivePinia(pinia);\n // it was created just before\n const store = pinia._s.get(id);\n // allow cross using stores\n // @ts-expect-error\n // return getters![name].call(context, context)\n // TODO: avoid reading the getter while assigning with a global variable\n return getters[name].call(store, store);\n }));\n return computedGetters;\n }, {}));\n }\n store = createSetupStore(id, setup, options, pinia, hot, true);\n return store;\n}\nfunction createSetupStore($id, setup, options = {}, pinia, hot, isOptionsStore) {\n let scope;\n const optionsForPlugin = assign({ actions: {} }, options);\n /* istanbul ignore if */\n if ((process.env.NODE_ENV !== 'production') && !pinia._e.active) {\n throw new Error('Pinia destroyed');\n }\n // watcher options for $subscribe\n const $subscribeOptions = { deep: true };\n /* istanbul ignore else */\n if ((process.env.NODE_ENV !== 'production')) {\n $subscribeOptions.onTrigger = (event) => {\n /* istanbul ignore else */\n if (isListening) {\n debuggerEvents = event;\n // avoid triggering this while the store is being built and the state is being set in pinia\n }\n else if (isListening == false && !store._hotUpdating) {\n // let patch send all the events together later\n /* istanbul ignore else */\n if (Array.isArray(debuggerEvents)) {\n debuggerEvents.push(event);\n }\n else {\n console.error('🍍 debuggerEvents should be an array. This is most likely an internal Pinia bug.');\n }\n }\n };\n }\n // internal state\n let isListening; // set to true at the end\n let isSyncListening; // set to true at the end\n let subscriptions = new Set();\n let actionSubscriptions = new Set();\n let debuggerEvents;\n const initialState = pinia.state.value[$id];\n // avoid setting the state for option stores if it is set\n // by the setup\n if (!isOptionsStore && !initialState && (!(process.env.NODE_ENV !== 'production') || !hot)) {\n /* istanbul ignore if */\n pinia.state.value[$id] = {};\n }\n const hotState = ref({});\n // avoid triggering too many listeners\n // https://github.com/vuejs/pinia/issues/1129\n let activeListener;\n function $patch(partialStateOrMutator) {\n let subscriptionMutation;\n isListening = isSyncListening = false;\n // reset the debugger events since patches are sync\n /* istanbul ignore else */\n if ((process.env.NODE_ENV !== 'production')) {\n debuggerEvents = [];\n }\n if (typeof partialStateOrMutator === 'function') {\n partialStateOrMutator(pinia.state.value[$id]);\n subscriptionMutation = {\n type: MutationType.patchFunction,\n storeId: $id,\n events: debuggerEvents,\n };\n }\n else {\n mergeReactiveObjects(pinia.state.value[$id], partialStateOrMutator);\n subscriptionMutation = {\n type: MutationType.patchObject,\n payload: partialStateOrMutator,\n storeId: $id,\n events: debuggerEvents,\n };\n }\n const myListenerId = (activeListener = Symbol());\n nextTick().then(() => {\n if (activeListener === myListenerId) {\n isListening = true;\n }\n });\n isSyncListening = true;\n // because we paused the watcher, we need to manually call the subscriptions\n triggerSubscriptions(subscriptions, subscriptionMutation, pinia.state.value[$id]);\n }\n const $reset = isOptionsStore\n ? function $reset() {\n const { state } = options;\n const newState = state ? state() : {};\n // we use a patch to group all changes into one single subscription\n this.$patch(($state) => {\n // @ts-expect-error: FIXME: shouldn't error?\n assign($state, newState);\n });\n }\n : /* istanbul ignore next */\n (process.env.NODE_ENV !== 'production')\n ? () => {\n throw new Error(`🍍: Store \"${$id}\" is built using the setup syntax and does not implement $reset().`);\n }\n : noop;\n function $dispose() {\n scope.stop();\n subscriptions.clear();\n actionSubscriptions.clear();\n pinia._s.delete($id);\n }\n /**\n * Helper that wraps function so it can be tracked with $onAction\n * @param fn - action to wrap\n * @param name - name of the action\n */\n const action = (fn, name = '') => {\n if (ACTION_MARKER in fn) {\n fn[ACTION_NAME] = name;\n return fn;\n }\n const wrappedAction = function () {\n setActivePinia(pinia);\n const args = Array.from(arguments);\n const afterCallbackSet = new Set();\n const onErrorCallbackSet = new Set();\n function after(callback) {\n afterCallbackSet.add(callback);\n }\n function onError(callback) {\n onErrorCallbackSet.add(callback);\n }\n // @ts-expect-error\n triggerSubscriptions(actionSubscriptions, {\n args,\n name: wrappedAction[ACTION_NAME],\n store,\n after,\n onError,\n });\n let ret;\n try {\n ret = fn.apply(this && this.$id === $id ? this : store, args);\n // handle sync errors\n }\n catch (error) {\n triggerSubscriptions(onErrorCallbackSet, error);\n throw error;\n }\n if (ret instanceof Promise) {\n return ret\n .then((value) => {\n triggerSubscriptions(afterCallbackSet, value);\n return value;\n })\n .catch((error) => {\n triggerSubscriptions(onErrorCallbackSet, error);\n return Promise.reject(error);\n });\n }\n // trigger after callbacks\n triggerSubscriptions(afterCallbackSet, ret);\n return ret;\n };\n wrappedAction[ACTION_MARKER] = true;\n wrappedAction[ACTION_NAME] = name; // will be set later\n // @ts-expect-error: we are intentionally limiting the returned type to just Fn\n // because all the added properties are internals that are exposed through `$onAction()` only\n return wrappedAction;\n };\n const _hmrPayload = /*#__PURE__*/ markRaw({\n actions: {},\n getters: {},\n state: [],\n hotState,\n });\n const partialStore = {\n _p: pinia,\n // _s: scope,\n $id,\n $onAction: addSubscription.bind(null, actionSubscriptions),\n $patch,\n $reset,\n $subscribe(callback, options = {}) {\n const removeSubscription = addSubscription(subscriptions, callback, options.detached, () => stopWatcher());\n const stopWatcher = scope.run(() => watch(() => pinia.state.value[$id], (state) => {\n if (options.flush === 'sync' ? isSyncListening : isListening) {\n callback({\n storeId: $id,\n type: MutationType.direct,\n events: debuggerEvents,\n }, state);\n }\n }, assign({}, $subscribeOptions, options)));\n return removeSubscription;\n },\n $dispose,\n };\n const store = reactive((process.env.NODE_ENV !== 'production') || ((((process.env.NODE_ENV !== 'production') || (typeof __VUE_PROD_DEVTOOLS__ !== 'undefined' && __VUE_PROD_DEVTOOLS__)) && !(process.env.NODE_ENV === 'test')) && IS_CLIENT)\n ? assign({\n _hmrPayload,\n _customProperties: markRaw(new Set()), // devtools custom properties\n }, partialStore\n // must be added later\n // setupStore\n )\n : partialStore);\n // store the partial store now so the setup of stores can instantiate each other before they are finished without\n // creating infinite loops.\n pinia._s.set($id, store);\n const runWithContext = (pinia._a && pinia._a.runWithContext) || fallbackRunWithContext;\n // TODO: idea create skipSerialize that marks properties as non serializable and they are skipped\n const setupStore = runWithContext(() => pinia._e.run(() => (scope = effectScope()).run(() => setup({ action }))));\n // overwrite existing actions to support $onAction\n for (const key in setupStore) {\n const prop = setupStore[key];\n if ((isRef(prop) && !isComputed(prop)) || isReactive(prop)) {\n // mark it as a piece of state to be serialized\n if ((process.env.NODE_ENV !== 'production') && hot) {\n hotState.value[key] = toRef(setupStore, key);\n // createOptionStore directly sets the state in pinia.state.value so we\n // can just skip that\n }\n else if (!isOptionsStore) {\n // in setup stores we must hydrate the state and sync pinia state tree with the refs the user just created\n if (initialState && shouldHydrate(prop)) {\n if (isRef(prop)) {\n prop.value = initialState[key];\n }\n else {\n // probably a reactive object, lets recursively assign\n // @ts-expect-error: prop is unknown\n mergeReactiveObjects(prop, initialState[key]);\n }\n }\n // transfer the ref to the pinia state to keep everything in sync\n pinia.state.value[$id][key] = prop;\n }\n /* istanbul ignore else */\n if ((process.env.NODE_ENV !== 'production')) {\n _hmrPayload.state.push(key);\n }\n // action\n }\n else if (typeof prop === 'function') {\n const actionValue = (process.env.NODE_ENV !== 'production') && hot ? prop : action(prop, key);\n // this a hot module replacement store because the hotUpdate method needs\n // to do it with the right context\n // @ts-expect-error\n setupStore[key] = actionValue;\n /* istanbul ignore else */\n if ((process.env.NODE_ENV !== 'production')) {\n _hmrPayload.actions[key] = prop;\n }\n // list actions so they can be used in plugins\n // @ts-expect-error\n optionsForPlugin.actions[key] = prop;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n // add getters for devtools\n if (isComputed(prop)) {\n _hmrPayload.getters[key] = isOptionsStore\n ? // @ts-expect-error\n options.getters[key]\n : prop;\n if (IS_CLIENT) {\n const getters = setupStore._getters ||\n // @ts-expect-error: same\n (setupStore._getters = markRaw([]));\n getters.push(key);\n }\n }\n }\n }\n // add the state, getters, and action properties\n /* istanbul ignore if */\n assign(store, setupStore);\n // allows retrieving reactive objects with `storeToRefs()`. Must be called after assigning to the reactive object.\n // Make `storeToRefs()` work with `reactive()` #799\n assign(toRaw(store), setupStore);\n // use this instead of a computed with setter to be able to create it anywhere\n // without linking the computed lifespan to wherever the store is first\n // created.\n Object.defineProperty(store, '$state', {\n get: () => ((process.env.NODE_ENV !== 'production') && hot ? hotState.value : pinia.state.value[$id]),\n set: (state) => {\n /* istanbul ignore if */\n if ((process.env.NODE_ENV !== 'production') && hot) {\n throw new Error('cannot set hotState');\n }\n $patch(($state) => {\n // @ts-expect-error: FIXME: shouldn't error?\n assign($state, state);\n });\n },\n });\n // add the hotUpdate before plugins to allow them to override it\n /* istanbul ignore else */\n if ((process.env.NODE_ENV !== 'production')) {\n store._hotUpdate = markRaw((newStore) => {\n store._hotUpdating = true;\n newStore._hmrPayload.state.forEach((stateKey) => {\n if (stateKey in store.$state) {\n const newStateTarget = newStore.$state[stateKey];\n const oldStateSource = store.$state[stateKey];\n if (typeof newStateTarget === 'object' &&\n isPlainObject(newStateTarget) &&\n isPlainObject(oldStateSource)) {\n patchObject(newStateTarget, oldStateSource);\n }\n else {\n // transfer the ref\n newStore.$state[stateKey] = oldStateSource;\n }\n }\n // patch direct access properties to allow store.stateProperty to work as\n // store.$state.stateProperty\n // @ts-expect-error: any type\n store[stateKey] = toRef(newStore.$state, stateKey);\n });\n // remove deleted state properties\n Object.keys(store.$state).forEach((stateKey) => {\n if (!(stateKey in newStore.$state)) {\n // @ts-expect-error: noop if doesn't exist\n delete store[stateKey];\n }\n });\n // avoid devtools logging this as a mutation\n isListening = false;\n isSyncListening = false;\n pinia.state.value[$id] = toRef(newStore._hmrPayload, 'hotState');\n isSyncListening = true;\n nextTick().then(() => {\n isListening = true;\n });\n for (const actionName in newStore._hmrPayload.actions) {\n const actionFn = newStore[actionName];\n // @ts-expect-error: actionName is a string\n store[actionName] =\n //\n action(actionFn, actionName);\n }\n // TODO: does this work in both setup and option store?\n for (const getterName in newStore._hmrPayload.getters) {\n const getter = newStore._hmrPayload.getters[getterName];\n const getterValue = isOptionsStore\n ? // special handling of options api\n computed(() => {\n setActivePinia(pinia);\n return getter.call(store, store);\n })\n : getter;\n // @ts-expect-error: getterName is a string\n store[getterName] =\n //\n getterValue;\n }\n // remove deleted getters\n Object.keys(store._hmrPayload.getters).forEach((key) => {\n if (!(key in newStore._hmrPayload.getters)) {\n // @ts-expect-error: noop if doesn't exist\n delete store[key];\n }\n });\n // remove old actions\n Object.keys(store._hmrPayload.actions).forEach((key) => {\n if (!(key in newStore._hmrPayload.actions)) {\n // @ts-expect-error: noop if doesn't exist\n delete store[key];\n }\n });\n // update the values used in devtools and to allow deleting new properties later on\n store._hmrPayload = newStore._hmrPayload;\n store._getters = newStore._getters;\n store._hotUpdating = false;\n });\n }\n if ((((process.env.NODE_ENV !== 'production') || (typeof __VUE_PROD_DEVTOOLS__ !== 'undefined' && __VUE_PROD_DEVTOOLS__)) && !(process.env.NODE_ENV === 'test')) && IS_CLIENT) {\n const nonEnumerable = {\n writable: true,\n configurable: true,\n // avoid warning on devtools trying to display this property\n enumerable: false,\n };\n ['_p', '_hmrPayload', '_getters', '_customProperties'].forEach((p) => {\n Object.defineProperty(store, p, assign({ value: store[p] }, nonEnumerable));\n });\n }\n // apply all plugins\n pinia._p.forEach((extender) => {\n /* istanbul ignore else */\n if ((((process.env.NODE_ENV !== 'production') || (typeof __VUE_PROD_DEVTOOLS__ !== 'undefined' && __VUE_PROD_DEVTOOLS__)) && !(process.env.NODE_ENV === 'test')) && IS_CLIENT) {\n const extensions = scope.run(() => extender({\n store: store,\n app: pinia._a,\n pinia,\n options: optionsForPlugin,\n }));\n Object.keys(extensions || {}).forEach((key) => store._customProperties.add(key));\n assign(store, extensions);\n }\n else {\n assign(store, scope.run(() => extender({\n store: store,\n app: pinia._a,\n pinia,\n options: optionsForPlugin,\n })));\n }\n });\n if ((process.env.NODE_ENV !== 'production') &&\n store.$state &&\n typeof store.$state === 'object' &&\n typeof store.$state.constructor === 'function' &&\n !store.$state.constructor.toString().includes('[native code]')) {\n console.warn(`[🍍]: The \"state\" must be a plain object. It cannot be\\n` +\n `\\tstate: () => new MyClass()\\n` +\n `Found in store \"${store.$id}\".`);\n }\n // only apply hydrate to option stores with an initial state in pinia\n if (initialState &&\n isOptionsStore &&\n options.hydrate) {\n options.hydrate(store.$state, initialState);\n }\n isListening = true;\n isSyncListening = true;\n return store;\n}\n// allows unused stores to be tree shaken\n/*! #__NO_SIDE_EFFECTS__ */\nfunction defineStore(\n// TODO: add proper types from above\nid, setup, setupOptions) {\n let options;\n const isSetupStore = typeof setup === 'function';\n // the option store setup will contain the actual options in this case\n options = isSetupStore ? setupOptions : setup;\n function useStore(pinia, hot) {\n const hasContext = hasInjectionContext();\n pinia =\n // in test mode, ignore the argument provided as we can always retrieve a\n // pinia instance with getActivePinia()\n ((process.env.NODE_ENV === 'test') && activePinia && activePinia._testing ? null : pinia) ||\n (hasContext ? inject(piniaSymbol, null) : null);\n if (pinia)\n setActivePinia(pinia);\n if ((process.env.NODE_ENV !== 'production') && !activePinia) {\n throw new Error(`[🍍]: \"getActivePinia()\" was called but there was no active Pinia. Are you trying to use a store before calling \"app.use(pinia)\"?\\n` +\n `See https://pinia.vuejs.org/core-concepts/outside-component-usage.html for help.\\n` +\n `This will fail in production.`);\n }\n pinia = activePinia;\n if (!pinia._s.has(id)) {\n // creating the store registers it in `pinia._s`\n if (isSetupStore) {\n createSetupStore(id, setup, options, pinia);\n }\n else {\n createOptionsStore(id, options, pinia);\n }\n /* istanbul ignore else */\n if ((process.env.NODE_ENV !== 'production')) {\n // @ts-expect-error: not the right inferred type\n useStore._pinia = pinia;\n }\n }\n const store = pinia._s.get(id);\n if ((process.env.NODE_ENV !== 'production') && hot) {\n const hotId = '__hot:' + id;\n const newStore = isSetupStore\n ? createSetupStore(hotId, setup, options, pinia, true)\n : createOptionsStore(hotId, assign({}, options), pinia, true);\n hot._hotUpdate(newStore);\n // cleanup the state properties and the store from the cache\n delete pinia.state.value[hotId];\n pinia._s.delete(hotId);\n }\n if ((process.env.NODE_ENV !== 'production') && IS_CLIENT) {\n const currentInstance = getCurrentInstance();\n // save stores in instances to access them devtools\n if (currentInstance &&\n currentInstance.proxy &&\n // avoid adding stores that are just built for hot module replacement\n !hot) {\n const vm = currentInstance.proxy;\n const cache = '_pStores' in vm ? vm._pStores : (vm._pStores = {});\n cache[id] = store;\n }\n }\n // StoreGeneric cannot be casted towards Store\n return store;\n }\n useStore.$id = id;\n return useStore;\n}\n\nlet mapStoreSuffix = 'Store';\n/**\n * Changes the suffix added by `mapStores()`. Can be set to an empty string.\n * Defaults to `\"Store\"`. Make sure to extend the MapStoresCustomization\n * interface if you are using TypeScript.\n *\n * @param suffix - new suffix\n */\nfunction setMapStoreSuffix(suffix // could be 'Store' but that would be annoying for JS\n) {\n mapStoreSuffix = suffix;\n}\n/**\n * Allows using stores without the composition API (`setup()`) by generating an\n * object to be spread in the `computed` field of a component. It accepts a list\n * of store definitions.\n *\n * @example\n * ```js\n * export default {\n * computed: {\n * // other computed properties\n * ...mapStores(useUserStore, useCartStore)\n * },\n *\n * created() {\n * this.userStore // store with id \"user\"\n * this.cartStore // store with id \"cart\"\n * }\n * }\n * ```\n *\n * @param stores - list of stores to map to an object\n */\nfunction mapStores(...stores) {\n if ((process.env.NODE_ENV !== 'production') && Array.isArray(stores[0])) {\n console.warn(`[🍍]: Directly pass all stores to \"mapStores()\" without putting them in an array:\\n` +\n `Replace\\n` +\n `\\tmapStores([useAuthStore, useCartStore])\\n` +\n `with\\n` +\n `\\tmapStores(useAuthStore, useCartStore)\\n` +\n `This will fail in production if not fixed.`);\n stores = stores[0];\n }\n return stores.reduce((reduced, useStore) => {\n // @ts-expect-error: $id is added by defineStore\n reduced[useStore.$id + mapStoreSuffix] = function () {\n return useStore(this.$pinia);\n };\n return reduced;\n }, {});\n}\n/**\n * Allows using state and getters from one store without using the composition\n * API (`setup()`) by generating an object to be spread in the `computed` field\n * of a component.\n *\n * @param useStore - store to map from\n * @param keysOrMapper - array or object\n */\nfunction mapState(useStore, keysOrMapper) {\n return Array.isArray(keysOrMapper)\n ? keysOrMapper.reduce((reduced, key) => {\n reduced[key] = function () {\n // @ts-expect-error: FIXME: should work?\n return useStore(this.$pinia)[key];\n };\n return reduced;\n }, {})\n : Object.keys(keysOrMapper).reduce((reduced, key) => {\n // @ts-expect-error\n reduced[key] = function () {\n const store = useStore(this.$pinia);\n const storeKey = keysOrMapper[key];\n // for some reason TS is unable to infer the type of storeKey to be a\n // function\n return typeof storeKey === 'function'\n ? storeKey.call(this, store)\n : // @ts-expect-error: FIXME: should work?\n store[storeKey];\n };\n return reduced;\n }, {});\n}\n/**\n * Alias for `mapState()`. You should use `mapState()` instead.\n * @deprecated use `mapState()` instead.\n */\nconst mapGetters = mapState;\n/**\n * Allows directly using actions from your store without using the composition\n * API (`setup()`) by generating an object to be spread in the `methods` field\n * of a component.\n *\n * @param useStore - store to map from\n * @param keysOrMapper - array or object\n */\nfunction mapActions(useStore, keysOrMapper) {\n return Array.isArray(keysOrMapper)\n ? keysOrMapper.reduce((reduced, key) => {\n // @ts-expect-error\n reduced[key] = function (...args) {\n // @ts-expect-error: FIXME: should work?\n return useStore(this.$pinia)[key](...args);\n };\n return reduced;\n }, {})\n : Object.keys(keysOrMapper).reduce((reduced, key) => {\n // @ts-expect-error\n reduced[key] = function (...args) {\n // @ts-expect-error: FIXME: should work?\n return useStore(this.$pinia)[keysOrMapper[key]](...args);\n };\n return reduced;\n }, {});\n}\n/**\n * Allows using state and getters from one store without using the composition\n * API (`setup()`) by generating an object to be spread in the `computed` field\n * of a component.\n *\n * @param useStore - store to map from\n * @param keysOrMapper - array or object\n */\nfunction mapWritableState(useStore, keysOrMapper) {\n return Array.isArray(keysOrMapper)\n ? keysOrMapper.reduce((reduced, key) => {\n reduced[key] = {\n get() {\n return useStore(this.$pinia)[key];\n },\n set(value) {\n return (useStore(this.$pinia)[key] = value);\n },\n };\n return reduced;\n }, {})\n : Object.keys(keysOrMapper).reduce((reduced, key) => {\n reduced[key] = {\n get() {\n return useStore(this.$pinia)[keysOrMapper[key]];\n },\n set(value) {\n return (useStore(this.$pinia)[keysOrMapper[key]] = value);\n },\n };\n return reduced;\n }, {});\n}\n\n/**\n * Creates an object of references with all the state, getters, and plugin-added\n * state properties of the store. Similar to `toRefs()` but specifically\n * designed for Pinia stores so methods and non reactive properties are\n * completely ignored.\n *\n * @param store - store to extract the refs from\n */\nfunction storeToRefs(store) {\n const rawStore = toRaw(store);\n const refs = {};\n for (const key in rawStore) {\n const value = rawStore[key];\n // There is no native method to check for a computed\n // https://github.com/vuejs/core/pull/4165\n if (value.effect) {\n // @ts-expect-error: too hard to type correctly\n refs[key] =\n // ...\n computed({\n get: () => store[key],\n set(value) {\n store[key] = value;\n },\n });\n }\n else if (isRef(value) || isReactive(value)) {\n // @ts-expect-error: the key is state or getter\n refs[key] =\n // ---\n toRef(store, key);\n }\n }\n return refs;\n}\n\nexport { MutationType, acceptHMRUpdate, createPinia, defineStore, disposePinia, getActivePinia, mapActions, mapGetters, mapState, mapStores, mapWritableState, setActivePinia, setMapStoreSuffix, shouldHydrate, skipHydrate, storeToRefs };\n","import { createApp } from \"vue\";\nfunction spawnDialog(dialog, props = {}, options = {}) {\n let { container } = options;\n if (\"container\" in props && typeof props.container === \"string\") {\n container ??= props.container;\n }\n const resolvedContainer = typeof container === \"string\" && document.querySelector(container) || document.body;\n const element = resolvedContainer.appendChild(document.createElement(\"div\"));\n return new Promise((resolve, reject) => {\n const app = createApp(dialog, {\n ...props,\n // If dialog has no `container` prop passing a falsy value does nothing\n // Otherwise it is expected that `null` disables teleport and mounts dialog in place like NcDialog/NcModal\n container: null,\n onClose(...rest) {\n const payload = rest.length > 1 ? rest : rest[0];\n app.unmount();\n element.remove();\n resolve(payload);\n },\n \"onVue:unmounted\": () => {\n app.unmount();\n element.remove();\n reject(new Error(\"Dialog was unmounted without close event\"));\n }\n });\n app.mount(element);\n });\n}\nexport {\n spawnDialog\n};\n//# sourceMappingURL=index.mjs.map\n","/*!\n * Toastify js 1.12.0\n * https://github.com/apvarun/toastify-js\n * @license MIT licensed\n *\n * Copyright (C) 2018 Varun A P\n */\n(function(root, factory) {\n if (typeof module === \"object\" && module.exports) {\n module.exports = factory();\n } else {\n root.Toastify = factory();\n }\n})(this, function(global) {\n // Object initialization\n var Toastify = function(options) {\n // Returning a new init object\n return new Toastify.lib.init(options);\n },\n // Library version\n version = \"1.12.0\";\n\n // Set the default global options\n Toastify.defaults = {\n oldestFirst: true,\n text: \"Toastify is awesome!\",\n node: undefined,\n duration: 3000,\n selector: undefined,\n callback: function () {\n },\n destination: undefined,\n newWindow: false,\n close: false,\n gravity: \"toastify-top\",\n positionLeft: false,\n position: '',\n backgroundColor: '',\n avatar: \"\",\n className: \"\",\n stopOnFocus: true,\n onClick: function () {\n },\n offset: {x: 0, y: 0},\n escapeMarkup: true,\n ariaLive: 'polite',\n style: {background: ''}\n };\n\n // Defining the prototype of the object\n Toastify.lib = Toastify.prototype = {\n toastify: version,\n\n constructor: Toastify,\n\n // Initializing the object with required parameters\n init: function(options) {\n // Verifying and validating the input object\n if (!options) {\n options = {};\n }\n\n // Creating the options object\n this.options = {};\n\n this.toastElement = null;\n\n // Validating the options\n this.options.text = options.text || Toastify.defaults.text; // Display message\n this.options.node = options.node || Toastify.defaults.node; // Display content as node\n this.options.duration = options.duration === 0 ? 0 : options.duration || Toastify.defaults.duration; // Display duration\n this.options.selector = options.selector || Toastify.defaults.selector; // Parent selector\n this.options.callback = options.callback || Toastify.defaults.callback; // Callback after display\n this.options.destination = options.destination || Toastify.defaults.destination; // On-click destination\n this.options.newWindow = options.newWindow || Toastify.defaults.newWindow; // Open destination in new window\n this.options.close = options.close || Toastify.defaults.close; // Show toast close icon\n this.options.gravity = options.gravity === \"bottom\" ? \"toastify-bottom\" : Toastify.defaults.gravity; // toast position - top or bottom\n this.options.positionLeft = options.positionLeft || Toastify.defaults.positionLeft; // toast position - left or right\n this.options.position = options.position || Toastify.defaults.position; // toast position - left or right\n this.options.backgroundColor = options.backgroundColor || Toastify.defaults.backgroundColor; // toast background color\n this.options.avatar = options.avatar || Toastify.defaults.avatar; // img element src - url or a path\n this.options.className = options.className || Toastify.defaults.className; // additional class names for the toast\n this.options.stopOnFocus = options.stopOnFocus === undefined ? Toastify.defaults.stopOnFocus : options.stopOnFocus; // stop timeout on focus\n this.options.onClick = options.onClick || Toastify.defaults.onClick; // Callback after click\n this.options.offset = options.offset || Toastify.defaults.offset; // toast offset\n this.options.escapeMarkup = options.escapeMarkup !== undefined ? options.escapeMarkup : Toastify.defaults.escapeMarkup;\n this.options.ariaLive = options.ariaLive || Toastify.defaults.ariaLive;\n this.options.style = options.style || Toastify.defaults.style;\n if(options.backgroundColor) {\n this.options.style.background = options.backgroundColor;\n }\n\n // Returning the current object for chaining functions\n return this;\n },\n\n // Building the DOM element\n buildToast: function() {\n // Validating if the options are defined\n if (!this.options) {\n throw \"Toastify is not initialized\";\n }\n\n // Creating the DOM object\n var divElement = document.createElement(\"div\");\n divElement.className = \"toastify on \" + this.options.className;\n\n // Positioning toast to left or right or center\n if (!!this.options.position) {\n divElement.className += \" toastify-\" + this.options.position;\n } else {\n // To be depreciated in further versions\n if (this.options.positionLeft === true) {\n divElement.className += \" toastify-left\";\n console.warn('Property `positionLeft` will be depreciated in further versions. Please use `position` instead.')\n } else {\n // Default position\n divElement.className += \" toastify-right\";\n }\n }\n\n // Assigning gravity of element\n divElement.className += \" \" + this.options.gravity;\n\n if (this.options.backgroundColor) {\n // This is being deprecated in favor of using the style HTML DOM property\n console.warn('DEPRECATION NOTICE: \"backgroundColor\" is being deprecated. Please use the \"style.background\" property.');\n }\n\n // Loop through our style object and apply styles to divElement\n for (var property in this.options.style) {\n divElement.style[property] = this.options.style[property];\n }\n\n // Announce the toast to screen readers\n if (this.options.ariaLive) {\n divElement.setAttribute('aria-live', this.options.ariaLive)\n }\n\n // Adding the toast message/node\n if (this.options.node && this.options.node.nodeType === Node.ELEMENT_NODE) {\n // If we have a valid node, we insert it\n divElement.appendChild(this.options.node)\n } else {\n if (this.options.escapeMarkup) {\n divElement.innerText = this.options.text;\n } else {\n divElement.innerHTML = this.options.text;\n }\n\n if (this.options.avatar !== \"\") {\n var avatarElement = document.createElement(\"img\");\n avatarElement.src = this.options.avatar;\n\n avatarElement.className = \"toastify-avatar\";\n\n if (this.options.position == \"left\" || this.options.positionLeft === true) {\n // Adding close icon on the left of content\n divElement.appendChild(avatarElement);\n } else {\n // Adding close icon on the right of content\n divElement.insertAdjacentElement(\"afterbegin\", avatarElement);\n }\n }\n }\n\n // Adding a close icon to the toast\n if (this.options.close === true) {\n // Create a span for close element\n var closeElement = document.createElement(\"button\");\n closeElement.type = \"button\";\n closeElement.setAttribute(\"aria-label\", \"Close\");\n closeElement.className = \"toast-close\";\n closeElement.innerHTML = \"✖\";\n\n // Triggering the removal of toast from DOM on close click\n closeElement.addEventListener(\n \"click\",\n function(event) {\n event.stopPropagation();\n this.removeElement(this.toastElement);\n window.clearTimeout(this.toastElement.timeOutValue);\n }.bind(this)\n );\n\n //Calculating screen width\n var width = window.innerWidth > 0 ? window.innerWidth : screen.width;\n\n // Adding the close icon to the toast element\n // Display on the right if screen width is less than or equal to 360px\n if ((this.options.position == \"left\" || this.options.positionLeft === true) && width > 360) {\n // Adding close icon on the left of content\n divElement.insertAdjacentElement(\"afterbegin\", closeElement);\n } else {\n // Adding close icon on the right of content\n divElement.appendChild(closeElement);\n }\n }\n\n // Clear timeout while toast is focused\n if (this.options.stopOnFocus && this.options.duration > 0) {\n var self = this;\n // stop countdown\n divElement.addEventListener(\n \"mouseover\",\n function(event) {\n window.clearTimeout(divElement.timeOutValue);\n }\n )\n // add back the timeout\n divElement.addEventListener(\n \"mouseleave\",\n function() {\n divElement.timeOutValue = window.setTimeout(\n function() {\n // Remove the toast from DOM\n self.removeElement(divElement);\n },\n self.options.duration\n )\n }\n )\n }\n\n // Adding an on-click destination path\n if (typeof this.options.destination !== \"undefined\") {\n divElement.addEventListener(\n \"click\",\n function(event) {\n event.stopPropagation();\n if (this.options.newWindow === true) {\n window.open(this.options.destination, \"_blank\");\n } else {\n window.location = this.options.destination;\n }\n }.bind(this)\n );\n }\n\n if (typeof this.options.onClick === \"function\" && typeof this.options.destination === \"undefined\") {\n divElement.addEventListener(\n \"click\",\n function(event) {\n event.stopPropagation();\n this.options.onClick();\n }.bind(this)\n );\n }\n\n // Adding offset\n if(typeof this.options.offset === \"object\") {\n\n var x = getAxisOffsetAValue(\"x\", this.options);\n var y = getAxisOffsetAValue(\"y\", this.options);\n\n var xOffset = this.options.position == \"left\" ? x : \"-\" + x;\n var yOffset = this.options.gravity == \"toastify-top\" ? y : \"-\" + y;\n\n divElement.style.transform = \"translate(\" + xOffset + \",\" + yOffset + \")\";\n\n }\n\n // Returning the generated element\n return divElement;\n },\n\n // Displaying the toast\n showToast: function() {\n // Creating the DOM object for the toast\n this.toastElement = this.buildToast();\n\n // Getting the root element to with the toast needs to be added\n var rootElement;\n if (typeof this.options.selector === \"string\") {\n rootElement = document.getElementById(this.options.selector);\n } else if (this.options.selector instanceof HTMLElement || (typeof ShadowRoot !== 'undefined' && this.options.selector instanceof ShadowRoot)) {\n rootElement = this.options.selector;\n } else {\n rootElement = document.body;\n }\n\n // Validating if root element is present in DOM\n if (!rootElement) {\n throw \"Root element is not defined\";\n }\n\n // Adding the DOM element\n var elementToInsert = Toastify.defaults.oldestFirst ? rootElement.firstChild : rootElement.lastChild;\n rootElement.insertBefore(this.toastElement, elementToInsert);\n\n // Repositioning the toasts in case multiple toasts are present\n Toastify.reposition();\n\n if (this.options.duration > 0) {\n this.toastElement.timeOutValue = window.setTimeout(\n function() {\n // Remove the toast from DOM\n this.removeElement(this.toastElement);\n }.bind(this),\n this.options.duration\n ); // Binding `this` for function invocation\n }\n\n // Supporting function chaining\n return this;\n },\n\n hideToast: function() {\n if (this.toastElement.timeOutValue) {\n clearTimeout(this.toastElement.timeOutValue);\n }\n this.removeElement(this.toastElement);\n },\n\n // Removing the element from the DOM\n removeElement: function(toastElement) {\n // Hiding the element\n // toastElement.classList.remove(\"on\");\n toastElement.className = toastElement.className.replace(\" on\", \"\");\n\n // Removing the element from DOM after transition end\n window.setTimeout(\n function() {\n // remove options node if any\n if (this.options.node && this.options.node.parentNode) {\n this.options.node.parentNode.removeChild(this.options.node);\n }\n\n // Remove the element from the DOM, only when the parent node was not removed before.\n if (toastElement.parentNode) {\n toastElement.parentNode.removeChild(toastElement);\n }\n\n // Calling the callback function\n this.options.callback.call(toastElement);\n\n // Repositioning the toasts again\n Toastify.reposition();\n }.bind(this),\n 400\n ); // Binding `this` for function invocation\n },\n };\n\n // Positioning the toasts on the DOM\n Toastify.reposition = function() {\n\n // Top margins with gravity\n var topLeftOffsetSize = {\n top: 15,\n bottom: 15,\n };\n var topRightOffsetSize = {\n top: 15,\n bottom: 15,\n };\n var offsetSize = {\n top: 15,\n bottom: 15,\n };\n\n // Get all toast messages on the DOM\n var allToasts = document.getElementsByClassName(\"toastify\");\n\n var classUsed;\n\n // Modifying the position of each toast element\n for (var i = 0; i < allToasts.length; i++) {\n // Getting the applied gravity\n if (containsClass(allToasts[i], \"toastify-top\") === true) {\n classUsed = \"toastify-top\";\n } else {\n classUsed = \"toastify-bottom\";\n }\n\n var height = allToasts[i].offsetHeight;\n classUsed = classUsed.substr(9, classUsed.length-1)\n // Spacing between toasts\n var offset = 15;\n\n var width = window.innerWidth > 0 ? window.innerWidth : screen.width;\n\n // Show toast in center if screen with less than or equal to 360px\n if (width <= 360) {\n // Setting the position\n allToasts[i].style[classUsed] = offsetSize[classUsed] + \"px\";\n\n offsetSize[classUsed] += height + offset;\n } else {\n if (containsClass(allToasts[i], \"toastify-left\") === true) {\n // Setting the position\n allToasts[i].style[classUsed] = topLeftOffsetSize[classUsed] + \"px\";\n\n topLeftOffsetSize[classUsed] += height + offset;\n } else {\n // Setting the position\n allToasts[i].style[classUsed] = topRightOffsetSize[classUsed] + \"px\";\n\n topRightOffsetSize[classUsed] += height + offset;\n }\n }\n }\n\n // Supporting function chaining\n return this;\n };\n\n // Helper function to get offset.\n function getAxisOffsetAValue(axis, options) {\n\n if(options.offset[axis]) {\n if(isNaN(options.offset[axis])) {\n return options.offset[axis];\n }\n else {\n return options.offset[axis] + 'px';\n }\n }\n\n return '0px';\n\n }\n\n function containsClass(elem, yourClass) {\n if (!elem || typeof yourClass !== \"string\") {\n return false;\n } else if (\n elem.className &&\n elem.className\n .trim()\n .split(/\\s+/gi)\n .indexOf(yourClass) > -1\n ) {\n return true;\n } else {\n return false;\n }\n }\n\n // Setting up the prototype for the init object\n Toastify.lib.init.prototype = Toastify.lib;\n\n // Returning the Toastify function to be assigned to the window object/module\n return Toastify;\n});\n","import '../assets/NcNoteCard-DZSuYX4-.css';\nimport { defineComponent, computed, createElementBlock, openBlock, normalizeClass, unref, renderSlot, createElementVNode, createVNode, createCommentVNode, toDisplayString } from \"vue\";\nimport { k as mdiAlert, l as mdiInformation, n as mdiCheckboxMarkedCircle, o as mdiAlertDecagram } from \"./mdi-CpchYUUV.mjs\";\nimport { i as isLegacy } from \"./legacy-DcjXBL_t.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-BvLanNaW.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _hoisted_1 = [\"role\"];\nconst _hoisted_2 = {\n key: 0,\n class: \"notecard__heading\"\n};\nconst _hoisted_3 = { class: \"notecard__text\" };\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcNoteCard\",\n props: {\n heading: { default: void 0 },\n showAlert: { type: Boolean },\n text: { default: void 0 },\n type: { default: \"warning\" }\n },\n setup(__props) {\n const props = __props;\n const shouldShowAlert = computed(() => props.showAlert || props.type === \"error\");\n const iconPath = computed(() => {\n switch (props.type) {\n case \"error\":\n return mdiAlertDecagram;\n case \"success\":\n return mdiCheckboxMarkedCircle;\n case \"info\":\n return mdiInformation;\n case \"warning\":\n default:\n return mdiAlert;\n }\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"notecard\", {\n [`notecard--${_ctx.type}`]: _ctx.type,\n \"notecard--legacy\": unref(isLegacy)\n }]),\n role: shouldShowAlert.value ? \"alert\" : \"note\"\n }, [\n renderSlot(_ctx.$slots, \"icon\", {}, () => [\n createVNode(unref(NcIconSvgWrapper), {\n path: iconPath.value,\n class: normalizeClass([\"notecard__icon\", { \"notecard__icon--heading\": _ctx.heading }]),\n inline: \"\"\n }, null, 8, [\"path\", \"class\"])\n ], true),\n createElementVNode(\"div\", null, [\n _ctx.heading ? (openBlock(), createElementBlock(\"p\", _hoisted_2, toDisplayString(_ctx.heading), 1)) : createCommentVNode(\"\", true),\n renderSlot(_ctx.$slots, \"default\", {}, () => [\n createElementVNode(\"p\", _hoisted_3, toDisplayString(_ctx.text), 1)\n ], true)\n ])\n ], 10, _hoisted_1);\n };\n }\n});\nconst NcNoteCard = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-7e4656f9\"]]);\nexport {\n NcNoteCard as N\n};\n//# sourceMappingURL=NcNoteCard-Cok_4Fld.mjs.map\n","import { spawnDialog } from \"@nextcloud/vue/functions/dialog\";\nimport { defineAsyncComponent, defineComponent, computed, onMounted, onUnmounted, createBlock, openBlock, unref, withCtx, createCommentVNode, createElementBlock, createElementVNode, toDisplayString } from \"vue\";\nimport { basename } from \"@nextcloud/paths\";\nimport { getGettextBuilder } from \"@nextcloud/l10n/gettext\";\nimport { getLoggerBuilder } from \"@nextcloud/logger\";\nimport Toastify from \"toastify-js\";\nimport NcDialog from \"@nextcloud/vue/components/NcDialog\";\nimport NcNoteCard from \"@nextcloud/vue/components/NcNoteCard\";\n/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nasync function openConflictPicker(dirname, conflicts, content, options) {\n const ConflictPicker = defineAsyncComponent(() => import(\"./ConflictPicker-D-B-WV0C.mjs\"));\n const incoming = [];\n const existing = [];\n for (const node of content) {\n if (isConflictingNode(node)) {\n existing.push(node);\n incoming.push(conflicts[indexOf(node)]);\n }\n }\n if (conflicts.length === 0 || content.length === 0) {\n throw new Error(\"ConflictPicker: files and conflicts must not be empty\");\n }\n if (conflicts.length !== content.length) {\n throw new Error(\"ConflictPicker: files and conflicts must have the same length. Make sure you filter out non conflicting files from the conflicts array.\");\n }\n return await spawnDialog(ConflictPicker, {\n dirname,\n existing,\n incoming,\n recursiveUpload: options?.recursive === true\n }, {\n container: options?.container\n });\n function isConflictingNode(node) {\n return conflicts.some((entry) => nodeIsConflict(node, entry));\n }\n function indexOf(node) {\n return conflicts.findIndex((entry) => nodeIsConflict(node, entry));\n }\n function nodeIsConflict(node, conflict) {\n if (\"basename\" in conflict) {\n return conflict.basename === node.basename;\n }\n return conflict.name === node.basename;\n }\n}\nconst IconMove = '';\nconst IconCopy = '';\nconst gtBuilder = getGettextBuilder().detectLanguage();\nfor (const data of [{ \"language\": \"ar\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" لا يصلح كاسم مجلد.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" غير مسموح به كاسم مجلد'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" غير مسموح به داخل اسم مجلد.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"كل الملفات\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"إختَر\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"إختر {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"إختَر %n ملف\", \"إختَر %n ملف\", \"إختَر %n ملف\", \"إختَر %n ملفات\", \"إختَر %n ملف\", \"إختر %n ملف\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"نسخ\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"نسخ إلى {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"تعذّر إنشاء المجلد الجديد\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"يتعذّر تحميل إعدادات الملفات\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"تعذر تحميل عرض الملفات\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"إنشاء مجلد\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"محدد العرض الحالي\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"المفضلة\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"الملفات والمجلدات التي تحددها كمفضلة ستظهر هنا.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"الملفات و المجلدات التي قمت مؤخراً بتعديلها سوف تظهر هنا.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"تصفية قائمة الملفات\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"اسم المجلد لا يمكن أن يكون فارغاً.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"البداية\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"التعديل\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"نقل\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"نقل إلى {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"الاسم\"] }, { \"msgid\": \"New\", \"msgstr\": [\"جديد\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"مجلد جديد\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"اسم المجلد الجديد\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"لا توجد ملفات هنا\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"لا توجد ملفات تتطابق مع عامل التصفية الذي وضعته\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"لا توجد ملفات مطابقة\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"الحالي\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"حدد جميع الإدخالات\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"إختَر المدخل\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"إختر سطر الـ {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"الحجم\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"تراجع\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"قم برفع بعض المحتوى أو المزامنة مع أجهزتك!\"] }] }, { \"language\": \"ast\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"«{name}» ye un nome de carpeta inválidu.\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"«{name}» ye un nome de carpeta inválidu\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": [\"Nun se permite'l caráuter «/» dientro'l nome de les carpetes.\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Tolos ficheros\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Escoyer\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Escoyer «{ficheru}»\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Escoyer %n ficheru\", \"Escoyer %n ficheros\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copiar\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copiar en: {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Nun se pudo crear la carpeta\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Nun se pudo cargar la configuración de los ficheros\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nun se pudieron cargar les vistes de los ficheros\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Crear un direutoriu\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Selector de la vista actual\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritos\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Equí apaecen los ficheros y les carpetes que metas en Favoritos.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Equí apaecen los fichero y les carpetes que modificares apocayá.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Peñerar la llista de ficheros\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"El nome de la carpeta nun pue tar baleru.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Aniciu\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modificóse\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Mover\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Mover a {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nome\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nuevu\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Carpeta nueva\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nome de carpeta nuevu\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Equí nun hai nengún ficheru\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nun s'atopó nengún ficheru que concasare cola peñera.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nun hai nengún ficheru que concase\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"De recién\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Seleicionar toles entraes\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Seleicionar la entrada\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Seleicionar la filera de: {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Tamañu\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Desfacer\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"¡Xubi dalgún elementu o sincroniza colos tos preseos!\"] }] }, { \"language\": \"ca\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [`No és permès d'usar el caràcter \"{char}\" en un nom.`] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" no és un nom permès.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" no és vàlid com a nom de carpeta.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" no és vàlid com a nom de carpeta'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" és un mot reservat i no està permès com a nom.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": [`\"/\" no està permès en el nom d'una carpeta.`] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n conflicte de fitxers\", \"%n conflictes de fitxers\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n onflicte de fitxers a {dirname}\", \"%n conflictes de fitxers a {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Tots els fitxers\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancel·lar\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancel·lar tota l'operació\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Tria\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Tria {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Tria %n fitxer\", \"Tria %n fitxers\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Confirma\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copia\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copia a {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"No s'ha pogut crear la carpeta nova\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"No es poden carregar fitxers de configuració\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"No es poden carregar fitxers de vistes\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Crea un directori\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Selector de visualització actual\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Escriviu el vostre nom\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Versió existent\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"No s'ha pogut desar el sobrenom.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Preferits\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Els fitxers i les carpetes que marqueu com a favorits es mostraran aquí.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Els fitxers i les carpetes recentment modificats es mostraran aquí.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrar llistat de fitxers\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"El nom de la carpeta no pot estar buit.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identificació com a convidat\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Inici\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si seleccioneu les dues versions, el fitxer entrant tindrà un número afegit al seu nom.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nom no vàlid.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data de l'última modificació desconeguda\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Data de modificació\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Desplaça\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Desplaça a {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nom\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Els noms poden tenir com a màxim 64 caràcters.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Els noms no poden ser buits.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": [`Els noms no poden acabar amb l'extensió \"{extension}\".`] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Els noms no poden començar amb un punt.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Crea\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Carpeta nova\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nom de la carpeta nova\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nova versió\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"No hi ha cap fitxer\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"No s'ha trobat cap fitxer que coincideixi amb el filtre.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"No hi ha cap fitxer que coincideixi\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Si us plau, escriu un nom amb 2 caràcters com a mínim.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Recents\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Selecciona totes les caselles de selecció\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Selecciona totes les entrades\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Selecciona tots els fitxers existents\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Selecciona tots els fitxers nous\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Selecciona l'entrada\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Selecciona la fila per a {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Mida\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Omet %n fitxer\", \"Omet %n fitxers\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Omet aquest fitxer\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Entreu el nom\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Desfés\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Pugeu contingut o sincronitzeu-lo amb els vostres dispositius!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Quan es selecciona una carpeta entrant, també se sobreescriuran els fitxers que hi entrin en conflicte.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Quan es selecciona una carpeta entrant, el contingut s'escriu a la carpeta existent i es realitza una resolució recursiva de conflictes.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quins fitxers voleu conservar?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Actualment se us mostra com a {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Actualment no esteu identificat.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"No podeu deixar el nom buit.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Heu de triar com a mínim una solució de conflicte\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Heu de seleccionar com a mínim una versió de cada fitxer per continuar.\"] }] }, { \"language\": \"cs_CZ\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [\"„{char}“ není možné použít uvnitř názvu.\"] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": [\"„{extension}“ není možné použít jako název.\"] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"„{name}“ není platný název složky.\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"„{name}“ není povolený název složky.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": [\"„{segment}“ je vyhrazeným názvem a není možné ho použít.\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": [\"znak „/“ (dopředné lomítko) není možné použít uvnitř názvu složky.\"] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n kolize souboru\", \"%n kolize souborů\", \"%n kolizí souborů\", \"%n kolize souborů\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n kolize souborů v {dirname}\", \"%n kolize souborů v {dirname}\", \"%n kolizí souborů v {dirname}\", \"%n kolize souborů v {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Veškeré soubory\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Storno\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Zrušit celou operaci\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Zvolit\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Zvolit {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Zvolte %n soubor\", \"Zvolte %n soubory\", \"Zvolte %n souborů\", \"Zvolte %n soubory\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Potvrdit\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Pokračovat\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Zkopírovat\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Zkopírovat do {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Novou složku se nepodařilo vytvořit\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Nepodařilo se načíst nastavení pro soubory\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nepodařilo se načíst pohledy souborů\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Vytvořit složku\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Výběr stávajícího zobrazení\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Zadejte své jméno\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Existující verze\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Nepodařilo se nastavit přezdívku.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Oblíbené\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Zde se zobrazí soubory a složky, které označíte jako oblíbené.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Zde se zobrazí soubory a složky, které jste nedávno pozměnili.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrovat seznam souborů\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Složku je třeba nějak nazvat.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identifikace hosta\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Domů\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Pokud vyberete obě verze, pak k názvu příchozího souboru bude přidáno číslo.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Neplatný název.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Datum poslední změny neznámé\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Změněno\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Přesounout\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Přesunout do {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Název\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Je třeba, aby délka jmen nepřesahovala 64 znaků.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Názvy je třeba vyplnit.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": [\"Názvy nemohou končit na „{extension}“.\"] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Názvy nemohou začínat tečkou.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nové\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nová složka\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Název pro novou složku\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nová verze\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Nejsou zde žádné soubory\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nenalezeny žádné soubory odpovídající vašemu filtru\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Žádné odpovídající soubory\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Zadejte jméno dlouhé alespoň 2 znaky.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Nedávné\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Vybrat všechny zaškrtávací kolonky\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Vybrat všechny položky\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vybrat všechny existující soubory\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vybrat všechny nové soubory\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Vybrat položku\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Vybrat řádek pro {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Velikost\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Přeskočit %n soubor\", \"Přeskočit %n soubory\", \"Přeskočit %n souborů\", \"Přeskočit %n soubory\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Přeskočit tento soubor\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Odeslat jméno\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Zpět\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Nahrajte sem nějaký obsah nebo proveďte synchronizaci se svými zařízeními!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Pokud je vybrána příchozí složka, budou v ní také přepsány jakékoli kolidující soubory.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Pokud je vybrána příchozí složka, je obsah zapsán do existující složky a je provedeno rekurzivní vyřešení kolizí.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Které soubory chcete ponechat?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"V tuto chvíli jste identifikováni jako {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"V tuto chvíli nejste identifikovaní.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Jméno nelze ponechat nevyplněné.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Je třeba zvolit alespoň jedno z řešení kolize\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Aby bylo možné pokračovat, je třeba vybrat alespoň jednu verzi od každého souboru.\"] }] }, { \"language\": \"da\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" er ikke tilladt i et navn.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" er ikke tilladt i et navn.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" er et ugyldigt mappenavn.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" er ikke et tilladt mappenavn'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" er et reserveret navn og er derfor ikke tilladt.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" er ikke tilladt i et mappenavn.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n filkonflikt\", \"%n filer konflikter\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n filkonflikt i {dirname}\", \"%n filkonflikter i {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Alle filer\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Fortryd\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Annullér hele operationen\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Vælg\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Vælg {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Vælg %n fil\", \"Vælg %n filer\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Bekræft\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsæt\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopier\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopier til {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Kunne ikke oprette den nye mappe\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Filindstillingerne kunne ikke indlæses\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Kunne ikke indlæse filvisninger\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Opret mappe\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Aktuel visningsvælger\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Indtast dit navn\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Eksisterende version\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Forsøg på at gemme kaldenavn mislykkedes.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritter\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Filer og mapper, du markerer som foretrukne, vises her.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Filer og mapper, du for nylig har ændret, vises her.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrer fil liste\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Mappenavnet må ikke være tomt.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Gæsteidentifikation\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Hjem\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Hvis du vælger begge versioner, vil den indkommende fil have et nummer tilføjet til sit navn.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Ugyldigt navn.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Senest ændret dato ukendt\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Ændret\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Flyt\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Flyt til {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Navn\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Navne kan højst være 64 tegn lange.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Navne kan ikke være tomt.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Navne må ikke ende på \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Navne skal starte med et punktum.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Ny\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Ny mappe\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Ny mappe navn\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Ny version\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Ingen filer here\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Der blev ikke fundet nogen filer, der matcher dit filter.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Ingen matchende filer\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Indtast et navn med mindst 2 tegn.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Seneste\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Markér alle afkrydsningsfelter\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Vælg alle poster\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vælg alle eksisterende filer\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vælg alle nye filer\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Vælg post\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Vælg rækken for {nodenavn}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Størelse\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Spring %n fil over\", \"Spring %n filer over\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Spring denne fil over\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Indsend navn\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Fortryd\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Upload noget indhold eller synkroniser med dine enheder!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Når en indkommende mappe er valgt, vil eventuelle modstridende filer i det også blive overskrevet.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Når en indkommende mappe er valgt, er indholdet skrevet ind i den eksisterende mappe og en rekursiv konfliktløsning udføres.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Hvilke filer vil du have?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Du er i øjeblikket identificeret som {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Du er ikke identificeret.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Du kan ikke efterlade navnet tomt.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Du skal vælge mindst én konfliktløsning\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Du skal vælge mindst én version af hver fil for at fortsætte.\"] }] }, { \"language\": \"de\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" ist innerhalb eines Ordnernamens nicht zulässig.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" ist innerhalb eines Namens nicht zulässig.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" ist kein zulässiger Name.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" ist ein reservierter Name und nicht zulässig für Ordnernamen.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" ist ein reservierter Name und nicht zulässig.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n Dateikonflikt\", \"%n Dateikonflikte\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n Dateikonflikt in {dirname}\", \"%n Dateikonflikte in {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Alle Dateien\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Abbrechen\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Den gesamten Vorgang abbrechen\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Auswählen\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"{file} auswählen\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"%n Datei auswählen\", \"%n Dateien auswählen\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Bestätigen\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsetzen\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopieren\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Nach {target} kopieren\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Der neue Ordner konnte nicht erstellt werden\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Dateieinstellungen konnten nicht geladen werden\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Dateiansichten konnten nicht geladen werden\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Verzeichnis erstellen\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Aktuelle Ansichtsauswahl\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Gib deinen Namen ein\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Vorhandene Version\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Spitzname konnte nicht gespeichert werden.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoriten\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Dateien und Ordner, die du als Favorit markierst, werden hier angezeigt.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Dateien und Ordner, die du kürzlich geändert hast, werden hier angezeigt.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Dateiliste filtern\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Ordnernamen dürfen nicht mit \"{extension}\" enden.'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Gast-Identifikation\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Home\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Wenn beide Versionen ausgewählt werden, wird dem Namen der eingehenden Datei eine Nummer hinzugefügt.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Ungültiger Ordnername.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Ungültiger Name.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Datum der letzten Änderung unbekannt\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Geändert\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Verschieben\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Nach {target} verschieben\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Name\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Namen dürfen maximal 64 Zeichen lang sein.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Namen dürfen nicht leer sein.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Namen dürfen nicht mit \"{extension}\" enden.'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Namen dürfen nicht mit einem Punkt beginnen.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Neu\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Neuer Ordner\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Neuer Ordnername\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Neue Version\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Hier sind keine Dateien\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Es wurden keine Dateien gefunden, die deinem Filter entsprechen.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Keine passenden Dateien\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Bitte einen Namen mit mindestens zwei Zeichen eingeben.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Neueste\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Alle Kontrollkästchen aktivieren\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Alle Einträge auswählen\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Alle vorhandenen Dateien auswählen\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Alle neuen Dateien auswählen\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Eintrag auswählen\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Die Zeile für {nodename} auswählen.\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Größe\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"%n Datei überspringen\", \"%n Dateien überspringen\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Diese Datei überspringen\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Namen senden\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Rückgängig machen\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Lade Inhalte hoch oder synchronisiere diese mit deinen Geräten!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Wenn ein eingehender Ordner ausgewählt wird, werden auch alle darin enthaltenen Dateien mit Konflikten überschrieben.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Bei Auswahl eines eingehenden Ordners wird der Inhalt in den vorhandenen Ordner geschrieben und eine rekursive Konfliktlösung durchgeführt.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Welche Dateien sollen behalten werden?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Du bist derzeit als {nickname} identifiziert.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Du bist momentan nicht identifiziert.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Du kannst den Namen nicht leer lassen.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Es muss mindestens eine Konfliktlösung gewählt werden\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Es muss mindestens eine Version jeder Datei ausgewählt werden, um fortzufahren.\"] }] }, { \"language\": \"de_DE\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" ist innerhalb eines Ordnernamens nicht zulässig.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" ist innerhalb eines Namens nicht zulässig.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" ist kein zulässiger Name.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" ist ein reservierter Name und nicht zulässig für Ordnernamen.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" ist ein reservierter Name und nicht zulässig.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n Dateikonflikt\", \"%n Dateikonflikte\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n Dateikonflikt in {dirname}\", \"%n Dateikonflikte in {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Alle Dateien\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Abbrechen\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Den gesamten Vorgang abbrechen\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Auswählen\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"{file} auswählen\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"%n Datei auswählen\", \"%n Dateien auswählen\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Bestätigen\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsetzen\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopieren\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Nach {target} kopieren\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Der neue Ordner konnte nicht erstellt werden\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Dateieinstellungen konnten nicht geladen werden\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Dateiansichten konnten nicht geladen werden\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Verzeichnis erstellen\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Aktuelle Ansichtsauswahl\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Geben Sie Ihren Namen ein\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Vorhandene Version\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Spitzname konnte nicht gespeichert werden.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoriten\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Dateien und Ordner, die Sie als Favorit markieren, werden hier angezeigt.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Dateien und Ordner, die Sie kürzlich geändert haben, werden hier angezeigt.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Dateiliste filtern\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Ordnernamen dürfen nicht mit \"{extension}\" enden.'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Gast-Identifikation\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Home\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Wenn beide Versionen ausgewählt werden, wird dem Namen der eingehenden Datei eine Nummer hinzugefügt.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Ungültiger Ordnername.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Ungültiger Name.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Datum der letzten Änderung unbekannt\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Geändert\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Verschieben\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Nach {target} verschieben\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Name\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Namen dürfen maximal 64 Zeichen lang sein.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Namen dürfen nicht leer sein.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Namen dürfen nicht mit \"{extension}\" enden.'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Namen dürfen nicht mit einem Punkt beginnen.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Neu\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Neuer Ordner\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Neuer Ordnername\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Neue Version\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Hier sind keine Dateien\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Es wurden keine Dateien gefunden, die Ihrem Filter entsprechen.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Keine passenden Dateien\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Bitte einen Namen mit mindestens zwei Zeichen eingeben.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Neueste\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Alle Kontrollkästchen aktivieren\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Alle Einträge auswählen\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Alle vorhandenen Dateien auswählen\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Alle neuen Dateien auswählen\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Eintrag auswählen\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Die Zeile für {nodename} auswählen.\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Größe\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"%n Datei überspringen\", \"%n Dateien überspringen\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Diese Datei überspringen\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Namen senden\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Rückgängig machen\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Laden Sie Inhalte hoch oder synchronisieren Sie diese mit Ihren Geräten!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Wenn ein eingehender Ordner ausgewählt wird, werden auch alle darin enthaltenen Dateien mit Konflikten überschrieben.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Bei Auswahl eines eingehenden Ordners wird der Inhalt in den vorhandenen Ordner geschrieben und eine rekursive Konfliktlösung durchgeführt.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Welche Dateien sollen behalten werden?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Sie sind derzeit als {nickname} identifiziert.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Sie sind momentan nicht identifiziert.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Sie können den Namen nicht leer lassen.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Es muss mindestens eine Konfliktlösung gewählt werden\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Es muss mindestens eine Version jeder Datei ausgewählt werden, um fortzufahren.\"] }] }, { \"language\": \"el\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" δεν επιτρέπεται μέσα σε ένα όνομα.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" δεν είναι επιτρεπτό όνομα.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['Το \"{name}\" δεν είναι έγκυρο όνομα φακέλου.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['Το \"{name}\" δεν είναι επιτρεπτό όνομα φακέλου'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" είναι ένα δεσμευμένο όνομα και δεν επιτρέπεται.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['Το \"/\" δεν επιτρέπεται μέσα στο όνομα ενός φακέλου.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Όλα τα αρχεία\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Ακύρωση\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Επιλογή\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Επιλέξτε {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Επιλέξτε %n αρχείο\", \"Επιλέξτε %n αρχεία\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Αντιγραφή\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Αντιγραφή στο {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Αδυναμία δημιουργίας νέου φακέλου\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Αδυναμία φόρτωσης ρυθμίσεων αρχείων\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Αδυναμία φόρτωσης προβολών αρχείων\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Δημιουργία καταλόγου\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Επιλογέας τρέχουσας προβολής\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Εισάγετε το όνομά σας\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Αποτυχία στην ρύθμιση του ψευδώνυμου.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Αγαπημένα\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Τα αρχεία και οι φάκελοι που επισημάνετε ως αγαπημένα θα εμφανίζονται εδώ.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Τα αρχεία και οι φάκελοι που τροποποιήσατε πρόσφατα θα εμφανίζονται εδώ.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Φιλτράρισμα λίστας αρχείων\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Το όνομα του φακέλου δεν μπορεί να είναι κενό.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Ταυτοποίηση επισκέπτη\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Αρχική\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Μη έγκυρο όνομα.\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Τροποποιήθηκε\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Μετακίνηση\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Μετακίνηση στο {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Όνομα\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Τα ονόματα μπορούν να έχουν μέγιστο μήκος 64 χαρακτήρες.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Τα ονόματα δεν πρέπει να είναι κενά.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Τα ονόματα δεν πρέπει να τελειώνουν με \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Τα ονόματα δεν πρέπει να ξεκινούν με τελεία.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Νέο\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Νέος φάκελος\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Όνομα νέου φακέλου\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Δεν υπάρχουν αρχεία εδώ\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Δεν βρέθηκαν αρχεία που να ταιριάζουν με το φίλτρο σας.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Κανένα αρχείο δεν ταιριάζει\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Παρακαλώ εισάγετε ένα όνομα με τουλάχιστον 2 χαρακτήρες.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Πρόσφατα\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Επιλογή όλων των εγγραφών\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Επιλογή εγγραφής\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Επιλέξτε τη γραμμή για το {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Μέγεθος\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Υποβολή ονόματος\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Αναίρεση\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Ανεβάστε κάποιο περιεχόμενο ή συγχρονίστε με τις συσκευές σας!\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Αυτή τη στιγμή έχετε αναγνωριστεί ως {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Δεν έχετε ταυτοποιηθεί.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Δεν μπορείτε να αφήσετε το όνομα κενό.\"] }] }, { \"language\": \"en_GB\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" is not allowed inside a name.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" is not an allowed name.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" is an invalid folder name.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" is not an allowed folder name'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" is a reserved name and not allowed.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" is not allowed inside a folder name.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"All files\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancel\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Choose\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Choose {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Choose %n file\", \"Choose %n files\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copy\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copy to {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Could not create the new folder\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Could not load files settings\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Could not load files views\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Create directory\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Current view selector\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Enter your name\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Failed to set nickname.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favourites\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Files and folders you mark as favourite will show up here.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Files and folders you recently modified will show up here.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filter file list\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Folder name cannot be empty.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Guest identification\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Home\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Invalid name.\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modified\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Move\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Move to {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Name\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Names must not be empty.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Names must not end with \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Names must not start with a dot.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"New\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"New folder\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"New folder name\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"No files in here\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"No files matching your filter were found.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"No matching files\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Please enter a name with at least 2 characters.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Recent\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Select all entries\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Select entry\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Select the row for {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Size\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Submit name\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Undo\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Upload some content or sync with your devices!\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"You are currently not identified.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"You cannot leave the name empty.\"] }] }, { \"language\": \"es\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" no está permitido dentro de un nombre.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" no es un nombre permitido.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" es un nombre de carpeta no válido.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" no es un nombre de carpeta permitido'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" es un nombre reservado y no está permitido.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" no está permitido dentro del nombre de una carpeta.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Todos los archivos\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Seleccionar\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Seleccionar {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Elige %n archivo\", \"Elige %n archivos\", \"Seleccione %n archivos\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copiar\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copiar a {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"No se pudo crear la nueva carpeta\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"No se pudieron cargar los ajustes de archivos\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"No se pudieron cargar las vistas de los archivos\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Crear directorio\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Selector de vista actual\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Ingrese su nombre\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Fallo al establecer apodo.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritos\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Los archivos y carpetas que marque como favoritos aparecerán aquí.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Los archivos y carpetas que modificó recientemente aparecerán aquí.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrar lista de archivos\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"El nombre de la carpeta no puede estar vacío.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identificación de invitado\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Inicio\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nombre inválido.\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modificado\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Mover\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Mover a {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nombre\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Los nombres no deben estar vacíos.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Los nombres no deben terminar con \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Los nombres no deben iniciar con un punto.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nuevo\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\" Nueva carpeta\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nuevo nombre de carpeta\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"No hay archivos aquí\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"No se encontraron archivos que coincidiesen con su filtro.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"No hay archivos coincidentes\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Por favor, ingrese un nombre con al menos 2 caracteres.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Reciente\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Seleccionar todas las entradas\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Seleccionar entrada\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Seleccione la fila para {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Tamaño\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Enviar nombre\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Deshacer\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"¡Cargue algún contenido o sincronice con sus dispositivos!\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Ud. se encuentra identificado actualmente como {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Ud. no se encuentra identificado actualmente.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"No puede dejar el nombre vacío.\"] }] }, { \"language\": \"es_AR\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" es un nombre de carpeta inválido.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" no es un nombre de carpeta permitido'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" no está permitido en el nombre de una carpeta.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Todos los archivos\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Elegir\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Elija {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Elija %n archivo\", \"Elija %n archivos\", \"Elija %n archivos\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copiar\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copiar a {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"No se pudo crear la nueva carpeta\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"No se pudo cargar la configuración de archivos\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"No se pudieron cargar las vistas de los archivos\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Crear directorio\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Selector de vista actual\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritos\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Los archivos y carpetas que marque como favoritos aparecerán aquí.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Los archivos y carpetas que modificó recientemente aparecerán aquí.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrar lista de archivos\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"El nombre de la carpeta no puede estar vacío.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Inicio\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modificado\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Mover\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Mover a {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nombre\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nuevo\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nueva carpeta\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nombre de nueva carpeta\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"No hay archivos aquí\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"No se encontraron archivos que coincidan con su filtro.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"No hay archivos coincidentes\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Reciente\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Seleccionar todas las entradas\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Seleccionar entrada\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Seleccione la fila para {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Tamaño\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Deshacer\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"¡Cargue algún contenido o sincronice con sus dispositivos!\"] }] }, { \"language\": \"es_MX\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" es un nombre de carpeta inválido.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" no es un nombre de carpeta permitido.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" no está permitido en el nombre de la carpeta.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Todos los archivos\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Seleccionar\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Seleccionar {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Seleccionar %n archivo\", \"Seleccionar %n archivos\", \"Seleccionar %n archivos\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copiar\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copiar a {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"No se pudo crear la nueva carpeta\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"No se pudo cargar la configuración de archivos\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"No se pudieron cargar las vistas de los archivos\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Crear carpeta\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Selector de vista actual\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritos\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Los archivos y carpetas que marque como favoritos aparecerán aquí.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Los archivos y carpetas que modificó recientemente aparecerán aquí.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrar lista de archivos\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"El nombre de la carpeta no puede estar vacío.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Inicio\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modificado\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Mover\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Mover a {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nombre\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nuevo\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nueva carpeta\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nombre de nueva carpeta\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"No hay archivos aquí\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"No se encontraron archivos que coincidan con su filtro.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"No hay archivos coincidentes\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Reciente\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Seleccionar todas las entradas\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Seleccionar entrada\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Seleccione la fila para {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Tamaño\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Deshacer\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"¡Suba algún contenido o sincronice con sus dispositivos!\"] }] }, { \"language\": \"et_EE\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [\"„{char}“ pole kausta nimes lubatud.\"] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [\"„{char}“ pole nimes lubatud.\"] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": [\"„{extension}“ pole lubatud nimi.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": [\"„{segment}“ on reserveeritud nimi ja pole kausta nimes lubatud.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": [\"„{segment}“ on reserveeritud nimi ja pole kasutamiseks lubatud.\"] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n fail on vastuolus\", \"%n faili on omavahel vastuolus\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n fail on {dirname} kaustas vastuolus\", \"%n faili on omavahel {dirname} kaustas vastuolus\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Kõik failid\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Katkesta\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Katkesta kogu tegevus\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Tee valik\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Vali {file} fail\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Vali %n fail\", \"Vali %n faili\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Kinnita\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Jätka\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopeeri\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopeeri sihtkohta „{target}“\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Uut kausta ei saanud luua\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Failide seadistusi ei õnnestunud laadida\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Failide vaatamiskordi ei õnnestunud laadida\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Loo kaust\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Praeguse vaate valija\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Sisesta oma nimi\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Olemasolev versioon\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Hüüdnime ei õnnestunud lisada\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Lemmikud\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Failid ja kaustad, mida märgistad lemmikuks, kuvatakse siin.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Siin kuvatakse hiljuti muudetud failid ja kaustad.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtreeri faililoendit\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": [\"Kausta nime lõpus ei tohi olla „{extension}“.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Külalise tuvastamine\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Avaleht\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Kui valid mõlemad versioonid, siis uue faili nimele lisatakse number.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Vigane kausta nimi.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Vigane nimi.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Viimase muutmise kuupäev pole teada\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Muudetud\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Teisalda\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Teisalda kausta „{target}“\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nimi\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Nimed võivad olla vaid kuni 64 tähemärki pikad.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Nimi ei saa olla tühi.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": [\"Nime lõpus ei tohi olla „{extension}“.\"] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Nime alguses ei tohi olla punkt.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Uus\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Uus kaust\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Uue kausta nimi\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Uus versioon\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Siin puuduvad failid\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Sinu filtrile vastavaid faile ei leidunud.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Puuduvad sobivad failid\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Palun sisesta vähemalt 2 tähemärki pikk nimi.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Hiljutine\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Vali kõik märkeruudud\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Vali kõik kirjed\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vali kõik olemasolevad failid\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vali kõik uued failid\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Vali kirje\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Vali rida „{nodename}“ jaoks\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Suurus\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Jäta %n fail vahele\", \"Jäta %n faili vahele\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Jäta see fail vahele\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Lisa nimi\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Tühista\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Lisa mingit sisu või sünkrooni see oma seadmetest!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Kui uute failide kaust on valitud, siis kõik seal leiduvad vastuolus failid saavad üle kirjutatud.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Kui uute failide kaust on valitud, siis sisu kirjutatakse olemasolevasse kausta ja korraldatakse rekursiivne failikonfliktide lahendamine.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Missugused failid tahaksid alles jätta?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Sa oled hetkel tuvastatav kui {nickname}..\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Sa oled hetkel tuvastamata.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Sa ei saa jätte nime tühjaks.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Sa pead valima vähemalt ühe failikonflikti lahenduse.\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Jätkamaks pead valima igast failist vähemalt ühe versiooni.\"] }] }, { \"language\": \"fa\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"{name} نام پوشه معتبر نیست\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"{name} نام پوشه مجاز نیست\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" نمی‌تواند در نام پوشه استفاده شود.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"همه فایل‌ها\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"لغو\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"انتخاب\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"انتخاب {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"انتخاب %n فایل\", \"انتخاب %n فایل\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"رونوشت\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"رونوشت از {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"پوشه جدید ایجاد نشد\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"تنظیمات فایل باز نشد\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"نمای فایل‌ها بارگیری نشد\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"ایجاد فهرست\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"انتخابگر نماگر فعلی\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"نام خود را وارد کنید\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"تنظیم نام مستعار ناموفق بود.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"علایق\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"فایل‌ها و پوشه‌هایی که به‌عنوان مورد علاقه علامت‌گذاری می‌کنید در اینجا نشان داده می‌شوند.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"فایل‌ها و پوشه‌هایی که اخیراً تغییر داده‌اید در اینجا نمایش داده می‌شوند.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"فیلتر لیست فایل\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"نام پوشه نمی تواند خالی باشد.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"شناسایی مهمان\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"خانه\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"اصلاح شده\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"انتقال\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"انتقال به {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"نام\"] }, { \"msgid\": \"New\", \"msgstr\": [\"جدید\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"پوشه جدید\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"نام پوشه جدید\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"فایلی اینجا نیست\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"هیچ فایلی مطابق با فیلتر شما یافت نشد.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"فایل منطبقی وجود ندارد\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"لطفاً نامی با حداقل ۲ کاراکتر وارد کنید.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"اخیر\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"انتخاب همه ورودی ها\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"انتخاب ورودی\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"انتخاب ردیف برای {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"اندازه\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"ارسال نام\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"بازگردانی\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"مقداری محتوا آپلود کنید یا با دستگاه های خود همگام سازی کنید!\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"شما در حال حاضر شناسایی نشده‌اید.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"نمی‌توانید نام را خالی بگذارید.\"] }] }, { \"language\": \"fi_FI\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" ei ole sallittu nimessä.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" ei ole sallittu nimi.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" on virheellinen kansion nimi.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" ei ole sallittu kansion nimi'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" on varattu nimi eikä se ole sallittu.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" ei ole sallittu kansion nimessä.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Kaikki tiedostot\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Peruuta\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Valitse\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Valitse {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Valitse %n tiedosto\", \"Valitse %n tiedostoa\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopioi\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopioi sijaintiin {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Uutta kansiota ei voitu luoda\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Tiedoston asetuksia ei saa ladattua\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Tiedoston näkymiä ei saa ladattua\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Luo kansio\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Nykyisen näkymän valinta\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Kirjoita nimesi\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Kutsumanimen asettaminen epäonnistui.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Suosikit\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Tiedostot ja kansiot, jotka merkitset suosikkeihisi, näkyvät täällä.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Tiedostot ja kansiot, joita muokkasit äskettäin, näkyvät täällä.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Suodata tiedostolistaa\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Kansion nimi ei voi olla tyhjä.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Vieraan tunnistaminen\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Koti\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Virheellinen nimi.\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Muokattu\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Siirrä\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Siirrä sijaintiin {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nimi\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Nimissä voi olla enintään 64 merkkiä.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Nimet eivät saa olla tyhjiä.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Nimet eivät saa päättyä sanaan \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Nimet eivät saa alkaa pisteellä.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Uusi\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Uusi kansio\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Uuden kansion nimi\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Täällä ei ole tiedostoja\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Suodatinta vastaavia tiedostoja ei löytynyt.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Ei vastaavia tiedostoja\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Kirjoita vähintään kaksi merkkiä sisältävä nimi.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Viimeisimmät\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Valitse kaikki tietueet\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Valitse tietue\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Valitse rivi {nodename}:lle\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Koko\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Lähetä nimi\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Kumoa\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Lähetä jotain sisältöä tai synkronoi laitteidesi kanssa!\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Sinut tunnetaan tällä hetkellä nimellä {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Sinua ei ole tunnistettu.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Nimeä ei voi jättää tyhjäksi.\"] }] }, { \"language\": \"fr\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [`\"{char}\" n'est pas autorisé dans un nom.`] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": [`\"{extension}\" n'est pas un nom autorisé.`] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [`\"{name}\" n'est pas un nom de dossier valide.`] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [`\"{name}\" n'est pas un nom de dossier autorisé`] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": [`\"{segment}\" est un nom réservé et n'est pas autorisé.`] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": [`Le caractère \"/\" n'est pas autorisé dans un nom de dossier.`] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n conflit de fichier\", \"%n conflit de fichiers\", \"%n conflit de fichiers\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%nconflit de fichier dans {dirname}\", \"%n conflit de fichiers dans {dirname}\", \"%nconflit de fichiers dans {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Tous les fichiers\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Annuler\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Tout annuler \"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Choisir\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Choisir {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Choisir %n fichier\", \"Choisir %n fichiers\", \"Choisir %n fichiers \"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Confirmer\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Continuer\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copier\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copier vers {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Impossible de créer le nouveau dossier\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Les paramètres des fichiers n'ont pas pu être chargés\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Impossible de charger les vues des fichiers\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Créer un répertoire\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Sélecteur d'affichage actuel\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Entrez votre nom\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Version actuelle \"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Échec de définition du surnom.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoris\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Les fichiers et répertoires marqués en favoris apparaîtront ici.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Les fichiers et répertoires modifiés récemment apparaîtront ici.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrer la liste des fichiers\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Le nom du dossier ne peut pas être vide.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identification d'invité\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Accueil\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si vous conservez les deux versions, le fichier reçu sera renommé avec un numéro.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nom invalide.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Date de modification inconnue\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modifié\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Déplacer\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Déplacer vers {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nom\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Les noms peuvent comporter au maximum 64 caractères.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Les noms ne peuvent pas être vides.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Les noms ne doivent pas se terminer par \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Les noms ne peuvent pas commencer par un point.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nouveau\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nouveau dossier\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nom du nouveau dossier\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nouvelle version\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Aucun fichier ici\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Aucun fichier trouvé correspondant à votre filtre.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Aucun fichier correspondant\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Veuillez entrer un nom avec au moins 2 caractères.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Récents\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Sélectionner toutes les cases à cocher\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Tout sélectionner\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Sélectionner tous les fichiers existants\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Sélectionner tous les nouveaux fichiers\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Sélectionner une entrée\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Sélectionner la ligne correspondant à {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Taille\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Ignorer %n fichier\", \"Ignorer %n fichiers \", \"Ignorer %n fichiers \"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Ignorer ce fichier\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Envoyer le nom\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Annuler\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Chargez du contenu ou synchronisez avec vos équipements !\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"En sélectionnant un dossier entrant, les fichiers en conflit qu’il contient seront automatiquement écrasés.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Lorsque vous sélectionnez un dossier entrant, son contenu est ajouté au dossier existant et les conflits sont résolus automatiquement.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quels fichiers souhaitez-vous conserver ?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Vous êtes actuellement identifié comme {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Vous n'êtes pas identifié actuellement.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Vous ne pouvez pas laisser le nom vide.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Vous devez choisir au moins une option pour résoudre le conflit\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Sélectionnez au moins une version de chaque fichier pour continuer.\"] }] }, { \"language\": \"ga\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [`Ní cheadaítear \"{char}\" laistigh d'ainm.`] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['Ní ainm ceadaithe é \"{extension}\".'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['Is ainm fillteáin neamhbhailí é \"{name}\".'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['Ní ainm fillteáin ceadaithe é \"{name}\".'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['Is ainm curtha in áirithe é \"{segment}\" agus ní cheadaítear é.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": [`Ní cheadaítear \"/\" taobh istigh d'ainm fillteáin.`] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n coimhlint comhaid\", \"%n coimhlint comhad\", \"%n coimhlint comhad\", \"%n coimhlint comhad\", \"%n coimhlint comhad\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n coimhlint comhaid i {dirname}\", \"%n coimhlintí comhaid i {dirname}\", \"%n coimhlintí comhaid i {dirname}\", \"%n coimhlintí comhaid i {dirname}\", \"%n coimhlintí comhaid i {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Gach comhad\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Cealaigh\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cealaigh an oibríocht ar fad\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Roghnaigh\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Roghnaigh {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Roghnaigh %n comhad\", \"Roghnaigh %n comhaid\", \"Roghnaigh %n comhaid\", \"Roghnaigh %n comhaid\", \"Roghnaigh %n comhaid\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Deimhnigh\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Lean ar aghaidh\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Cóip\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Cóipeáil chuig {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Níorbh fhéidir an fillteán nua a chruthú\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Níorbh fhéidir socruithe comhaid a lódáil\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Níorbh fhéidir radhairc comhad a lódáil\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Cruthaigh eolaire\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Roghnóir amhairc reatha\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Cuir isteach d'ainm\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Leagan atá ann cheana féin\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Theip ar leasainm a shocrú.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Ceanáin\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Taispeánfar comhaid agus fillteáin a mharcálann tú mar is fearr leat anseo.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Taispeánfar comhaid agus fillteáin a d'athraigh tú le déanaí anseo.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Scag liosta comhad\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Ní féidir ainm fillteáin a bheith folamh.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Aitheantas aoi\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Baile\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Má roghnaíonn tú an dá leagan, cuirfear uimhir le hainm an chomhaid atá ag teacht isteach.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Ainm neamhbhailí.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Dáta an athraithe dheireanaigh anaithnid\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Athraithe\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Bog\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Bog go{target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Ainm\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Ní fhéadfaidh ainmneacha a bheith níos mó ná 64 carachtar ar fhad.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Ní féidir ainmneacha a bheith folamh.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Ní féidir ainmneacha a chríochnú le \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Ní mór ainmneacha a bheith ag tosú le ponc.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nua\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Fillteán nua\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Ainm fillteáin nua\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Leagan nua\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Níl aon chomhaid istigh anseo\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Níor aimsíodh aon chomhad a tháinig le do scagaire.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Gan comhaid meaitseála\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Cuir isteach ainm ina bhfuil 2 charachtar ar a laghad.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"le déanaí\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Roghnaigh na boscaí seiceála go léir\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Roghnaigh gach iontráil\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Roghnaigh na comhaid uile atá ann cheana\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Roghnaigh gach comhad nua\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Roghnaigh iontráil\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Roghnaigh an ró do {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Méid\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Léim %n comhad\", \"Léim %n comhaid\", \"Léim %n comhaid\", \"Léim %n comhaid\", \"Léim %n comhaid\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Scipeáil an comhad seo\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Cuir isteach ainm\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Cealaigh\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Uaslódáil roinnt ábhair nó sioncronaigh le do ghléasanna!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Nuair a roghnaítear fillteán isteach, déanfar aon chomhaid choimhlinteacha ann a athscríobh freisin.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Nuair a roghnaítear fillteán isteach, scríobhtar an t-ábhar isteach sa fhillteán atá ann cheana féin agus déantar réiteach coinbhleachta athchúrsach.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Cé na comhaid ar mhaith leat a choinneáil?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Is é {nickname} an ainm atá ort faoi láthair.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Níl aitheantas tugtha duit faoi láthair.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Ní féidir leat an t-ainm a fhágáil folamh.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Ní mór duit réiteach coinbhleachta amháin ar a laghad a roghnú\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Ní mór duit leagan amháin ar a laghad de gach comhad a roghnú le leanúint ar aghaidh.\"] }] }, { \"language\": \"gl\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [\"«{char}» non está permitido no nome dun cartafol.\"] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [\"«{char}» non está permitido dentro dun nome.\"] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": [\"«{extension}» non é un nome permitido.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": [\"«{segment}» é un nome reservado e non está permitido para nomes de cartafoles.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": [\"«{segment}» é un nome reservado e non está permitido.\"] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n ficheiro en conflito\", \"%n ficheiros en conflito\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n ficheiro en conflito en {dirname}\", \"%n ficheiros en conflito en {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Todos os ficheiros\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar toda a operación\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Escoller\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Escoller {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Escoller %n ficheiro\", \"Escoller %n ficheiros\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Confirmar\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copiar\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copiar en {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Non foi posíbel crear o novo cartafol\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Non foi posíbel cargar os axustes dos ficheiros\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Non foi posíbel cargar as vistas dos ficheiros\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Crear un directorio\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Selector de vista actual\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Introduza o seu nome\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión existente\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Produciuse un fallo ao definir o alcume.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritos\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Os ficheiros e cartafoles que marque como favoritos aparecerán aquí.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Os ficheiros e cartafoles que modificou recentemente aparecerán aquí.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrar a lista de ficheiros\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": [\"Os nomes de cartafol non deben rematar en «{extension}».\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identificación do convidado\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Inicio\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se selecciona ambas as versións, o ficheiro entrante terá un número engadido ao seu nome.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"O nome de cartafol non é válido.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nome incorrecto\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data da última modificación descoñecida\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modificado\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Mover\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Mover cara a {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nome\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Os nomes poden ter unha lonxitude máxima de 64 caracteres.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Os nomes non deben estar baleiros.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": [\"Os nomes non deben rematar en «{extension}».\"] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Os nomes non deben comezar cun punto.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Novo\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Novo cartafol\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Novo nome do cartafol\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nova versión\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Aquí non hai ficheiros\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Non se atopou ningún ficheiro que coincida co filtro.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Non hai ficheiros coincidentes\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Introduza un nome con polo menos 2 caracteres.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Recente\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleccionar todas as caixas\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Seleccionar todas as entradas\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccionar todos os ficheiros existentes\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccionar todos os ficheiros novos\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Seleccionar a entrada\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Seleccionar a fila para {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Tamaño\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Omitir %n ficheiro\", \"Omitir %n ficheiros\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Omitir este ficheiro\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Enviar o nome\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Desfacer\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Enviar algún contido ou sincronizalo cos seus dispositivos!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Cando se selecciona un cartafol entrante, todos os ficheiros conflitivos dentro dela tamén serán sobrescritos.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Cando se selecciona un cartafol entrante, o contido escríbese no cartafol existente e realízase unha resolución recursiva de conflitos.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Que ficheiros quere conservar?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Vde. está identificado actualmente como {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Vde. non está identificado actualmente.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Vde. non pode deixar o nome baleiro.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"É necesario escoller polo menos unha solución de conflito\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"É necesario seleccionar polo menos unha versión de cada ficheiro para continuar.\"] }] }, { \"language\": \"hu_HU\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" nem engedélyezett névben.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" nem engedélyezett név.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"„{name}” érvénytelen mappanév.\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"„{name}” nem engedélyezett mappanév\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" foglalt név és nem engedélyezett.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": [\"„/” jel nem szerepelhet mappa nevében.\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Minden fájl\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Mégse\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Kiválasztás\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"{file} kiválasztása\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"%n fájl kiválasztása\", \"%n fájl kiválasztása\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Másolás\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Másolás ide: {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Az új mappa létrehozása nem lehetséges\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Fájlbeállítások betöltése nem lehetséges\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Fájlnézetek betöltése nem lehetséges\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Mappa létrehozása\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Jelenlegi nézet választó\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Add meg a neved\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Becenév beállítás sikertelen.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Kedvencek\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"A kedvencként megjelölt fájlok és mappák itt jelennek meg.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"A nemrég módosított fájlok és mappák itt jelennek meg.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Fájl lista szűrése\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"A mappa neve nem lehet üres.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Vendég azonosítás\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Kezdőlap\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Érvénytelen név.\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Módosítva\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Mozgatás\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Mozgatás ide: {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Név\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Nevek nem lehetnek üresek.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Nevek nem végződhetnek \"{extension}\"-re.'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Nevek nem kezdődhetnek ponttal.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Új\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Új mappa\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Új mappa név\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Itt nincsenek fájlok\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nincs a szűrési feltételeknek megfelelő fájl.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nincs ilyen fájl\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Kérlek adj meg egy legalább 2 karakteres nevet.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Gyakori\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Minden bejegyzés kijelölése\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Bejegyzés kijelölése\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Válassz sort a következőnek: {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Méret\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Név beküldése\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Visszavonás\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Tölts fel tartalmat vagy szinkronizálj az eszközeiddel!\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Jelenleg nem vagy azonosítva.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"A nevet nem hagyhatod üresen.\"] }] }, { \"language\": \"hy\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"{name} սխալ թղթապանակի անվանում է\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"{name} համարվում է անթույլատրելի թղթապանակի անվանում\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": [\"/ չի թույլատրվում օգտագործել անվանման մեջ\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Բոլոր ֆայլերը\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Ընտրել\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Ընտրել {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Ընտրել %n ֆայլ\", \"Ընտրել %n ֆայլեր\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Պատճենել\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Պատճենել {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Չստացվեց ստեղծել նոր թղթապանակը\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Չստացվեց բեռնել ֆայլի կարգավորումները\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Չստացվեց բեռնել ֆայլերի դիտումները\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Ստեղծել դիրեկտորիա\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Ընթացիկ դիտման ընտրիչ\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Նախընտրելիներ\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Այստեղ կցուցադրվեն այն ֆայլերն ու պանակները, որոնք դուք նշել եք որպես նախընտրելիներ:\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Այստեղ կցուցադրվեն այն ֆայլերն ու պանակները, որոնք վերջերս փոխել եք:\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Ֆիլտրել ֆայլերի ցուցակը\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Թղթապանակի անունը չի կարող դատարկ լինել:\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Սկիզբ\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Փոփոխված\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Տեղափոխել\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Տեղափոխել {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Անուն\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Նոր\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Նոր թղթապանակ\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Նոր թղթապանակի անվանում\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Այստեղ չկան ֆայլեր\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Ձեր ֆիլտրին համապատասխանող ֆայլերը չեն գտնվել:\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Չկան համապատասխան ֆայլեր\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Վերջին\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Ընտրել բոլոր գրառումները\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Ընտրել բոլոր գրառումը\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Ընտրեք տողը {nodename}-ի համար \"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Չափ\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Ետարկել\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Ներբեռնեք որոշ բովանդակություն կամ համաժամացրեք այն ձեր սարքերի հետ:\"] }] }, { \"language\": \"id\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" bukan nama folder yang valid.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" merupakan nama folder yang tidak diperbolehkan'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" tidak diperbolehkan di dalam nama folder.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Semua berkas\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Pilih\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Pilih {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Pilih %n file\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Salin\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Salin ke {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Tidak dapat membuat folder baru\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Tidak dapat memuat pengaturan file\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Tidak dapat memuat tampilan file\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Buat direktori\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Pemilih tampilan saat ini\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favorit\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Berkas dan folder yang Anda tandai sebagai favorit akan muncul di sini.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Berkas dan folder yang Anda ubah baru-baru ini akan muncul di sini.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Saring daftar berkas\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Name berkas tidak boleh kosong.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Beranda\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Diubah\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Pindahkan\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Pindahkan ke {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nama\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Baru\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Folder baru\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nama folder baru\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Tidak ada berkas di sini\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Tidak ada berkas yang cocok dengan penyaringan Anda.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Tidak ada berkas yang cocok\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Terkini\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Pilih semua entri\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Pilih entri\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Pilih baris untuk {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Ukuran\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Tidak jadi\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Unggah beberapa konten atau sinkronkan dengan perangkat Anda!\"] }] }, { \"language\": \"is\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" er ógilt möppuheiti.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" er ekki leyfilegt möppuheiti'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" er er ekki leyfilegt innan í skráarheiti.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Allar skrár\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Veldu\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Veldu {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Veldu %n skrá\", \"Veldu %n skrár\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Afrita\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Afrita í {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Get ekki búið til nýju möppuna\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Tókst ekki að hlaða inn stillingum skráa\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Tókst ekki að hlaða inn sýnum skráa\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Búa til möppu\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Núverandi val sýnar\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Eftirlæti\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Skrár og möppur sem þú merkir sem eftirlæti birtast hér.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Skrár og möppur sem þú breyttir nýlega birtast hér.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Sía skráalista\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Möppuheiti má ekki vera tómt.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Heim\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Breytt\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Færa\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Færa í {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Heiti\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nýtt\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Ný mappa\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Heiti nýrrar möppu\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Engar skrár hér\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Engar skrár fundust sem passa við síuna.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Engar samsvarandi skrár\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Nýlegt\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Velja allar færslur\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Velja færslu\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Veldu röðina fyrir {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Stærð\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Afturkalla\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Sendu inn eitthvað efni eða samstilltu við tækin þín!\"] }] }, { \"language\": \"it\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" non è un nome di cartella valido.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" non è un nome di cartella ammesso'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": [`\"/\" non è ammesso all'interno del nome di una cartella.`] }, { \"msgid\": \"All files\", \"msgstr\": [\"Tutti i file\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Scegli\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Scegli {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Seleziona %n file\", \"Seleziona %n file\", \"Seleziona %n file\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copia\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copia in {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Impossibile creare la nuova cartella\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Impossibile caricare le impostazioni dei file\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Impossibile caricare le visualizzazioni dei file\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Crea directory\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Selettore della vista corrente\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Preferiti\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"I file e le cartelle contrassegnate come preferite saranno mostrate qui.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"I file e le cartelle che hai modificato di recente saranno mostrate qui.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtra elenco file\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Il nome della cartella non può essere vuoto.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Home\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modificato\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Sposta\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Sposta in {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nome\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nuovo\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nuova cartella\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nuovo nome cartella\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Nessun file qui\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nessun file che corrisponde al tuo filtro è stato trovato.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nessun file corrispondente\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Recente\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Scegli tutte le voci\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Seleziona la voce\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Seleziona la riga per {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Taglia/dimensioni\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Annulla\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Carica qualche contenuto o sincronizza con i tuoi dispositivi!\"] }] }, { \"language\": \"ja_JP\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['名前に\"{char}\"は使用できません。'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\"は許可された名前ではありません'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" はフォルダー名に使用できません。'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\"は許可されたフォルダー名ではありません'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\"は予約名であり使用できません。'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": [\"フォルダー名に「/(スラッシュ)」は使用できません。\"] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%nファイルが競合しています\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%nディレクトリ{dirname}内のファイル競合\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"すべてのファイル\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"キャンセル\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"操作全体をキャンセルする\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"選択\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"{file} を選択\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"%n 個のファイルを選択\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"承認\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"続ける\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"コピー\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"{target} にコピー\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"新しいフォルダーを作成できませんでした\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"ファイル設定を読み込めませんでした\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"ファイルビューを読み込めませんでした\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"ディレクトリを作成\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"現在のビューセレクタ\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"名前を入力してください\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"現行バージョン\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"ニックネームの設定に失敗しました。\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"お気に入り\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"お気に入りとしてマークしたファイルとフォルダがここに表示されます。\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"最近変更したファイルとフォルダがここに表示されます。\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"ファイルリストをフィルタ\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"フォルダ名は空にできません。\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"ゲスト識別\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"ホーム\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"両方のバージョンを選択した場合、受信ファイル名には番号が追加されます。\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"無効な名前です。\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"最終更新日不明\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"変更済み\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"移動\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"{target} に移動\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"名前\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"名前は最大64文字です。\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"名前は空にできません。\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['名前の末尾に\"{extension}\"は使用できません'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"ドットで始まる名前は使用できません。\"] }, { \"msgid\": \"New\", \"msgstr\": [\"新規作成\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"新しいフォルダー\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"新しいフォルダーの名前\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"新バージョン\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"ファイルがありません\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"フィルタに一致するファイルは見つかりませんでした。\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"一致するファイルはありません\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"名前を2文字以上で入力してください。\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"最近\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"すべてのチェックボックスを選択する\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"すべてのエントリを選択\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"既存のファイルをすべて選択\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"すべての新規ファイルを選択\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"エントリを選択\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"{nodename} の行を選択\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"サイズ\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"%n 個のファイルをスキップ\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"このファイルをスキップ\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"名前を送信する\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"元に戻す\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"コンテンツをアップロードするか、デバイスと同期してください!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"受信フォルダが選択されている場合、そのフォルダ内の競合ファイルも上書きされます。\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"受信フォルダが選択されると、内容は既存のフォルダに書き込まれ、再帰的な競合解決が実行されます。\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"どのファイルを残しますか?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"現在、{nickname}として識別されています。\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"現在あなたは識別されていません。\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"名前を空にすることはできません。\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"少なくとも1つの競合ソリューションを選択する必要があります\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"続行するには、各ファイルのバージョンを少なくとも1つ選択する必要があります。\"] }] }, { \"language\": \"ko\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\"는 이름 내에 사용할 수 없습니다.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\"은 허용되는 이름이 아닙니다.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\"은 사용할 수 없는 폴더명입니다.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\"은 허용되지 않은 폴더명입니다.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['같은 이름을 가진 \"{segment}\"이 이미 사용 중입니다.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\"는 폴더명에 사용할 수 없는 기호입니다.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"모든 파일\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"취소\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"선택\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"{file} 선택\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"%n개의 파일 선택\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"복사\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"{target}으로 복사\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"새 폴더를 만들 수 없음\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"파일 설정을 불러오지 못함\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"파일 보기를 불러오지 못함\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"디렉토리 만들기\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"현재 뷰 선택자\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"이름을 입력하세요 \"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"닉네임을 설정하지 못했습니다.\\n \"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"즐겨찾기\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"즐겨찾기로 표시한 파일 및 폴더가 이곳에 표시됩니다.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"최근 수정한 파일 및 폴더가 이곳에 표시됩니다.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"파일 목록 필터링\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"폴더명을 비울 수 없습니다.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"게스트 확인\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"홈\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"잘못된 이름입니다. \"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"수정됨\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"이동\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"{target}으로 이동\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"이름\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"이름은 아마도 최대 64글자 입니다.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"이름은 비어 있으면 안 됩니다.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['이름은 \"{extension}\"로 끝나지 않아야 합니다.'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"이름은 점으로 시작해서는 안 됩니다.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"새로 만들기\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"새 폴더\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"새 폴더명\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"파일이 없습니다\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"선택한 필터에 해당하는 파일이 없습니다.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"일치하는 파일 없음\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"최소 2자 이상의 이름을 입력하십시오. \"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"최근\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"모두 선택\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"항목 선택\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"{nodename}의 행 선택\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"크기\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"이름 제출\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"되돌리기\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"기기에서 파일을 업로드 또는 동기화하세요!\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"{nickname}로서 인증 상태 입니다.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"현재 인증되지 않았습니다.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"이름은 비워 둘 수 없습니다. \"] }] }, { \"language\": \"lb\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"{name} ass en ongëlteg Dossier\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"{name} ass net en erlaabten Dossiernumm\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" ass net an engem Dossier Numm erlaabt'] }, { \"msgid\": \"All files\", \"msgstr\": [\"All Dateien\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Wielt\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Wielt {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Wielt %n Fichieren\", \"Wielt %n Fichier\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopie\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopie op {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Konnt den neien Dossier net erstellen\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Konnt d'Dateienastellungen net lueden\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Konnt d'Dateien net lueden\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Erstellt Verzeechnes\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Aktuell Vue selector\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritten\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Dateien an Ordner, déi Dir als Favorit markéiert, ginn hei gewisen\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Dateien an Ordner déi Dir viru kuerzem geännert hutt ginn hei op\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filter Datei Lëscht\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Dossier Numm kann net eidel sinn\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Wëllkomm\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Geännert\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Plënne\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Plënneren {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Numm\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nei\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Neien dossier\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Neien dossier numm\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Kee fichier hei\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Kee fichier deen äre filter passt gouf fonnt\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Keng passende dateien\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Rezent\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Wielt all entréen\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Wielt entrée\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Wielt d'zeil fir {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Gréisst\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Undoen\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Luet en inhalt erop oder synchroniséiert mat ären apparater\"] }] }, { \"language\": \"lo\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['ບໍ່ອະນຸຍາດໃຫ້ມີ \"{char}\" ພາຍໃນຊື່.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" ບໍ່ແມ່ນຊື່ທີ່ໄດ້ຮັບອະນຸຍາດ.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" ແມ່ນຊື່ໂຟນເດີທີ່ບໍ່ຖືກຕ້ອງ.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" ບໍ່ແມ່ນຊື່ໂຟນເດີທີ່ໄດ້ຮັບອະນຸຍາດ'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" ແມ່ນຊື່ທີ່ສະຫງວນໄວ້ ແລະ ບໍ່ໄດ້ຮັບອະນຸຍາດ.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['ບໍ່ອະນຸຍາດໃຫ້ມີ \"/\" ພາຍໃນຊື່ໂຟນເດີ.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"ໄຟລ໌ຂັດກັນ %n ລາຍການ\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"ໄຟລ໌ຂັດກັນ %n ລາຍການໃນ {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"ໄຟລ໌ທັງໝົດ\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"ຍົກເລີກ\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"ຍົກເລີກການດຳເນີນການທັງໝົດ\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"ເລືອກ\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"ເລືອກ {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"ເລືອກ %n ໄຟລ໌\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"ຢືນຢັນ\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"ດຳເນີນການຕໍ່\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"ຄັດລອກ\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"ຄັດລອກໄປທີ່ {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"ບໍ່ສາມາດສ້າງໂຟນເດີໃໝ່ໄດ້\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"ບໍ່ສາມາດໂຫຼດການຕັ້ງຄ່າໄຟລ໌ໄດ້\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"ບໍ່ສາມາດໂຫຼດມຸມມອງໄຟລ໌ໄດ້\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"ສ້າງໄດເຣັກທໍຣີ\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"ຕົວເລືອກມຸມມອງປັດຈຸບັນ\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"ປ້ອນຊື່ຂອງທ່ານ\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"ເວີຊັນທີ່ມີຢູ່\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"ຕັ້ງຊື່ຫຼິ້ນບໍ່ສຳເລັດ.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"ລາຍການທີ່ມັກ\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"ໄຟລ໌ ແລະ ໂຟນເດີທີ່ທ່ານໝາຍວ່າເປັນລາຍການທີ່ມັກຈະສະແດງຢູ່ບ່ອນນີ້.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"ໄຟລ໌ ແລະ ໂຟນເດີທີ່ທ່ານແກ້ໄຂລ່າສຸດຈະສະແດງຢູ່ບ່ອນນີ້.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"ກັ່ນຕອງລາຍການໄຟລ໌\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"ຊື່ໂຟນເດີຕ້ອງບໍ່ຫວ່າງເປົ່າ.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"ການລະບຸຕົວຕົນຂອງແຂກ\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"ໜ້າຫຼັກ\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"ຖ້າທ່ານເລືອກທັງສອງເວີຊັນ, ໄຟລ໌ທີ່ເຂົ້າມາຈະມີຕົວເລກເພີ່ມໃສ່ຊື່ຂອງມັນ.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"ຊື່ບໍ່ຖືກຕ້ອງ.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"ບໍ່ຮູ້ວັນທີແກ້ໄຂລ່າສຸດ\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"ແກ້ໄຂເມື່ອ\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"ຍ້າຍ\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"ຍ້າຍໄປທີ່ {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"ຊື່\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"ຊື່ອາດມີຄວາມຍາວສູງສຸດ 64 ຕົວອັກສອນ.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"ຊື່ຕ້ອງບໍ່ຫວ່າງເປົ່າ.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['ຊື່ຕ້ອງບໍ່ລົງທ້າຍດ້ວຍ \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"ຊື່ຕ້ອງບໍ່ຂຶ້ນຕົ້ນດ້ວຍຈຸດ.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"ໃໝ່\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"ໂຟນເດີໃໝ່\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"ຊື່ໂຟນເດີໃໝ່\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"ເວີຊັນໃໝ່\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"ບໍ່ມີໄຟລ໌ຢູ່ບ່ອນນີ້\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"ບໍ່ພົບໄຟລ໌ທີ່ກົງກັບການກັ່ນຕອງຂອງທ່ານ.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"ບໍ່ມີໄຟລ໌ທີ່ກົງກັນ\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"ກະລຸນາປ້ອນຊື່ທີ່ມີຢ່າງໜ້ອຍ 2 ຕົວອັກສອນ.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"ລ່າສຸດ\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"ເລືອກກ່ອງໝາຍທັງໝົດ\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"ເລືອກທຸກລາຍການ\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"ເລືອກໄຟລ໌ທີ່ມີຢູ່ທັງໝົດ\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"ເລືອກໄຟລ໌ໃໝ່ທັງໝົດ\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"ເລືອກລາຍການ\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"ເລືອກແຖວສຳລັບ {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"ຂະໜາດ\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"ຂ້າມ %n ໄຟລ໌\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"ຂ້າມໄຟລ໌ນີ້\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"ສົ່ງຊື່\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"ເອົາຄືນ\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"ອັບໂຫຼດເນື້ອຫາ ຫຼື ຊິງຄ໌ກັບອຸປະກອນຂອງທ່ານ!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"ເມື່ອເລືອກໂຟນເດີທີ່ເຂົ້າມາ, ໄຟລ໌ໃດໆທີ່ຂັດກັນພາຍໃນໂຟນເດີນັ້ນກໍຈະຖືກຂຽນທັບເຊັ່ນກັນ.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"ເມື່ອເລືອກໂຟນເດີທີ່ເຂົ້າມາ, ເນື້ອຫາຈະຖືກຂຽນລົງໃນໂຟນເດີທີ່ມີຢູ່ ແລະ ຈະມີການແກ້ໄຂຂໍ້ຂັດແຍ່ງແບບຕໍ່ເນື່ອງ.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"ທ່ານຕ້ອງການເກັບໄຟລ໌ໃດໄວ້?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"ຕອນນີ້ທ່ານຖືກລະບຸວ່າເປັນ {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"ຕອນນີ້ທ່ານຍັງບໍ່ໄດ້ຖືກລະບຸຕົວຕົນ.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"ທ່ານບໍ່ສາມາດປະຊື່ໃຫ້ຫວ່າງເປົ່າໄດ້.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"ທ່ານຈຳເປັນຕ້ອງເລືອກວິທີແກ້ໄຂຂໍ້ຂັດແຍ່ງຢ່າງໜ້ອຍໜຶ່ງຢ່າງ\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"ທ່ານຈຳເປັນຕ້ອງເລືອກຢ່າງໜ້ອຍໜຶ່ງເວີຊັນຂອງແຕ່ລະໄຟລ໌ເພື່ອດຳເນີນການຕໍ່.\"] }] }, { \"language\": \"lt_LT\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"„{name}“ yra netinkamas aplanko pavadinimas.\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"„{name}“ yra neleidžiamas aplanko pavadinimas\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": [\"„/“ yra neleidžiamas aplanko pavadinime.\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Visi failai\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Atšaukti\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Pasirinkti\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Pasirinkti {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Pasirinkti %n failą\", \"Pasirinkti %n failus\", \"Pasirinkti %n failų\", \"Pasirinkti %n failą\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopijuoti\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopijuoti į {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Nepavyko sukurti naujo aplanko\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Nepavyko įkelti failų nustatymų\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nepavyko įkelti failų peržiūrų\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Sukurti katalogą\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Dabartinis peržiūros pasirinkimas\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Įrašykite savo vardą\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Nepavyko nustatyti slapyvardžio\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Populiariausi\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Failai ir aplankai, kuriuos pažymėsite kaip mėgstamiausius, bus rodomi čia.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Čia bus rodomi failai ir aplankai, kuriuos neseniai pakeitėte.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtruoti failų sąrašą\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Aplanko pavadinimas negali būti tuščias.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Svečio identifikacija\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Pradžia\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Pakeista\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Perkelti\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Perkelti į {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Vardas\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Naujas\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Naujas aplankas\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Naujas aplanko pavadinimas\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Čia failų nėra\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nepavyko rasti failų pagal filtro nustatymus\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nėra atitinkančių failų\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Įrašykite vardą iš mažiausiai dviejų ženklų.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Nauji\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Žymėti visus įrašus\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Žymėti įrašą\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Pasirinkite eilutę {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Dydis\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Patvirtinti vardą\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Atšaukti\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Įkelkite turinio arba sinchronizuokite su savo įrenginiais!\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Šiuo metu nesate identifikuotas.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Negalite palikti tuščio vardo lauko.\"] }] }, { \"language\": \"lv\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" nav derīgs mapes nosaukums.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" nav atļauts mapes nosaukums'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" nav atļauts mapes nosaukuma izmantošanā.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Visas datnes\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Izvēlieties\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Izvēlieties {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Izvēlēties %n datņu\", \"Izvēlēties %n datni\", \"Izvēlēties %n datnes\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopēt\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopēt uz {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Nevarēja izveidot jaunu mapi\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Nevarēja ielādēt datņu iestatījumus\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nevarēja ielādēt datņu apskatījumus\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Izveidot direktoriju\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Pašreizēja skata atlasītājs\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favorīti\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Šeit parādīsies datnes un mapes, kas tiks atzīmētas kā iecienītas.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Šeit parādīsies datnes un mapes, kuras nesen tika izmainītas.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Atlasīt datņu sarakstu\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Mapes nosaukums nevar būt tukšs.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Sākums\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Izmaninīta\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Pārvietot\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Pārvietot uz {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nosaukums\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Jauns\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Jauna mape\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Jaunas mapes nosaukums\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Šeit nav datņu\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Netika atrasta neviena datne, kas atbilst atlasei.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nav atbilstošu datņu\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Nesenās\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Atlasīt visus ierakstus\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Atlasīt ierakstu\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Atlasīt rindu {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Izmērs\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Atsaukt\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Augšupielādē kādu saturu vai sinhronizē savās iekārtās!\"] }] }, { \"language\": \"mk\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" не е дозволено во име.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" не е дозволено име.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" не е валидно име за папка/'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" не е дозволено име за папка'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" е резервирано име и не е дозволено.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" не е дозволена во име на папка.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n конфликт со датотекa\", \"%n конфликти со датотеки\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n конфликт со датотека во {dirname}\", \"%n конфликти со датотеки vo {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Сите датотеки\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Откажи\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Прекини ја целата операција\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Избери\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Избери {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Избери %n датотека\", \"Избери %n датотеки\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Потврди\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Продолжи\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Копирај\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Копирај во {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Неможе да се креира нова папка\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Неможе да се вчиаат параметрите за датотеките\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Неможе да се вчитаат погледите за датотеките\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Креирај папка\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Избирач на тековен приказ\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Внесете го вашето име\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Моментална верзија\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Неуспешно поставување прекар.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Фаворити\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Датотеките и папките кој ќе ги означите за омилени ќе се појават овде.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Датотеките и папките кој неодамна сте ги измениле ќе се појават овде.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Филтрирај листа на датотеки\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Името на папката неможе да биде празно.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Гостинска идентификација\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Почетна\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ако ги избереш двете верзии, влезната датотека ќе добие број додаден на нејзиното име.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Невалидно име.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Датумот на последна измена е непознат\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Променето\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Премести\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Премести во {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Име\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Имињата можат да бидат најмногу со 64 карактери.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Имињата неможе да бидат празни.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Имињата неможе да завршуваат со \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Имињата неможе да започнуваат со точка.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Нова\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Нова папка\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Ново име на папка\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Нова верзија\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Овде нема датотеки\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Не се пронајдени датотеки што одговараат на вашиот филтер.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Нема датотеки што се совпаѓаат\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Внесете име со најмалку 2 карактери.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Неодамнешни\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Избери ги сите полиња за избор\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Изберете ги сите записи\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Изберете ги сите постоечки датотеки\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Изберете ги сите нови датотеки\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Избери запис\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Избери ред за {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Големина\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Прескокни %n датотека\", \"Прескокни %n датотеки\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Прескокни ја оваа датотека\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Испрати име\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Врати\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Прикачи содржина или синхронизирај со ваши уреди!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Кога е избрана влезна папка, сите конфликтни датотеки во неа исто така ќе бидат препишани.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Кога е избрана влезна папка, содржината се запишува во постоечката папка и се извршува рекурсивно решавање на конфликти.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Кој датотеки сакаш да ги зачуваш?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Моментално сте идентификувани како {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Моментално не сте идентификувани.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Не можете да го оставите името празно.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Треба да избереш најмалку едно решение за конфликт\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Треба да избереш најмалку една верзија за секоја датотека за да продолжи.\"] }] }, { \"language\": \"ms_MY\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" adalah nama folder yang tidak sesuai '] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" nama folder yang tidak dibenarkan'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" tidak dibenarkan dalam nama folder'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Semua fail\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Pilih\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Pilih {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Pilih fail %n\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"menyalin\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"menyalin ke {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Tidak dapat mewujudkan folder baharu\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Tidak dapat memuatkan tetapan fail\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Tidak dapat memuatkan paparan fail\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"mewujudkan direktori\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"pemilih pandangan semasa\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Pilihan\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Fail dan folder yang anda tanda sebagai pilihan akan dipaparkan di sini.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Fail dan folder yang anda telah ubah suai baru-baru ini dipaparkan di sini.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Menapis senarai fail\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Nama folder tidak boleh kosong.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Utama\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Ubah suai\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"pindah\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"pindah ke {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nama\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Baru\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Folder Baharu\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nama folder baharu\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Tiada fail di sini\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Tiada fail yang sepadan dengan tapisan anda.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Tiada fail yang sepadan\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"baru-baru ini\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Pilih semua entri\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Pilih entri\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"memilih baris {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Saiz\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"buat asal\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Muat naik beberapa kandungan atau selaras dengan peranti anda!\"] }] }, { \"language\": \"nb_NO\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" er ikke tillatt i et navn.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" er ikke et tillatt navn.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"«{name}» er ikke et gyldig mappenavn.\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"«{name}» er ikke et tillatt mappenavn.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" er et reservert navn og er ikke tillatt.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" er ikke tillatt inne i et mappenavn.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Alle filer\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Avbryt\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Velg\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Velg {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Velg %n fil\", \"Velg %n filer\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopier\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopier til {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Kunne ikke opprette den nye mappen\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Kunne ikke laste filinnstillinger\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Kunne ikke laste filvisninger\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Opprett mappe\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Nåværende visningsvelger\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Skriv inn navnet ditt\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Kunne ikke lagre kallenavnet.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritter\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Filer og mapper du markerer som favoritter vil vises her.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Filer og mapper du nylig har endret, vil vises her.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrer filliste\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Mappenavn kan ikke være tomt.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Gjesteidentifikasjon\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Hjem\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Ugyldig navn.\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modifisert\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Flytt\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Flytt til {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Navn\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Navn kan ikke være tomme.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Navn kan ikke ende med \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Navn kan ikke starte med et punktum.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Ny\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Ny mappe\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nytt mappenavn\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Ingen filer her\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Ingen filer funnet med ditt filter.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Ingen filer samsvarer\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Vennligst angi et navn som har minst 2 tegn.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Nylige\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Velg alle oppføringer\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Velg oppføring\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Velg raden for {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Størrelse\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Bekreft navn\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Angre\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Last opp innhold eller synkroniser med enhetene dine!\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Du er akkurat nå identifisert som {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Du er akkurat nå ikke identifisert.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Du kan ikke la navnet være blankt.\"] }] }, { \"language\": \"nl\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" kan niet gebruikt worden in de benaming.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" is geen toegestane naam.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" is een ongeldige mapnaam.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" is geen toegestane mapnaam'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" is een gereserveerde naam en niet toegestaan.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" is niet toegestaan binnen een bestandsnaam'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Alle bestanden\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Annuleren\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Kiezen\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Kies {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Kies %n bestand\", \"Kies %n bestanden\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopiëren\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopiëren naar {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Kon de nieuwe map niet maken\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Kon de bestandsinstellingen niet laden\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Kon de bestandsweergaves niet laden\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Map aanmaken\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Huidige weergave keuze\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Voer je naam in\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Kon geen bijnaam instellen.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favorieten\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Bestanden en mappen die je als favoriet markeert, verschijnen hier.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Bestanden en mappen die je recentelijk hebt gewijzigd, verschijnen hier.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Bestandslijst filteren\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Mapnaam mag niet leeg zijn.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Gastenidentificatie\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Thuis\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Ongeldige naam.\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Gewijzigd\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Verplaatsen\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Verplaatsen naar {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Naam\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Namen mogen niet leeg zijn.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Namen mogen niet eindigen met \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Namen mogen niet begonnen met een punt.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nieuw\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nieuwe map\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nieuwe mapnaam\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Geen bestanden hier\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Geen bestanden gevonden die voldoen aan je filter.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Geen overeenkomende bestanden\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Voer een naam in met minimaal 2 tekens.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Recent\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Alle invoer selecteren\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Invoer selecteren\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Selecteer de rij voor {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Grootte\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Naam indienen\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Ongedaan maken\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Upload inhoud of synchroniseer met je apparaten!\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Je wordt momenteel geïdentificeerd als {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Je bent momenteel niet geïdentificeerd.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Je kunt de naam niet leeg laten.\"] }] }, { \"language\": \"pl\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" nie jest dozwolone w nazwie.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" nie jest dozwoloną nazwą.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" jest nieprawidłową nazwą folderu'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" nie jest dozwoloną nazwą folderu'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" jest zastrzeżoną nazwą i nie jest dozwolone.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['Znak \"/\" nie jest dozwolony w nazwie folderu'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Wszystkie pliki\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Anuluj\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Wybierz\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Wybierz {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Wybierz %n plik\", \"Wybierz %n pliki\", \"Wybierz %n plików\", \"Wybierz %n plików\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopiuj\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Skopiuj do {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Nie można utworzyć nowego folderu\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Nie można wczytać ustawień plików\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nie można wczytać widoków plików\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Utwórz katalog\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Bieżący selektor widoku\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Wprowadź nazwę\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Nie udało się utworzyć pseudonimu.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Ulubione\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Pliki i foldery które oznaczysz jako ulubione będą wyświetlały się tutaj\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Pliki i foldery które ostatnio modyfikowałeś będą wyświetlały się tutaj\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtruj listę plików\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Nazwa folderu nie może być pusta\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identyfikacja gościa\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Strona główna\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nieprawidłowa nazwa.\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Zmodyfikowano\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Przenieś\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Przejdź do {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nazwa\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Nazwy nie mogą być puste.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Nazwy nie mogą kończyć się na \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Nazwy nie mogą zaczynać się od kropki.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nowy\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nowy folder\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nowa nazwa folderu\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Brak plików\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nie znaleziono plików spełniających warunki filtru\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Brak pasujących plików\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Wprowadź nazwę zawierającą minimum 2 znaki.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Ostatni\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Wybierz wszystkie wpisy\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Wybierz wpis\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Wybierz wiersz dla {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Rozmiar\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Zatwierdź nazwę\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Cofnij\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Wyślij zawartość lub zsynchronizuj ze swoimi urządzeniami!\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Użytkownik nie został uwierzytelniony.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Nazwa nie może być pusta.\"] }] }, { \"language\": \"pt_BR\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" não é permitido dentro de um nome.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" não é um nome permitido.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" é um nome de pasta inválido.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" não é um nome de pasta permitido'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" é um nome reservado e não permitido.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" não é permitido dentro de um nome de pasta.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n arquivo conflita\", \"%n de arquivos conflitam\", \"%n arquivos conflitam\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n conflito de arquivo em {dirname}\", \"%n de conflitos de arquivos em {dirname}\", \"%n conflitos de arquivos em {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Todos os arquivos\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar toda a operação\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Escolher\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Escolher {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Escolher %n arquivo\", \"Escolher %n arquivos\", \"Escolher %n arquivos\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Confirmar\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copiar\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copiar para {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Não foi possível criar a nova pasta\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Não foi possível carregar configurações de arquivos\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Não foi possível carregar visualições de arquivos\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Criar diretório\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Seletor de visualização atual\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Digite seu nome\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Versão existente\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Falha ao definir apelido.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritos\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Os arquivos e pastas que você marca como favoritos aparecerão aqui.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Arquivos e pastas que você modificou recentemente aparecerão aqui.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrar lista de arquivos\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"O nome da pasta não pode ser vazio.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identificação de convidados\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Início\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se você selecionar ambas as versões, um número será adicionado ao nome do arquivo recebido.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nome inválido.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data da última modificação desconhecida\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modificado\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Mover\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Mover para {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nome\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Os nomes podem ter no máximo 64 caracteres.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Nomes não podem estar vazios.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Nomes não podem terminar com \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Nomes não podem começar com um ponto.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Novo\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nova pasta\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Novo nome de pasta\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nova versão\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Nenhum arquivo aqui\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nenhum arquivo correspondente ao seu filtro foi encontrado.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nenhum arquivo correspondente\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Digite um nome com pelo menos 2 caracteres.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Recente\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Selecione todas as caixas de seleção\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Selecionar todas as entradas\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Selecione todos os arquivos existentes\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Selecione todos os novos arquivos\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Selecionar entrada\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Selecionar a linha para {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Tamanho\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Ignorar %n arquivo\", \"Ignorar %n de arquivos\", \"Ignorar %n arquivos\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Ignorar este arquivo\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Enviar nome\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Desfazer\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Faça upload de algum conteúdo ou sincronize com seus dispositivos!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Ao selecionar uma pasta de entrada, quaisquer arquivos conflitantes dentro dela também serão sobrescritos.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Quando uma pasta de entrada é selecionada, o conteúdo é gravado na pasta existente e uma resolução recursiva de conflitos é realizada.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quais arquivos você deseja manter?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Encontra-se identificado como {nickname}\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"No momento, você não está identificado.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Você não pode deixar o nome vazio.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Você precisa escolher pelo menos uma solução para o conflito.\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Você precisa selecionar pelo menos uma versão de cada arquivo para continuar.\"] }] }, { \"language\": \"pt_PT\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" não é permitido dentro de um nome.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" não é um nome permitido.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" é um nome de pasta inválido.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" não é um nome de pasta permitido'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" é um nome reservado e não é permitido.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" não é permitido dentro do nome de pasta.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n ficheiro em conflito\", \"%n ficheiros em conflito\", \"%n ficheiros em conflito\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n ficheiro em conflito em {dirname}\", \"%n ficheiros em conflito em {dirname}\", \"%n ficheiros em conflito em {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Todos os ficheiros\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar toda a operação\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Escolher\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Escolher {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Escolha %n ficheiro\", \"Escolha %n ficheiros\", \"Escolha %n ficheiros\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Confirmar\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copiar\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copiar para {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Não foi possível criar a nova pasta \"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Não foi possível carregar as definições dos ficheiros\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Não foi possível carregar as visualizações dos ficheiros\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Criar pasta\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Seletor de visualização atual\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Introduza o seu nome\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Versão existente\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Falha ao definir o nome alternativo.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritos\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Os ficheiros e as pastas que marcar como favoritos aparecerão aqui.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Os ficheiros e as pastas que modificou recentemente aparecerão aqui.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrar lista de ficheiros\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"O nome da pasta não pode estar vazio.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identificação de convidado\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Início\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se você selecionar ambas as versões, um número será adicionado ao nome do ficheiro recebido.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nome inválido.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data da última modificação desconhecida\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modificado\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Mover\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Mover para {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nome\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Os nomes podem ter no máximo 64 caracteres.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"O nome não pode ficar em branco.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Nomes não podem terminar em \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Os nomes não podem começar por um ponto.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Novo\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nova pasta\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Novo nome da pasta\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nova versão\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Sem ficheiros aqui\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Não foi encontrado nenhum ficheiro correspondente ao seu filtro.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nenhum ficheiro correspondente\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Introduza um nome com, pelo menos, 2 caracteres.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Recentes\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Selecione todas as caixas de seleção\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Selecionar todas as entradas\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Selecione todos os ficheiros existentes\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Selecione todos os novos ficheiros\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Selecionar entrada\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Selecione a linha para {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Tamanho\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Ignorar %n ficheiro\", \"Ignorar %n ficheiros\", \"Ignorar %n ficheiros\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Ignorar este ficheiro\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Submeter nome\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Anular\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Envie algum conteúdo ou sincronize com os seus dispositivos!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Ao selecionar uma pasta de entrada, quaisquer ficheiros conflituantes dentro da mesma serão também sobrescritos.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Quando uma pasta de entrada é selecionada, o conteúdo é gravado na pasta existente e é realizada uma resolução recursiva de conflitos.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quais os ficheiros que deseja manter?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Atualmente está identificado como {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Atualmente, não está identificado.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Não pode deixar o nome em branco.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"É preciso escolher pelo menos uma solução para o conflito.\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"É necessário selecionar pelo menos uma versão de cada ficheiro para continuar.\"] }] }, { \"language\": \"ro\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" este un nume de director invalid.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" nu este un nume de director permis'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" nu este permis în numele unui director.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Toate fișierele\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Alege\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Alege {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Alege %n fișier\", \"Alege %n fișiere\", \"Alege %n fișiere\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copiază\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copiază în {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Nu s-a putut crea noul director\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Nu s-au putut încărca setările fișierelor\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nu s-au putut încărca vizualizările fișierelor\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Creează director\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Selectorul curent al vizualizării\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favorite\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Fișiere și directoare pe care le marcați ca favorite vor apărea aici.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Fișiere și directoare pe care le-ați modificat recent vor apărea aici.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrează lista de fișiere\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Numele de director nu poate fi necompletat.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Acasă\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modificat\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Mută\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Mută către {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nume\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nou\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Director nou\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Numele noului director\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Nu există fișiere\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nu există fișiere potrivite pentru filtrul selectat\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nu există fișiere potrivite\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Recente\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Selectează toate înregistrările\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Selectează înregistrarea\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Selectează rândul pentru {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Mărime\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Anulează\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Încărcați conținut sau sincronizați cu dispozitivele dumneavoastră!\"] }] }, { \"language\": \"ru\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" не допускается внутри имени.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" это не допустимое имя.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"«{name}» — недопустимое имя папки.\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"«{name}» не является разрешенным именем папки\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" это зарезервированное имя и не допустимо.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": [\"Символ «/» не допускается внутри имени папки.\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Все файлы\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Отмена\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Выбрать\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Выбрать «{file}»\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Выбрать %n файл\", \"Выбрать %n файла\", \"Выбрать %n файлов\", \"Выбрать %n файлов\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Копировать\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Копировать в «{target}»\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Не удалось создать новую папку\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Не удалось загрузить настройки файлов\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Не удалось загрузить конфигурацию просмотра файлов\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Создать папку\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Переключатель текущего вида\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Введите ваше имя\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Не удалось задать никнейм.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Избранное\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Здесь будут отображаться файлы и папки, которые вы пометили как избранные.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Здесь будут отображаться файлы и папки, которые вы недавно изменили.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Фильтровать список файлов\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Имя папки не может быть пустым.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Гостевая идентификация\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Домой\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Неверное имя.\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Изменен\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Переместить\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Переместить в «{target}»\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Имя\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Имена не могут быть длинее 64 символов.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Имена не могут быть пустыми.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Имена не могут оканчиваться на \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Имена должны начинаться с точки.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Новый\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Новая папка\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Имя новой папки\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Здесь нет файлов\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Файлы, соответствующие вашему фильтру, не найдены.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Нет подходящих файлов\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Пожалуйста введите имя длиной не менее 2 символов.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Недавний\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Выбрать все записи\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Выбрать запись\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Выбрать строку для «{nodename}»\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Размер\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Отправить имя\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Отменить\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Загрузите контент или синхронизируйте его со своими устройствами!\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Вы идентифицированы как {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"В данный момент вы не идентифицированы.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Вы не можете оставить имя пустым.\"] }] }, { \"language\": \"sk_SK\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" nie je povolené v rámci mena.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" nie je povolený názov.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" je neplatný názov pričinka.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" nie je povolený názov priečinka.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" je rezervované meno a nie je povolené.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" nie je povolené v názve priečinka.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n konflikt súborov\", \"%n konflikty súborov\", \"%n konfliktov súborov\", \"%n konflikty súborov\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n konflikt súborov v {dirname}\", \"%n konflikty súborov v {dirname}\", \"%n konfliktov súborov v {dirname}\", \"%n konfliktov súborov v {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Všetky súbory\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Zrušiť\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Zrušiť celú operáciu\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Vybrať\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Vybrať {súbor}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Vybraný %n súbor\", \"Vybrané %n súbory\", \"Vybraných %n súborov\", \"Vybraných %n súborov\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Potvrdiť\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Pokračovať\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopírovať\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopírovať do {umiestnenia}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Nepodarilo sa vytvoriť nový priečinok\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Nepodarilo sa načítať nastavenia súborov\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nepodarilo sa načítať pohľady súborov\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Vytvoriť adresár\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Výber aktuálneho zobrazenia\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Zadajte svoje meno\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Existujúca verzia\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Nepodarilo sa nastaviť prezývku.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Obľúbené\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Tu sa zobrazia súbory a priečinky, ktoré označíte ako obľúbené.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Tu sa zobrazia súbory a priečinky, ktoré ste nedávno upravili.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrovať zoznam súborov\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Názov priečinka nemôže byť prázdny.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identifikácia hosťa\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Domov\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ak vyberiete obe verzie, prichádzajúci súbor bude mať k svojmu názvu pridané číslo.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Neplatné meno.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Posledná zmena dátumu neznáma\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Upravené\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Prejsť\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Prejsť na {umiestnenie}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Názov\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Mená môžu mať maximálne 64 znakov.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Mená nesmú byť prázdne.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Mená nesmú končiť \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Mená nesmú začínať bodkou.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Pridať\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Pridať priečinok\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Pridať názov priečinka\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nová verzia\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Nie sú tu žiadne súbory\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nenašli sa žiadne súbory zodpovedajúce vášmu filtru.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Žiadne zodpovedajúce súbory\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Zadajte meno s aspoň 2 znakmi.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Nedávne\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Vyberte všetky zaškrtávacie políčka\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Vybrať všetky položky\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vybrať všetky existujúce súbory\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vybrať všetky nové súbory\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Vybrať položku\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Vyberte riadok pre {názov uzla}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Veľkosť\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Preskočiť %n súbor\", \"Preskočiť %n súbory\", \"Preskočiť %n súborov\", \"Preskočiť %n súbory\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Preskočiť tento súbor\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Zadať meno\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Späť\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Nahrajte nejaký obsah alebo synchronizujte so svojimi zariadeniami!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Keď je vybraná prichádzajúca složka, všetky konfliktné súbory v nej budú taktiež prepísané.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Keď je vybraná prichádzajúca zložka, obsah sa zapíše do existujúcej zložky a vykoná sa rekurzívne riešenie konfliktov.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Ktoré súbory chcete zachovať?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Momentálne ste identifikovaný ako {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Momentálne nie ste identifikovaný.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Nemôžete nechať meno prázdne.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Musíte si vybrať aspoň jedno riešenie konfliktu.\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Musíte vybrať aspoň jednu verziu každého súboru, aby ste mohli pokračovať.\"] }] }, { \"language\": \"sl\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"{name} je neveljavno ime mape.\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"{name} ni dovoljeno ime mape\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" ni dovoljen v imenu mape.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Vse datoteke\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Izberi\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Izberi {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Izberi %n datoteko\", \"Izberi %n datoteki\", \"Izberi %n datotek\", \"Izberi %n datotek\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopiraj\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopiraj v {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Nisem mogel ustvariti nove mape\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"NIsem mogel naložiti nastavitev datotek\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nisem mogel naložiti pogledov datotek\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Ustvari mapo\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Izbirnik trenutnega pogleda\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Priljubljene\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Datoteke in mape ki jih označite kot priljubljene se bodo prikazale tukaj.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Daoteke in mape ki ste jih pred kratkim spremenili se bodo prikazale tukaj.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtriraj seznam datotek\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Ime mape ne more biti prazno\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Domov\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Spremenjeno\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Premakni\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Premakni v {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Ime\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nov\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nova mapa\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Novo ime mape\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Tukaj ni datotek\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Ni bilo najdenih ujemajočih datotek glede na vaš filter.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Ni ujemajočih datotek\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Nedavne\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Izberi vse vnose\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Izberi vnos\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Izberi vrstico za {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Velikost\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Razveljavi\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Naloži nekaj vsebine ali sinhroniziraj s svojimi napravami!\"] }] }, { \"language\": \"sr\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [\"„{char}” није дозвољено унутар имена.\"] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": [\"„{extension}” није дозвољено име.\"] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"„{name}” није исправно име фолдера.\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"„{name}” није дозвољено име за фолдер.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": [\"„{segment}” је резервисано име и није дозвољено.\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": [\"„/” није дозвољено унутар имена фолдера.\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Сви фајлови\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Откажи\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Изаберите\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Изаберите {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Изаберите %n фајл\", \"Изаберите %n фајла\", \"Изаберите %n фајлова\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Копирај\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Копирај у {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Није могао да се креира нови фолдер\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Не могу да се учитају подешавања фајлова\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Не могу да се учитају прикази фајлова\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Креирај директоријум\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Бирач тренутног приказа\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Унесите своје име\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Није успело постављање надимка.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Омиљено\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Овде ће се појавити фајлови и фолдери које сте означили као омиљене.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Овде ће се појавити фајлови и фолдери који се се недавно изменили.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Фитрирање листе фајлова\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Име фолдера не може бити празно.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Идентификација госта\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Почетак\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Неисправно име.\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Измењено\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Премести\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Премести у {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Име\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Највећа дужина имена може бити 64 карактера.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Имена не смеју да буду празна.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": [\"Имена не смеју да се завршавају на „{extension}”.\"] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Имена не смеју да почињу тачком.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Ново\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Нови фолдер\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Име новог фолдера\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Овде нема фајлова\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Није пронађен ниједан фајл који задовољава ваш филтер.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Нема таквих фајлова\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Молимо вас да унесете име од барем два карактера.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Скорашње\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Изаберите све ставке\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Изаберите ставку\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Изаберите ред за {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Величина\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Предај име\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Поништи\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Отпремите нешто или синхронизујте са својим уређајима!\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Тренутно се идентификујете као {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Тренутно немате идентификацију.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Име не можете да оставите празно.\"] }] }, { \"language\": \"sr@latin\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"„{name}” je neispravan naziv foldera.\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"„{name}” je nedozvoljen naziv foldera.\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": [\"„/” se ne može koristiti unutar naziva foldera.\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Svi fajlovi\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Izaberite\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Izaberite {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Izaberite %n fajl\", \"Izaberite %n fajla\", \"Izaberite %n fajlova\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopiraj\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopiraj u {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Neuspešno kreiranje novog foldera\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Neuspešno učitavanje podešavanja fajlova\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Neuspešno učitavanje prikaza fajlova\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Kreiraj direktorijum\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Birač trenutnog prikaza\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Omiljeno\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Lista omiljenih fajlova i foldera.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Lista fajlova i foldera sa skorašnjim izmenama.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Fitriranje liste fajlova\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Naziv foldera ne može biti prazan.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Početak\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Izmenjeno\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Premesti\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Premesti u {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Naziv\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Novo\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Novi folder\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Naziv novog foldera\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Bez fajlova\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nema fajlova koji zadovoljavaju uslove filtera.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nema takvih fajlova\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Skorašnje\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Izaberite sve stavke\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Izaberite stavku\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Izaberite red za {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Veličina\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Vrati\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Otpremite sadržaj ili sinhronizujte sa svojim uređajima!\"] }] }, { \"language\": \"sv\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" är inte tillåtet i ett mappnamn.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" är inte tillåtet i ett namn.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" är inte ett tillåtet namn.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" är ett reserverat namn och inte tillåtet mappnamn.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" är ett reserverat namn och inte tillåtet.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n fil är i konflikt\", \"%n filer är i konflikt\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n fil är i konflikt i {dirname}\", \"%n filer är i konflikt i {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Alla filer\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Avbryt\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Avbryt hela operationen\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Välj\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Välj {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Välj %n fil\", \"Välj %n filer\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Bekräfta\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsätt\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopiera\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopiera till {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Kunde inte skapa den nya mappen\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Kunde inte ladda filinställningar\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Kunde inte ladda filvyer\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Skapa katalog\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Aktuell vyväljare\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Ange ditt namn\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Nuvarande version\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Kunde inte ställa in smeknamn.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoriter\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Filer och mappar som du markerar som favorit kommer att visas här.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Filer och mappar som du nyligen ändrat kommer att visas här.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrera fillistan\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Mappnamn får inte sluta med \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Gästidentifiering\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Hem\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Om du väljer båda versionerna kommer den inkommande filen att få ett nummer tillagt i sitt namn.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Ogiltigt mappnamn.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Ogiltigt namn.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Senaste ändringsdatum okänt\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Ändrad\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Flytta\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Flytta till {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Namn\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Namnen kan vara högst 64 tecken långa.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Namn får inte vara tomt.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Namn får inte sluta med \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Namn får inte börja med en punkt.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Ny\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Ny mapp\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nytt mappnamn\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Ny version\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Inga filer här\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Inga filer som matchar ditt filter hittades.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Inga matchande filer\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Ange ett namn med minst 2 tecken.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Nyligen\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Markera alla kryssrutor\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Välj alla poster\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Välj alla befintliga filer\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Välj alla nya filer\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Välj post\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Välj raden för {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Storlek\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Hoppa över %n fil\", \"Hoppa över %n filer\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Hoppa över den här filen\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Skicka namn\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Ångra\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Ladda upp lite innehåll eller synkronisera med dina enheter!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"När en inkommande mapp väljs kommer eventuella konflikterande filer i den också att skrivas över.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"När en inkommande mapp väljs skrivs innehållet in i den befintliga mappen och en rekursiv konfliktlösning utförs.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Vilka filer vill du behålla?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Du är för närvarande identifierad som {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Du är för närvarande inte identifierad.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Du kan inte lämna namnet tomt.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Du måste välja minst en konfliktlösning\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Du måste välja minst en version av varje fil för att fortsätta.\"] }] }, { \"language\": \"tr\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" karakteri bir klasör adında kullanılamaz.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['Bir ad içinde \"{char}\" karakteri kullanılamaz.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" adına izin verilmiyor.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" adı sistem için ayrılmış olduğundan klasör adlarında kullanılamaz.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" adı sistem için ayrılmış olduğundan kullanılamaz.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n dosya çakışıyor\", \"%n dosya çakışıyor\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"{dirname} içindeki %n dosya çakışıyor\", \"{dirname} içindeki %n dosya çakışıyor\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Tüm dosyalar\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"İptal\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Tüm işlemi iptal et\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Seçin\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"{file} seçin\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"%n dosya seçin\", \"%n dosya seçin\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Onayla\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"İlerle\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopyala\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"{target} üzerine kopyala\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Yeni klasör oluşturulamadı\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Dosyalar uygulamasının ayarları yüklenemedi\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Dosyalar uygulamasının görünümleri yüklenemedi\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Klasör oluştur\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Geçerli görünüm seçici\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Adınızı yazın\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Var olan sürüm\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Takma ad ayarlanamadı.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Sık kullanılanlar\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Sık kullanılan olarak seçtiğiniz dosyalar burada görüntülenir.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Son zamanlarda değiştirdiğiniz dosya ve klasörler burada görüntülenir.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Dosya listesini süz\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Klasör adları \"{extension}\" ile bitemez.'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Konuk kimliği\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Giriş\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"İki sürümü de seçerseniz, gelen dosyanın adına bir sayı eklenir.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Klasör adı geçersiz.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Ad geçersiz.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Son değiştirilme tarihi bilinmiyor.\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Değiştirilme\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Taşı\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"{target} üzerine taşı\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Ad\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Adlar en fazla 64 karakter uzunluğunda olabilir.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Ad boş olamaz.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Ad \"{extension}\" ile bitemez.'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Ad nokta karakteri ile başlayamaz.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Yeni\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Yeni klasör\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Yeni klasör adı\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Yeni sürüm\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Burada herhangi bir dosya yok\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Süzgece uyan bir dosya bulunamadı.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Eşleşen bir dosya yok\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Ad en az 2 karakter uzunluğunda olmalıdır.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Son kullanılanlar\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Tüm kutuları işaretle\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Tüm kayıtları seç\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Tüm var olan dosyaları seç\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Tüm yeni dosyaları seç\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Kaydı seç\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"{nodename} satırını seçin\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Boyut\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"%n dosyayı atla\", \"%n dosyayı atla\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Bu dosyayı atla\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Adı gönder\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Geri al\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Bazı içerikler yükleyin ya da aygıtlarınızla eşitleyin!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Bir gelen klasör seçildiğinde, içindeki çakışan dosyaların da üzerine yazılır.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Bir gelen klasör seçildiğinde, içerik var olan klasöre yazılır ve alt klasörlerle bir çakışma çözümü uygulanır.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Hangi dosyaları tutmak istiyorsunuz?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"{nickname} olarak tanınıyorsunuz.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Henüz kendinizi tanıtmadınız.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Ad boş bırakılamaz.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"En az bir çakışma çözümü seçmelisiniz\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"İlerlemek için her dosaynın en az bir sürümünü seçmelisiniz.\"] }] }, { \"language\": \"uk\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" не дозволено всередині імени.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": [`\"{extension}\" недозволене ім'я.`] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [`\"{name}\" недійсне ім'я каталогу.`] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [`\"{name}\" недозволене ім'я каталогу.`] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": [`\"{segment}\" зарезервоване ім'я і не дозволено для використання.`] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" не дозволено у імені каталогу.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Всі файли\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Скасувати\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Вибрати\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Вибрати {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Вибрати %n файл\", \"Вибрати %n файли\", \"Вибрати %n файлів\", \"Вибрати %n файлів\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Копіювати\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Копіювати до {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Не вдалося створити новий каталог\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Не вдалося завантажити налаштування файлів\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Не вдалося завантажити подання файлів\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Створити каталог\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Вибір подання\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Зазначте ваше ім'я\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Не вдалося встановити псевдо.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Із зірочкою\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Тут показуватимуться файли та каталоги, які ви позначите зірочкою.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Тут показуватимуться файли та каталоги, які було нещодавно змінено.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Фільтрувати список файлів\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Ім'я каталогу не може бути порожнє.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Ім'я для гостя\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Домівка\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Недійсне ім'я.\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Змінено\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Перемістити\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Перемістити до {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Ім'я\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Імена мають мати довжину не більше 64 символів.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Ім'я не може бути порожнє.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": [`Ім'я не може закінчуватися на \"{extension}\".`] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Ім'я не може починатися з крапки.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Новий\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Новий каталог\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Ім'я нового каталогу\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Тут відсутні файли\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Відсутні збіги за фільтром.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Відсутні збіги файлів.\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Зазначте ім'я довжиною не менше 2 символів\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Останні\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Вибрати всі записи\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Вибрати запис\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Вибрати рядок для {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Розмір\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Встановити ім'я\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Повернути\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Завантажте вміст або синхронізуйте з вашим пристроєм!\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Вас визначено як {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Вас не ідентифіковано.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Потрібно зазначити ім'я.\"] }] }, { \"language\": \"uz\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['Nom ichida \"{char}\" ga ruxsat berilmagan.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" ruxsat etilgan nom emas.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" jild nomi yaroqsiz.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" ruxsat etilgan jild nomi emas'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" - zaxiralangan nom va ruxsat berilmaydi.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" papka nomi ichida ruxsat berilmaydi.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n fayl ziddiyatli\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"{dirname} da %n fayl ziddiyati\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Barcha fayllar\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Bekor qilish\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Butun operatsiyani bekor qiling\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Tanlang\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Tanlang {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Tanlang %n faylni\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Tasdiqlang\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Davom eting\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Nusxa\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\" {target} ga nusxa\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Yangi jild yaratib bo‘lmadi\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Fayl sozlamalari yuklanmadi\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Fayllarni koʻrishni yuklab boʻlmadi\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Katalog yaratish\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Joriy ko'rinish selektori\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Ismingizni kiriting\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Mavjud versiya\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Taxallusni o‘rnatib bo‘lmadi.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Tanlanganlar\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Tanlangan deb belgilagan fayl va papkalar shu yerda koʻrinadi.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Siz yaqinda oʻzgartirgan fayl va papkalar shu yerda koʻrinadi.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Fayl ro'yxatini filtrlash\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Jild nomi boʻsh boʻlishi mumkin emas.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Foydalanuvchini identifikatsiyalash\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Uy\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Agar siz ikkala versiyani tanlasangiz, kiruvchi fayl nomiga qo'shilgan raqamga ega bo'ladi.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nomi noto‘g‘ri.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Oxirgi tahrirlangan sana noma'lum\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modifikatsiyalangan\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Ko'chirish\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\" {target} ga ko'chirish\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nomi\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Ismlar ko'pi bilan 64 ta belgidan iborat bo'lishi mumkin.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Ismlar bo'sh bo'lmasligi kerak.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Ismlar \"{extension}\" bilan tugamasligi kerak.'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Ismlar nuqta bilan boshlanmasligi kerak.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Yangi\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Yangi jild\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Yangi jild nomi\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Yangi versiya\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Fayl mavjud emas\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Filtringizga mos keladigan fayl topilmadi.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Mos fayllar yo'q\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Kamida 2 ta belgidan iborat nom kiriting.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Yaqinda\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Barcha katakchalarni belgilang\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Barcha yozuvlarni tanlang\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Barcha mavjud fayllarni tanlang\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Barcha yangi fayllarni tanlang\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Yozuvni tanlang\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"{nodename} uchun qatorni tanlang\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"O`lcham\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"%n faylni oʻtkazib yuborish\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Ushbu faylni o'tkazib yuboring\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Ismni tasdiqlang\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Bekor qilish\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Qurilmangizga ba'zi kontentni yuklang yoki sinxronlang!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Kiruvchi papka tanlanganda, undagi har qanday ziddiyatli fayllar ham ustiga yoziladi.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Kiruvchi papka tanlanganda, kontent mavjud jildga yoziladi va nizolarni rekursiv hal qilish amalga oshiriladi.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Qaysi fayllarni saqlamoqchisiz?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Siz hozirda {nickname} sifatida aniqlangansiz.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Siz hozirda identifikatsiyadan o'tmagansiz\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Ism katagini bo'sh qoldirib bo'lmaydi.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Siz kamida bitta mojaro yechimini tanlashingiz kerak\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Davom etish uchun har bir faylning kamida bitta versiyasini tanlashingiz kerak.\"] }] }, { \"language\": \"vi\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" là tên thư mục không hợp lệ.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"1{name}\"không phải là tên thư mục được cho phép'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\"không được phép đặt trong tên thư mục.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Tất cả tệp\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Chọn\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Chọn {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Chọn %n tệp\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Sao chép\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Sao chép đến {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Không thể tạo thư mục mới\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Không thể tải tập tin cài đặt\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Không thể tải xuống tệp xem\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Tạo thư mục\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Hiện tại chế độ xem của bộ chọn\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Yêu cầu thích\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Các tập tin và thư mục bạn đánh dấu yêu thích sẽ hiển thị ở đây.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Các tập tin và thư mục bạn sửa đổi gần đây sẽ hiển thị ở đây.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filter list file\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Thư mục tên không được để trống.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Trang chủ\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Đã sửa đổi\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Di chuyển\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Di chuyển đến{target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Tên\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Mới\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"New thư mục\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"New thư mục tên\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"No file at here\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Không tìm thấy tệp nào phù hợp với bộ lọc của bạn.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"No file phù hợp\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Gần đây\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Choose all items\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Chọn mục nhập\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Choose hang cho{nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Kích cỡ\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Hoàn tác\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Tải lên một số nội dung hoặc đồng bộ hóa với thiết bị của bạn!\"] }] }, { \"language\": \"zh_CN\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"“{name}” 是无效的文件夹名称。\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"“{name}” 不是允许的文件夹名称\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": [\"文件夹名称中不允许包含 “/”。\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"所有文件\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"选择\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"选择 {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"选择 %n 个文件\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"复制\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"复制到 {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"无法创建新文件夹\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"无法加载文件设置\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"无法加载文件视图\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"创建目录\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"当前视图选择器\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"最爱\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"您标记为最爱的文件与文件夹会显示在这里\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"您最近修改的文件与文件夹会显示在这里\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"过滤文件列表\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"文件夹名称不能为空。\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"主目录\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"已修改\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"移动\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"移动至 {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"名称\"] }, { \"msgid\": \"New\", \"msgstr\": [\"新建\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"新文件夹\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"新文件夹名称\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"此处无文件\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"找不到符合您过滤条件的文件\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"无符合的文件\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"最近\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"选择所有条目\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"选择条目\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"选择 {nodename} 的列\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"大小\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\" 撤消\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"上传一些项目或与您的设备同步!\"] }] }, { \"language\": \"zh_HK\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['名稱中不能使用 \"{char}\"。'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": [\"「{extension}」並非允許的名稱。\"] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"「{name}」是無效的資料夾名稱。\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"資料夾名稱「{name}」不符合允許的規範。\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": [\"「{segment}」是一個保留名稱,不能使用。\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['資料夾名稱中不允許使用 \"/\"。'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n 檔案衝突\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"{dirname} 中有 %n 個檔案衝突\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"所有檔案\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"取消\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"取消整個操作\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"選擇\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"選擇 {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"選擇 %n 個檔案\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"確認\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"繼續\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"複製\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"複製到 {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"無法建立新資料夾\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"無法載入檔案設定\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"無法載入檔案視圖\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"建立目錄\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"目前視圖選擇器\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"輸入您的名字\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"現有的版本\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"無法設置暱稱。\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"最愛\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"您標記為最愛的檔案與資料夾將會顯示在此處。\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"您最近修改的檔案與資料夾將會顯示在此處。\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"過濾檔案清單\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"資料夾名稱不能為空。\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"訪客身份識別\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"首頁\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"如果您選擇兩個版本,傳入的檔案名稱將會附加一個數字。\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"無效的名字。\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"最後的修改日期不詳\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"已修改\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"移動\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"移動至 {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"名稱\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"名稱長度最多為 64 個字元。\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"名稱不能為空。\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": [\"名稱不得以「{extension}」結尾。\"] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"名稱不得以點開頭。\"] }, { \"msgid\": \"New\", \"msgstr\": [\"新\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"新資料夾\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"新資料夾名稱\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"新版本\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"此處無檔案\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"找不到符合您過濾條件的檔案。\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"沒有匹配的檔案\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"請輸入至少 2 個字符的名稱。\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"最近\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"選擇所有復選框\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"選擇所有項目\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"選擇所有現有的檔案\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"選擇所有新檔案\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"選擇項目\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"選擇 {nodename} 的列\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"大小\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"跳過 %n 個檔案\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"跳過此檔案\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"遞交名字\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"還原\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"上傳一些內容或與您的裝置同步!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"選取傳入資料夾時,其中任何衝突的檔案也將被覆蓋。\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"當選取傳入資料夾時,內容將寫入現有資料夾,並執行遞歸衝突解決。\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"你想保留哪些檔案?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"您目前被識別為 {nickname}。\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"您目前尚未被識別。\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"名稱不能留空。\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"你需要選擇至少一種衝突解決方案。\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"您必須選擇每個文件的至少一個版本才能繼續。\"] }] }, { \"language\": \"zh_TW\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid file name.', \"msgstr\": [\"「{name}」是無效的檔案名稱。\"] }, { \"msgid\": '\"{name}\" is not an allowed filetype', \"msgstr\": [\"「{name}」並非允許的檔案類型\"] }, { \"msgid\": '\"/\" is not allowed inside a file name.', \"msgstr\": [\"檔案名稱中不允許使用「/」。\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"所有檔案\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"選擇\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"選擇 {file}\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"複製\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"複製到 {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"無法建立新資料夾\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"建立目錄\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"目前檢視選取器\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"最愛\"] }, { \"msgid\": \"File name cannot be empty.\", \"msgstr\": [\"檔案名稱不能為空。\"] }, { \"msgid\": \"Filepicker sections\", \"msgstr\": [\"檔案挑選器選取\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"您標記為最愛的檔案與資料夾將會顯示在此處。\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"您最近修改的檔案與資料夾將會顯示在此處。\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"過濾檔案清單\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"家\"] }, { \"msgid\": \"Mime type {mime}\", \"msgstr\": [\"Mime type {mime}\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"已修改\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"移動\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"移動至 {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"名稱\"] }, { \"msgid\": \"New\", \"msgstr\": [\"新\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"新資料夾\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"新資料夾名稱\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"此處無檔案\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"找不到符合您過濾條件的檔案。\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"無符合的檔案\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"最近\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"選取所有條目\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"選取條目\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"選取 {nodename} 的列\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"大小\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"復原\"] }, { \"msgid\": \"unknown\", \"msgstr\": [\"未知\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"上傳一些內容或與您的裝置同步\"] }] }]) {\n const { language, translations } = data;\n const bundle = {\n headers: {},\n translations: {\n \"\": Object.fromEntries(translations.map((translation) => [translation.msgid, translation]))\n }\n };\n gtBuilder.addTranslation(language, bundle);\n}\nconst gt = gtBuilder.build();\nconst n = gt.ngettext.bind(gt);\nconst t = gt.gettext.bind(gt);\n/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nconst logger = getLoggerBuilder().setApp(\"@nextcloud/dialogs\").detectLogLevel().build();\nvar FilePickerType = /* @__PURE__ */ ((FilePickerType2) => {\n FilePickerType2[FilePickerType2[\"Choose\"] = 1] = \"Choose\";\n FilePickerType2[FilePickerType2[\"Move\"] = 2] = \"Move\";\n FilePickerType2[FilePickerType2[\"Copy\"] = 3] = \"Copy\";\n FilePickerType2[FilePickerType2[\"CopyMove\"] = 4] = \"CopyMove\";\n FilePickerType2[FilePickerType2[\"Custom\"] = 5] = \"Custom\";\n return FilePickerType2;\n})(FilePickerType || {});\nclass FilePickerClosed extends Error {\n}\nclass FilePicker {\n title;\n multiSelect;\n mimeTypeFilter;\n directoriesAllowed;\n noMenu;\n buttons;\n path;\n filter;\n canPick;\n container;\n disabledNavigation;\n constructor(title, multiSelect, mimeTypeFilter, directoriesAllowed, noMenu, buttons, path, filter, canPick, container, disabledNavigation = false) {\n this.title = title;\n this.multiSelect = multiSelect;\n this.mimeTypeFilter = mimeTypeFilter;\n this.directoriesAllowed = directoriesAllowed;\n this.noMenu = noMenu;\n this.path = path;\n this.filter = filter;\n this.canPick = canPick;\n this.buttons = buttons;\n this.container = container;\n this.disabledNavigation = disabledNavigation;\n }\n /**\n * Pick files using the FilePicker.\n *\n * @return Promise with array of picked files or rejected promise on close without picking\n */\n async pickNodes() {\n const { default: FilePickerVue } = await import(\"./FilePicker-W-IYpVkn.mjs\");\n const nodes = await spawnDialog(FilePickerVue, {\n allowPickDirectory: this.directoriesAllowed,\n noMenu: this.noMenu,\n buttons: this.buttons,\n name: this.title,\n path: this.path,\n mimetypeFilter: this.mimeTypeFilter,\n multiselect: this.multiSelect,\n filterFn: this.filter,\n canPickFn: this.canPick,\n disabledNavigation: this.disabledNavigation\n }, {\n container: this.container\n });\n if (!Array.isArray(nodes) || nodes.length === 0) {\n throw new FilePickerClosed(\"FilePicker: No nodes selected\");\n }\n return nodes;\n }\n /**\n * Pick files using the FilePicker\n *\n * @return Promise with array of paths of picked files or rejected promise on close without picking\n */\n async pick() {\n const nodes = await this.pickNodes();\n if (this.multiSelect) {\n return nodes.map((node) => node.path);\n }\n const path = nodes[0]?.path ?? \"/\";\n return path;\n }\n}\nclass FilePickerBuilder {\n title;\n multiSelect = false;\n mimeTypeFilter = [];\n directoriesAllowed = false;\n noMenu = false;\n path;\n filter;\n canPick;\n buttons = [];\n container;\n disabledNavigation = false;\n /**\n * Construct a new FilePicker\n *\n * @param title Title of the FilePicker\n */\n constructor(title) {\n this.title = title;\n }\n /**\n * Set the container where the FilePicker will be mounted\n * By default 'body' is used\n *\n * @param container The dialog container\n */\n setContainer(container) {\n this.container = container;\n return this;\n }\n /**\n * Enable or disable picking multiple files\n *\n * @param ms True to enable picking multiple files, false otherwise\n */\n setMultiSelect(ms) {\n this.multiSelect = ms;\n return this;\n }\n /**\n * Add allowed MIME type\n *\n * @param filter MIME type to allow\n */\n addMimeTypeFilter(filter) {\n this.mimeTypeFilter.push(filter);\n return this;\n }\n /**\n * Set allowed MIME types\n *\n * @param filter Array of allowed MIME types\n */\n setMimeTypeFilter(filter) {\n this.mimeTypeFilter = filter;\n return this;\n }\n /**\n * Add a button to the FilePicker\n * Note: This overrides any previous `setButtonFactory` call\n *\n * @param button The button\n */\n addButton(button) {\n if (typeof this.buttons === \"function\") {\n logger.warn(\"FilePicker buttons were set to factory, now overwritten with button object.\");\n this.buttons = [];\n }\n this.buttons.push(button);\n return this;\n }\n /**\n * Set the button factory which is used to generate buttons from current view, path and selected nodes\n * Note: This overrides any previous `addButton` call\n *\n * @param factory The button factory\n */\n setButtonFactory(factory) {\n this.buttons = factory;\n return this;\n }\n /**\n * Set FilePicker type based on legacy file picker types\n *\n * @param type The legacy filepicker type to emulate\n * @deprecated Use `addButton` or `setButtonFactory` instead as with setType you do not know which button was pressed\n */\n setType(type) {\n this.buttons = (nodes, path) => {\n const buttons = [];\n const node = nodes[0];\n const target = node?.displayname || basename(path);\n if (type === 1) {\n let label = t(\"Choose\");\n if (nodes.length === 1) {\n label = t(\"Choose {file}\", { file: target });\n } else if (this.multiSelect) {\n label = n(\"Choose %n file\", \"Choose %n files\", nodes.length);\n }\n buttons.push({\n callback: () => {\n },\n label,\n variant: \"primary\"\n });\n }\n if (type === 4 || type === 3) {\n buttons.push({\n callback: () => {\n },\n label: target ? t(\"Copy to {target}\", { target }) : t(\"Copy\"),\n icon: IconCopy,\n variant: type === 3 ? \"primary\" : \"secondary\"\n });\n }\n if (type === 4 || type === 2) {\n buttons.push({\n callback: () => {\n },\n label: target ? t(\"Move to {target}\", { target }) : t(\"Move\"),\n icon: IconMove,\n variant: \"primary\"\n // move is always primary - also on copy-move\n });\n }\n return buttons;\n };\n return this;\n }\n /**\n * Allow to pick directories besides files\n *\n * @param allow True to allow picking directories\n */\n allowDirectories(allow = true) {\n this.directoriesAllowed = allow;\n return this;\n }\n /**\n * Allow to create New folders\n *\n * @param noMenu True to hide menu\n */\n setNoMenu(noMenu = true) {\n this.noMenu = noMenu;\n return this;\n }\n /**\n * Set starting path of the FilePicker\n *\n * @param path Path to start from picking\n */\n startAt(path) {\n this.path = path;\n return this;\n }\n /**\n * Add filter function to filter file list of FilePicker\n *\n * @param filter Filter function to apply\n */\n setFilter(filter) {\n this.filter = filter;\n return this;\n }\n /**\n * Add function to allow or not picking a node\n *\n * @param canPick Function to decide if a node can be picked\n */\n setCanPick(canPick) {\n this.canPick = canPick;\n return this;\n }\n /**\n * Disable navigation (view selection)\n */\n disableNavigation() {\n this.disabledNavigation = true;\n return this;\n }\n /**\n * Construct the configured FilePicker\n */\n build() {\n return new FilePicker(\n this.title,\n this.multiSelect,\n this.mimeTypeFilter,\n this.directoriesAllowed,\n this.noMenu,\n this.buttons,\n this.path,\n this.filter,\n this.canPick,\n this.container,\n this.disabledNavigation\n );\n }\n}\nfunction getFilePickerBuilder(title) {\n return new FilePickerBuilder(title);\n}\nasync function showGuestUserPrompt(props) {\n const name = await spawnDialog(\n defineAsyncComponent(() => import(\"./PublicAuthPrompt-uFWxS9Cy.mjs\")),\n props\n );\n return name;\n}\nconst LoaderSvg = '\\n\t\\n\t\\n\\n';\nvar ToastType = /* @__PURE__ */ ((ToastType2) => {\n ToastType2[\"ERROR\"] = \"toast-error\";\n ToastType2[\"WARNING\"] = \"toast-warning\";\n ToastType2[\"INFO\"] = \"toast-info\";\n ToastType2[\"SUCCESS\"] = \"toast-success\";\n ToastType2[\"UNDO\"] = \"toast-undo\";\n ToastType2[\"LOADING\"] = \"toast-loading\";\n return ToastType2;\n})(ToastType || {});\nconst TOAST_ARIA_LIVE_OFF = \"off\";\nconst TOAST_ARIA_LIVE_POLITE = \"polite\";\nconst TOAST_ARIA_LIVE_ASSERTIVE = \"assertive\";\nvar ToastAriaLive = /* @__PURE__ */ ((ToastAriaLive2) => {\n ToastAriaLive2[ToastAriaLive2[\"OFF\"] = TOAST_ARIA_LIVE_OFF] = \"OFF\";\n ToastAriaLive2[ToastAriaLive2[\"POLITE\"] = TOAST_ARIA_LIVE_POLITE] = \"POLITE\";\n ToastAriaLive2[ToastAriaLive2[\"ASSERTIVE\"] = TOAST_ARIA_LIVE_ASSERTIVE] = \"ASSERTIVE\";\n return ToastAriaLive2;\n})(ToastAriaLive || {});\nconst TOAST_UNDO_TIMEOUT = 1e4;\nconst TOAST_DEFAULT_TIMEOUT = 7e3;\nconst TOAST_PERMANENT_TIMEOUT = -1;\nfunction showMessage(data, options) {\n options = {\n timeout: TOAST_DEFAULT_TIMEOUT,\n isHTML: false,\n type: void 0,\n // An undefined selector defaults to the body element\n selector: void 0,\n onRemove: () => {\n },\n onClick: void 0,\n close: true,\n ...options\n };\n if (typeof data === \"string\" && !options.isHTML) {\n const element = document.createElement(\"div\");\n element.innerHTML = data;\n data = element.innerText;\n }\n let classes = options.type ?? \"\";\n if (typeof options.onClick === \"function\") {\n classes += \" toast-with-click \";\n }\n const isNode = data instanceof Node;\n let ariaLive = ToastAriaLive.POLITE;\n if (options.ariaLive) {\n ariaLive = options.ariaLive;\n } else if (options.type === \"toast-error\" || options.type === \"toast-undo\") {\n ariaLive = ToastAriaLive.ASSERTIVE;\n }\n const toast = Toastify({\n [!isNode ? \"text\" : \"node\"]: data,\n duration: options.timeout,\n callback: options.onRemove,\n onClick: options.onClick,\n close: options.close,\n gravity: \"top\",\n selector: options.selector,\n position: \"right\",\n backgroundColor: \"\",\n className: \"dialogs \" + classes,\n escapeMarkup: !options.isHTML,\n ariaLive\n });\n toast.showToast();\n return toast;\n}\nfunction showError(text, options) {\n return showMessage(text, {\n ...options,\n type: \"toast-error\"\n /* ERROR */\n });\n}\nfunction showWarning(text, options) {\n return showMessage(text, {\n ...options,\n type: \"toast-warning\"\n /* WARNING */\n });\n}\nfunction showInfo(text, options) {\n return showMessage(text, {\n ...options,\n type: \"toast-info\"\n /* INFO */\n });\n}\nfunction showSuccess(text, options) {\n return showMessage(text, {\n ...options,\n type: \"toast-success\"\n /* SUCCESS */\n });\n}\nfunction showLoading(text, options) {\n const loader = document.createElement(\"span\");\n loader.innerHTML = LoaderSvg;\n loader.classList.add(\"toast-loader\");\n const loaderContent = document.createElement(\"span\");\n loaderContent.classList.add(\"toast-loader-container\");\n loaderContent.innerText = text;\n loaderContent.appendChild(loader);\n return showMessage(loaderContent, {\n ...options,\n close: false,\n timeout: TOAST_PERMANENT_TIMEOUT,\n type: \"toast-loading\"\n /* LOADING */\n });\n}\nfunction showUndo(text, onUndo, options) {\n if (!(onUndo instanceof Function)) {\n throw new Error(\"Please provide a valid onUndo method\");\n }\n options = Object.assign(options || {}, {\n // force 10 seconds of timeout\n timeout: TOAST_UNDO_TIMEOUT\n });\n const undoContent = document.createElement(\"span\");\n const undoButton = document.createElement(\"button\");\n undoContent.classList.add(\"toast-undo-container\");\n undoButton.classList.add(\"toast-undo-button\");\n undoButton.innerText = t(\"Undo\");\n undoContent.innerText = text;\n undoContent.appendChild(undoButton);\n const toast = showMessage(undoContent, {\n ...options,\n type: \"toast-undo\"\n /* UNDO */\n });\n undoButton.addEventListener(\"click\", function(event) {\n event.stopPropagation();\n onUndo(event);\n if (toast?.hideToast instanceof Function) {\n toast.hideToast();\n }\n });\n return toast;\n}\nconst _hoisted_1 = [\"textContent\"];\nconst _hoisted_2 = [\"innerHTML\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"GenericDialog\",\n props: {\n name: {},\n text: {},\n html: {},\n buttons: {},\n severity: {}\n },\n emits: [\"close\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit = __emit;\n const dialogButtons = computed(() => props.buttons?.map((button) => ({\n ...button,\n callback() {\n button.callback();\n emit(\"close\", true);\n }\n })));\n const handleUnload = () => `${props.name}: ${props.text}`;\n onMounted(() => window.addEventListener(\"unload\", handleUnload));\n onUnmounted(() => window.removeEventListener(\"unload\", handleUnload));\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(NcDialog), {\n \"dialog-classes\": \"nc-generic-dialog\",\n buttons: dialogButtons.value,\n name: __props.name,\n message: __props.text,\n \"onUpdate:open\": _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"close\", false))\n }, {\n default: withCtx(() => [\n __props.severity ? (openBlock(), createBlock(unref(NcNoteCard), {\n key: 0,\n type: __props.severity\n }, {\n default: withCtx(() => [\n createElementVNode(\"p\", {\n textContent: toDisplayString(__props.text)\n }, null, 8, _hoisted_1)\n ]),\n _: 1\n }, 8, [\"type\"])) : createCommentVNode(\"\", true),\n __props.html ? (openBlock(), createElementBlock(\"div\", {\n key: 1,\n innerHTML: __props.html\n }, null, 8, _hoisted_2)) : createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"buttons\", \"name\", \"message\"]);\n };\n }\n});\nclass Dialog {\n #name;\n #text;\n #buttons;\n #severity;\n constructor(name, text, buttons = [], severity) {\n this.#name = name;\n this.#text = text;\n this.#buttons = buttons;\n this.#severity = severity;\n }\n /**\n * Spawn and show the dialog - if already open the previous instance will be destroyed\n *\n * @return Promise that resolves when the dialog is answered successfully and rejects on close\n */\n async show() {\n const result = await spawnDialog(\n _sfc_main,\n {\n buttons: this.#buttons,\n name: this.#name,\n text: this.#text,\n severity: this.#severity\n }\n );\n if (!result) {\n throw new Error(\"Dialog closed\");\n }\n }\n}\nclass DialogBuilder {\n #severity;\n #text;\n #name;\n #buttons;\n constructor(name) {\n this.#severity = void 0;\n this.#text = \"\";\n this.#name = name ?? \"\";\n this.#buttons = [];\n }\n /**\n * Set dialog name\n *\n * @param name The name or headline of the dialog\n */\n setName(name) {\n this.#name = name;\n return this;\n }\n /**\n * Set the dialog text\n *\n * @param text Main text of the dialog\n */\n setText(text) {\n this.#text = text;\n return this;\n }\n /**\n * Set the severity of the dialog\n *\n * @param severity Severity of the dialog\n */\n setSeverity(severity) {\n this.#severity = severity;\n return this;\n }\n /**\n * Set buttons from array\n *\n * @param buttons Either an array of dialog buttons\n */\n setButtons(buttons) {\n if (this.#buttons.length > 0) {\n logger.warn(\"[@nextcloud/dialogs] Dialog buttons are already set - this overrides previous buttons.\");\n }\n this.#buttons = buttons;\n return this;\n }\n /**\n * Add a single button\n *\n * @param button Button to add\n */\n addButton(button) {\n this.#buttons.push(button);\n return this;\n }\n build() {\n return new Dialog(this.#name, this.#text, this.#buttons, this.#severity);\n }\n}\nfunction getDialogBuilder(name) {\n return new DialogBuilder(name);\n}\nasync function showConfirmation(options) {\n options = {\n labelConfirm: t(\"Confirm\"),\n ...options\n };\n const { promise, resolve } = Promise.withResolvers();\n const buttons = [{\n label: options.labelConfirm,\n variant: \"primary\",\n callback() {\n resolve(true);\n }\n }];\n if (options.labelReject) {\n buttons.unshift({\n label: options.labelReject,\n callback() {\n resolve(false);\n }\n });\n }\n const dialog = new Dialog(\n options.name,\n options.text,\n buttons,\n options.severity\n );\n await dialog.show();\n return promise;\n}\nexport {\n Dialog as D,\n FilePicker as F,\n TOAST_ARIA_LIVE_ASSERTIVE as T,\n FilePickerBuilder as a,\n FilePickerClosed as b,\n FilePickerType as c,\n showGuestUserPrompt as d,\n showInfo as e,\n showLoading as f,\n getFilePickerBuilder as g,\n showMessage as h,\n showSuccess as i,\n showUndo as j,\n showWarning as k,\n logger as l,\n TOAST_ARIA_LIVE_OFF as m,\n n,\n openConflictPicker as o,\n TOAST_ARIA_LIVE_POLITE as p,\n TOAST_DEFAULT_TIMEOUT as q,\n TOAST_PERMANENT_TIMEOUT as r,\n showError as s,\n t,\n TOAST_UNDO_TIMEOUT as u,\n ToastAriaLive as v,\n ToastType as w,\n DialogBuilder as x,\n getDialogBuilder as y,\n showConfirmation as z\n};\n//# sourceMappingURL=index-JpgrUA2Z.mjs.map\n","import '../assets/NcActionCheckbox-DLJQfCUI.css';\nimport { h as mdiCheckboxMarked, i as mdiCheckboxBlankOutline } from \"./mdi-CpchYUUV.mjs\";\nimport { resolveComponent, createElementBlock, openBlock, normalizeClass, createElementVNode, withDirectives, createVNode, vModelCheckbox, toDisplayString, useModel } from \"vue\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-BvLanNaW.mjs\";\nimport { A as ActionGlobalMixin } from \"./actionGlobal-BZFdtdJL.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { a as NC_ACTIONS_IS_SEMANTIC_MENU } from \"./useNcActions-BzPO2c4h.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main = {\n name: \"NcActionCheckbox\",\n components: {\n NcIconSvgWrapper\n },\n mixins: [ActionGlobalMixin],\n inject: {\n isInSemanticMenu: {\n from: NC_ACTIONS_IS_SEMANTIC_MENU,\n default: false\n }\n },\n props: {\n /**\n * id attribute of the checkbox element\n */\n id: {\n type: String,\n default: () => \"action-\" + createElementId(),\n validator: (id) => id.trim() !== \"\"\n },\n /**\n * checked state of the the checkbox element\n */\n modelValue: {\n type: Boolean,\n default: false\n },\n /**\n * value of the checkbox input\n */\n value: {\n type: [String, Number],\n default: \"\"\n },\n /**\n * disabled state of the checkbox element\n */\n disabled: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n /** Native change event */\n \"change\",\n /** Checkbox is checked */\n \"check\",\n /** Checkbox is unchecked */\n \"uncheck\",\n /** Model value changed */\n \"update:modelValue\"\n ],\n setup(props) {\n const model = useModel(props, \"modelValue\");\n return {\n model,\n mdiCheckboxBlankOutline,\n mdiCheckboxMarked\n };\n },\n methods: {\n onChange(event) {\n this.$emit(\"change\", event);\n if (event.target.checked) {\n this.$emit(\"check\");\n } else {\n this.$emit(\"uncheck\");\n }\n }\n }\n};\nconst _hoisted_1 = [\"role\"];\nconst _hoisted_2 = [\"role\", \"aria-checked\"];\nconst _hoisted_3 = { class: \"action-checkbox__icon\" };\nconst _hoisted_4 = [\"id\", \"value\", \"disabled\"];\nconst _hoisted_5 = { class: \"action-checkbox__text\" };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcIconSvgWrapper = resolveComponent(\"NcIconSvgWrapper\");\n return openBlock(), createElementBlock(\"li\", {\n class: normalizeClass([\"action\", { \"action--disabled\": $props.disabled }]),\n role: $options.isInSemanticMenu && \"presentation\"\n }, [\n createElementVNode(\"label\", {\n class: \"action-checkbox\",\n role: $options.isInSemanticMenu && \"menuitemcheckbox\",\n \"aria-checked\": $options.isInSemanticMenu && $setup.model.toString()\n }, [\n createElementVNode(\"span\", _hoisted_3, [\n withDirectives(createElementVNode(\"input\", {\n id: $props.id,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => $setup.model = $event),\n type: \"checkbox\",\n class: normalizeClass([\"action-checkbox__input\", { focusable: !$props.disabled }]),\n value: $props.value,\n disabled: $props.disabled,\n onChange: _cache[1] || (_cache[1] = (...args) => $options.onChange && $options.onChange(...args))\n }, null, 42, _hoisted_4), [\n [vModelCheckbox, $setup.model]\n ]),\n createVNode(_component_NcIconSvgWrapper, {\n path: $setup.model ? $setup.mdiCheckboxMarked : $setup.mdiCheckboxBlankOutline,\n size: 20\n }, null, 8, [\"path\"])\n ]),\n createElementVNode(\"span\", _hoisted_5, toDisplayString(_ctx.text), 1)\n ], 8, _hoisted_2)\n ], 10, _hoisted_1);\n}\nconst NcActionCheckbox = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-2947bc3b\"]]);\nexport {\n NcActionCheckbox as N\n};\n//# sourceMappingURL=NcActionCheckbox-DeHAMd23.mjs.map\n","import '../assets/NcEmptyContent-CLjlZ-UT.css';\nimport { defineComponent, createElementBlock, openBlock, unref, createCommentVNode, renderSlot, createTextVNode, toDisplayString } from \"vue\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _hoisted_1 = [\"aria-labelledby\"];\nconst _hoisted_2 = {\n key: 0,\n class: \"empty-content__icon\",\n \"aria-hidden\": \"true\"\n};\nconst _hoisted_3 = [\"id\"];\nconst _hoisted_4 = {\n key: 2,\n class: \"empty-content__description\"\n};\nconst _hoisted_5 = {\n key: 3,\n class: \"empty-content__action\"\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcEmptyContent\",\n props: {\n description: { default: \"\" },\n name: { default: \"\" }\n },\n setup(__props) {\n const nameId = createElementId();\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n \"aria-labelledby\": unref(nameId),\n class: \"empty-content\",\n role: \"note\"\n }, [\n _ctx.$slots.icon ? (openBlock(), createElementBlock(\"div\", _hoisted_2, [\n renderSlot(_ctx.$slots, \"icon\", {}, void 0, true)\n ])) : createCommentVNode(\"\", true),\n _ctx.name !== \"\" || _ctx.$slots.name ? (openBlock(), createElementBlock(\"div\", {\n key: 1,\n id: unref(nameId),\n class: \"empty-content__name\"\n }, [\n renderSlot(_ctx.$slots, \"name\", {}, () => [\n createTextVNode(toDisplayString(_ctx.name), 1)\n ], true)\n ], 8, _hoisted_3)) : createCommentVNode(\"\", true),\n _ctx.description !== \"\" || _ctx.$slots.description ? (openBlock(), createElementBlock(\"p\", _hoisted_4, [\n renderSlot(_ctx.$slots, \"description\", {}, () => [\n createTextVNode(toDisplayString(_ctx.description), 1)\n ], true)\n ])) : createCommentVNode(\"\", true),\n _ctx.$slots.action ? (openBlock(), createElementBlock(\"div\", _hoisted_5, [\n renderSlot(_ctx.$slots, \"action\", {}, void 0, true)\n ])) : createCommentVNode(\"\", true)\n ], 8, _hoisted_1);\n };\n }\n});\nconst NcEmptyContent = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-b101d636\"]]);\nexport {\n NcEmptyContent as N\n};\n//# sourceMappingURL=NcEmptyContent-B8-90BSI.mjs.map\n","import '../assets/NcTextArea-nivEqHE-.css';\nimport { defineComponent, mergeModels, useModel, useAttrs, useTemplateRef, computed, watch, createElementBlock, openBlock, normalizeClass, unref, createElementVNode, createCommentVNode, mergeProps, toDisplayString, createBlock, createTextVNode } from \"vue\";\nimport { d as mdiCheck, j as mdiAlertCircleOutline } from \"./mdi-CpchYUUV.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-BvLanNaW.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { i as isLegacy } from \"./legacy-DcjXBL_t.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _hoisted_1 = { class: \"textarea__main-wrapper\" };\nconst _hoisted_2 = [\"id\", \"aria-describedby\", \"disabled\", \"placeholder\", \"value\"];\nconst _hoisted_3 = [\"for\"];\nconst _hoisted_4 = [\"id\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...{ inheritAttrs: false },\n __name: \"NcTextArea\",\n props: /* @__PURE__ */ mergeModels({\n disabled: { type: Boolean },\n error: { type: Boolean },\n helperText: { default: void 0 },\n id: { default: () => createElementId() },\n inputClass: { default: \"\" },\n label: { default: void 0 },\n labelOutside: { type: Boolean },\n placeholder: { default: void 0 },\n resize: { default: \"both\" },\n success: { type: Boolean }\n }, {\n \"modelValue\": { required: true },\n \"modelModifiers\": {}\n }),\n emits: [\"update:modelValue\"],\n setup(__props, { expose: __expose }) {\n const modelValue = useModel(__props, \"modelValue\");\n const props = __props;\n __expose({\n focus,\n select\n });\n const attrs = useAttrs();\n const textAreaElement = useTemplateRef(\"input\");\n const internalPlaceholder = computed(() => props.placeholder || (isLegacy ? props.label : void 0));\n watch(() => props.labelOutside, () => {\n if (!props.labelOutside && !props.label) {\n logger.warn(\"[NcTextArea] You need to add a label to the NcInputField component. Either use the prop label or use an external one, as per the example in the documentation.\");\n }\n });\n const ariaDescribedby = computed(() => {\n const ariaDescribedby2 = [];\n if (props.helperText) {\n ariaDescribedby2.push(`${props.id}-helper-text`);\n }\n if (typeof attrs[\"aria-describedby\"] === \"string\") {\n ariaDescribedby2.push(attrs[\"aria-describedby\"]);\n }\n return ariaDescribedby2.join(\" \") || void 0;\n });\n function handleInput(event) {\n const { value } = event.target;\n modelValue.value = value;\n }\n function focus(options) {\n textAreaElement.value.focus(options);\n }\n function select() {\n textAreaElement.value.select();\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"textarea\", [\n _ctx.$attrs.class,\n {\n \"textarea--disabled\": _ctx.disabled,\n \"textarea--legacy\": unref(isLegacy)\n }\n ]])\n }, [\n createElementVNode(\"div\", _hoisted_1, [\n createElementVNode(\"textarea\", mergeProps({ ..._ctx.$attrs, class: void 0 }, {\n id: _ctx.id,\n ref: \"input\",\n \"aria-describedby\": ariaDescribedby.value,\n \"aria-live\": \"polite\",\n class: [\"textarea__input\", [\n _ctx.inputClass,\n {\n \"textarea__input--label-outside\": _ctx.labelOutside,\n \"textarea__input--legacy\": unref(isLegacy),\n \"textarea__input--success\": _ctx.success,\n \"textarea__input--error\": _ctx.error\n }\n ]],\n disabled: _ctx.disabled,\n placeholder: internalPlaceholder.value,\n style: { resize: _ctx.resize },\n value: modelValue.value,\n onInput: handleInput\n }), null, 16, _hoisted_2),\n !_ctx.labelOutside ? (openBlock(), createElementBlock(\"label\", {\n key: 0,\n class: \"textarea__label\",\n for: _ctx.id\n }, toDisplayString(_ctx.label), 9, _hoisted_3)) : createCommentVNode(\"\", true)\n ]),\n _ctx.helperText ? (openBlock(), createElementBlock(\"p\", {\n key: 0,\n id: `${_ctx.id}-helper-text`,\n class: normalizeClass([\"textarea__helper-text-message\", {\n \"textarea__helper-text-message--error\": _ctx.error,\n \"textarea__helper-text-message--success\": _ctx.success\n }])\n }, [\n _ctx.success ? (openBlock(), createBlock(NcIconSvgWrapper, {\n key: 0,\n class: \"textarea__helper-text-message__icon\",\n path: unref(mdiCheck),\n inline: \"\"\n }, null, 8, [\"path\"])) : _ctx.error ? (openBlock(), createBlock(NcIconSvgWrapper, {\n key: 1,\n class: \"textarea__helper-text-message__icon\",\n path: unref(mdiAlertCircleOutline),\n inline: \"\"\n }, null, 8, [\"path\"])) : createCommentVNode(\"\", true),\n createTextVNode(\" \" + toDisplayString(_ctx.helperText), 1)\n ], 10, _hoisted_4)) : createCommentVNode(\"\", true)\n ], 2);\n };\n }\n});\nconst NcTextArea = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-a0d5539d\"]]);\nexport {\n NcTextArea as N\n};\n//# sourceMappingURL=NcTextArea-PIs9Kt0A.mjs.map\n","/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n/**\n * Represents the BINARY value type, which contains extra methods for encoding and decoding.\n *\n * @memberof ICAL\n */\nclass Binary {\n /**\n * Creates a binary value from the given string.\n *\n * @param {String} aString The binary value string\n * @return {Binary} The binary value instance\n */\n static fromString(aString) {\n return new Binary(aString);\n }\n\n /**\n * Creates a new ICAL.Binary instance\n *\n * @param {String} aValue The binary data for this value\n */\n constructor(aValue) {\n this.value = aValue;\n }\n\n /**\n * The type name, to be used in the jCal object.\n * @default \"binary\"\n * @constant\n */\n icaltype = \"binary\";\n\n /**\n * Base64 decode the current value\n *\n * @return {String} The base64-decoded value\n */\n decodeValue() {\n return this._b64_decode(this.value);\n }\n\n /**\n * Encodes the passed parameter with base64 and sets the internal\n * value to the result.\n *\n * @param {String} aValue The raw binary value to encode\n */\n setEncodedValue(aValue) {\n this.value = this._b64_encode(aValue);\n }\n\n _b64_encode(data) {\n // http://kevin.vanzonneveld.net\n // + original by: Tyler Akins (http://rumkin.com)\n // + improved by: Bayron Guevara\n // + improved by: Thunder.m\n // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\n // + bugfixed by: Pellentesque Malesuada\n // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\n // + improved by: Rafał Kukawski (http://kukawski.pl)\n // * example 1: base64_encode('Kevin van Zonneveld');\n // * returns 1: 'S2V2aW4gdmFuIFpvbm5ldmVsZA=='\n // mozilla has this native\n // - but breaks in 2.0.0.12!\n //if (typeof this.window['atob'] == 'function') {\n // return atob(data);\n //}\n let b64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\" +\n \"abcdefghijklmnopqrstuvwxyz0123456789+/=\";\n let o1, o2, o3, h1, h2, h3, h4, bits, i = 0,\n ac = 0,\n enc = \"\",\n tmp_arr = [];\n\n if (!data) {\n return data;\n }\n\n do { // pack three octets into four hexets\n o1 = data.charCodeAt(i++);\n o2 = data.charCodeAt(i++);\n o3 = data.charCodeAt(i++);\n\n bits = o1 << 16 | o2 << 8 | o3;\n\n h1 = bits >> 18 & 0x3f;\n h2 = bits >> 12 & 0x3f;\n h3 = bits >> 6 & 0x3f;\n h4 = bits & 0x3f;\n\n // use hexets to index into b64, and append result to encoded string\n tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);\n } while (i < data.length);\n\n enc = tmp_arr.join('');\n\n let r = data.length % 3;\n\n return (r ? enc.slice(0, r - 3) : enc) + '==='.slice(r || 3);\n\n }\n\n _b64_decode(data) {\n // http://kevin.vanzonneveld.net\n // + original by: Tyler Akins (http://rumkin.com)\n // + improved by: Thunder.m\n // + input by: Aman Gupta\n // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\n // + bugfixed by: Onno Marsman\n // + bugfixed by: Pellentesque Malesuada\n // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\n // + input by: Brett Zamir (http://brett-zamir.me)\n // + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\n // * example 1: base64_decode('S2V2aW4gdmFuIFpvbm5ldmVsZA==');\n // * returns 1: 'Kevin van Zonneveld'\n // mozilla has this native\n // - but breaks in 2.0.0.12!\n //if (typeof this.window['btoa'] == 'function') {\n // return btoa(data);\n //}\n let b64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\" +\n \"abcdefghijklmnopqrstuvwxyz0123456789+/=\";\n let o1, o2, o3, h1, h2, h3, h4, bits, i = 0,\n ac = 0,\n dec = \"\",\n tmp_arr = [];\n\n if (!data) {\n return data;\n }\n\n data += '';\n\n do { // unpack four hexets into three octets using index points in b64\n h1 = b64.indexOf(data.charAt(i++));\n h2 = b64.indexOf(data.charAt(i++));\n h3 = b64.indexOf(data.charAt(i++));\n h4 = b64.indexOf(data.charAt(i++));\n\n bits = h1 << 18 | h2 << 12 | h3 << 6 | h4;\n\n o1 = bits >> 16 & 0xff;\n o2 = bits >> 8 & 0xff;\n o3 = bits & 0xff;\n\n if (h3 == 64) {\n tmp_arr[ac++] = String.fromCharCode(o1);\n } else if (h4 == 64) {\n tmp_arr[ac++] = String.fromCharCode(o1, o2);\n } else {\n tmp_arr[ac++] = String.fromCharCode(o1, o2, o3);\n }\n } while (i < data.length);\n\n dec = tmp_arr.join('');\n\n return dec;\n }\n\n /**\n * The string representation of this value\n * @return {String}\n */\n toString() {\n return this.value;\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\nconst DURATION_LETTERS = /([PDWHMTS]{1,1})/;\nconst DATA_PROPS_TO_COPY = [\"weeks\", \"days\", \"hours\", \"minutes\", \"seconds\", \"isNegative\"];\n\n/**\n * This class represents the \"duration\" value type, with various calculation\n * and manipulation methods.\n *\n * @memberof ICAL\n */\nclass Duration {\n /**\n * Returns a new ICAL.Duration instance from the passed seconds value.\n *\n * @param {Number} aSeconds The seconds to create the instance from\n * @return {Duration} The newly created duration instance\n */\n static fromSeconds(aSeconds) {\n return (new Duration()).fromSeconds(aSeconds);\n }\n\n /**\n * Checks if the given string is an iCalendar duration value.\n *\n * @param {String} value The raw ical value\n * @return {Boolean} True, if the given value is of the\n * duration ical type\n */\n static isValueString(string) {\n return (string[0] === 'P' || string[1] === 'P');\n }\n\n /**\n * Creates a new {@link ICAL.Duration} instance from the passed string.\n *\n * @param {String} aStr The string to parse\n * @return {Duration} The created duration instance\n */\n static fromString(aStr) {\n let pos = 0;\n let dict = Object.create(null);\n let chunks = 0;\n\n while ((pos = aStr.search(DURATION_LETTERS)) !== -1) {\n let type = aStr[pos];\n let numeric = aStr.slice(0, Math.max(0, pos));\n aStr = aStr.slice(pos + 1);\n\n chunks += parseDurationChunk(type, numeric, dict);\n }\n\n if (chunks < 2) {\n // There must be at least a chunk with \"P\" and some unit chunk\n throw new Error(\n 'invalid duration value: Not enough duration components in \"' + aStr + '\"'\n );\n }\n\n return new Duration(dict);\n }\n\n /**\n * Creates a new ICAL.Duration instance from the given data object.\n *\n * @param {Object} aData An object with members of the duration\n * @param {Number=} aData.weeks Duration in weeks\n * @param {Number=} aData.days Duration in days\n * @param {Number=} aData.hours Duration in hours\n * @param {Number=} aData.minutes Duration in minutes\n * @param {Number=} aData.seconds Duration in seconds\n * @param {Boolean=} aData.isNegative If true, the duration is negative\n * @return {Duration} The createad duration instance\n */\n static fromData(aData) {\n return new Duration(aData);\n }\n\n /**\n * Creates a new ICAL.Duration instance.\n *\n * @param {Object} data An object with members of the duration\n * @param {Number=} data.weeks Duration in weeks\n * @param {Number=} data.days Duration in days\n * @param {Number=} data.hours Duration in hours\n * @param {Number=} data.minutes Duration in minutes\n * @param {Number=} data.seconds Duration in seconds\n * @param {Boolean=} data.isNegative If true, the duration is negative\n */\n constructor(data) {\n this.wrappedJSObject = this;\n this.fromData(data);\n }\n\n /**\n * The weeks in this duration\n * @type {Number}\n * @default 0\n */\n weeks = 0;\n\n /**\n * The days in this duration\n * @type {Number}\n * @default 0\n */\n days = 0;\n\n /**\n * The days in this duration\n * @type {Number}\n * @default 0\n */\n hours = 0;\n\n /**\n * The minutes in this duration\n * @type {Number}\n * @default 0\n */\n minutes = 0;\n\n /**\n * The seconds in this duration\n * @type {Number}\n * @default 0\n */\n seconds = 0;\n\n /**\n * The seconds in this duration\n * @type {Boolean}\n * @default false\n */\n isNegative = false;\n\n /**\n * The class identifier.\n * @constant\n * @type {String}\n * @default \"icalduration\"\n */\n icalclass = \"icalduration\";\n\n /**\n * The type name, to be used in the jCal object.\n * @constant\n * @type {String}\n * @default \"duration\"\n */\n icaltype = \"duration\";\n\n /**\n * Returns a clone of the duration object.\n *\n * @return {Duration} The cloned object\n */\n clone() {\n return Duration.fromData(this);\n }\n\n /**\n * The duration value expressed as a number of seconds.\n *\n * @return {Number} The duration value in seconds\n */\n toSeconds() {\n let seconds = this.seconds + 60 * this.minutes + 3600 * this.hours +\n 86400 * this.days + 7 * 86400 * this.weeks;\n return (this.isNegative ? -seconds : seconds);\n }\n\n /**\n * Reads the passed seconds value into this duration object. Afterwards,\n * members like {@link ICAL.Duration#days days} and {@link ICAL.Duration#weeks weeks} will be set up\n * accordingly.\n *\n * @param {Number} aSeconds The duration value in seconds\n * @return {Duration} Returns this instance\n */\n fromSeconds(aSeconds) {\n let secs = Math.abs(aSeconds);\n\n this.isNegative = (aSeconds < 0);\n this.days = trunc(secs / 86400);\n\n // If we have a flat number of weeks, use them.\n if (this.days % 7 == 0) {\n this.weeks = this.days / 7;\n this.days = 0;\n } else {\n this.weeks = 0;\n }\n\n secs -= (this.days + 7 * this.weeks) * 86400;\n\n this.hours = trunc(secs / 3600);\n secs -= this.hours * 3600;\n\n this.minutes = trunc(secs / 60);\n secs -= this.minutes * 60;\n\n this.seconds = secs;\n return this;\n }\n\n /**\n * Sets up the current instance using members from the passed data object.\n *\n * @param {Object} aData An object with members of the duration\n * @param {Number=} aData.weeks Duration in weeks\n * @param {Number=} aData.days Duration in days\n * @param {Number=} aData.hours Duration in hours\n * @param {Number=} aData.minutes Duration in minutes\n * @param {Number=} aData.seconds Duration in seconds\n * @param {Boolean=} aData.isNegative If true, the duration is negative\n */\n fromData(aData) {\n for (let prop of DATA_PROPS_TO_COPY) {\n if (aData && prop in aData) {\n this[prop] = aData[prop];\n } else {\n this[prop] = 0;\n }\n }\n }\n\n /**\n * Resets the duration instance to the default values, i.e. PT0S\n */\n reset() {\n this.isNegative = false;\n this.weeks = 0;\n this.days = 0;\n this.hours = 0;\n this.minutes = 0;\n this.seconds = 0;\n }\n\n /**\n * Compares the duration instance with another one.\n *\n * @param {Duration} aOther The instance to compare with\n * @return {Number} -1, 0 or 1 for less/equal/greater\n */\n compare(aOther) {\n let thisSeconds = this.toSeconds();\n let otherSeconds = aOther.toSeconds();\n return (thisSeconds > otherSeconds) - (thisSeconds < otherSeconds);\n }\n\n /**\n * Normalizes the duration instance. For example, a duration with a value\n * of 61 seconds will be normalized to 1 minute and 1 second.\n */\n normalize() {\n this.fromSeconds(this.toSeconds());\n }\n\n /**\n * The string representation of this duration.\n * @return {String}\n */\n toString() {\n if (this.toSeconds() == 0) {\n return \"PT0S\";\n } else {\n let str = \"\";\n if (this.isNegative) str += \"-\";\n str += \"P\";\n let hasWeeks = false;\n if (this.weeks) {\n if (this.days || this.hours || this.minutes || this.seconds) {\n str += (this.weeks * 7 + this.days) + \"D\";\n } else {\n str += (this.weeks + \"W\");\n hasWeeks = true;\n }\n } else if (this.days) {\n str += (this.days + \"D\");\n }\n\n if (!hasWeeks) {\n if (this.hours || this.minutes || this.seconds) {\n str += \"T\";\n if (this.hours) {\n str += this.hours + \"H\";\n }\n\n if (this.minutes) {\n str += this.minutes + \"M\";\n }\n\n if (this.seconds) {\n str += this.seconds + \"S\";\n }\n }\n }\n\n return str;\n }\n }\n\n /**\n * The iCalendar string representation of this duration.\n * @return {String}\n */\n toICALString() {\n return this.toString();\n }\n}\n\n/**\n * Internal helper function to handle a chunk of a duration.\n *\n * @private\n * @param {String} letter type of duration chunk\n * @param {String} number numeric value or -/+\n * @param {Object} dict target to assign values to\n */\nfunction parseDurationChunk(letter, number, object) {\n let type;\n switch (letter) {\n case 'P':\n if (number && number === '-') {\n object.isNegative = true;\n } else {\n object.isNegative = false;\n }\n // period\n break;\n case 'D':\n type = 'days';\n break;\n case 'W':\n type = 'weeks';\n break;\n case 'H':\n type = 'hours';\n break;\n case 'M':\n type = 'minutes';\n break;\n case 'S':\n type = 'seconds';\n break;\n default:\n // Not a valid chunk\n return 0;\n }\n\n if (type) {\n if (!number && number !== 0) {\n throw new Error(\n 'invalid duration value: Missing number before \"' + letter + '\"'\n );\n }\n let num = parseInt(number, 10);\n if (isStrictlyNaN(num)) {\n throw new Error(\n 'invalid duration value: Invalid number \"' + number + '\" before \"' + letter + '\"'\n );\n }\n object[type] = num;\n }\n\n return 1;\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n * @ignore\n * @typedef {import(\"./types.js\").jCalComponent} jCalComponent\n * Imports the 'occurrenceDetails' type from the \"types.js\" module\n */\n\n/**\n * This class represents the \"period\" value type, with various calculation and manipulation methods.\n *\n * @memberof ICAL\n */\nclass Period {\n /**\n * Creates a new {@link ICAL.Period} instance from the passed string.\n *\n * @param {String} str The string to parse\n * @param {Property} prop The property this period will be on\n * @return {Period} The created period instance\n */\n static fromString(str, prop) {\n let parts = str.split('/');\n\n if (parts.length !== 2) {\n throw new Error(\n 'Invalid string value: \"' + str + '\" must contain a \"/\" char.'\n );\n }\n\n let options = {\n start: Time.fromDateTimeString(parts[0], prop)\n };\n\n let end = parts[1];\n\n if (Duration.isValueString(end)) {\n options.duration = Duration.fromString(end);\n } else {\n options.end = Time.fromDateTimeString(end, prop);\n }\n\n return new Period(options);\n }\n\n /**\n * Creates a new {@link ICAL.Period} instance from the given data object.\n * The passed data object cannot contain both and end date and a duration.\n *\n * @param {Object} aData An object with members of the period\n * @param {Time=} aData.start The start of the period\n * @param {Time=} aData.end The end of the period\n * @param {Duration=} aData.duration The duration of the period\n * @return {Period} The period instance\n */\n static fromData(aData) {\n return new Period(aData);\n }\n\n /**\n * Returns a new period instance from the given jCal data array. The first\n * member is always the start date string, the second member is either a\n * duration or end date string.\n *\n * @param {jCalComponent} aData The jCal data array\n * @param {Property} aProp The property this jCal data is on\n * @param {Boolean} aLenient If true, data value can be both date and date-time\n * @return {Period} The period instance\n */\n static fromJSON(aData, aProp, aLenient) {\n function fromDateOrDateTimeString(aValue, dateProp) {\n if (aLenient) {\n return Time.fromString(aValue, dateProp);\n } else {\n return Time.fromDateTimeString(aValue, dateProp);\n }\n }\n\n if (Duration.isValueString(aData[1])) {\n return Period.fromData({\n start: fromDateOrDateTimeString(aData[0], aProp),\n duration: Duration.fromString(aData[1])\n });\n } else {\n return Period.fromData({\n start: fromDateOrDateTimeString(aData[0], aProp),\n end: fromDateOrDateTimeString(aData[1], aProp)\n });\n }\n }\n\n /**\n * Creates a new ICAL.Period instance. The passed data object cannot contain both and end date and\n * a duration.\n *\n * @param {Object} aData An object with members of the period\n * @param {Time=} aData.start The start of the period\n * @param {Time=} aData.end The end of the period\n * @param {Duration=} aData.duration The duration of the period\n */\n constructor(aData) {\n this.wrappedJSObject = this;\n\n if (aData && 'start' in aData) {\n if (aData.start && !(aData.start instanceof Time)) {\n throw new TypeError('.start must be an instance of ICAL.Time');\n }\n this.start = aData.start;\n }\n\n if (aData && aData.end && aData.duration) {\n throw new Error('cannot accept both end and duration');\n }\n\n if (aData && 'end' in aData) {\n if (aData.end && !(aData.end instanceof Time)) {\n throw new TypeError('.end must be an instance of ICAL.Time');\n }\n this.end = aData.end;\n }\n\n if (aData && 'duration' in aData) {\n if (aData.duration && !(aData.duration instanceof Duration)) {\n throw new TypeError('.duration must be an instance of ICAL.Duration');\n }\n this.duration = aData.duration;\n }\n }\n\n\n /**\n * The start of the period\n * @type {Time}\n */\n start = null;\n\n /**\n * The end of the period\n * @type {Time}\n */\n end = null;\n\n /**\n * The duration of the period\n * @type {Duration}\n */\n duration = null;\n\n /**\n * The class identifier.\n * @constant\n * @type {String}\n * @default \"icalperiod\"\n */\n icalclass = \"icalperiod\";\n\n /**\n * The type name, to be used in the jCal object.\n * @constant\n * @type {String}\n * @default \"period\"\n */\n icaltype = \"period\";\n\n /**\n * Returns a clone of the duration object.\n *\n * @return {Period} The cloned object\n */\n clone() {\n return Period.fromData({\n start: this.start ? this.start.clone() : null,\n end: this.end ? this.end.clone() : null,\n duration: this.duration ? this.duration.clone() : null\n });\n }\n\n /**\n * Calculates the duration of the period, either directly or by subtracting\n * start from end date.\n *\n * @return {Duration} The calculated duration\n */\n getDuration() {\n if (this.duration) {\n return this.duration;\n } else {\n return this.end.subtractDate(this.start);\n }\n }\n\n /**\n * Calculates the end date of the period, either directly or by adding\n * duration to start date.\n *\n * @return {Time} The calculated end date\n */\n getEnd() {\n if (this.end) {\n return this.end;\n } else {\n let end = this.start.clone();\n end.addDuration(this.duration);\n return end;\n }\n }\n\n /**\n * Compare this period with a date or other period. To maintain the logic where a.compare(b)\n * returns 1 when a > b, this function will return 1 when the period is after the date, 0 when the\n * date is within the period, and -1 when the period is before the date. When comparing two\n * periods, as soon as they overlap in any way this will return 0.\n *\n * @param {Time|Period} dt The date or other period to compare with\n */\n compare(dt) {\n if (dt.compare(this.start) < 0) {\n return 1;\n } else if (dt.compare(this.getEnd()) > 0) {\n return -1;\n } else {\n return 0;\n }\n }\n\n /**\n * The string representation of this period.\n * @return {String}\n */\n toString() {\n return this.start + \"/\" + (this.end || this.duration);\n }\n\n /**\n * The jCal representation of this period type.\n * @return {Object}\n */\n toJSON() {\n return [this.start.toString(), (this.end || this.duration).toString()];\n }\n\n /**\n * The iCalendar string representation of this period.\n * @return {String}\n */\n toICALString() {\n return this.start.toICALString() + \"/\" +\n (this.end || this.duration).toICALString();\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n *\n * @ignore\n * @typedef {import(\"./types.js\").weekDay} weekDay\n * Imports the 'weekDay' type from the \"types.js\" module\n *\n * @ignore\n * @typedef {import(\"./types.js\").timeInit} timeInit\n * Imports the 'timeInit' type from the \"types.js\" module\n */\n\n/**\n * @classdesc\n * iCalendar Time representation (similar to JS Date object). Fully\n * independent of system (OS) timezone / time. Unlike JS Date, the month\n * January is 1, not zero.\n *\n * @example\n * var time = new ICAL.Time({\n * year: 2012,\n * month: 10,\n * day: 11\n * minute: 0,\n * second: 0,\n * isDate: false\n * });\n *\n *\n * @memberof ICAL\n*/\nclass Time {\n static _dowCache = {};\n static _wnCache = {};\n\n /**\n * Returns the days in the given month\n *\n * @param {Number} month The month to check\n * @param {Number} year The year to check\n * @return {Number} The number of days in the month\n */\n static daysInMonth(month, year) {\n let _daysInMonth = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n let days = 30;\n\n if (month < 1 || month > 12) return days;\n\n days = _daysInMonth[month];\n\n if (month == 2) {\n days += Time.isLeapYear(year);\n }\n\n return days;\n }\n\n /**\n * Checks if the year is a leap year\n *\n * @param {Number} year The year to check\n * @return {Boolean} True, if the year is a leap year\n */\n static isLeapYear(year) {\n if (year <= 1752) {\n return ((year % 4) == 0);\n } else {\n return (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0));\n }\n }\n\n /**\n * Create a new ICAL.Time from the day of year and year. The date is returned\n * in floating timezone.\n *\n * @param {Number} aDayOfYear The day of year\n * @param {Number} aYear The year to create the instance in\n * @return {Time} The created instance with the calculated date\n */\n static fromDayOfYear(aDayOfYear, aYear) {\n let year = aYear;\n let doy = aDayOfYear;\n let tt = new Time();\n tt.auto_normalize = false;\n let is_leap = (Time.isLeapYear(year) ? 1 : 0);\n\n if (doy < 1) {\n year--;\n is_leap = (Time.isLeapYear(year) ? 1 : 0);\n doy += Time.daysInYearPassedMonth[is_leap][12];\n return Time.fromDayOfYear(doy, year);\n } else if (doy > Time.daysInYearPassedMonth[is_leap][12]) {\n is_leap = (Time.isLeapYear(year) ? 1 : 0);\n doy -= Time.daysInYearPassedMonth[is_leap][12];\n year++;\n return Time.fromDayOfYear(doy, year);\n }\n\n tt.year = year;\n tt.isDate = true;\n\n for (let month = 11; month >= 0; month--) {\n if (doy > Time.daysInYearPassedMonth[is_leap][month]) {\n tt.month = month + 1;\n tt.day = doy - Time.daysInYearPassedMonth[is_leap][month];\n break;\n }\n }\n\n tt.auto_normalize = true;\n return tt;\n }\n\n /**\n * Returns a new ICAL.Time instance from a date string, e.g 2015-01-02.\n *\n * @deprecated Use {@link ICAL.Time.fromDateString} instead\n * @param {String} str The string to create from\n * @return {Time} The date/time instance\n */\n static fromStringv2(str) {\n return new Time({\n year: parseInt(str.slice(0, 4), 10),\n month: parseInt(str.slice(5, 7), 10),\n day: parseInt(str.slice(8, 10), 10),\n isDate: true\n });\n }\n\n /**\n * Returns a new ICAL.Time instance from a date string, e.g 2015-01-02.\n *\n * @param {String} aValue The string to create from\n * @return {Time} The date/time instance\n */\n static fromDateString(aValue) {\n // Dates should have no timezone.\n // Google likes to sometimes specify Z on dates\n // we specifically ignore that to avoid issues.\n\n // YYYY-MM-DD\n // 2012-10-10\n return new Time({\n year: strictParseInt(aValue.slice(0, 4)),\n month: strictParseInt(aValue.slice(5, 7)),\n day: strictParseInt(aValue.slice(8, 10)),\n isDate: true\n });\n }\n\n /**\n * Returns a new ICAL.Time instance from a date-time string, e.g\n * 2015-01-02T03:04:05. If a property is specified, the timezone is set up\n * from the property's TZID parameter.\n *\n * @param {String} aValue The string to create from\n * @param {Property=} prop The property the date belongs to\n * @return {Time} The date/time instance\n */\n static fromDateTimeString(aValue, prop) {\n if (aValue.length < 19) {\n throw new Error(\n 'invalid date-time value: \"' + aValue + '\"'\n );\n }\n\n let zone;\n let zoneId;\n\n if (aValue.slice(-1) === 'Z') {\n zone = Timezone.utcTimezone;\n } else if (prop) {\n zoneId = prop.getParameter('tzid');\n\n if (prop.parent) {\n if (prop.parent.name === 'standard' || prop.parent.name === 'daylight') {\n // Per RFC 5545 3.8.2.4 and 3.8.2.2, start/end date-times within\n // these components MUST be specified in local time.\n zone = Timezone.localTimezone;\n } else if (zoneId) {\n // If the desired time zone is defined within the component tree,\n // fetch its definition and prefer that.\n zone = prop.parent.getTimeZoneByID(zoneId);\n }\n }\n }\n\n const timeData = {\n year: strictParseInt(aValue.slice(0, 4)),\n month: strictParseInt(aValue.slice(5, 7)),\n day: strictParseInt(aValue.slice(8, 10)),\n hour: strictParseInt(aValue.slice(11, 13)),\n minute: strictParseInt(aValue.slice(14, 16)),\n second: strictParseInt(aValue.slice(17, 19)),\n };\n\n // Although RFC 5545 requires that all TZIDs used within a file have a\n // corresponding time zone definition, we may not be parsing the full file\n // or we may be dealing with a non-compliant file; in either case, we can\n // check our own time zone service for the TZID in a last-ditch effort.\n if (zoneId && !zone) {\n timeData.timezone = zoneId;\n }\n\n // 2012-10-10T10:10:10(Z)?\n return new Time(timeData, zone);\n }\n\n /**\n * Returns a new ICAL.Time instance from a date or date-time string,\n *\n * @param {String} aValue The string to create from\n * @param {Property=} prop The property the date belongs to\n * @return {Time} The date/time instance\n */\n static fromString(aValue, aProperty) {\n if (aValue.length > 10) {\n return Time.fromDateTimeString(aValue, aProperty);\n } else {\n return Time.fromDateString(aValue);\n }\n }\n\n /**\n * Creates a new ICAL.Time instance from the given Javascript Date.\n *\n * @param {?Date} aDate The Javascript Date to read, or null to reset\n * @param {Boolean} [useUTC=false] If true, the UTC values of the date will be used\n */\n static fromJSDate(aDate, useUTC) {\n let tt = new Time();\n return tt.fromJSDate(aDate, useUTC);\n }\n\n /**\n * Creates a new ICAL.Time instance from the the passed data object.\n *\n * @param {timeInit} aData Time initialization\n * @param {Timezone=} aZone Timezone this position occurs in\n */\n static fromData = function fromData(aData, aZone) {\n let t = new Time();\n return t.fromData(aData, aZone);\n };\n\n /**\n * Creates a new ICAL.Time instance from the current moment.\n * The instance is “floating” - has no timezone relation.\n * To create an instance considering the time zone, call\n * ICAL.Time.fromJSDate(new Date(), true)\n * @return {Time}\n */\n static now() {\n return Time.fromJSDate(new Date(), false);\n }\n\n /**\n * Returns the date on which ISO week number 1 starts.\n *\n * @see Time#weekNumber\n * @param {Number} aYear The year to search in\n * @param {weekDay=} aWeekStart The week start weekday, used for calculation.\n * @return {Time} The date on which week number 1 starts\n */\n static weekOneStarts(aYear, aWeekStart) {\n let t = Time.fromData({\n year: aYear,\n month: 1,\n day: 1,\n isDate: true\n });\n\n let dow = t.dayOfWeek();\n let wkst = aWeekStart || Time.DEFAULT_WEEK_START;\n if (dow > Time.THURSDAY) {\n t.day += 7;\n }\n if (wkst > Time.THURSDAY) {\n t.day -= 7;\n }\n\n t.day -= dow - wkst;\n\n return t;\n }\n\n /**\n * Get the dominical letter for the given year. Letters range from A - G for\n * common years, and AG to GF for leap years.\n *\n * @param {Number} yr The year to retrieve the letter for\n * @return {String} The dominical letter.\n */\n static getDominicalLetter(yr) {\n let LTRS = \"GFEDCBA\";\n let dom = (yr + (yr / 4 | 0) + (yr / 400 | 0) - (yr / 100 | 0) - 1) % 7;\n let isLeap = Time.isLeapYear(yr);\n if (isLeap) {\n return LTRS[(dom + 6) % 7] + LTRS[dom];\n } else {\n return LTRS[dom];\n }\n }\n\n static #epochTime = null;\n /**\n * January 1st, 1970 as an ICAL.Time.\n * @type {Time}\n * @constant\n * @instance\n */\n static get epochTime() {\n if (!this.#epochTime) {\n this.#epochTime = Time.fromData({\n year: 1970,\n month: 1,\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n isDate: false,\n timezone: \"Z\"\n });\n }\n return this.#epochTime;\n }\n\n static _cmp_attr(a, b, attr) {\n if (a[attr] > b[attr]) return 1;\n if (a[attr] < b[attr]) return -1;\n return 0;\n }\n\n /**\n * The days that have passed in the year after a given month. The array has\n * two members, one being an array of passed days for non-leap years, the\n * other analog for leap years.\n * @example\n * var isLeapYear = ICAL.Time.isLeapYear(year);\n * var passedDays = ICAL.Time.daysInYearPassedMonth[isLeapYear][month];\n * @type {Array.>}\n */\n static daysInYearPassedMonth = [\n [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365],\n [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366]\n ];\n\n static SUNDAY = 1;\n static MONDAY = 2;\n static TUESDAY = 3;\n static WEDNESDAY = 4;\n static THURSDAY = 5;\n static FRIDAY = 6;\n static SATURDAY = 7;\n\n /**\n * The default weekday for the WKST part.\n * @constant\n * @default ICAL.Time.MONDAY\n */\n static DEFAULT_WEEK_START = 2; // MONDAY\n\n /**\n * Creates a new ICAL.Time instance.\n *\n * @param {timeInit} data Time initialization\n * @param {Timezone} zone timezone this position occurs in\n */\n constructor(data, zone) {\n this.wrappedJSObject = this;\n\n /**\n * @type {timeInit}\n * @private\n */\n this._time = Object.create(null);\n\n /* time defaults */\n this._time.year = 0;\n this._time.month = 1;\n this._time.day = 1;\n this._time.hour = 0;\n this._time.minute = 0;\n this._time.second = 0;\n this._time.isDate = false;\n\n this.fromData(data, zone);\n }\n\n /**\n * The class identifier.\n * @constant\n * @type {String}\n * @default \"icaltime\"\n */\n icalclass = \"icaltime\";\n _cachedUnixTime = null;\n\n /**\n * The type name, to be used in the jCal object. This value may change and\n * is strictly defined by the {@link ICAL.Time#isDate isDate} member.\n * @type {String}\n * @default \"date-time\"\n */\n get icaltype() {\n return this.isDate ? 'date' : 'date-time';\n }\n\n /**\n * The timezone for this time.\n * @type {Timezone}\n */\n zone = null;\n\n /**\n * Internal uses to indicate that a change has been made and the next read\n * operation must attempt to normalize the value (for example changing the\n * day to 33).\n *\n * @type {Boolean}\n * @private\n */\n _pendingNormalization = false;\n\n /**\n * The year of this date.\n * @type {Number}\n */\n get year() {\n return this._getTimeAttr('year');\n }\n\n set year(val) {\n this._setTimeAttr('year', val);\n }\n\n /**\n * The month of this date.\n * @type {Number}\n */\n get month() {\n return this._getTimeAttr('month');\n }\n\n set month(val) {\n this._setTimeAttr('month', val);\n }\n\n /**\n * The day of this date.\n * @type {Number}\n */\n get day() {\n return this._getTimeAttr('day');\n }\n\n set day(val) {\n this._setTimeAttr('day', val);\n }\n\n /**\n * The hour of this date-time.\n * @type {Number}\n */\n get hour() {\n return this._getTimeAttr('hour');\n }\n\n set hour(val) {\n this._setTimeAttr('hour', val);\n }\n\n /**\n * The minute of this date-time.\n * @type {Number}\n */\n get minute() {\n return this._getTimeAttr('minute');\n }\n\n set minute(val) {\n this._setTimeAttr('minute', val);\n }\n\n /**\n * The second of this date-time.\n * @type {Number}\n */\n get second() {\n return this._getTimeAttr('second');\n }\n\n set second(val) {\n this._setTimeAttr('second', val);\n }\n\n /**\n * If true, the instance represents a date (as opposed to a date-time)\n * @type {Boolean}\n */\n get isDate() {\n return this._getTimeAttr('isDate');\n }\n\n set isDate(val) {\n this._setTimeAttr('isDate', val);\n }\n\n /**\n * @private\n * @param {String} attr Attribute to get (one of: year, month,\n * day, hour, minute, second, isDate)\n * @return {Number|Boolean} Current value for the attribute\n */\n _getTimeAttr(attr) {\n if (this._pendingNormalization) {\n this._normalize();\n this._pendingNormalization = false;\n }\n\n return this._time[attr];\n }\n\n /**\n * @private\n * @param {String} attr Attribute to set (one of: year, month,\n * day, hour, minute, second, isDate)\n * @param {Number|Boolean} val New value for the attribute\n */\n _setTimeAttr(attr, val) {\n // Check if isDate will be set and if was not set to normalize date.\n // This avoids losing days when seconds, minutes and hours are zeroed\n // what normalize will do when time is a date.\n if (attr === \"isDate\" && val && !this._time.isDate) {\n this.adjust(0, 0, 0, 0);\n }\n this._cachedUnixTime = null;\n this._pendingNormalization = true;\n this._time[attr] = val;\n }\n\n /**\n * Returns a clone of the time object.\n *\n * @return {Time} The cloned object\n */\n clone() {\n return new Time(this._time, this.zone);\n }\n\n /**\n * Reset the time instance to epoch time\n */\n reset() {\n this.fromData(Time.epochTime);\n this.zone = Timezone.utcTimezone;\n }\n\n /**\n * Reset the time instance to the given date/time values.\n *\n * @param {Number} year The year to set\n * @param {Number} month The month to set\n * @param {Number} day The day to set\n * @param {Number} hour The hour to set\n * @param {Number} minute The minute to set\n * @param {Number} second The second to set\n * @param {Timezone} timezone The timezone to set\n */\n resetTo(year, month, day, hour, minute, second, timezone) {\n this.fromData({\n year: year,\n month: month,\n day: day,\n hour: hour,\n minute: minute,\n second: second,\n zone: timezone\n });\n }\n\n /**\n * Set up the current instance from the Javascript date value.\n *\n * @param {?Date} aDate The Javascript Date to read, or null to reset\n * @param {Boolean} [useUTC=false] If true, the UTC values of the date will be used\n */\n fromJSDate(aDate, useUTC) {\n if (!aDate) {\n this.reset();\n } else {\n if (useUTC) {\n this.zone = Timezone.utcTimezone;\n this.year = aDate.getUTCFullYear();\n this.month = aDate.getUTCMonth() + 1;\n this.day = aDate.getUTCDate();\n this.hour = aDate.getUTCHours();\n this.minute = aDate.getUTCMinutes();\n this.second = aDate.getUTCSeconds();\n } else {\n this.zone = Timezone.localTimezone;\n this.year = aDate.getFullYear();\n this.month = aDate.getMonth() + 1;\n this.day = aDate.getDate();\n this.hour = aDate.getHours();\n this.minute = aDate.getMinutes();\n this.second = aDate.getSeconds();\n }\n }\n this._cachedUnixTime = null;\n return this;\n }\n\n /**\n * Sets up the current instance using members from the passed data object.\n *\n * @param {timeInit} aData Time initialization\n * @param {Timezone=} aZone Timezone this position occurs in\n */\n fromData(aData, aZone) {\n if (aData) {\n for (let [key, value] of Object.entries(aData)) {\n // ical type cannot be set\n if (key === 'icaltype') continue;\n this[key] = value;\n }\n }\n\n if (aZone) {\n this.zone = aZone;\n }\n\n if (aData && !(\"isDate\" in aData)) {\n this.isDate = !(\"hour\" in aData);\n } else if (aData && (\"isDate\" in aData)) {\n this.isDate = aData.isDate;\n }\n\n if (aData && \"timezone\" in aData) {\n let zone = TimezoneService.get(\n aData.timezone\n );\n\n this.zone = zone || Timezone.localTimezone;\n }\n\n if (aData && \"zone\" in aData) {\n this.zone = aData.zone;\n }\n\n if (!this.zone) {\n this.zone = Timezone.localTimezone;\n }\n\n this._cachedUnixTime = null;\n return this;\n }\n\n /**\n * Calculate the day of week.\n * @param {weekDay=} aWeekStart\n * The week start weekday, defaults to SUNDAY\n * @return {weekDay}\n */\n dayOfWeek(aWeekStart) {\n let firstDow = aWeekStart || Time.SUNDAY;\n let dowCacheKey = (this.year << 12) + (this.month << 8) + (this.day << 3) + firstDow;\n if (dowCacheKey in Time._dowCache) {\n return Time._dowCache[dowCacheKey];\n }\n\n // Using Zeller's algorithm\n let q = this.day;\n let m = this.month + (this.month < 3 ? 12 : 0);\n let Y = this.year - (this.month < 3 ? 1 : 0);\n\n let h = (q + Y + trunc(((m + 1) * 26) / 10) + trunc(Y / 4));\n { // eslint-disable-line no-constant-condition\n h += trunc(Y / 100) * 6 + trunc(Y / 400);\n }\n\n // Normalize to 1 = wkst\n h = ((h + 7 - firstDow) % 7) + 1;\n Time._dowCache[dowCacheKey] = h;\n return h;\n }\n\n /**\n * Calculate the day of year.\n * @return {Number}\n */\n dayOfYear() {\n let is_leap = (Time.isLeapYear(this.year) ? 1 : 0);\n let diypm = Time.daysInYearPassedMonth;\n return diypm[is_leap][this.month - 1] + this.day;\n }\n\n /**\n * Returns a copy of the current date/time, rewound to the start of the\n * week. The resulting ICAL.Time instance is of icaltype date, even if this\n * is a date-time.\n *\n * @param {weekDay=} aWeekStart\n * The week start weekday, defaults to SUNDAY\n * @return {Time} The start of the week (cloned)\n */\n startOfWeek(aWeekStart) {\n let firstDow = aWeekStart || Time.SUNDAY;\n let result = this.clone();\n result.day -= ((this.dayOfWeek() + 7 - firstDow) % 7);\n result.isDate = true;\n result.hour = 0;\n result.minute = 0;\n result.second = 0;\n return result;\n }\n\n /**\n * Returns a copy of the current date/time, shifted to the end of the week.\n * The resulting ICAL.Time instance is of icaltype date, even if this is a\n * date-time.\n *\n * @param {weekDay=} aWeekStart\n * The week start weekday, defaults to SUNDAY\n * @return {Time} The end of the week (cloned)\n */\n endOfWeek(aWeekStart) {\n let firstDow = aWeekStart || Time.SUNDAY;\n let result = this.clone();\n result.day += (7 - this.dayOfWeek() + firstDow - Time.SUNDAY) % 7;\n result.isDate = true;\n result.hour = 0;\n result.minute = 0;\n result.second = 0;\n return result;\n }\n\n /**\n * Returns a copy of the current date/time, rewound to the start of the\n * month. The resulting ICAL.Time instance is of icaltype date, even if\n * this is a date-time.\n *\n * @return {Time} The start of the month (cloned)\n */\n startOfMonth() {\n let result = this.clone();\n result.day = 1;\n result.isDate = true;\n result.hour = 0;\n result.minute = 0;\n result.second = 0;\n return result;\n }\n\n /**\n * Returns a copy of the current date/time, shifted to the end of the\n * month. The resulting ICAL.Time instance is of icaltype date, even if\n * this is a date-time.\n *\n * @return {Time} The end of the month (cloned)\n */\n endOfMonth() {\n let result = this.clone();\n result.day = Time.daysInMonth(result.month, result.year);\n result.isDate = true;\n result.hour = 0;\n result.minute = 0;\n result.second = 0;\n return result;\n }\n\n /**\n * Returns a copy of the current date/time, rewound to the start of the\n * year. The resulting ICAL.Time instance is of icaltype date, even if\n * this is a date-time.\n *\n * @return {Time} The start of the year (cloned)\n */\n startOfYear() {\n let result = this.clone();\n result.day = 1;\n result.month = 1;\n result.isDate = true;\n result.hour = 0;\n result.minute = 0;\n result.second = 0;\n return result;\n }\n\n /**\n * Returns a copy of the current date/time, shifted to the end of the\n * year. The resulting ICAL.Time instance is of icaltype date, even if\n * this is a date-time.\n *\n * @return {Time} The end of the year (cloned)\n */\n endOfYear() {\n let result = this.clone();\n result.day = 31;\n result.month = 12;\n result.isDate = true;\n result.hour = 0;\n result.minute = 0;\n result.second = 0;\n return result;\n }\n\n /**\n * First calculates the start of the week, then returns the day of year for\n * this date. If the day falls into the previous year, the day is zero or negative.\n *\n * @param {weekDay=} aFirstDayOfWeek\n * The week start weekday, defaults to SUNDAY\n * @return {Number} The calculated day of year\n */\n startDoyWeek(aFirstDayOfWeek) {\n let firstDow = aFirstDayOfWeek || Time.SUNDAY;\n let delta = this.dayOfWeek() - firstDow;\n if (delta < 0) delta += 7;\n return this.dayOfYear() - delta;\n }\n\n /**\n * Get the dominical letter for the current year. Letters range from A - G\n * for common years, and AG to GF for leap years.\n *\n * @param {Number} yr The year to retrieve the letter for\n * @return {String} The dominical letter.\n */\n getDominicalLetter() {\n return Time.getDominicalLetter(this.year);\n }\n\n /**\n * Finds the nthWeekDay relative to the current month (not day). The\n * returned value is a day relative the month that this month belongs to so\n * 1 would indicate the first of the month and 40 would indicate a day in\n * the following month.\n *\n * @param {Number} aDayOfWeek Day of the week see the day name constants\n * @param {Number} aPos Nth occurrence of a given week day values\n * of 1 and 0 both indicate the first weekday of that type. aPos may\n * be either positive or negative\n *\n * @return {Number} numeric value indicating a day relative\n * to the current month of this time object\n */\n nthWeekDay(aDayOfWeek, aPos) {\n let daysInMonth = Time.daysInMonth(this.month, this.year);\n let weekday;\n let pos = aPos;\n\n let start = 0;\n\n let otherDay = this.clone();\n\n if (pos >= 0) {\n otherDay.day = 1;\n\n // because 0 means no position has been given\n // 1 and 0 indicate the same day.\n if (pos != 0) {\n // remove the extra numeric value\n pos--;\n }\n\n // set current start offset to current day.\n start = otherDay.day;\n\n // find the current day of week\n let startDow = otherDay.dayOfWeek();\n\n // calculate the difference between current\n // day of the week and desired day of the week\n let offset = aDayOfWeek - startDow;\n\n\n // if the offset goes into the past\n // week we add 7 so it goes into the next\n // week. We only want to go forward in time here.\n if (offset < 0)\n // this is really important otherwise we would\n // end up with dates from in the past.\n offset += 7;\n\n // add offset to start so start is the same\n // day of the week as the desired day of week.\n start += offset;\n\n // because we are going to add (and multiply)\n // the numeric value of the day we subtract it\n // from the start position so not to add it twice.\n start -= aDayOfWeek;\n\n // set week day\n weekday = aDayOfWeek;\n } else {\n\n // then we set it to the last day in the current month\n otherDay.day = daysInMonth;\n\n // find the ends weekday\n let endDow = otherDay.dayOfWeek();\n\n pos++;\n\n weekday = (endDow - aDayOfWeek);\n\n if (weekday < 0) {\n weekday += 7;\n }\n\n weekday = daysInMonth - weekday;\n }\n\n weekday += pos * 7;\n\n return start + weekday;\n }\n\n /**\n * Checks if current time is the nth weekday, relative to the current\n * month. Will always return false when rule resolves outside of current\n * month.\n *\n * @param {weekDay} aDayOfWeek Day of week to check\n * @param {Number} aPos Relative position\n * @return {Boolean} True, if it is the nth weekday\n */\n isNthWeekDay(aDayOfWeek, aPos) {\n let dow = this.dayOfWeek();\n\n if (aPos === 0 && dow === aDayOfWeek) {\n return true;\n }\n\n // get pos\n let day = this.nthWeekDay(aDayOfWeek, aPos);\n\n if (day === this.day) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Calculates the ISO 8601 week number. The first week of a year is the\n * week that contains the first Thursday. The year can have 53 weeks, if\n * January 1st is a Friday.\n *\n * Note there are regions where the first week of the year is the one that\n * starts on January 1st, which may offset the week number. Also, if a\n * different week start is specified, this will also affect the week\n * number.\n *\n * @see Time.weekOneStarts\n * @param {weekDay} aWeekStart The weekday the week starts with\n * @return {Number} The ISO week number\n */\n weekNumber(aWeekStart) {\n let wnCacheKey = (this.year << 12) + (this.month << 8) + (this.day << 3) + aWeekStart;\n if (wnCacheKey in Time._wnCache) {\n return Time._wnCache[wnCacheKey];\n }\n // This function courtesty of Julian Bucknall, published under the MIT license\n // http://www.boyet.com/articles/publishedarticles/calculatingtheisoweeknumb.html\n // plus some fixes to be able to use different week starts.\n let week1;\n\n let dt = this.clone();\n dt.isDate = true;\n let isoyear = this.year;\n\n if (dt.month == 12 && dt.day > 25) {\n week1 = Time.weekOneStarts(isoyear + 1, aWeekStart);\n if (dt.compare(week1) < 0) {\n week1 = Time.weekOneStarts(isoyear, aWeekStart);\n } else {\n isoyear++;\n }\n } else {\n week1 = Time.weekOneStarts(isoyear, aWeekStart);\n if (dt.compare(week1) < 0) {\n week1 = Time.weekOneStarts(--isoyear, aWeekStart);\n }\n }\n\n let daysBetween = (dt.subtractDate(week1).toSeconds() / 86400);\n let answer = trunc(daysBetween / 7) + 1;\n Time._wnCache[wnCacheKey] = answer;\n return answer;\n }\n\n /**\n * Adds the duration to the current time. The instance is modified in\n * place.\n *\n * @param {Duration} aDuration The duration to add\n */\n addDuration(aDuration) {\n let mult = (aDuration.isNegative ? -1 : 1);\n\n // because of the duration optimizations it is much\n // more efficient to grab all the values up front\n // then set them directly (which will avoid a normalization call).\n // So we don't actually normalize until we need it.\n let second = this.second;\n let minute = this.minute;\n let hour = this.hour;\n let day = this.day;\n\n second += mult * aDuration.seconds;\n minute += mult * aDuration.minutes;\n hour += mult * aDuration.hours;\n day += mult * aDuration.days;\n day += mult * 7 * aDuration.weeks;\n\n this.second = second;\n this.minute = minute;\n this.hour = hour;\n this.day = day;\n\n this._cachedUnixTime = null;\n }\n\n /**\n * Subtract the date details (_excluding_ timezone). Useful for finding\n * the relative difference between two time objects excluding their\n * timezone differences.\n *\n * @param {Time} aDate The date to subtract\n * @return {Duration} The difference as a duration\n */\n subtractDate(aDate) {\n let unixTime = this.toUnixTime() + this.utcOffset();\n let other = aDate.toUnixTime() + aDate.utcOffset();\n return Duration.fromSeconds(unixTime - other);\n }\n\n /**\n * Subtract the date details, taking timezones into account.\n *\n * @param {Time} aDate The date to subtract\n * @return {Duration} The difference in duration\n */\n subtractDateTz(aDate) {\n let unixTime = this.toUnixTime();\n let other = aDate.toUnixTime();\n return Duration.fromSeconds(unixTime - other);\n }\n\n /**\n * Compares the ICAL.Time instance with another one, or a period.\n *\n * @param {Time|Period} aOther The instance to compare with\n * @return {Number} -1, 0 or 1 for less/equal/greater\n */\n compare(other) {\n if (other instanceof Period) {\n return -1 * other.compare(this);\n } else {\n let a = this.toUnixTime();\n let b = other.toUnixTime();\n\n if (a > b) return 1;\n if (b > a) return -1;\n return 0;\n }\n }\n\n /**\n * Compares only the date part of this instance with another one.\n *\n * @param {Time} other The instance to compare with\n * @param {Timezone} tz The timezone to compare in\n * @return {Number} -1, 0 or 1 for less/equal/greater\n */\n compareDateOnlyTz(other, tz) {\n let a = this.convertToZone(tz);\n let b = other.convertToZone(tz);\n let rc = 0;\n\n if ((rc = Time._cmp_attr(a, b, \"year\")) != 0) return rc;\n if ((rc = Time._cmp_attr(a, b, \"month\")) != 0) return rc;\n if ((rc = Time._cmp_attr(a, b, \"day\")) != 0) return rc;\n\n return rc;\n }\n\n /**\n * Convert the instance into another timezone. The returned ICAL.Time\n * instance is always a copy.\n *\n * @param {Timezone} zone The zone to convert to\n * @return {Time} The copy, converted to the zone\n */\n convertToZone(zone) {\n let copy = this.clone();\n let zone_equals = (this.zone.tzid == zone.tzid);\n\n if (!this.isDate && !zone_equals) {\n Timezone.convert_time(copy, this.zone, zone);\n }\n\n copy.zone = zone;\n return copy;\n }\n\n /**\n * Calculates the UTC offset of the current date/time in the timezone it is\n * in.\n *\n * @return {Number} UTC offset in seconds\n */\n utcOffset() {\n if (this.zone == Timezone.localTimezone ||\n this.zone == Timezone.utcTimezone) {\n return 0;\n } else {\n return this.zone.utcOffset(this);\n }\n }\n\n /**\n * Returns an RFC 5545 compliant ical representation of this object.\n *\n * @return {String} ical date/date-time\n */\n toICALString() {\n let string = this.toString();\n\n if (string.length > 10) {\n return design.icalendar.value['date-time'].toICAL(string);\n } else {\n return design.icalendar.value.date.toICAL(string);\n }\n }\n\n /**\n * The string representation of this date/time, in jCal form\n * (including : and - separators).\n * @return {String}\n */\n toString() {\n let result = this.year + '-' +\n pad2(this.month) + '-' +\n pad2(this.day);\n\n if (!this.isDate) {\n result += 'T' + pad2(this.hour) + ':' +\n pad2(this.minute) + ':' +\n pad2(this.second);\n\n if (this.zone === Timezone.utcTimezone) {\n result += 'Z';\n }\n }\n\n return result;\n }\n\n /**\n * Converts the current instance to a Javascript date\n * @return {Date}\n */\n toJSDate() {\n if (this.zone == Timezone.localTimezone) {\n if (this.isDate) {\n return new Date(this.year, this.month - 1, this.day);\n } else {\n return new Date(this.year, this.month - 1, this.day,\n this.hour, this.minute, this.second, 0);\n }\n } else {\n return new Date(this.toUnixTime() * 1000);\n }\n }\n\n _normalize() {\n if (this._time.isDate) {\n this._time.hour = 0;\n this._time.minute = 0;\n this._time.second = 0;\n }\n this.adjust(0, 0, 0, 0);\n\n return this;\n }\n\n /**\n * Adjust the date/time by the given offset\n *\n * @param {Number} aExtraDays The extra amount of days\n * @param {Number} aExtraHours The extra amount of hours\n * @param {Number} aExtraMinutes The extra amount of minutes\n * @param {Number} aExtraSeconds The extra amount of seconds\n * @param {Number=} aTime The time to adjust, defaults to the\n * current instance.\n */\n adjust(aExtraDays, aExtraHours, aExtraMinutes, aExtraSeconds, aTime) {\n\n let minutesOverflow, hoursOverflow,\n daysOverflow = 0, yearsOverflow = 0;\n\n let second, minute, hour, day;\n let daysInMonth;\n\n let time = aTime || this._time;\n\n if (!time.isDate) {\n second = time.second + aExtraSeconds;\n time.second = second % 60;\n minutesOverflow = trunc(second / 60);\n if (time.second < 0) {\n time.second += 60;\n minutesOverflow--;\n }\n\n minute = time.minute + aExtraMinutes + minutesOverflow;\n time.minute = minute % 60;\n hoursOverflow = trunc(minute / 60);\n if (time.minute < 0) {\n time.minute += 60;\n hoursOverflow--;\n }\n\n hour = time.hour + aExtraHours + hoursOverflow;\n\n time.hour = hour % 24;\n daysOverflow = trunc(hour / 24);\n if (time.hour < 0) {\n time.hour += 24;\n daysOverflow--;\n }\n }\n\n\n // Adjust month and year first, because we need to know what month the day\n // is in before adjusting it.\n if (time.month > 12) {\n yearsOverflow = trunc((time.month - 1) / 12);\n } else if (time.month < 1) {\n yearsOverflow = trunc(time.month / 12) - 1;\n }\n\n time.year += yearsOverflow;\n time.month -= 12 * yearsOverflow;\n\n // Now take care of the days (and adjust month if needed)\n day = time.day + aExtraDays + daysOverflow;\n\n if (day > 0) {\n for (;;) {\n daysInMonth = Time.daysInMonth(time.month, time.year);\n if (day <= daysInMonth) {\n break;\n }\n\n time.month++;\n if (time.month > 12) {\n time.year++;\n time.month = 1;\n }\n\n day -= daysInMonth;\n }\n } else {\n while (day <= 0) {\n if (time.month == 1) {\n time.year--;\n time.month = 12;\n } else {\n time.month--;\n }\n\n day += Time.daysInMonth(time.month, time.year);\n }\n }\n\n time.day = day;\n\n this._cachedUnixTime = null;\n return this;\n }\n\n /**\n * Sets up the current instance from unix time, the number of seconds since\n * January 1st, 1970.\n *\n * @param {Number} seconds The seconds to set up with\n */\n fromUnixTime(seconds) {\n this.zone = Timezone.utcTimezone;\n // We could use `fromJSDate` here, but this is about twice as fast.\n // We could also clone `epochTime` and use `adjust` for a more\n // ical.js-centric approach, but this is about 100 times as fast.\n let date = new Date(seconds * 1000);\n this.year = date.getUTCFullYear();\n this.month = date.getUTCMonth() + 1;\n this.day = date.getUTCDate();\n if (this._time.isDate) {\n this.hour = 0;\n this.minute = 0;\n this.second = 0;\n } else {\n this.hour = date.getUTCHours();\n this.minute = date.getUTCMinutes();\n this.second = date.getUTCSeconds();\n }\n\n this._cachedUnixTime = null;\n }\n\n /**\n * Converts the current instance to seconds since January 1st 1970.\n *\n * @return {Number} Seconds since 1970\n */\n toUnixTime() {\n if (this._cachedUnixTime !== null) {\n return this._cachedUnixTime;\n }\n let offset = this.utcOffset();\n\n // we use the offset trick to ensure\n // that we are getting the actual UTC time\n let ms = Date.UTC(\n this.year,\n this.month - 1,\n this.day,\n this.hour,\n this.minute,\n this.second - offset\n );\n\n // seconds\n this._cachedUnixTime = ms / 1000;\n return this._cachedUnixTime;\n }\n\n /**\n * Converts time to into Object which can be serialized then re-created\n * using the constructor.\n *\n * @example\n * // toJSON will automatically be called\n * var json = JSON.stringify(mytime);\n *\n * var deserialized = JSON.parse(json);\n *\n * var time = new ICAL.Time(deserialized);\n *\n * @return {Object}\n */\n toJSON() {\n let copy = [\n 'year',\n 'month',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'isDate'\n ];\n\n let result = Object.create(null);\n\n let i = 0;\n let len = copy.length;\n let prop;\n\n for (; i < len; i++) {\n prop = copy[i];\n result[prop] = this[prop];\n }\n\n if (this.zone) {\n result.timezone = this.zone.tzid;\n }\n\n return result;\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n *\n * @ignore\n * @typedef {import(\"./types.js\").parserState} parserState\n * Imports the 'parserState' type from the \"types.js\" module\n * @typedef {import(\"./types.js\").designSet} designSet\n * Imports the 'designSet' type from the \"types.js\" module\n */\n\nconst CHAR = /[^ \\t]/;\nconst VALUE_DELIMITER = ':';\nconst PARAM_DELIMITER = ';';\nconst PARAM_NAME_DELIMITER = '=';\nconst DEFAULT_VALUE_TYPE$1 = 'unknown';\nconst DEFAULT_PARAM_TYPE = 'text';\nconst RFC6868_REPLACE_MAP$1 = { \"^'\": '\"', \"^n\": \"\\n\", \"^^\": \"^\" };\n\n/**\n * Parses iCalendar or vCard data into a raw jCal object. Consult\n * documentation on the {@tutorial layers|layers of parsing} for more\n * details.\n *\n * @function ICAL.parse\n * @memberof ICAL\n * @variation function\n * @todo Fix the API to be more clear on the return type\n * @param {String} input The string data to parse\n * @return {Object|Object[]} A single jCal object, or an array thereof\n */\nfunction parse(input) {\n let state = {};\n let root = state.component = [];\n\n state.stack = [root];\n\n parse._eachLine(input, function(err, line) {\n parse._handleContentLine(line, state);\n });\n\n\n // when there are still items on the stack\n // throw a fatal error, a component was not closed\n // correctly in that case.\n if (state.stack.length > 1) {\n throw new ParserError(\n 'invalid ical body. component began but did not end'\n );\n }\n\n state = null;\n\n return (root.length == 1 ? root[0] : root);\n}\n\n/**\n * Parse an iCalendar property value into the jCal for a single property\n *\n * @function ICAL.parse.property\n * @param {String} str\n * The iCalendar property string to parse\n * @param {designSet=} designSet\n * The design data to use for this property\n * @return {Object}\n * The jCal Object containing the property\n */\nparse.property = function(str, designSet) {\n let state = {\n component: [[], []],\n designSet: designSet || design.defaultSet\n };\n parse._handleContentLine(str, state);\n return state.component[1][0];\n};\n\n/**\n * Convenience method to parse a component. You can use ICAL.parse() directly\n * instead.\n *\n * @function ICAL.parse.component\n * @see ICAL.parse(function)\n * @param {String} str The iCalendar component string to parse\n * @return {Object} The jCal Object containing the component\n */\nparse.component = function(str) {\n return parse(str);\n};\n\n\n/**\n * An error that occurred during parsing.\n *\n * @param {String} message The error message\n * @memberof ICAL.parse\n * @extends {Error}\n */\nclass ParserError extends Error {\n name = this.constructor.name;\n}\n\n// classes & constants\nparse.ParserError = ParserError;\n\n\n/**\n * Handles a single line of iCalendar/vCard, updating the state.\n *\n * @private\n * @function ICAL.parse._handleContentLine\n * @param {String} line The content line to process\n * @param {parserState} state The current state of the line parsing\n */\nparse._handleContentLine = function(line, state) {\n // break up the parts of the line\n let valuePos = line.indexOf(VALUE_DELIMITER);\n let paramPos = line.indexOf(PARAM_DELIMITER);\n\n let lastParamIndex;\n let lastValuePos;\n\n // name of property or begin/end\n let name;\n let value;\n // params is only overridden if paramPos !== -1.\n // we can't do params = params || {} later on\n // because it sacrifices ops.\n let params = {};\n\n /**\n * Different property cases\n *\n *\n * 1. RRULE:FREQ=foo\n * // FREQ= is not a param but the value\n *\n * 2. ATTENDEE;ROLE=REQ-PARTICIPANT;\n * // ROLE= is a param because : has not happened yet\n */\n // when the parameter delimiter is after the\n // value delimiter then it is not a parameter.\n\n if ((paramPos !== -1 && valuePos !== -1)) {\n // when the parameter delimiter is after the\n // value delimiter then it is not a parameter.\n if (paramPos > valuePos) {\n paramPos = -1;\n }\n }\n\n let parsedParams;\n if (paramPos !== -1) {\n name = line.slice(0, Math.max(0, paramPos)).toLowerCase();\n parsedParams = parse._parseParameters(line.slice(Math.max(0, paramPos)), 0, state.designSet);\n if (parsedParams[2] == -1) {\n throw new ParserError(\"Invalid parameters in '\" + line + \"'\");\n }\n params = parsedParams[0];\n // Handle parameter values with multiple entries\n let parsedParamLength;\n if (typeof parsedParams[1] === 'string') {\n parsedParamLength = parsedParams[1].length;\n } else {\n parsedParamLength = parsedParams[1].reduce((accumulator, currentValue) => {\n return accumulator + currentValue.length;\n }, 0);\n }\n lastParamIndex = parsedParamLength + parsedParams[2] + paramPos;\n if ((lastValuePos =\n line.slice(Math.max(0, lastParamIndex)).indexOf(VALUE_DELIMITER)) !== -1) {\n value = line.slice(Math.max(0, lastParamIndex + lastValuePos + 1));\n } else {\n throw new ParserError(\"Missing parameter value in '\" + line + \"'\");\n }\n } else if (valuePos !== -1) {\n // without parmeters (BEGIN:VCAENDAR, CLASS:PUBLIC)\n name = line.slice(0, Math.max(0, valuePos)).toLowerCase();\n value = line.slice(Math.max(0, valuePos + 1));\n\n if (name === 'begin') {\n let newComponent = [value.toLowerCase(), [], []];\n if (state.stack.length === 1) {\n state.component.push(newComponent);\n } else {\n state.component[2].push(newComponent);\n }\n state.stack.push(state.component);\n state.component = newComponent;\n if (!state.designSet) {\n state.designSet = design.getDesignSet(state.component[0]);\n }\n return;\n } else if (name === 'end') {\n state.component = state.stack.pop();\n return;\n }\n // If it is not begin/end, then this is a property with an empty value,\n // which should be considered valid.\n } else {\n /**\n * Invalid line.\n * The rational to throw an error is we will\n * never be certain that the rest of the file\n * is sane and it is unlikely that we can serialize\n * the result correctly either.\n */\n throw new ParserError(\n 'invalid line (no token \";\" or \":\") \"' + line + '\"'\n );\n }\n\n let valueType;\n let multiValue = false;\n let structuredValue = false;\n let propertyDetails;\n let splitName;\n let ungroupedName;\n\n // fetch the ungrouped part of the name\n if (state.designSet.propertyGroups && name.indexOf('.') !== -1) {\n splitName = name.split('.');\n params.group = splitName[0];\n ungroupedName = splitName[1];\n } else {\n ungroupedName = name;\n }\n\n if (ungroupedName in state.designSet.property) {\n propertyDetails = state.designSet.property[ungroupedName];\n\n if ('multiValue' in propertyDetails) {\n multiValue = propertyDetails.multiValue;\n }\n\n if ('structuredValue' in propertyDetails) {\n structuredValue = propertyDetails.structuredValue;\n }\n\n if (value && 'detectType' in propertyDetails) {\n valueType = propertyDetails.detectType(value);\n }\n }\n\n // attempt to determine value\n if (!valueType) {\n if (!('value' in params)) {\n if (propertyDetails) {\n valueType = propertyDetails.defaultType;\n } else {\n valueType = DEFAULT_VALUE_TYPE$1;\n }\n } else {\n // possible to avoid this?\n valueType = params.value.toLowerCase();\n }\n }\n\n delete params.value;\n\n /**\n * Note on `var result` juggling:\n *\n * I observed that building the array in pieces has adverse\n * effects on performance, so where possible we inline the creation.\n * It is a little ugly but resulted in ~2000 additional ops/sec.\n */\n\n let result;\n if (multiValue && structuredValue) {\n value = parse._parseMultiValue(value, structuredValue, valueType, [], multiValue, state.designSet, structuredValue);\n result = [ungroupedName, params, valueType, value];\n } else if (multiValue) {\n result = [ungroupedName, params, valueType];\n parse._parseMultiValue(value, multiValue, valueType, result, null, state.designSet, false);\n } else if (structuredValue) {\n value = parse._parseMultiValue(value, structuredValue, valueType, [], null, state.designSet, structuredValue);\n result = [ungroupedName, params, valueType, value];\n } else {\n value = parse._parseValue(value, valueType, state.designSet, false);\n result = [ungroupedName, params, valueType, value];\n }\n // rfc6350 requires that in vCard 4.0 the first component is the VERSION\n // component with as value 4.0, note that 3.0 does not have this requirement.\n if (state.component[0] === 'vcard' && state.component[1].length === 0 &&\n !(name === 'version' && value === '4.0')) {\n state.designSet = design.getDesignSet(\"vcard3\");\n }\n state.component[1].push(result);\n};\n\n/**\n * Parse a value from the raw value into the jCard/jCal value.\n *\n * @private\n * @function ICAL.parse._parseValue\n * @param {String} value Original value\n * @param {String} type Type of value\n * @param {Object} designSet The design data to use for this value\n * @return {Object} varies on type\n */\nparse._parseValue = function(value, type, designSet, structuredValue) {\n if (type in designSet.value && 'fromICAL' in designSet.value[type]) {\n return designSet.value[type].fromICAL(value, structuredValue);\n }\n return value;\n};\n\n/**\n * Parse parameters from a string to object.\n *\n * @function ICAL.parse._parseParameters\n * @private\n * @param {String} line A single unfolded line\n * @param {Number} start Position to start looking for properties\n * @param {Object} designSet The design data to use for this property\n * @return {Array} Array containing key/valye pairs of parsed parameters, the\n * parsed value, and the position of the last parameter found\n */\nparse._parseParameters = function(line, start, designSet) {\n let lastParam = start;\n let pos = 0;\n let delim = PARAM_NAME_DELIMITER;\n let result = {};\n let name, lcname;\n let value, valuePos = -1;\n let type, multiValue, mvdelim;\n\n // find the next '=' sign\n // use lastParam and pos to find name\n // check if \" is used if so get value from \"->\"\n // then increment pos to find next ;\n\n while ((pos !== false) &&\n (pos = line.indexOf(delim, pos + 1)) !== -1) {\n\n name = line.slice(lastParam + 1, pos);\n if (name.length == 0) {\n throw new ParserError(\"Empty parameter name in '\" + line + \"'\");\n }\n lcname = name.toLowerCase();\n mvdelim = false;\n multiValue = false;\n\n if (lcname in designSet.param && designSet.param[lcname].valueType) {\n type = designSet.param[lcname].valueType;\n } else {\n type = DEFAULT_PARAM_TYPE;\n }\n\n if (lcname in designSet.param) {\n multiValue = designSet.param[lcname].multiValue;\n if (designSet.param[lcname].multiValueSeparateDQuote) {\n mvdelim = parse._rfc6868Escape('\"' + multiValue + '\"');\n }\n }\n\n let nextChar = line[pos + 1];\n if (nextChar === '\"') {\n valuePos = pos + 2;\n pos = line.indexOf('\"', valuePos);\n if (multiValue && pos != -1) {\n let extendedValue = true;\n while (extendedValue) {\n if (line[pos + 1] == multiValue && line[pos + 2] == '\"') {\n pos = line.indexOf('\"', pos + 3);\n } else {\n extendedValue = false;\n }\n }\n }\n if (pos === -1) {\n throw new ParserError(\n 'invalid line (no matching double quote) \"' + line + '\"'\n );\n }\n value = line.slice(valuePos, pos);\n lastParam = line.indexOf(PARAM_DELIMITER, pos);\n let propValuePos = line.indexOf(VALUE_DELIMITER, pos);\n // if either no next parameter or delimeter in property value, let's stop here\n if (lastParam === -1 || (propValuePos !== -1 && lastParam > propValuePos)) {\n pos = false;\n }\n } else {\n valuePos = pos + 1;\n\n // move to next \";\"\n let nextPos = line.indexOf(PARAM_DELIMITER, valuePos);\n let propValuePos = line.indexOf(VALUE_DELIMITER, valuePos);\n if (propValuePos !== -1 && nextPos > propValuePos) {\n // this is a delimiter in the property value, let's stop here\n nextPos = propValuePos;\n pos = false;\n } else if (nextPos === -1) {\n // no \";\"\n if (propValuePos === -1) {\n nextPos = line.length;\n } else {\n nextPos = propValuePos;\n }\n pos = false;\n } else {\n lastParam = nextPos;\n pos = nextPos;\n }\n\n value = line.slice(valuePos, nextPos);\n }\n\n const length_before = value.length;\n value = parse._rfc6868Escape(value);\n valuePos += length_before - value.length;\n if (multiValue) {\n let delimiter = mvdelim || multiValue;\n value = parse._parseMultiValue(value, delimiter, type, [], null, designSet);\n } else {\n value = parse._parseValue(value, type, designSet);\n }\n\n if (multiValue && (lcname in result)) {\n if (Array.isArray(result[lcname])) {\n result[lcname].push(value);\n } else {\n result[lcname] = [\n result[lcname],\n value\n ];\n }\n } else {\n result[lcname] = value;\n }\n }\n return [result, value, valuePos];\n};\n\n/**\n * Internal helper for rfc6868. Exposing this on ICAL.parse so that\n * hackers can disable the rfc6868 parsing if the really need to.\n *\n * @function ICAL.parse._rfc6868Escape\n * @param {String} val The value to escape\n * @return {String} The escaped value\n */\nparse._rfc6868Escape = function(val) {\n return val.replace(/\\^['n^]/g, function(x) {\n return RFC6868_REPLACE_MAP$1[x];\n });\n};\n\n/**\n * Parse a multi value string. This function is used either for parsing\n * actual multi-value property's values, or for handling parameter values. It\n * can be used for both multi-value properties and structured value properties.\n *\n * @private\n * @function ICAL.parse._parseMultiValue\n * @param {String} buffer The buffer containing the full value\n * @param {String} delim The multi-value delimiter\n * @param {String} type The value type to be parsed\n * @param {Array.} result The array to append results to, varies on value type\n * @param {String} innerMulti The inner delimiter to split each value with\n * @param {designSet} designSet The design data for this value\n * @return {?|Array.} Either an array of results, or the first result\n */\nparse._parseMultiValue = function(buffer, delim, type, result, innerMulti, designSet, structuredValue) {\n let pos = 0;\n let lastPos = 0;\n let value;\n if (delim.length === 0) {\n return buffer;\n }\n\n // split each piece\n while ((pos = unescapedIndexOf(buffer, delim, lastPos)) !== -1) {\n value = buffer.slice(lastPos, pos);\n if (innerMulti) {\n value = parse._parseMultiValue(value, innerMulti, type, [], null, designSet, structuredValue);\n } else {\n value = parse._parseValue(value, type, designSet, structuredValue);\n }\n result.push(value);\n lastPos = pos + delim.length;\n }\n\n // on the last piece take the rest of string\n value = buffer.slice(lastPos);\n if (innerMulti) {\n value = parse._parseMultiValue(value, innerMulti, type, [], null, designSet, structuredValue);\n } else {\n value = parse._parseValue(value, type, designSet, structuredValue);\n }\n result.push(value);\n\n return result.length == 1 ? result[0] : result;\n};\n\n/**\n * Process a complete buffer of iCalendar/vCard data line by line, correctly\n * unfolding content. Each line will be processed with the given callback\n *\n * @private\n * @function ICAL.parse._eachLine\n * @param {String} buffer The buffer to process\n * @param {function(?String, String)} callback The callback for each line\n */\nparse._eachLine = function(buffer, callback) {\n let len = buffer.length;\n let lastPos = buffer.search(CHAR);\n let pos = lastPos;\n let line;\n let firstChar;\n\n let newlineOffset;\n\n do {\n pos = buffer.indexOf('\\n', lastPos) + 1;\n\n if (pos > 1 && buffer[pos - 2] === '\\r') {\n newlineOffset = 2;\n } else {\n newlineOffset = 1;\n }\n\n if (pos === 0) {\n pos = len;\n newlineOffset = 0;\n }\n\n firstChar = buffer[lastPos];\n\n if (firstChar === ' ' || firstChar === '\\t') {\n // add to line\n line += buffer.slice(lastPos + 1, pos - newlineOffset);\n } else {\n if (line)\n callback(null, line);\n // push line\n line = buffer.slice(lastPos, pos - newlineOffset);\n }\n\n lastPos = pos;\n } while (pos !== len);\n\n // extra ending line\n line = line.trim();\n\n if (line.length)\n callback(null, line);\n};\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\nconst OPTIONS = [\"tzid\", \"location\", \"tznames\", \"latitude\", \"longitude\"];\n\n/**\n * Timezone representation.\n *\n * @example\n * var vcalendar;\n * var timezoneComp = vcalendar.getFirstSubcomponent('vtimezone');\n * var tzid = timezoneComp.getFirstPropertyValue('tzid');\n *\n * var timezone = new ICAL.Timezone({\n * component: timezoneComp,\n * tzid\n * });\n *\n * @memberof ICAL\n */\nclass Timezone {\n static _compare_change_fn(a, b) {\n if (a.year < b.year) return -1;\n else if (a.year > b.year) return 1;\n\n if (a.month < b.month) return -1;\n else if (a.month > b.month) return 1;\n\n if (a.day < b.day) return -1;\n else if (a.day > b.day) return 1;\n\n if (a.hour < b.hour) return -1;\n else if (a.hour > b.hour) return 1;\n\n if (a.minute < b.minute) return -1;\n else if (a.minute > b.minute) return 1;\n\n if (a.second < b.second) return -1;\n else if (a.second > b.second) return 1;\n\n return 0;\n }\n\n /**\n * Convert the date/time from one zone to the next.\n *\n * @param {Time} tt The time to convert\n * @param {Timezone} from_zone The source zone to convert from\n * @param {Timezone} to_zone The target zone to convert to\n * @return {Time} The converted date/time object\n */\n static convert_time(tt, from_zone, to_zone) {\n if (tt.isDate ||\n from_zone.tzid == to_zone.tzid ||\n from_zone == Timezone.localTimezone ||\n to_zone == Timezone.localTimezone) {\n tt.zone = to_zone;\n return tt;\n }\n\n let utcOffset = from_zone.utcOffset(tt);\n tt.adjust(0, 0, 0, - utcOffset);\n\n utcOffset = to_zone.utcOffset(tt);\n tt.adjust(0, 0, 0, utcOffset);\n\n return null;\n }\n\n /**\n * Creates a new ICAL.Timezone instance from the passed data object.\n *\n * @param {Component|Object} aData options for class\n * @param {String|Component} aData.component\n * If aData is a simple object, then this member can be set to either a\n * string containing the component data, or an already parsed\n * ICAL.Component\n * @param {String} aData.tzid The timezone identifier\n * @param {String} aData.location The timezone locationw\n * @param {String} aData.tznames An alternative string representation of the\n * timezone\n * @param {Number} aData.latitude The latitude of the timezone\n * @param {Number} aData.longitude The longitude of the timezone\n */\n static fromData(aData) {\n let tt = new Timezone();\n return tt.fromData(aData);\n }\n\n /**\n * The instance describing the UTC timezone\n * @type {Timezone}\n * @constant\n * @instance\n */\n static #utcTimezone = null;\n static get utcTimezone() {\n if (!this.#utcTimezone) {\n this.#utcTimezone = Timezone.fromData({\n tzid: \"UTC\"\n });\n }\n return this.#utcTimezone;\n }\n\n /**\n * The instance describing the local timezone\n * @type {Timezone}\n * @constant\n * @instance\n */\n static #localTimezone = null;\n static get localTimezone() {\n if (!this.#localTimezone) {\n this.#localTimezone = Timezone.fromData({\n tzid: \"floating\"\n });\n }\n return this.#localTimezone;\n }\n\n /**\n * Adjust a timezone change object.\n * @private\n * @param {Object} change The timezone change object\n * @param {Number} days The extra amount of days\n * @param {Number} hours The extra amount of hours\n * @param {Number} minutes The extra amount of minutes\n * @param {Number} seconds The extra amount of seconds\n */\n static adjust_change(change, days, hours, minutes, seconds) {\n return Time.prototype.adjust.call(\n change,\n days,\n hours,\n minutes,\n seconds,\n change\n );\n }\n\n static _minimumExpansionYear = -1;\n static EXTRA_COVERAGE = 5;\n\n /**\n * Creates a new ICAL.Timezone instance, by passing in a tzid and component.\n *\n * @param {Component|Object} data options for class\n * @param {String|Component} data.component\n * If data is a simple object, then this member can be set to either a\n * string containing the component data, or an already parsed\n * ICAL.Component\n * @param {String} data.tzid The timezone identifier\n * @param {String} data.location The timezone locationw\n * @param {String} data.tznames An alternative string representation of the\n * timezone\n * @param {Number} data.latitude The latitude of the timezone\n * @param {Number} data.longitude The longitude of the timezone\n */\n constructor(data) {\n this.wrappedJSObject = this;\n this.fromData(data);\n }\n\n\n /**\n * Timezone identifier\n * @type {String}\n */\n tzid = \"\";\n\n /**\n * Timezone location\n * @type {String}\n */\n location = \"\";\n\n /**\n * Alternative timezone name, for the string representation\n * @type {String}\n */\n tznames = \"\";\n\n /**\n * The primary latitude for the timezone.\n * @type {Number}\n */\n latitude = 0.0;\n\n /**\n * The primary longitude for the timezone.\n * @type {Number}\n */\n longitude = 0.0;\n\n /**\n * The vtimezone component for this timezone.\n * @type {Component}\n */\n component = null;\n\n /**\n * The year this timezone has been expanded to. All timezone transition\n * dates until this year are known and can be used for calculation\n *\n * @private\n * @type {Number}\n */\n expandedUntilYear = 0;\n\n /**\n * The class identifier.\n * @constant\n * @type {String}\n * @default \"icaltimezone\"\n */\n icalclass = \"icaltimezone\";\n\n /**\n * Sets up the current instance using members from the passed data object.\n *\n * @param {Component|Object} aData options for class\n * @param {String|Component} aData.component\n * If aData is a simple object, then this member can be set to either a\n * string containing the component data, or an already parsed\n * ICAL.Component\n * @param {String} aData.tzid The timezone identifier\n * @param {String} aData.location The timezone locationw\n * @param {String} aData.tznames An alternative string representation of the\n * timezone\n * @param {Number} aData.latitude The latitude of the timezone\n * @param {Number} aData.longitude The longitude of the timezone\n */\n fromData(aData) {\n this.expandedUntilYear = 0;\n this.changes = [];\n\n if (aData instanceof Component) {\n // Either a component is passed directly\n this.component = aData;\n } else {\n // Otherwise the component may be in the data object\n if (aData && \"component\" in aData) {\n if (typeof aData.component == \"string\") {\n // If a string was passed, parse it as a component\n let jCal = parse(aData.component);\n this.component = new Component(jCal);\n } else if (aData.component instanceof Component) {\n // If it was a component already, then just set it\n this.component = aData.component;\n } else {\n // Otherwise just null out the component\n this.component = null;\n }\n }\n\n // Copy remaining passed properties\n for (let prop of OPTIONS) {\n if (aData && prop in aData) {\n this[prop] = aData[prop];\n }\n }\n }\n\n // If we have a component but no TZID, attempt to get it from the\n // component's properties.\n if (this.component instanceof Component && !this.tzid) {\n this.tzid = this.component.getFirstPropertyValue('tzid');\n }\n\n return this;\n }\n\n /**\n * Finds the utcOffset the given time would occur in this timezone.\n *\n * @param {Time} tt The time to check for\n * @return {Number} utc offset in seconds\n */\n utcOffset(tt) {\n if (this == Timezone.utcTimezone || this == Timezone.localTimezone) {\n return 0;\n }\n\n this._ensureCoverage(tt.year);\n\n if (!this.changes.length) {\n return 0;\n }\n\n let tt_change = {\n year: tt.year,\n month: tt.month,\n day: tt.day,\n hour: tt.hour,\n minute: tt.minute,\n second: tt.second\n };\n\n let change_num = this._findNearbyChange(tt_change);\n let change_num_to_use = -1;\n let step = 1;\n\n // TODO: replace with bin search?\n for (;;) {\n let change = clone(this.changes[change_num], true);\n if (change.utcOffset < change.prevUtcOffset) {\n Timezone.adjust_change(change, 0, 0, 0, change.utcOffset);\n } else {\n Timezone.adjust_change(change, 0, 0, 0,\n change.prevUtcOffset);\n }\n\n let cmp = Timezone._compare_change_fn(tt_change, change);\n\n if (cmp >= 0) {\n change_num_to_use = change_num;\n } else {\n step = -1;\n }\n\n if (step == -1 && change_num_to_use != -1) {\n break;\n }\n\n change_num += step;\n\n if (change_num < 0) {\n return 0;\n }\n\n if (change_num >= this.changes.length) {\n break;\n }\n }\n\n let zone_change = this.changes[change_num_to_use];\n let utcOffset_change = zone_change.utcOffset - zone_change.prevUtcOffset;\n\n if (utcOffset_change < 0 && change_num_to_use > 0) {\n let tmp_change = clone(zone_change, true);\n Timezone.adjust_change(tmp_change, 0, 0, 0, tmp_change.prevUtcOffset);\n\n if (Timezone._compare_change_fn(tt_change, tmp_change) < 0) {\n let prev_zone_change = this.changes[change_num_to_use - 1];\n\n let want_daylight = false; // TODO\n\n if (zone_change.is_daylight != want_daylight &&\n prev_zone_change.is_daylight == want_daylight) {\n zone_change = prev_zone_change;\n }\n }\n }\n\n // TODO return is_daylight?\n return zone_change.utcOffset;\n }\n\n _findNearbyChange(change) {\n // find the closest match\n let idx = binsearchInsert(\n this.changes,\n change,\n Timezone._compare_change_fn\n );\n\n if (idx >= this.changes.length) {\n return this.changes.length - 1;\n }\n\n return idx;\n }\n\n _ensureCoverage(aYear) {\n if (Timezone._minimumExpansionYear == -1) {\n let today = Time.now();\n Timezone._minimumExpansionYear = today.year;\n }\n\n let changesEndYear = aYear;\n if (changesEndYear < Timezone._minimumExpansionYear) {\n changesEndYear = Timezone._minimumExpansionYear;\n }\n\n changesEndYear += Timezone.EXTRA_COVERAGE;\n\n if (!this.changes.length || this.expandedUntilYear < aYear) {\n let subcomps = this.component.getAllSubcomponents();\n let compLen = subcomps.length;\n let compIdx = 0;\n\n for (; compIdx < compLen; compIdx++) {\n this._expandComponent(\n subcomps[compIdx], changesEndYear, this.changes\n );\n }\n\n this.changes.sort(Timezone._compare_change_fn);\n this.expandedUntilYear = changesEndYear;\n }\n }\n\n _expandComponent(aComponent, aYear, changes) {\n if (!aComponent.hasProperty(\"dtstart\") ||\n !aComponent.hasProperty(\"tzoffsetto\") ||\n !aComponent.hasProperty(\"tzoffsetfrom\")) {\n return null;\n }\n\n let dtstart = aComponent.getFirstProperty(\"dtstart\").getFirstValue();\n let change;\n\n function convert_tzoffset(offset) {\n return offset.factor * (offset.hours * 3600 + offset.minutes * 60);\n }\n\n function init_changes() {\n let changebase = {};\n changebase.is_daylight = (aComponent.name == \"daylight\");\n changebase.utcOffset = convert_tzoffset(\n aComponent.getFirstProperty(\"tzoffsetto\").getFirstValue()\n );\n\n changebase.prevUtcOffset = convert_tzoffset(\n aComponent.getFirstProperty(\"tzoffsetfrom\").getFirstValue()\n );\n\n return changebase;\n }\n\n if (!aComponent.hasProperty(\"rrule\") && !aComponent.hasProperty(\"rdate\")) {\n change = init_changes();\n change.year = dtstart.year;\n change.month = dtstart.month;\n change.day = dtstart.day;\n change.hour = dtstart.hour;\n change.minute = dtstart.minute;\n change.second = dtstart.second;\n\n Timezone.adjust_change(change, 0, 0, 0, -change.prevUtcOffset);\n changes.push(change);\n } else {\n let props = aComponent.getAllProperties(\"rdate\");\n for (let rdate of props) {\n let time = rdate.getFirstValue();\n change = init_changes();\n\n change.year = time.year;\n change.month = time.month;\n change.day = time.day;\n\n if (time.isDate) {\n change.hour = dtstart.hour;\n change.minute = dtstart.minute;\n change.second = dtstart.second;\n\n if (dtstart.zone != Timezone.utcTimezone) {\n Timezone.adjust_change(change, 0, 0, 0, -change.prevUtcOffset);\n }\n } else {\n change.hour = time.hour;\n change.minute = time.minute;\n change.second = time.second;\n\n if (time.zone != Timezone.utcTimezone) {\n Timezone.adjust_change(change, 0, 0, 0, -change.prevUtcOffset);\n }\n }\n\n changes.push(change);\n }\n\n let rrule = aComponent.getFirstProperty(\"rrule\");\n\n if (rrule) {\n rrule = rrule.getFirstValue();\n change = init_changes();\n\n if (rrule.until && rrule.until.zone == Timezone.utcTimezone) {\n rrule.until.adjust(0, 0, 0, change.prevUtcOffset);\n rrule.until.zone = Timezone.localTimezone;\n }\n\n let iterator = rrule.iterator(dtstart);\n\n let occ;\n while ((occ = iterator.next())) {\n change = init_changes();\n if (occ.year > aYear || !occ) {\n break;\n }\n\n change.year = occ.year;\n change.month = occ.month;\n change.day = occ.day;\n change.hour = occ.hour;\n change.minute = occ.minute;\n change.second = occ.second;\n change.isDate = occ.isDate;\n\n Timezone.adjust_change(change, 0, 0, 0, -change.prevUtcOffset);\n changes.push(change);\n }\n }\n }\n\n return changes;\n }\n\n /**\n * The string representation of this timezone.\n * @return {String}\n */\n toString() {\n return (this.tznames ? this.tznames : this.tzid);\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\nlet zones = null;\n\n/**\n * @classdesc\n * Singleton class to contain timezones. Right now it is all manual registry in\n * the future we may use this class to download timezone information or handle\n * loading pre-expanded timezones.\n *\n * @exports module:ICAL.TimezoneService\n * @memberof ICAL\n */\nconst TimezoneService = {\n get count() {\n if (zones === null) {\n return 0;\n }\n\n return Object.keys(zones).length;\n },\n\n reset: function() {\n zones = Object.create(null);\n let utc = Timezone.utcTimezone;\n\n zones.Z = utc;\n zones.UTC = utc;\n zones.GMT = utc;\n },\n _hard_reset: function() {\n zones = null;\n },\n\n /**\n * Checks if timezone id has been registered.\n *\n * @param {String} tzid Timezone identifier (e.g. America/Los_Angeles)\n * @return {Boolean} False, when not present\n */\n has: function(tzid) {\n if (zones === null) {\n return false;\n }\n\n return !!zones[tzid];\n },\n\n /**\n * Returns a timezone by its tzid if present.\n *\n * @param {String} tzid Timezone identifier (e.g. America/Los_Angeles)\n * @return {Timezone | undefined} The timezone, or undefined if not found\n */\n get: function(tzid) {\n if (zones === null) {\n this.reset();\n }\n\n return zones[tzid];\n },\n\n /**\n * Registers a timezone object or component.\n *\n * @param {Component|Timezone} timezone\n * The initialized zone or vtimezone.\n *\n * @param {String=} name\n * The name of the timezone. Defaults to the component's TZID if not\n * passed.\n */\n register: function(timezone, name) {\n if (zones === null) {\n this.reset();\n }\n\n // This avoids a breaking change by the change of argument order\n // TODO remove in v3\n if (typeof timezone === \"string\" && name instanceof Timezone) {\n [timezone, name] = [name, timezone];\n }\n\n if (!name) {\n if (timezone instanceof Timezone) {\n name = timezone.tzid;\n } else {\n if (timezone.name === 'vtimezone') {\n timezone = new Timezone(timezone);\n name = timezone.tzid;\n }\n }\n }\n\n if (!name) {\n throw new TypeError(\"Neither a timezone nor a name was passed\");\n }\n\n if (timezone instanceof Timezone) {\n zones[name] = timezone;\n } else {\n throw new TypeError('timezone must be ICAL.Timezone or ICAL.Component');\n }\n },\n\n /**\n * Removes a timezone by its tzid from the list.\n *\n * @param {String} tzid Timezone identifier (e.g. America/Los_Angeles)\n * @return {?Timezone} The removed timezone, or null if not registered\n */\n remove: function(tzid) {\n if (zones === null) {\n return null;\n }\n\n return (delete zones[tzid]);\n }\n};\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * Helper functions used in various places within ical.js\n * @module ICAL.helpers\n */\n\n/**\n * Compiles a list of all referenced TZIDs in all subcomponents and\n * removes any extra VTIMEZONE subcomponents. In addition, if any TZIDs\n * are referenced by a component, but a VTIMEZONE does not exist,\n * an attempt will be made to generate a VTIMEZONE using ICAL.TimezoneService.\n *\n * @param {Component} vcal The top-level VCALENDAR component.\n * @return {Component} The ICAL.Component that was passed in.\n */\nfunction updateTimezones(vcal) {\n let allsubs, properties, vtimezones, reqTzid, i;\n\n if (!vcal || vcal.name !== \"vcalendar\") {\n //not a top-level vcalendar component\n return vcal;\n }\n\n //Store vtimezone subcomponents in an object reference by tzid.\n //Store properties from everything else in another array\n allsubs = vcal.getAllSubcomponents();\n properties = [];\n vtimezones = {};\n for (i = 0; i < allsubs.length; i++) {\n if (allsubs[i].name === \"vtimezone\") {\n let tzid = allsubs[i].getFirstProperty(\"tzid\").getFirstValue();\n vtimezones[tzid] = allsubs[i];\n } else {\n properties = properties.concat(allsubs[i].getAllProperties());\n }\n }\n\n //create an object with one entry for each required tz\n reqTzid = {};\n for (i = 0; i < properties.length; i++) {\n let tzid = properties[i].getParameter(\"tzid\");\n if (tzid) {\n reqTzid[tzid] = true;\n }\n }\n\n //delete any vtimezones that are not on the reqTzid list.\n for (let [tzid, comp] of Object.entries(vtimezones)) {\n if (!reqTzid[tzid]) {\n vcal.removeSubcomponent(comp);\n }\n }\n\n //create any missing, but registered timezones\n for (let tzid of Object.keys(reqTzid)) {\n if (!vtimezones[tzid] && TimezoneService.has(tzid)) {\n vcal.addSubcomponent(TimezoneService.get(tzid).component);\n }\n }\n\n return vcal;\n}\n\n/**\n * Checks if the given type is of the number type and also NaN.\n *\n * @param {Number} number The number to check\n * @return {Boolean} True, if the number is strictly NaN\n */\nfunction isStrictlyNaN(number) {\n return typeof(number) === 'number' && isNaN(number);\n}\n\n/**\n * Parses a string value that is expected to be an integer, when the valid is\n * not an integer throws a decoration error.\n *\n * @param {String} string Raw string input\n * @return {Number} Parsed integer\n */\nfunction strictParseInt(string) {\n let result = parseInt(string, 10);\n\n if (isStrictlyNaN(result)) {\n throw new Error(\n 'Could not extract integer from \"' + string + '\"'\n );\n }\n\n return result;\n}\n\n/**\n * Creates or returns a class instance of a given type with the initialization\n * data if the data is not already an instance of the given type.\n *\n * @example\n * var time = new ICAL.Time(...);\n * var result = ICAL.helpers.formatClassType(time, ICAL.Time);\n *\n * (result instanceof ICAL.Time)\n * // => true\n *\n * result = ICAL.helpers.formatClassType({}, ICAL.Time);\n * (result isntanceof ICAL.Time)\n * // => true\n *\n *\n * @param {Object} data object initialization data\n * @param {Object} type object type (like ICAL.Time)\n * @return {?} An instance of the found type.\n */\nfunction formatClassType(data, type) {\n if (typeof(data) === 'undefined') {\n return undefined;\n }\n\n if (data instanceof type) {\n return data;\n }\n return new type(data);\n}\n\n/**\n * Identical to indexOf but will only match values when they are not preceded\n * by a backslash character.\n *\n * @param {String} buffer String to search\n * @param {String} search Value to look for\n * @param {Number} pos Start position\n * @return {Number} The position, or -1 if not found\n */\nfunction unescapedIndexOf(buffer, search, pos) {\n while ((pos = buffer.indexOf(search, pos)) !== -1) {\n if (pos > 0 && buffer[pos - 1] === '\\\\') {\n pos += 1;\n } else {\n return pos;\n }\n }\n return -1;\n}\n\n/**\n * Find the index for insertion using binary search.\n *\n * @param {Array} list The list to search\n * @param {?} seekVal The value to insert\n * @param {function(?,?)} cmpfunc The comparison func, that can\n * compare two seekVals\n * @return {Number} The insert position\n */\nfunction binsearchInsert(list, seekVal, cmpfunc) {\n if (!list.length)\n return 0;\n\n let low = 0, high = list.length - 1,\n mid, cmpval;\n\n while (low <= high) {\n mid = low + Math.floor((high - low) / 2);\n cmpval = cmpfunc(seekVal, list[mid]);\n\n if (cmpval < 0)\n high = mid - 1;\n else if (cmpval > 0)\n low = mid + 1;\n else\n break;\n }\n\n if (cmpval < 0)\n return mid; // insertion is displacing, so use mid outright.\n else if (cmpval > 0)\n return mid + 1;\n else\n return mid;\n}\n\n/**\n * Clone the passed object or primitive. By default a shallow clone will be\n * executed.\n *\n * @param {*} aSrc The thing to clone\n * @param {Boolean=} aDeep If true, a deep clone will be performed\n * @return {*} The copy of the thing\n */\nfunction clone(aSrc, aDeep) {\n if (!aSrc || typeof aSrc != \"object\") {\n return aSrc;\n } else if (aSrc instanceof Date) {\n return new Date(aSrc.getTime());\n } else if (\"clone\" in aSrc) {\n return aSrc.clone();\n } else if (Array.isArray(aSrc)) {\n let arr = [];\n for (let i = 0; i < aSrc.length; i++) {\n arr.push(aDeep ? clone(aSrc[i], true) : aSrc[i]);\n }\n return arr;\n } else {\n let obj = {};\n for (let [name, value] of Object.entries(aSrc)) {\n if (aDeep) {\n obj[name] = clone(value, true);\n } else {\n obj[name] = value;\n }\n }\n return obj;\n }\n}\n\n/**\n * Performs iCalendar line folding. A line ending character is inserted and\n * the next line begins with a whitespace.\n *\n * @example\n * SUMMARY:This line will be fold\n * ed right in the middle of a word.\n *\n * @param {String} aLine The line to fold\n * @return {String} The folded line\n */\nfunction foldline(aLine) {\n let result = \"\";\n let line = aLine || \"\", pos = 0, line_length = 0;\n //pos counts position in line for the UTF-16 presentation\n //line_length counts the bytes for the UTF-8 presentation\n while (line.length) {\n let cp = line.codePointAt(pos);\n if (cp < 128) ++line_length;\n else if (cp < 2048) line_length += 2;//needs 2 UTF-8 bytes\n else if (cp < 65536) line_length += 3;\n else line_length += 4; //cp is less than 1114112\n if (line_length < ICALmodule.foldLength + 1)\n pos += cp > 65535 ? 2 : 1;\n else {\n result += ICALmodule.newLineChar + \" \" + line.slice(0, Math.max(0, pos));\n line = line.slice(Math.max(0, pos));\n pos = line_length = 0;\n }\n }\n return result.slice(ICALmodule.newLineChar.length + 1);\n}\n\n/**\n * Pads the given string or number with zeros so it will have at least two\n * characters.\n *\n * @param {String|Number} data The string or number to pad\n * @return {String} The number padded as a string\n */\nfunction pad2(data) {\n if (typeof(data) !== 'string') {\n // handle fractions.\n if (typeof(data) === 'number') {\n data = parseInt(data);\n }\n data = String(data);\n }\n\n let len = data.length;\n\n switch (len) {\n case 0:\n return '00';\n case 1:\n return '0' + data;\n default:\n return data;\n }\n}\n\n/**\n * Truncates the given number, correctly handling negative numbers.\n *\n * @param {Number} number The number to truncate\n * @return {Number} The truncated number\n */\nfunction trunc(number) {\n return (number < 0 ? Math.ceil(number) : Math.floor(number));\n}\n\n/**\n * Poor-man's cross-browser object extension. Doesn't support all the\n * features, but enough for our usage. Note that the target's properties are\n * not overwritten with the source properties.\n *\n * @example\n * var child = ICAL.helpers.extend(parent, {\n * \"bar\": 123\n * });\n *\n * @param {Object} source The object to extend\n * @param {Object} target The object to extend with\n * @return {Object} Returns the target.\n */\nfunction extend(source, target) {\n for (let key in source) {\n let descr = Object.getOwnPropertyDescriptor(source, key);\n if (descr && !Object.getOwnPropertyDescriptor(target, key)) {\n Object.defineProperty(target, key, descr);\n }\n }\n return target;\n}\n\nvar helpers = /*#__PURE__*/Object.freeze({\n __proto__: null,\n binsearchInsert: binsearchInsert,\n clone: clone,\n extend: extend,\n foldline: foldline,\n formatClassType: formatClassType,\n isStrictlyNaN: isStrictlyNaN,\n pad2: pad2,\n strictParseInt: strictParseInt,\n trunc: trunc,\n unescapedIndexOf: unescapedIndexOf,\n updateTimezones: updateTimezones\n});\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This class represents the \"utc-offset\" value type, with various calculation and manipulation\n * methods.\n *\n * @memberof ICAL\n */\nclass UtcOffset {\n /**\n * Creates a new {@link ICAL.UtcOffset} instance from the passed string.\n *\n * @param {String} aString The string to parse\n * @return {Duration} The created utc-offset instance\n */\n static fromString(aString) {\n // -05:00\n let options = {};\n //TODO: support seconds per rfc5545 ?\n options.factor = (aString[0] === '+') ? 1 : -1;\n options.hours = strictParseInt(aString.slice(1, 3));\n options.minutes = strictParseInt(aString.slice(4, 6));\n\n return new UtcOffset(options);\n }\n\n /**\n * Creates a new {@link ICAL.UtcOffset} instance from the passed seconds\n * value.\n *\n * @param {Number} aSeconds The number of seconds to convert\n */\n static fromSeconds(aSeconds) {\n let instance = new UtcOffset();\n instance.fromSeconds(aSeconds);\n return instance;\n }\n\n /**\n * Creates a new ICAL.UtcOffset instance.\n *\n * @param {Object} aData An object with members of the utc offset\n * @param {Number=} aData.hours The hours for the utc offset\n * @param {Number=} aData.minutes The minutes in the utc offset\n * @param {Number=} aData.factor The factor for the utc-offset, either -1 or 1\n */\n constructor(aData) {\n this.fromData(aData);\n }\n\n /**\n * The hours in the utc-offset\n * @type {Number}\n */\n hours = 0;\n\n /**\n * The minutes in the utc-offset\n * @type {Number}\n */\n minutes = 0;\n\n /**\n * The sign of the utc offset, 1 for positive offset, -1 for negative\n * offsets.\n * @type {Number}\n */\n factor = 1;\n\n /**\n * The type name, to be used in the jCal object.\n * @constant\n * @type {String}\n * @default \"utc-offset\"\n */\n icaltype = \"utc-offset\";\n\n /**\n * Returns a clone of the utc offset object.\n *\n * @return {UtcOffset} The cloned object\n */\n clone() {\n return UtcOffset.fromSeconds(this.toSeconds());\n }\n\n /**\n * Sets up the current instance using members from the passed data object.\n *\n * @param {Object} aData An object with members of the utc offset\n * @param {Number=} aData.hours The hours for the utc offset\n * @param {Number=} aData.minutes The minutes in the utc offset\n * @param {Number=} aData.factor The factor for the utc-offset, either -1 or 1\n */\n fromData(aData) {\n if (aData) {\n for (let [key, value] of Object.entries(aData)) {\n this[key] = value;\n }\n }\n this._normalize();\n }\n\n /**\n * Sets up the current instance from the given seconds value. The seconds\n * value is truncated to the minute. Offsets are wrapped when the world\n * ends, the hour after UTC+14:00 is UTC-12:00.\n *\n * @param {Number} aSeconds The seconds to convert into an offset\n */\n fromSeconds(aSeconds) {\n let secs = Math.abs(aSeconds);\n\n this.factor = aSeconds < 0 ? -1 : 1;\n this.hours = trunc(secs / 3600);\n\n secs -= (this.hours * 3600);\n this.minutes = trunc(secs / 60);\n return this;\n }\n\n /**\n * Convert the current offset to a value in seconds\n *\n * @return {Number} The offset in seconds\n */\n toSeconds() {\n return this.factor * (60 * this.minutes + 3600 * this.hours);\n }\n\n /**\n * Compare this utc offset with another one.\n *\n * @param {UtcOffset} other The other offset to compare with\n * @return {Number} -1, 0 or 1 for less/equal/greater\n */\n compare(other) {\n let a = this.toSeconds();\n let b = other.toSeconds();\n return (a > b) - (b > a);\n }\n\n _normalize() {\n // Range: 97200 seconds (with 1 hour inbetween)\n let secs = this.toSeconds();\n let factor = this.factor;\n while (secs < -43200) { // = UTC-12:00\n secs += 97200;\n }\n while (secs > 50400) { // = UTC+14:00\n secs -= 97200;\n }\n\n this.fromSeconds(secs);\n\n // Avoid changing the factor when on zero seconds\n if (secs == 0) {\n this.factor = factor;\n }\n }\n\n /**\n * The iCalendar string representation of this utc-offset.\n * @return {String}\n */\n toICALString() {\n return design.icalendar.value['utc-offset'].toICAL(this.toString());\n }\n\n /**\n * The string representation of this utc-offset.\n * @return {String}\n */\n toString() {\n return (this.factor == 1 ? \"+\" : \"-\") + pad2(this.hours) + ':' + pad2(this.minutes);\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * Describes a vCard time, which has slight differences to the ICAL.Time.\n * Properties can be null if not specified, for example for dates with\n * reduced accuracy or truncation.\n *\n * Note that currently not all methods are correctly re-implemented for\n * VCardTime. For example, comparison will have undefined results when some\n * members are null.\n *\n * Also, normalization is not yet implemented for this class!\n *\n * @memberof ICAL\n * @extends {Time}\n */\nclass VCardTime extends Time {\n /**\n * Returns a new ICAL.VCardTime instance from a date and/or time string.\n *\n * @param {String} aValue The string to create from\n * @param {String} aIcalType The type for this instance, e.g. date-and-or-time\n * @return {VCardTime} The date/time instance\n */\n static fromDateAndOrTimeString(aValue, aIcalType) {\n function part(v, s, e) {\n return v ? strictParseInt(v.slice(s, s + e)) : null;\n }\n let parts = aValue.split('T');\n let dt = parts[0], tmz = parts[1];\n let splitzone = tmz ? design.vcard.value.time._splitZone(tmz) : [];\n let zone = splitzone[0], tm = splitzone[1];\n\n let dtlen = dt ? dt.length : 0;\n let tmlen = tm ? tm.length : 0;\n\n let hasDashDate = dt && dt[0] == '-' && dt[1] == '-';\n let hasDashTime = tm && tm[0] == '-';\n\n let o = {\n year: hasDashDate ? null : part(dt, 0, 4),\n month: hasDashDate && (dtlen == 4 || dtlen == 7) ? part(dt, 2, 2) : dtlen == 7 ? part(dt, 5, 2) : dtlen == 10 ? part(dt, 5, 2) : null,\n day: dtlen == 5 ? part(dt, 3, 2) : dtlen == 7 && hasDashDate ? part(dt, 5, 2) : dtlen == 10 ? part(dt, 8, 2) : null,\n\n hour: hasDashTime ? null : part(tm, 0, 2),\n minute: hasDashTime && tmlen == 3 ? part(tm, 1, 2) : tmlen > 4 ? hasDashTime ? part(tm, 1, 2) : part(tm, 3, 2) : null,\n second: tmlen == 4 ? part(tm, 2, 2) : tmlen == 6 ? part(tm, 4, 2) : tmlen == 8 ? part(tm, 6, 2) : null\n };\n\n if (zone == 'Z') {\n zone = Timezone.utcTimezone;\n } else if (zone && zone[3] == ':') {\n zone = UtcOffset.fromString(zone);\n } else {\n zone = null;\n }\n\n return new VCardTime(o, zone, aIcalType);\n }\n\n\n /**\n * Creates a new ICAL.VCardTime instance.\n *\n * @param {Object} data The data for the time instance\n * @param {Number=} data.year The year for this date\n * @param {Number=} data.month The month for this date\n * @param {Number=} data.day The day for this date\n * @param {Number=} data.hour The hour for this date\n * @param {Number=} data.minute The minute for this date\n * @param {Number=} data.second The second for this date\n * @param {Timezone|UtcOffset} zone The timezone to use\n * @param {String} icaltype The type for this date/time object\n */\n constructor(data, zone, icaltype) {\n super(data, zone);\n this.icaltype = icaltype || \"date-and-or-time\";\n }\n\n /**\n * The class identifier.\n * @constant\n * @type {String}\n * @default \"vcardtime\"\n */\n icalclass = \"vcardtime\";\n\n /**\n * The type name, to be used in the jCal object.\n * @type {String}\n * @default \"date-and-or-time\"\n */\n icaltype = \"date-and-or-time\";\n\n /**\n * Returns a clone of the vcard date/time object.\n *\n * @return {VCardTime} The cloned object\n */\n clone() {\n return new VCardTime(this._time, this.zone, this.icaltype);\n }\n\n _normalize() {\n return this;\n }\n\n /**\n * @inheritdoc\n */\n utcOffset() {\n if (this.zone instanceof UtcOffset) {\n return this.zone.toSeconds();\n } else {\n return Time.prototype.utcOffset.apply(this, arguments);\n }\n }\n\n /**\n * Returns an RFC 6350 compliant representation of this object.\n *\n * @return {String} vcard date/time string\n */\n toICALString() {\n return design.vcard.value[this.icaltype].toICAL(this.toString());\n }\n\n /**\n * The string representation of this date/time, in jCard form\n * (including : and - separators).\n * @return {String}\n */\n toString() {\n let y = this.year, m = this.month, d = this.day;\n let h = this.hour, mm = this.minute, s = this.second;\n\n let hasYear = y !== null, hasMonth = m !== null, hasDay = d !== null;\n let hasHour = h !== null, hasMinute = mm !== null, hasSecond = s !== null;\n\n let datepart = (hasYear ? pad2(y) + (hasMonth || hasDay ? '-' : '') : (hasMonth || hasDay ? '--' : '')) +\n (hasMonth ? pad2(m) : '') +\n (hasDay ? '-' + pad2(d) : '');\n let timepart = (hasHour ? pad2(h) : '-') + (hasHour && hasMinute ? ':' : '') +\n (hasMinute ? pad2(mm) : '') + (!hasHour && !hasMinute ? '-' : '') +\n (hasMinute && hasSecond ? ':' : '') +\n (hasSecond ? pad2(s) : '');\n\n let zone;\n if (this.zone === Timezone.utcTimezone) {\n zone = 'Z';\n } else if (this.zone instanceof UtcOffset) {\n zone = this.zone.toString();\n } else if (this.zone === Timezone.localTimezone) {\n zone = '';\n } else if (this.zone instanceof Timezone) {\n let offset = UtcOffset.fromSeconds(this.zone.utcOffset(this));\n zone = offset.toString();\n } else {\n zone = '';\n }\n\n switch (this.icaltype) {\n case \"time\":\n return timepart + zone;\n case \"date-and-or-time\":\n case \"date-time\":\n return datepart + (timepart == '--' ? '' : 'T' + timepart + zone);\n case \"date\":\n return datepart;\n }\n return null;\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n *\n * @ignore\n * @typedef {import(\"./types.js\").weekDay} weekDay\n * Imports the 'weekDay' type from the \"types.js\" module\n */\n\n/**\n * An iterator for a single recurrence rule. This class usually doesn't have to be instanciated\n * directly, the convenience method {@link ICAL.Recur#iterator} can be used.\n *\n * @memberof ICAL\n */\nclass RecurIterator {\n static _indexMap = {\n \"BYSECOND\": 0,\n \"BYMINUTE\": 1,\n \"BYHOUR\": 2,\n \"BYDAY\": 3,\n \"BYMONTHDAY\": 4,\n \"BYYEARDAY\": 5,\n \"BYWEEKNO\": 6,\n \"BYMONTH\": 7,\n \"BYSETPOS\": 8\n };\n\n static _expandMap = {\n \"SECONDLY\": [1, 1, 1, 1, 1, 1, 1, 1],\n \"MINUTELY\": [2, 1, 1, 1, 1, 1, 1, 1],\n \"HOURLY\": [2, 2, 1, 1, 1, 1, 1, 1],\n \"DAILY\": [2, 2, 2, 1, 1, 1, 1, 1],\n \"WEEKLY\": [2, 2, 2, 2, 3, 3, 1, 1],\n \"MONTHLY\": [2, 2, 2, 2, 2, 3, 3, 1],\n \"YEARLY\": [2, 2, 2, 2, 2, 2, 2, 2]\n };\n\n static UNKNOWN = 0;\n static CONTRACT = 1;\n static EXPAND = 2;\n static ILLEGAL = 3;\n\n /**\n * Creates a new ICAL.RecurIterator instance. The options object may contain additional members\n * when resuming iteration from a previous run.\n *\n * @param {Object} options The iterator options\n * @param {Recur} options.rule The rule to iterate.\n * @param {Time} options.dtstart The start date of the event.\n * @param {Boolean=} options.initialized When true, assume that options are\n * from a previously constructed iterator. Initialization will not be\n * repeated.\n */\n constructor(options) {\n this.fromData(options);\n }\n\n /**\n * True when iteration is finished.\n * @type {Boolean}\n */\n completed = false;\n\n /**\n * The rule that is being iterated\n * @type {Recur}\n */\n rule = null;\n\n /**\n * The start date of the event being iterated.\n * @type {Time}\n */\n dtstart = null;\n\n /**\n * The last occurrence that was returned from the\n * {@link RecurIterator#next} method.\n * @type {Time}\n */\n last = null;\n\n /**\n * The sequence number from the occurrence\n * @type {Number}\n */\n occurrence_number = 0;\n\n /**\n * The indices used for the {@link ICAL.RecurIterator#by_data} object.\n * @type {Object}\n * @private\n */\n by_indices = null;\n\n /**\n * If true, the iterator has already been initialized\n * @type {Boolean}\n * @private\n */\n initialized = false;\n\n /**\n * The initializd by-data.\n * @type {Object}\n * @private\n */\n by_data = null;\n\n /**\n * The expanded yeardays\n * @type {Array}\n * @private\n */\n days = null;\n\n /**\n * The index in the {@link ICAL.RecurIterator#days} array.\n * @type {Number}\n * @private\n */\n days_index = 0;\n\n /**\n * Initialize the recurrence iterator from the passed data object. This\n * method is usually not called directly, you can initialize the iterator\n * through the constructor.\n *\n * @param {Object} options The iterator options\n * @param {Recur} options.rule The rule to iterate.\n * @param {Time} options.dtstart The start date of the event.\n * @param {Boolean=} options.initialized When true, assume that options are\n * from a previously constructed iterator. Initialization will not be\n * repeated.\n */\n fromData(options) {\n this.rule = formatClassType(options.rule, Recur);\n\n if (!this.rule) {\n throw new Error('iterator requires a (ICAL.Recur) rule');\n }\n\n this.dtstart = formatClassType(options.dtstart, Time);\n\n if (!this.dtstart) {\n throw new Error('iterator requires a (ICAL.Time) dtstart');\n }\n\n if (options.by_data) {\n this.by_data = options.by_data;\n } else {\n this.by_data = clone(this.rule.parts, true);\n }\n\n if (options.occurrence_number)\n this.occurrence_number = options.occurrence_number;\n\n this.days = options.days || [];\n if (options.last) {\n this.last = formatClassType(options.last, Time);\n }\n\n this.by_indices = options.by_indices;\n\n if (!this.by_indices) {\n this.by_indices = {\n \"BYSECOND\": 0,\n \"BYMINUTE\": 0,\n \"BYHOUR\": 0,\n \"BYDAY\": 0,\n \"BYMONTH\": 0,\n \"BYWEEKNO\": 0,\n \"BYMONTHDAY\": 0\n };\n }\n\n this.initialized = options.initialized || false;\n\n if (!this.initialized) {\n try {\n this.init();\n } catch (e) {\n if (e instanceof InvalidRecurrenceRuleError) {\n // Init may error if there are no possible recurrence instances from\n // the rule, but we don't want to bubble this error up. Instead, we\n // create an empty iterator.\n this.completed = true;\n } else {\n // Propagate other errors to consumers.\n throw e;\n }\n }\n }\n }\n\n /**\n * Initialize the iterator\n * @private\n */\n init() {\n this.initialized = true;\n this.last = this.dtstart.clone();\n let parts = this.by_data;\n\n if (\"BYDAY\" in parts) {\n // libical does this earlier when the rule is loaded, but we postpone to\n // now so we can preserve the original order.\n this.sort_byday_rules(parts.BYDAY);\n }\n\n // The BYYEARDAY may only appear with BYDAY\n if (\"BYYEARDAY\" in parts) {\n if (\"BYMONTH\" in parts || \"BYWEEKNO\" in parts ||\n \"BYMONTHDAY\" in parts) {\n throw new Error(\"Invalid BYYEARDAY rule\");\n }\n }\n\n // BYWEEKNO and BYMONTHDAY rule parts may not both appear\n if (\"BYWEEKNO\" in parts && \"BYMONTHDAY\" in parts) {\n throw new Error(\"BYWEEKNO does not fit to BYMONTHDAY\");\n }\n\n // For MONTHLY recurrences (FREQ=MONTHLY) neither BYYEARDAY nor\n // BYWEEKNO may appear.\n if (this.rule.freq == \"MONTHLY\" &&\n (\"BYYEARDAY\" in parts || \"BYWEEKNO\" in parts)) {\n throw new Error(\"For MONTHLY recurrences neither BYYEARDAY nor BYWEEKNO may appear\");\n }\n\n // For WEEKLY recurrences (FREQ=WEEKLY) neither BYMONTHDAY nor\n // BYYEARDAY may appear.\n if (this.rule.freq == \"WEEKLY\" &&\n (\"BYYEARDAY\" in parts || \"BYMONTHDAY\" in parts)) {\n throw new Error(\"For WEEKLY recurrences neither BYMONTHDAY nor BYYEARDAY may appear\");\n }\n\n // BYYEARDAY may only appear in YEARLY rules\n if (this.rule.freq != \"YEARLY\" && \"BYYEARDAY\" in parts) {\n throw new Error(\"BYYEARDAY may only appear in YEARLY rules\");\n }\n\n this.last.second = this.setup_defaults(\"BYSECOND\", \"SECONDLY\", this.dtstart.second);\n this.last.minute = this.setup_defaults(\"BYMINUTE\", \"MINUTELY\", this.dtstart.minute);\n this.last.hour = this.setup_defaults(\"BYHOUR\", \"HOURLY\", this.dtstart.hour);\n this.last.day = this.setup_defaults(\"BYMONTHDAY\", \"DAILY\", this.dtstart.day);\n this.last.month = this.setup_defaults(\"BYMONTH\", \"MONTHLY\", this.dtstart.month);\n\n if (this.rule.freq == \"WEEKLY\") {\n if (\"BYDAY\" in parts) {\n let [, dow] = this.ruleDayOfWeek(parts.BYDAY[0], this.rule.wkst);\n let wkdy = dow - this.last.dayOfWeek(this.rule.wkst);\n if ((this.last.dayOfWeek(this.rule.wkst) < dow && wkdy >= 0) || wkdy < 0) {\n // Initial time is after first day of BYDAY data\n this.last.day += wkdy;\n }\n } else {\n let dayName = Recur.numericDayToIcalDay(this.dtstart.dayOfWeek());\n parts.BYDAY = [dayName];\n }\n }\n\n if (this.rule.freq == \"YEARLY\") {\n // Some yearly recurrence rules may be specific enough to not actually\n // occur on a yearly basis, e.g. the 29th day of February or the fifth\n // Monday of a given month. The standard isn't clear on the intended\n // behavior in these cases, but `libical` at least will iterate until it\n // finds a matching year.\n // CAREFUL: Some rules may specify an occurrence that can never happen,\n // e.g. the first Monday of April so long as it falls on the 15th\n // through the 21st. Detecting these is non-trivial, so ensure that we\n // stop iterating at some point.\n const untilYear = this.rule.until ? this.rule.until.year : 20000;\n while (this.last.year <= untilYear) {\n this.expand_year_days(this.last.year);\n if (this.days.length > 0) {\n break;\n }\n this.increment_year(this.rule.interval);\n }\n\n if (this.days.length == 0) {\n throw new InvalidRecurrenceRuleError();\n }\n\n // If there's no occurrence in this year, try the following years. This\n // would only happen looking for day 366 or -366.\n if (!this._nextByYearDay() && !this.next_year() && !this.next_year() && !this.next_year()) {\n // This should not be possible, but just in case it is, stop.\n throw new InvalidRecurrenceRuleError();\n }\n }\n\n if (this.rule.freq == \"MONTHLY\") {\n if (this.has_by_data(\"BYDAY\")) {\n let tempLast = null;\n let initLast = this.last.clone();\n let daysInMonth = Time.daysInMonth(this.last.month, this.last.year);\n\n // Check every weekday in BYDAY with relative dow and pos.\n for (let bydow of this.by_data.BYDAY) {\n this.last = initLast.clone();\n let [pos, dow] = this.ruleDayOfWeek(bydow);\n let dayOfMonth = this.last.nthWeekDay(dow, pos);\n\n // If |pos| >= 6, the byday is invalid for a monthly rule.\n if (pos >= 6 || pos <= -6) {\n throw new Error(\"Malformed values in BYDAY part\");\n }\n\n // If a Byday with pos=+/-5 is not in the current month it\n // must be searched in the next months.\n if (dayOfMonth > daysInMonth || dayOfMonth <= 0) {\n // Skip if we have already found a \"last\" in this month.\n if (tempLast && tempLast.month == initLast.month) {\n continue;\n }\n while (dayOfMonth > daysInMonth || dayOfMonth <= 0) {\n this.increment_month();\n daysInMonth = Time.daysInMonth(this.last.month, this.last.year);\n dayOfMonth = this.last.nthWeekDay(dow, pos);\n }\n }\n\n this.last.day = dayOfMonth;\n if (!tempLast || this.last.compare(tempLast) < 0) {\n tempLast = this.last.clone();\n }\n }\n this.last = tempLast.clone();\n\n //XXX: This feels like a hack, but we need to initialize\n // the BYMONTHDAY case correctly and byDayAndMonthDay handles\n // this case. It accepts a special flag which will avoid incrementing\n // the initial value without the flag days that match the start time\n // would be missed.\n if (this.has_by_data('BYMONTHDAY')) {\n this._byDayAndMonthDay(true);\n }\n\n if (this.last.day > daysInMonth || this.last.day == 0) {\n throw new Error(\"Malformed values in BYDAY part\");\n }\n } else if (this.has_by_data(\"BYMONTHDAY\")) {\n // Change the day value so that normalisation won't change the month.\n this.last.day = 1;\n\n // Get a sorted list of days in the starting month that match the rule.\n let normalized = this.normalizeByMonthDayRules(\n this.last.year,\n this.last.month,\n this.rule.parts.BYMONTHDAY\n ).filter(d => d >= this.last.day);\n\n if (normalized.length) {\n // There's at least one valid day, use it.\n this.last.day = normalized[0];\n this.by_data.BYMONTHDAY = normalized;\n } else {\n // There's no occurrence in this month, find the next valid month.\n // The longest possible sequence of skipped months is February-April-June,\n // so we might need to call next_month up to three times.\n if (!this.next_month() && !this.next_month() && !this.next_month()) {\n throw new InvalidRecurrenceRuleError();\n }\n }\n }\n }\n }\n\n /**\n * Retrieve the next occurrence from the iterator.\n * @return {Time}\n */\n next(again = false) {\n let before = (this.last ? this.last.clone() : null);\n\n if ((this.rule.count && this.occurrence_number >= this.rule.count) ||\n (this.rule.until && this.last.compare(this.rule.until) > 0)) {\n this.completed = true;\n }\n\n if (this.completed) {\n return null;\n }\n\n if (this.occurrence_number == 0 && this.last.compare(this.dtstart) >= 0) {\n // First of all, give the instance that was initialized\n this.occurrence_number++;\n return this.last;\n }\n\n let valid;\n let invalid_count = 0;\n do {\n valid = 1;\n\n switch (this.rule.freq) {\n case \"SECONDLY\":\n this.next_second();\n break;\n case \"MINUTELY\":\n this.next_minute();\n break;\n case \"HOURLY\":\n this.next_hour();\n break;\n case \"DAILY\":\n this.next_day();\n break;\n case \"WEEKLY\":\n this.next_week();\n break;\n case \"MONTHLY\":\n valid = this.next_month();\n if (valid) {\n invalid_count = 0;\n } else if (++invalid_count == 336) {\n // We've been through all 91 month variations and not found a recurrence. Stop.\n // (12 months and 29-day February × 7 starting days.)\n this.completed = true;\n return null;\n }\n break;\n case \"YEARLY\":\n valid = this.next_year();\n if (valid) {\n invalid_count = 0;\n } else if (++invalid_count == 28) {\n // We've been through all 14 year variations and not found a recurrence. Stop.\n // (365-day and 366-day years × 7 starting days.)\n this.completed = true;\n return null;\n }\n break;\n\n default:\n return null;\n }\n } while (!this.check_contracting_rules() ||\n this.last.compare(this.dtstart) < 0 ||\n !valid);\n\n if (this.last.compare(before) == 0) {\n if (again) {\n throw new Error(\"Same occurrence found twice, protecting you from death by recursion\");\n }\n this.next(true);\n }\n\n if (this.rule.until && this.last.compare(this.rule.until) > 0) {\n this.completed = true;\n return null;\n } else {\n this.occurrence_number++;\n return this.last;\n }\n }\n\n next_second() {\n return this.next_generic(\"BYSECOND\", \"SECONDLY\", \"second\", \"minute\");\n }\n\n increment_second(inc) {\n return this.increment_generic(inc, \"second\", 60, \"minute\");\n }\n\n next_minute() {\n return this.next_generic(\"BYMINUTE\", \"MINUTELY\",\n \"minute\", \"hour\", \"next_second\");\n }\n\n increment_minute(inc) {\n return this.increment_generic(inc, \"minute\", 60, \"hour\");\n }\n\n next_hour() {\n return this.next_generic(\"BYHOUR\", \"HOURLY\", \"hour\",\n \"monthday\", \"next_minute\");\n }\n\n increment_hour(inc) {\n this.increment_generic(inc, \"hour\", 24, \"monthday\");\n }\n\n next_day() {\n let this_freq = (this.rule.freq == \"DAILY\");\n\n if (this.next_hour() == 0) {\n return 0;\n }\n\n if (this_freq) {\n this.increment_monthday(this.rule.interval);\n } else {\n this.increment_monthday(1);\n }\n\n return 0;\n }\n\n next_week() {\n let end_of_data = 0;\n\n if (this.next_weekday_by_week() == 0) {\n return end_of_data;\n }\n\n if (this.has_by_data(\"BYWEEKNO\")) {\n this.by_indices.BYWEEKNO++;\n\n if (this.by_indices.BYWEEKNO == this.by_data.BYWEEKNO.length) {\n this.by_indices.BYWEEKNO = 0;\n end_of_data = 1;\n }\n\n // HACK should be first month of the year\n this.last.month = 1;\n this.last.day = 1;\n\n let week_no = this.by_data.BYWEEKNO[this.by_indices.BYWEEKNO];\n\n this.last.day += 7 * week_no;\n\n if (end_of_data) {\n this.increment_year(1);\n }\n } else {\n // Jump to the next week\n this.increment_monthday(7 * this.rule.interval);\n }\n\n return end_of_data;\n }\n\n /**\n * Normalize each by day rule for a given year/month.\n * Takes into account ordering and negative rules\n *\n * @private\n * @param {Number} year Current year.\n * @param {Number} month Current month.\n * @param {Array} rules Array of rules.\n *\n * @return {Array} sorted and normalized rules.\n * Negative rules will be expanded to their\n * correct positive values for easier processing.\n */\n normalizeByMonthDayRules(year, month, rules) {\n let daysInMonth = Time.daysInMonth(month, year);\n\n // XXX: This is probably bad for performance to allocate\n // a new array for each month we scan, if possible\n // we should try to optimize this...\n let newRules = [];\n\n let ruleIdx = 0;\n let len = rules.length;\n let rule;\n\n for (; ruleIdx < len; ruleIdx++) {\n rule = parseInt(rules[ruleIdx], 10);\n if (isNaN(rule)) {\n throw new Error('Invalid BYMONTHDAY value');\n }\n\n // if this rule falls outside of given\n // month discard it.\n if (Math.abs(rule) > daysInMonth) {\n continue;\n }\n\n // negative case\n if (rule < 0) {\n // we add (not subtract it is a negative number)\n // one from the rule because 1 === last day of month\n rule = daysInMonth + (rule + 1);\n } else if (rule === 0) {\n // skip zero: it is invalid.\n continue;\n }\n\n // only add unique items...\n if (newRules.indexOf(rule) === -1) {\n newRules.push(rule);\n }\n\n }\n\n // unique and sort\n return newRules.sort(function(a, b) { return a - b; });\n }\n\n /**\n * NOTES:\n * We are given a list of dates in the month (BYMONTHDAY) (23, etc..)\n * Also we are given a list of days (BYDAY) (MO, 2SU, etc..) when\n * both conditions match a given date (this.last.day) iteration stops.\n *\n * @private\n * @param {Boolean=} isInit When given true will not increment the\n * current day (this.last).\n */\n _byDayAndMonthDay(isInit) {\n let byMonthDay; // setup in initMonth\n let byDay = this.by_data.BYDAY;\n\n let date;\n let dateIdx = 0;\n let dateLen; // setup in initMonth\n let dayLen = byDay.length;\n\n // we are not valid by default\n let dataIsValid = 0;\n\n let daysInMonth;\n let self = this;\n // we need a copy of this, because a DateTime gets normalized\n // automatically if the day is out of range. At some points we\n // set the last day to 0 to start counting.\n let lastDay = this.last.day;\n\n function initMonth() {\n daysInMonth = Time.daysInMonth(\n self.last.month, self.last.year\n );\n\n byMonthDay = self.normalizeByMonthDayRules(\n self.last.year,\n self.last.month,\n self.by_data.BYMONTHDAY\n );\n\n dateLen = byMonthDay.length;\n\n // For the case of more than one occurrence in one month\n // we have to be sure to start searching after the last\n // found date or at the last BYMONTHDAY, unless we are\n // initializing the iterator because in this case we have\n // to consider the last found date too.\n while (byMonthDay[dateIdx] <= lastDay &&\n !(isInit && byMonthDay[dateIdx] == lastDay) &&\n dateIdx < dateLen - 1) {\n dateIdx++;\n }\n }\n\n function nextMonth() {\n // since the day is incremented at the start\n // of the loop below, we need to start at 0\n lastDay = 0;\n self.increment_month();\n dateIdx = 0;\n initMonth();\n }\n\n initMonth();\n\n // should come after initMonth\n if (isInit) {\n lastDay -= 1;\n }\n\n // Use a counter to avoid an infinite loop with malformed rules.\n // Stop checking after 4 years so we consider also a leap year.\n let monthsCounter = 48;\n\n while (!dataIsValid && monthsCounter) {\n monthsCounter--;\n // increment the current date. This is really\n // important otherwise we may fall into the infinite\n // loop trap. The initial date takes care of the case\n // where the current date is the date we are looking\n // for.\n date = lastDay + 1;\n\n if (date > daysInMonth) {\n nextMonth();\n continue;\n }\n\n // find next date\n let next = byMonthDay[dateIdx++];\n\n // this logic is dependent on the BYMONTHDAYS\n // being in order (which is done by #normalizeByMonthDayRules)\n if (next >= date) {\n // if the next month day is in the future jump to it.\n lastDay = next;\n } else {\n // in this case the 'next' monthday has past\n // we must move to the month.\n nextMonth();\n continue;\n }\n\n // Now we can loop through the day rules to see\n // if one matches the current month date.\n for (let dayIdx = 0; dayIdx < dayLen; dayIdx++) {\n let parts = this.ruleDayOfWeek(byDay[dayIdx]);\n let pos = parts[0];\n let dow = parts[1];\n\n this.last.day = lastDay;\n if (this.last.isNthWeekDay(dow, pos)) {\n // when we find the valid one we can mark\n // the conditions as met and break the loop.\n // (Because we have this condition above\n // it will also break the parent loop).\n dataIsValid = 1;\n break;\n }\n }\n\n // It is completely possible that the combination\n // cannot be matched in the current month.\n // When we reach the end of possible combinations\n // in the current month we iterate to the next one.\n // since dateIdx is incremented right after getting\n // \"next\", we don't need dateLen -1 here.\n if (!dataIsValid && dateIdx === dateLen) {\n nextMonth();\n continue;\n }\n }\n\n if (monthsCounter <= 0) {\n // Checked 4 years without finding a Byday that matches\n // a Bymonthday. Maybe the rule is not correct.\n throw new Error(\"Malformed values in BYDAY combined with BYMONTHDAY parts\");\n }\n\n\n return dataIsValid;\n }\n\n next_month() {\n let data_valid = 1;\n\n if (this.next_hour() == 0) {\n return data_valid;\n }\n\n if (this.has_by_data(\"BYDAY\") && this.has_by_data(\"BYMONTHDAY\")) {\n data_valid = this._byDayAndMonthDay();\n } else if (this.has_by_data(\"BYDAY\")) {\n let daysInMonth = Time.daysInMonth(this.last.month, this.last.year);\n let setpos = 0;\n let setpos_total = 0;\n\n if (this.has_by_data(\"BYSETPOS\")) {\n let last_day = this.last.day;\n for (let day = 1; day <= daysInMonth; day++) {\n this.last.day = day;\n if (this.is_day_in_byday(this.last)) {\n setpos_total++;\n if (day <= last_day) {\n setpos++;\n }\n }\n }\n this.last.day = last_day;\n }\n\n data_valid = 0;\n let day;\n for (day = this.last.day + 1; day <= daysInMonth; day++) {\n this.last.day = day;\n\n if (this.is_day_in_byday(this.last)) {\n if (!this.has_by_data(\"BYSETPOS\") ||\n this.check_set_position(++setpos) ||\n this.check_set_position(setpos - setpos_total - 1)) {\n\n data_valid = 1;\n break;\n }\n }\n }\n\n if (day > daysInMonth) {\n this.last.day = 1;\n this.increment_month();\n\n if (this.is_day_in_byday(this.last)) {\n if (!this.has_by_data(\"BYSETPOS\") || this.check_set_position(1)) {\n data_valid = 1;\n }\n } else {\n data_valid = 0;\n }\n }\n } else if (this.has_by_data(\"BYMONTHDAY\")) {\n this.by_indices.BYMONTHDAY++;\n\n if (this.by_indices.BYMONTHDAY >= this.by_data.BYMONTHDAY.length) {\n this.by_indices.BYMONTHDAY = 0;\n this.increment_month();\n if (this.by_indices.BYMONTHDAY >= this.by_data.BYMONTHDAY.length) {\n return 0;\n }\n }\n\n let daysInMonth = Time.daysInMonth(this.last.month, this.last.year);\n let day = this.by_data.BYMONTHDAY[this.by_indices.BYMONTHDAY];\n\n if (day < 0) {\n day = daysInMonth + day + 1;\n }\n\n if (day > daysInMonth) {\n this.last.day = 1;\n data_valid = this.is_day_in_byday(this.last);\n } else {\n this.last.day = day;\n }\n } else {\n this.increment_month();\n let daysInMonth = Time.daysInMonth(this.last.month, this.last.year);\n if (this.by_data.BYMONTHDAY[0] > daysInMonth) {\n data_valid = 0;\n } else {\n this.last.day = this.by_data.BYMONTHDAY[0];\n }\n }\n\n return data_valid;\n }\n\n next_weekday_by_week() {\n let end_of_data = 0;\n\n if (this.next_hour() == 0) {\n return end_of_data;\n }\n\n if (!this.has_by_data(\"BYDAY\")) {\n return 1;\n }\n\n for (;;) {\n let tt = new Time();\n this.by_indices.BYDAY++;\n\n if (this.by_indices.BYDAY == Object.keys(this.by_data.BYDAY).length) {\n this.by_indices.BYDAY = 0;\n end_of_data = 1;\n }\n\n let coded_day = this.by_data.BYDAY[this.by_indices.BYDAY];\n let parts = this.ruleDayOfWeek(coded_day);\n let dow = parts[1];\n\n dow -= this.rule.wkst;\n\n if (dow < 0) {\n dow += 7;\n }\n\n tt.year = this.last.year;\n tt.month = this.last.month;\n tt.day = this.last.day;\n\n let startOfWeek = tt.startDoyWeek(this.rule.wkst);\n\n if (dow + startOfWeek < 1) {\n // The selected date is in the previous year\n if (!end_of_data) {\n continue;\n }\n }\n\n let next = Time.fromDayOfYear(startOfWeek + dow, this.last.year);\n\n /**\n * The normalization horrors below are due to\n * the fact that when the year/month/day changes\n * it can effect the other operations that come after.\n */\n this.last.year = next.year;\n this.last.month = next.month;\n this.last.day = next.day;\n\n return end_of_data;\n }\n }\n\n next_year() {\n if (this.next_hour() == 0) {\n return 0;\n }\n\n if (this.days.length == 0 || ++this.days_index == this.days.length) {\n this.days_index = 0;\n this.increment_year(this.rule.interval);\n if (this.has_by_data(\"BYMONTHDAY\")) {\n this.by_data.BYMONTHDAY = this.normalizeByMonthDayRules(\n this.last.year,\n this.last.month,\n this.rule.parts.BYMONTHDAY\n );\n }\n this.expand_year_days(this.last.year);\n if (this.days.length == 0) {\n return 0;\n }\n }\n\n return this._nextByYearDay();\n }\n\n _nextByYearDay() {\n let doy = this.days[this.days_index];\n let year = this.last.year;\n\n if (Math.abs(doy) == 366 && !Time.isLeapYear(this.last.year)) {\n return 0;\n }\n\n if (doy < 1) {\n // Time.fromDayOfYear(doy, year) indexes relative to the\n // start of the given year. That is different from the\n // semantics of BYYEARDAY where negative indexes are an\n // offset from the end of the given year.\n doy += 1;\n year += 1;\n }\n let next = Time.fromDayOfYear(doy, year);\n this.last.day = next.day;\n this.last.month = next.month;\n\n return 1;\n }\n\n /**\n * @param dow (eg: '1TU', '-1MO')\n * @param {weekDay=} aWeekStart The week start weekday\n * @return [pos, numericDow] (eg: [1, 3]) numericDow is relative to aWeekStart\n */\n ruleDayOfWeek(dow, aWeekStart) {\n let matches = dow.match(/([+-]?[0-9])?(MO|TU|WE|TH|FR|SA|SU)/);\n if (matches) {\n let pos = parseInt(matches[1] || 0, 10);\n dow = Recur.icalDayToNumericDay(matches[2], aWeekStart);\n return [pos, dow];\n } else {\n return [0, 0];\n }\n }\n\n next_generic(aRuleType, aInterval, aDateAttr, aFollowingAttr, aPreviousIncr) {\n let has_by_rule = (aRuleType in this.by_data);\n let this_freq = (this.rule.freq == aInterval);\n let end_of_data = 0;\n\n if (aPreviousIncr && this[aPreviousIncr]() == 0) {\n return end_of_data;\n }\n\n if (has_by_rule) {\n this.by_indices[aRuleType]++;\n let dta = this.by_data[aRuleType];\n\n if (this.by_indices[aRuleType] == dta.length) {\n this.by_indices[aRuleType] = 0;\n end_of_data = 1;\n }\n this.last[aDateAttr] = dta[this.by_indices[aRuleType]];\n } else if (this_freq) {\n this[\"increment_\" + aDateAttr](this.rule.interval);\n }\n\n if (has_by_rule && end_of_data && this_freq) {\n this[\"increment_\" + aFollowingAttr](1);\n }\n\n return end_of_data;\n }\n\n increment_monthday(inc) {\n for (let i = 0; i < inc; i++) {\n let daysInMonth = Time.daysInMonth(this.last.month, this.last.year);\n this.last.day++;\n\n if (this.last.day > daysInMonth) {\n this.last.day -= daysInMonth;\n this.increment_month();\n }\n }\n }\n\n increment_month() {\n this.last.day = 1;\n if (this.has_by_data(\"BYMONTH\")) {\n this.by_indices.BYMONTH++;\n\n if (this.by_indices.BYMONTH == this.by_data.BYMONTH.length) {\n this.by_indices.BYMONTH = 0;\n this.increment_year(1);\n }\n\n this.last.month = this.by_data.BYMONTH[this.by_indices.BYMONTH];\n } else {\n if (this.rule.freq == \"MONTHLY\") {\n this.last.month += this.rule.interval;\n } else {\n this.last.month++;\n }\n\n this.last.month--;\n let years = trunc(this.last.month / 12);\n this.last.month %= 12;\n this.last.month++;\n\n if (years != 0) {\n this.increment_year(years);\n }\n }\n\n if (this.has_by_data(\"BYMONTHDAY\")) {\n this.by_data.BYMONTHDAY = this.normalizeByMonthDayRules(\n this.last.year,\n this.last.month,\n this.rule.parts.BYMONTHDAY\n );\n }\n }\n\n increment_year(inc) {\n // Don't jump into the next month if this.last is Feb 29.\n this.last.day = 1;\n this.last.year += inc;\n }\n\n increment_generic(inc, aDateAttr, aFactor, aNextIncrement) {\n this.last[aDateAttr] += inc;\n let nextunit = trunc(this.last[aDateAttr] / aFactor);\n this.last[aDateAttr] %= aFactor;\n if (nextunit != 0) {\n this[\"increment_\" + aNextIncrement](nextunit);\n }\n }\n\n has_by_data(aRuleType) {\n return (aRuleType in this.rule.parts);\n }\n\n expand_year_days(aYear) {\n let t = new Time();\n this.days = [];\n\n // We need our own copy with a few keys set\n let parts = {};\n let rules = [\"BYDAY\", \"BYWEEKNO\", \"BYMONTHDAY\", \"BYMONTH\", \"BYYEARDAY\"];\n for (let part of rules) {\n if (part in this.rule.parts) {\n parts[part] = this.rule.parts[part];\n }\n }\n\n if (\"BYMONTH\" in parts && \"BYWEEKNO\" in parts) {\n let valid = 1;\n let validWeeks = {};\n t.year = aYear;\n t.isDate = true;\n\n for (let monthIdx = 0; monthIdx < this.by_data.BYMONTH.length; monthIdx++) {\n let month = this.by_data.BYMONTH[monthIdx];\n t.month = month;\n t.day = 1;\n let first_week = t.weekNumber(this.rule.wkst);\n t.day = Time.daysInMonth(month, aYear);\n let last_week = t.weekNumber(this.rule.wkst);\n for (monthIdx = first_week; monthIdx < last_week; monthIdx++) {\n validWeeks[monthIdx] = 1;\n }\n }\n\n for (let weekIdx = 0; weekIdx < this.by_data.BYWEEKNO.length && valid; weekIdx++) {\n let weekno = this.by_data.BYWEEKNO[weekIdx];\n if (weekno < 52) {\n valid &= validWeeks[weekIdx];\n } else {\n valid = 0;\n }\n }\n\n if (valid) {\n delete parts.BYMONTH;\n } else {\n delete parts.BYWEEKNO;\n }\n }\n\n let partCount = Object.keys(parts).length;\n\n if (partCount == 0) {\n let t1 = this.dtstart.clone();\n t1.year = this.last.year;\n this.days.push(t1.dayOfYear());\n } else if (partCount == 1 && \"BYMONTH\" in parts) {\n for (let month of this.by_data.BYMONTH) {\n let t2 = this.dtstart.clone();\n t2.year = aYear;\n t2.month = month;\n t2.isDate = true;\n this.days.push(t2.dayOfYear());\n }\n } else if (partCount == 1 && \"BYMONTHDAY\" in parts) {\n for (let monthday of this.by_data.BYMONTHDAY) {\n let t3 = this.dtstart.clone();\n if (monthday < 0) {\n let daysInMonth = Time.daysInMonth(t3.month, aYear);\n monthday = monthday + daysInMonth + 1;\n }\n t3.day = monthday;\n t3.year = aYear;\n t3.isDate = true;\n this.days.push(t3.dayOfYear());\n }\n } else if (partCount == 2 &&\n \"BYMONTHDAY\" in parts &&\n \"BYMONTH\" in parts) {\n for (let month of this.by_data.BYMONTH) {\n let daysInMonth = Time.daysInMonth(month, aYear);\n for (let monthday of this.by_data.BYMONTHDAY) {\n if (monthday < 0) {\n monthday = monthday + daysInMonth + 1;\n }\n t.day = monthday;\n t.month = month;\n t.year = aYear;\n t.isDate = true;\n\n this.days.push(t.dayOfYear());\n }\n }\n } else if (partCount == 1 && \"BYWEEKNO\" in parts) ; else if (partCount == 2 &&\n \"BYWEEKNO\" in parts &&\n \"BYMONTHDAY\" in parts) ; else if (partCount == 1 && \"BYDAY\" in parts) {\n this.days = this.days.concat(this.expand_by_day(aYear));\n } else if (partCount == 2 && \"BYDAY\" in parts && \"BYMONTH\" in parts) {\n for (let month of this.by_data.BYMONTH) {\n let daysInMonth = Time.daysInMonth(month, aYear);\n\n t.year = aYear;\n t.month = month;\n t.day = 1;\n t.isDate = true;\n\n let first_dow = t.dayOfWeek();\n let doy_offset = t.dayOfYear() - 1;\n\n t.day = daysInMonth;\n let last_dow = t.dayOfWeek();\n\n if (this.has_by_data(\"BYSETPOS\")) {\n let by_month_day = [];\n for (let day = 1; day <= daysInMonth; day++) {\n t.day = day;\n if (this.is_day_in_byday(t)) {\n by_month_day.push(day);\n }\n }\n\n for (let spIndex = 0; spIndex < by_month_day.length; spIndex++) {\n if (this.check_set_position(spIndex + 1) ||\n this.check_set_position(spIndex - by_month_day.length)) {\n this.days.push(doy_offset + by_month_day[spIndex]);\n }\n }\n } else {\n for (let coded_day of this.by_data.BYDAY) {\n let bydayParts = this.ruleDayOfWeek(coded_day);\n let pos = bydayParts[0];\n let dow = bydayParts[1];\n let month_day;\n\n let first_matching_day = ((dow + 7 - first_dow) % 7) + 1;\n let last_matching_day = daysInMonth - ((last_dow + 7 - dow) % 7);\n\n if (pos == 0) {\n for (let day = first_matching_day; day <= daysInMonth; day += 7) {\n this.days.push(doy_offset + day);\n }\n } else if (pos > 0) {\n month_day = first_matching_day + (pos - 1) * 7;\n\n if (month_day <= daysInMonth) {\n this.days.push(doy_offset + month_day);\n }\n } else {\n month_day = last_matching_day + (pos + 1) * 7;\n\n if (month_day > 0) {\n this.days.push(doy_offset + month_day);\n }\n }\n }\n }\n }\n // Return dates in order of occurrence (1,2,3,...) instead\n // of by groups of weekdays (1,8,15,...,2,9,16,...).\n this.days.sort(function(a, b) { return a - b; }); // Comparator function allows to sort numbers.\n } else if (partCount == 2 && \"BYDAY\" in parts && \"BYMONTHDAY\" in parts) {\n let expandedDays = this.expand_by_day(aYear);\n\n for (let day of expandedDays) {\n let tt = Time.fromDayOfYear(day, aYear);\n if (this.by_data.BYMONTHDAY.indexOf(tt.day) >= 0) {\n this.days.push(day);\n }\n }\n } else if (partCount == 3 &&\n \"BYDAY\" in parts &&\n \"BYMONTHDAY\" in parts &&\n \"BYMONTH\" in parts) {\n let expandedDays = this.expand_by_day(aYear);\n\n for (let day of expandedDays) {\n let tt = Time.fromDayOfYear(day, aYear);\n\n if (this.by_data.BYMONTH.indexOf(tt.month) >= 0 &&\n this.by_data.BYMONTHDAY.indexOf(tt.day) >= 0) {\n this.days.push(day);\n }\n }\n } else if (partCount == 2 && \"BYDAY\" in parts && \"BYWEEKNO\" in parts) {\n let expandedDays = this.expand_by_day(aYear);\n\n for (let day of expandedDays) {\n let tt = Time.fromDayOfYear(day, aYear);\n let weekno = tt.weekNumber(this.rule.wkst);\n\n if (this.by_data.BYWEEKNO.indexOf(weekno)) {\n this.days.push(day);\n }\n }\n } else if (partCount == 3 &&\n \"BYDAY\" in parts &&\n \"BYWEEKNO\" in parts &&\n \"BYMONTHDAY\" in parts) ; else if (partCount == 1 && \"BYYEARDAY\" in parts) {\n this.days = this.days.concat(this.by_data.BYYEARDAY);\n } else if (partCount == 2 && \"BYYEARDAY\" in parts && \"BYDAY\" in parts) {\n let daysInYear = Time.isLeapYear(aYear) ? 366 : 365;\n let expandedDays = new Set(this.expand_by_day(aYear));\n\n for (let doy of this.by_data.BYYEARDAY) {\n if (doy < 0) {\n doy += daysInYear + 1;\n }\n\n if (expandedDays.has(doy)) {\n this.days.push(doy);\n }\n }\n } else {\n this.days = [];\n }\n\n let daysInYear = Time.isLeapYear(aYear) ? 366 : 365;\n this.days.sort((a, b) => {\n if (a < 0) a += daysInYear + 1;\n if (b < 0) b += daysInYear + 1;\n return a - b;\n });\n\n return 0;\n }\n\n expand_by_day(aYear) {\n\n let days_list = [];\n let tmp = this.last.clone();\n\n tmp.year = aYear;\n tmp.month = 1;\n tmp.day = 1;\n tmp.isDate = true;\n\n let start_dow = tmp.dayOfWeek();\n\n tmp.month = 12;\n tmp.day = 31;\n tmp.isDate = true;\n\n let end_dow = tmp.dayOfWeek();\n let end_year_day = tmp.dayOfYear();\n\n for (let day of this.by_data.BYDAY) {\n let parts = this.ruleDayOfWeek(day);\n let pos = parts[0];\n let dow = parts[1];\n\n if (pos == 0) {\n let tmp_start_doy = ((dow + 7 - start_dow) % 7) + 1;\n\n for (let doy = tmp_start_doy; doy <= end_year_day; doy += 7) {\n days_list.push(doy);\n }\n\n } else if (pos > 0) {\n let first;\n if (dow >= start_dow) {\n first = dow - start_dow + 1;\n } else {\n first = dow - start_dow + 8;\n }\n\n days_list.push(first + (pos - 1) * 7);\n } else {\n let last;\n pos = -pos;\n\n if (dow <= end_dow) {\n last = end_year_day - end_dow + dow;\n } else {\n last = end_year_day - end_dow + dow - 7;\n }\n\n days_list.push(last - (pos - 1) * 7);\n }\n }\n return days_list;\n }\n\n is_day_in_byday(tt) {\n if (this.by_data.BYDAY) {\n for (let day of this.by_data.BYDAY) {\n let parts = this.ruleDayOfWeek(day);\n let pos = parts[0];\n let dow = parts[1];\n let this_dow = tt.dayOfWeek();\n\n if ((pos == 0 && dow == this_dow) ||\n (tt.nthWeekDay(dow, pos) == tt.day)) {\n return 1;\n }\n }\n }\n\n return 0;\n }\n\n /**\n * Checks if given value is in BYSETPOS.\n *\n * @private\n * @param {Numeric} aPos position to check for.\n * @return {Boolean} false unless BYSETPOS rules exist\n * and the given value is present in rules.\n */\n check_set_position(aPos) {\n if (this.has_by_data('BYSETPOS')) {\n let idx = this.by_data.BYSETPOS.indexOf(aPos);\n // negative numbers are not false-y\n return idx !== -1;\n }\n return false;\n }\n\n sort_byday_rules(aRules) {\n for (let i = 0; i < aRules.length; i++) {\n for (let j = 0; j < i; j++) {\n let one = this.ruleDayOfWeek(aRules[j], this.rule.wkst)[1];\n let two = this.ruleDayOfWeek(aRules[i], this.rule.wkst)[1];\n\n if (one > two) {\n let tmp = aRules[i];\n aRules[i] = aRules[j];\n aRules[j] = tmp;\n }\n }\n }\n }\n\n check_contract_restriction(aRuleType, v) {\n let indexMapValue = RecurIterator._indexMap[aRuleType];\n let ruleMapValue = RecurIterator._expandMap[this.rule.freq][indexMapValue];\n let pass = false;\n\n if (aRuleType in this.by_data &&\n ruleMapValue == RecurIterator.CONTRACT) {\n\n let ruleType = this.by_data[aRuleType];\n\n for (let bydata of ruleType) {\n if (bydata == v) {\n pass = true;\n break;\n }\n }\n } else {\n // Not a contracting byrule or has no data, test passes\n pass = true;\n }\n return pass;\n }\n\n check_contracting_rules() {\n let dow = this.last.dayOfWeek();\n let weekNo = this.last.weekNumber(this.rule.wkst);\n let doy = this.last.dayOfYear();\n\n return (this.check_contract_restriction(\"BYSECOND\", this.last.second) &&\n this.check_contract_restriction(\"BYMINUTE\", this.last.minute) &&\n this.check_contract_restriction(\"BYHOUR\", this.last.hour) &&\n this.check_contract_restriction(\"BYDAY\", Recur.numericDayToIcalDay(dow)) &&\n this.check_contract_restriction(\"BYWEEKNO\", weekNo) &&\n this.check_contract_restriction(\"BYMONTHDAY\", this.last.day) &&\n this.check_contract_restriction(\"BYMONTH\", this.last.month) &&\n this.check_contract_restriction(\"BYYEARDAY\", doy));\n }\n\n setup_defaults(aRuleType, req, deftime) {\n let indexMapValue = RecurIterator._indexMap[aRuleType];\n let ruleMapValue = RecurIterator._expandMap[this.rule.freq][indexMapValue];\n\n if (ruleMapValue != RecurIterator.CONTRACT) {\n if (!(aRuleType in this.by_data)) {\n this.by_data[aRuleType] = [deftime];\n }\n if (this.rule.freq != req) {\n return this.by_data[aRuleType][0];\n }\n }\n return deftime;\n }\n\n /**\n * Convert iterator into a serialize-able object. Will preserve current\n * iteration sequence to ensure the seamless continuation of the recurrence\n * rule.\n * @return {Object}\n */\n toJSON() {\n let result = Object.create(null);\n\n result.initialized = this.initialized;\n result.rule = this.rule.toJSON();\n result.dtstart = this.dtstart.toJSON();\n result.by_data = this.by_data;\n result.days = this.days;\n result.last = this.last.toJSON();\n result.by_indices = this.by_indices;\n result.occurrence_number = this.occurrence_number;\n\n return result;\n }\n}\n\n/**\n * An error indicating that a recurrence rule is invalid and produces no\n * occurrences.\n *\n * @extends {Error}\n * @class\n */\nclass InvalidRecurrenceRuleError extends Error {\n constructor() {\n super(\"Recurrence rule has no valid occurrences\");\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n *\n * @ignore\n * @typedef {import(\"./types.js\").weekDay} weekDay\n * Imports the 'weekDay' type from the \"types.js\" module\n * @typedef {import(\"./types.js\").frequencyValues} frequencyValues\n * Imports the 'frequencyValues' type from the \"types.js\" module\n */\n\nconst VALID_DAY_NAMES = /^(SU|MO|TU|WE|TH|FR|SA)$/;\nconst VALID_BYDAY_PART = /^([+-])?(5[0-3]|[1-4][0-9]|[1-9])?(SU|MO|TU|WE|TH|FR|SA)$/;\nconst DOW_MAP = {\n SU: Time.SUNDAY,\n MO: Time.MONDAY,\n TU: Time.TUESDAY,\n WE: Time.WEDNESDAY,\n TH: Time.THURSDAY,\n FR: Time.FRIDAY,\n SA: Time.SATURDAY\n};\n\nconst REVERSE_DOW_MAP = Object.fromEntries(Object.entries(DOW_MAP).map(entry => entry.reverse()));\n\nconst ALLOWED_FREQ = ['SECONDLY', 'MINUTELY', 'HOURLY',\n 'DAILY', 'WEEKLY', 'MONTHLY', 'YEARLY'];\n\n/**\n * This class represents the \"recur\" value type, used for example by RRULE. It provides methods to\n * calculate occurrences among others.\n *\n * @memberof ICAL\n */\nclass Recur {\n /**\n * Creates a new {@link ICAL.Recur} instance from the passed string.\n *\n * @param {String} string The string to parse\n * @return {Recur} The created recurrence instance\n */\n static fromString(string) {\n let data = this._stringToData(string, false);\n return new Recur(data);\n }\n\n /**\n * Creates a new {@link ICAL.Recur} instance using members from the passed\n * data object.\n *\n * @param {Object} aData An object with members of the recurrence\n * @param {frequencyValues=} aData.freq The frequency value\n * @param {Number=} aData.interval The INTERVAL value\n * @param {weekDay=} aData.wkst The week start value\n * @param {Time=} aData.until The end of the recurrence set\n * @param {Number=} aData.count The number of occurrences\n * @param {Array.=} aData.bysecond The seconds for the BYSECOND part\n * @param {Array.=} aData.byminute The minutes for the BYMINUTE part\n * @param {Array.=} aData.byhour The hours for the BYHOUR part\n * @param {Array.=} aData.byday The BYDAY values\n * @param {Array.=} aData.bymonthday The days for the BYMONTHDAY part\n * @param {Array.=} aData.byyearday The days for the BYYEARDAY part\n * @param {Array.=} aData.byweekno The weeks for the BYWEEKNO part\n * @param {Array.=} aData.bymonth The month for the BYMONTH part\n * @param {Array.=} aData.bysetpos The positionals for the BYSETPOS part\n */\n static fromData(aData) {\n return new Recur(aData);\n }\n\n /**\n * Converts a recurrence string to a data object, suitable for the fromData\n * method.\n *\n * @private\n * @param {String} string The string to parse\n * @param {Boolean} fmtIcal If true, the string is considered to be an\n * iCalendar string\n * @return {Recur} The recurrence instance\n */\n static _stringToData(string, fmtIcal) {\n let dict = Object.create(null);\n\n // split is slower in FF but fast enough.\n // v8 however this is faster then manual split?\n let values = string.split(';');\n let len = values.length;\n\n for (let i = 0; i < len; i++) {\n let parts = values[i].split('=');\n let ucname = parts[0].toUpperCase();\n let lcname = parts[0].toLowerCase();\n let name = (fmtIcal ? lcname : ucname);\n let value = parts[1];\n\n if (ucname in partDesign) {\n let partArr = value.split(',');\n let partSet = new Set();\n\n for (let part of partArr) {\n partSet.add(partDesign[ucname](part));\n }\n partArr = [...partSet];\n\n dict[name] = (partArr.length == 1 ? partArr[0] : partArr);\n } else if (ucname in optionDesign) {\n optionDesign[ucname](value, dict, fmtIcal);\n } else {\n // Don't swallow unknown values. Just set them as they are.\n dict[lcname] = value;\n }\n }\n\n return dict;\n }\n\n /**\n * Convert an ical representation of a day (SU, MO, etc..)\n * into a numeric value of that day.\n *\n * @param {String} string The iCalendar day name\n * @param {weekDay=} aWeekStart\n * The week start weekday, defaults to SUNDAY\n * @return {Number} Numeric value of given day\n */\n static icalDayToNumericDay(string, aWeekStart) {\n //XXX: this is here so we can deal\n // with possibly invalid string values.\n let firstDow = aWeekStart || Time.SUNDAY;\n return ((DOW_MAP[string] - firstDow + 7) % 7) + 1;\n }\n\n /**\n * Convert a numeric day value into its ical representation (SU, MO, etc..)\n *\n * @param {Number} num Numeric value of given day\n * @param {weekDay=} aWeekStart\n * The week start weekday, defaults to SUNDAY\n * @return {String} The ICAL day value, e.g SU,MO,...\n */\n static numericDayToIcalDay(num, aWeekStart) {\n //XXX: this is here so we can deal with possibly invalid number values.\n // Also, this allows consistent mapping between day numbers and day\n // names for external users.\n let firstDow = aWeekStart || Time.SUNDAY;\n let dow = (num + firstDow - Time.SUNDAY);\n if (dow > 7) {\n dow -= 7;\n }\n return REVERSE_DOW_MAP[dow];\n }\n\n /**\n * Create a new instance of the Recur class.\n *\n * @param {Object} data An object with members of the recurrence\n * @param {frequencyValues=} data.freq The frequency value\n * @param {Number=} data.interval The INTERVAL value\n * @param {weekDay=} data.wkst The week start value\n * @param {Time=} data.until The end of the recurrence set\n * @param {Number=} data.count The number of occurrences\n * @param {Array.=} data.bysecond The seconds for the BYSECOND part\n * @param {Array.=} data.byminute The minutes for the BYMINUTE part\n * @param {Array.=} data.byhour The hours for the BYHOUR part\n * @param {Array.=} data.byday The BYDAY values\n * @param {Array.=} data.bymonthday The days for the BYMONTHDAY part\n * @param {Array.=} data.byyearday The days for the BYYEARDAY part\n * @param {Array.=} data.byweekno The weeks for the BYWEEKNO part\n * @param {Array.=} data.bymonth The month for the BYMONTH part\n * @param {Array.=} data.bysetpos The positionals for the BYSETPOS part\n */\n constructor(data) {\n this.wrappedJSObject = this;\n this.parts = {};\n\n if (data && typeof(data) === 'object') {\n this.fromData(data);\n }\n }\n\n /**\n * An object holding the BY-parts of the recurrence rule\n * @memberof ICAL.Recur\n * @typedef {Object} byParts\n * @property {Array.=} BYSECOND The seconds for the BYSECOND part\n * @property {Array.=} BYMINUTE The minutes for the BYMINUTE part\n * @property {Array.=} BYHOUR The hours for the BYHOUR part\n * @property {Array.=} BYDAY The BYDAY values\n * @property {Array.=} BYMONTHDAY The days for the BYMONTHDAY part\n * @property {Array.=} BYYEARDAY The days for the BYYEARDAY part\n * @property {Array.=} BYWEEKNO The weeks for the BYWEEKNO part\n * @property {Array.=} BYMONTH The month for the BYMONTH part\n * @property {Array.=} BYSETPOS The positionals for the BYSETPOS part\n */\n\n /**\n * An object holding the BY-parts of the recurrence rule\n * @type {byParts}\n */\n parts = null;\n\n /**\n * The interval value for the recurrence rule.\n * @type {Number}\n */\n interval = 1;\n\n /**\n * The week start day\n *\n * @type {weekDay}\n * @default ICAL.Time.MONDAY\n */\n wkst = Time.MONDAY;\n\n /**\n * The end of the recurrence\n * @type {?Time}\n */\n until = null;\n\n /**\n * The maximum number of occurrences\n * @type {?Number}\n */\n count = null;\n\n /**\n * The frequency value.\n * @type {frequencyValues}\n */\n freq = null;\n\n /**\n * The class identifier.\n * @constant\n * @type {String}\n * @default \"icalrecur\"\n */\n icalclass = \"icalrecur\";\n\n /**\n * The type name, to be used in the jCal object.\n * @constant\n * @type {String}\n * @default \"recur\"\n */\n icaltype = \"recur\";\n\n /**\n * Create a new iterator for this recurrence rule. The passed start date\n * must be the start date of the event, not the start of the range to\n * search in.\n *\n * @example\n * let recur = comp.getFirstPropertyValue('rrule');\n * let dtstart = comp.getFirstPropertyValue('dtstart');\n * let iter = recur.iterator(dtstart);\n * for (let next = iter.next(); next; next = iter.next()) {\n * if (next.compare(rangeStart) < 0) {\n * continue;\n * }\n * console.log(next.toString());\n * }\n *\n * @param {Time} aStart The item's start date\n * @return {RecurIterator} The recurrence iterator\n */\n iterator(aStart) {\n return new RecurIterator({\n rule: this,\n dtstart: aStart\n });\n }\n\n /**\n * Returns a clone of the recurrence object.\n *\n * @return {Recur} The cloned object\n */\n clone() {\n return new Recur(this.toJSON());\n }\n\n /**\n * Checks if the current rule is finite, i.e. has a count or until part.\n *\n * @return {Boolean} True, if the rule is finite\n */\n isFinite() {\n return !!(this.count || this.until);\n }\n\n /**\n * Checks if the current rule has a count part, and not limited by an until\n * part.\n *\n * @return {Boolean} True, if the rule is by count\n */\n isByCount() {\n return !!(this.count && !this.until);\n }\n\n /**\n * Adds a component (part) to the recurrence rule. This is not a component\n * in the sense of {@link ICAL.Component}, but a part of the recurrence\n * rule, i.e. BYMONTH.\n *\n * @param {String} aType The name of the component part\n * @param {Array|String} aValue The component value\n */\n addComponent(aType, aValue) {\n let ucname = aType.toUpperCase();\n if (ucname in this.parts) {\n this.parts[ucname].push(aValue);\n } else {\n this.parts[ucname] = [aValue];\n }\n }\n\n /**\n * Sets the component value for the given by-part.\n *\n * @param {String} aType The component part name\n * @param {Array} aValues The component values\n */\n setComponent(aType, aValues) {\n this.parts[aType.toUpperCase()] = aValues.slice();\n }\n\n /**\n * Gets (a copy) of the requested component value.\n *\n * @param {String} aType The component part name\n * @return {Array} The component part value\n */\n getComponent(aType) {\n let ucname = aType.toUpperCase();\n return (ucname in this.parts ? this.parts[ucname].slice() : []);\n }\n\n /**\n * Retrieves the next occurrence after the given recurrence id. See the\n * guide on {@tutorial terminology} for more details.\n *\n * NOTE: Currently, this method iterates all occurrences from the start\n * date. It should not be called in a loop for performance reasons. If you\n * would like to get more than one occurrence, you can iterate the\n * occurrences manually, see the example on the\n * {@link ICAL.Recur#iterator iterator} method.\n *\n * @param {Time} aStartTime The start of the event series\n * @param {Time} aRecurrenceId The date of the last occurrence\n * @return {Time} The next occurrence after\n */\n getNextOccurrence(aStartTime, aRecurrenceId) {\n let iter = this.iterator(aStartTime);\n let next;\n\n do {\n next = iter.next();\n } while (next && next.compare(aRecurrenceId) <= 0);\n\n if (next && aRecurrenceId.zone) {\n next.zone = aRecurrenceId.zone;\n }\n\n return next;\n }\n\n /**\n * Sets up the current instance using members from the passed data object.\n *\n * @param {Object} data An object with members of the recurrence\n * @param {frequencyValues=} data.freq The frequency value\n * @param {Number=} data.interval The INTERVAL value\n * @param {weekDay=} data.wkst The week start value\n * @param {Time=} data.until The end of the recurrence set\n * @param {Number=} data.count The number of occurrences\n * @param {Array.=} data.bysecond The seconds for the BYSECOND part\n * @param {Array.=} data.byminute The minutes for the BYMINUTE part\n * @param {Array.=} data.byhour The hours for the BYHOUR part\n * @param {Array.=} data.byday The BYDAY values\n * @param {Array.=} data.bymonthday The days for the BYMONTHDAY part\n * @param {Array.=} data.byyearday The days for the BYYEARDAY part\n * @param {Array.=} data.byweekno The weeks for the BYWEEKNO part\n * @param {Array.=} data.bymonth The month for the BYMONTH part\n * @param {Array.=} data.bysetpos The positionals for the BYSETPOS part\n */\n fromData(data) {\n for (let key in data) {\n let uckey = key.toUpperCase();\n\n if (uckey in partDesign) {\n if (Array.isArray(data[key])) {\n this.parts[uckey] = data[key];\n } else {\n this.parts[uckey] = [data[key]];\n }\n } else {\n this[key] = data[key];\n }\n }\n\n if (this.interval && typeof this.interval != \"number\") {\n optionDesign.INTERVAL(this.interval, this);\n }\n\n if (this.wkst && typeof this.wkst != \"number\") {\n this.wkst = Recur.icalDayToNumericDay(this.wkst);\n }\n\n if (this.until && !(this.until instanceof Time)) {\n this.until = Time.fromString(this.until);\n }\n }\n\n /**\n * The jCal representation of this recurrence type.\n * @return {Object}\n */\n toJSON() {\n let res = Object.create(null);\n res.freq = this.freq;\n\n if (this.count) {\n res.count = this.count;\n }\n\n if (this.interval > 1) {\n res.interval = this.interval;\n }\n\n for (let [k, kparts] of Object.entries(this.parts)) {\n if (Array.isArray(kparts) && kparts.length == 1) {\n res[k.toLowerCase()] = kparts[0];\n } else {\n res[k.toLowerCase()] = clone(kparts);\n }\n }\n\n if (this.until) {\n res.until = this.until.toString();\n }\n if ('wkst' in this && this.wkst !== Time.DEFAULT_WEEK_START) {\n res.wkst = Recur.numericDayToIcalDay(this.wkst);\n }\n return res;\n }\n\n /**\n * The string representation of this recurrence rule.\n * @return {String}\n */\n toString() {\n // TODO retain order\n let str = \"FREQ=\" + this.freq;\n if (this.count) {\n str += \";COUNT=\" + this.count;\n }\n if (this.interval > 1) {\n str += \";INTERVAL=\" + this.interval;\n }\n for (let [k, v] of Object.entries(this.parts)) {\n str += \";\" + k + \"=\" + v;\n }\n if (this.until) {\n str += ';UNTIL=' + this.until.toICALString();\n }\n if ('wkst' in this && this.wkst !== Time.DEFAULT_WEEK_START) {\n str += ';WKST=' + Recur.numericDayToIcalDay(this.wkst);\n }\n return str;\n }\n}\n\nfunction parseNumericValue(type, min, max, value) {\n let result = value;\n\n if (value[0] === '+') {\n result = value.slice(1);\n }\n\n result = strictParseInt(result);\n\n if (min !== undefined && value < min) {\n throw new Error(\n type + ': invalid value \"' + value + '\" must be > ' + min\n );\n }\n\n if (max !== undefined && value > max) {\n throw new Error(\n type + ': invalid value \"' + value + '\" must be < ' + min\n );\n }\n\n return result;\n}\n\nconst optionDesign = {\n FREQ: function(value, dict, fmtIcal) {\n // yes this is actually equal or faster then regex.\n // upside here is we can enumerate the valid values.\n if (ALLOWED_FREQ.indexOf(value) !== -1) {\n dict.freq = value;\n } else {\n throw new Error(\n 'invalid frequency \"' + value + '\" expected: \"' +\n ALLOWED_FREQ.join(', ') + '\"'\n );\n }\n },\n\n COUNT: function(value, dict, fmtIcal) {\n dict.count = strictParseInt(value);\n },\n\n INTERVAL: function(value, dict, fmtIcal) {\n dict.interval = strictParseInt(value);\n if (dict.interval < 1) {\n // 0 or negative values are not allowed, some engines seem to generate\n // it though. Assume 1 instead.\n dict.interval = 1;\n }\n },\n\n UNTIL: function(value, dict, fmtIcal) {\n if (value.length > 10) {\n dict.until = design.icalendar.value['date-time'].fromICAL(value);\n } else {\n dict.until = design.icalendar.value.date.fromICAL(value);\n }\n if (!fmtIcal) {\n dict.until = Time.fromString(dict.until);\n }\n },\n\n WKST: function(value, dict, fmtIcal) {\n if (VALID_DAY_NAMES.test(value)) {\n dict.wkst = Recur.icalDayToNumericDay(value);\n } else {\n throw new Error('invalid WKST value \"' + value + '\"');\n }\n }\n};\n\nconst partDesign = {\n BYSECOND: parseNumericValue.bind(undefined, 'BYSECOND', 0, 60),\n BYMINUTE: parseNumericValue.bind(undefined, 'BYMINUTE', 0, 59),\n BYHOUR: parseNumericValue.bind(undefined, 'BYHOUR', 0, 23),\n BYDAY: function(value) {\n if (VALID_BYDAY_PART.test(value)) {\n return value;\n } else {\n throw new Error('invalid BYDAY value \"' + value + '\"');\n }\n },\n BYMONTHDAY: parseNumericValue.bind(undefined, 'BYMONTHDAY', -31, 31),\n BYYEARDAY: parseNumericValue.bind(undefined, 'BYYEARDAY', -366, 366),\n BYWEEKNO: parseNumericValue.bind(undefined, 'BYWEEKNO', -53, 53),\n BYMONTH: parseNumericValue.bind(undefined, 'BYMONTH', 1, 12),\n BYSETPOS: parseNumericValue.bind(undefined, 'BYSETPOS', -366, 366)\n};\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n * @ignore\n * @typedef {import(\"./types.js\").designSet} designSet\n * Imports the 'designSet' type from the \"types.js\" module\n */\n\n/** @module ICAL.design */\n\nconst FROM_ICAL_NEWLINE = /\\\\\\\\|\\\\;|\\\\,|\\\\[Nn]/g;\nconst TO_ICAL_NEWLINE = /\\\\|;|,|\\n/g;\nconst FROM_VCARD_NEWLINE = /\\\\\\\\|\\\\,|\\\\[Nn]/g;\nconst TO_VCARD_NEWLINE = /\\\\|,|\\n/g;\n\nfunction createTextType(fromNewline, toNewline) {\n let result = {\n matches: /.*/,\n\n fromICAL: function(aValue, structuredEscape) {\n return replaceNewline(aValue, fromNewline, structuredEscape);\n },\n\n toICAL: function(aValue, structuredEscape) {\n let regEx = toNewline;\n if (structuredEscape)\n regEx = new RegExp(regEx.source + '|' + structuredEscape, regEx.flags);\n return aValue.replace(regEx, function(str) {\n switch (str) {\n case \"\\\\\":\n return \"\\\\\\\\\";\n case \";\":\n return \"\\\\;\";\n case \",\":\n return \"\\\\,\";\n case \"\\n\":\n return \"\\\\n\";\n /* c8 ignore next 2 */\n default:\n return str;\n }\n });\n }\n };\n return result;\n}\n\n// default types used multiple times\nconst DEFAULT_TYPE_TEXT = { defaultType: \"text\" };\nconst DEFAULT_TYPE_TEXT_MULTI = { defaultType: \"text\", multiValue: \",\" };\nconst DEFAULT_TYPE_TEXT_STRUCTURED = { defaultType: \"text\", structuredValue: \";\" };\nconst DEFAULT_TYPE_INTEGER = { defaultType: \"integer\" };\nconst DEFAULT_TYPE_DATETIME_DATE = { defaultType: \"date-time\", allowedTypes: [\"date-time\", \"date\"] };\nconst DEFAULT_TYPE_DATETIME = { defaultType: \"date-time\" };\nconst DEFAULT_TYPE_URI = { defaultType: \"uri\" };\nconst DEFAULT_TYPE_UTCOFFSET = { defaultType: \"utc-offset\" };\nconst DEFAULT_TYPE_RECUR = { defaultType: \"recur\" };\nconst DEFAULT_TYPE_DATE_ANDOR_TIME = { defaultType: \"date-and-or-time\", allowedTypes: [\"date-time\", \"date\", \"text\"] };\n\nfunction replaceNewlineReplace(string) {\n switch (string) {\n case \"\\\\\\\\\":\n return \"\\\\\";\n case \"\\\\;\":\n return \";\";\n case \"\\\\,\":\n return \",\";\n case \"\\\\n\":\n case \"\\\\N\":\n return \"\\n\";\n /* c8 ignore next 2 */\n default:\n return string;\n }\n}\n\nfunction replaceNewline(value, newline, structuredEscape) {\n // avoid regex when possible.\n if (value.indexOf('\\\\') === -1) {\n return value;\n }\n if (structuredEscape)\n newline = new RegExp(newline.source + '|\\\\\\\\' + structuredEscape, newline.flags);\n return value.replace(newline, replaceNewlineReplace);\n}\n\nlet commonProperties = {\n \"categories\": DEFAULT_TYPE_TEXT_MULTI,\n \"url\": DEFAULT_TYPE_URI,\n \"version\": DEFAULT_TYPE_TEXT,\n \"uid\": DEFAULT_TYPE_TEXT\n};\n\nlet commonValues = {\n \"boolean\": {\n values: [\"TRUE\", \"FALSE\"],\n\n fromICAL: function(aValue) {\n switch (aValue) {\n case 'TRUE':\n return true;\n case 'FALSE':\n return false;\n default:\n //TODO: parser warning\n return false;\n }\n },\n\n toICAL: function(aValue) {\n if (aValue) {\n return 'TRUE';\n }\n return 'FALSE';\n }\n\n },\n float: {\n matches: /^[+-]?\\d+\\.\\d+$/,\n\n fromICAL: function(aValue) {\n let parsed = parseFloat(aValue);\n if (isStrictlyNaN(parsed)) {\n // TODO: parser warning\n return 0.0;\n }\n return parsed;\n },\n\n toICAL: function(aValue) {\n return String(aValue);\n }\n },\n integer: {\n fromICAL: function(aValue) {\n let parsed = parseInt(aValue);\n if (isStrictlyNaN(parsed)) {\n return 0;\n }\n return parsed;\n },\n\n toICAL: function(aValue) {\n return String(aValue);\n }\n },\n \"utc-offset\": {\n toICAL: function(aValue) {\n if (aValue.length < 7) {\n // no seconds\n // -0500\n return aValue.slice(0, 3) +\n aValue.slice(4, 6);\n } else {\n // seconds\n // -050000\n return aValue.slice(0, 3) +\n aValue.slice(4, 6) +\n aValue.slice(7, 9);\n }\n },\n\n fromICAL: function(aValue) {\n if (aValue.length < 6) {\n // no seconds\n // -05:00\n return aValue.slice(0, 3) + ':' +\n aValue.slice(3, 5);\n } else {\n // seconds\n // -05:00:00\n return aValue.slice(0, 3) + ':' +\n aValue.slice(3, 5) + ':' +\n aValue.slice(5, 7);\n }\n },\n\n decorate: function(aValue) {\n return UtcOffset.fromString(aValue);\n },\n\n undecorate: function(aValue) {\n return aValue.toString();\n }\n }\n};\n\nlet icalParams = {\n // Although the syntax is DQUOTE uri DQUOTE, I don't think we should\n // enforce anything aside from it being a valid content line.\n //\n // At least some params require - if multi values are used - DQUOTEs\n // for each of its values - e.g. delegated-from=\"uri1\",\"uri2\"\n // To indicate this, I introduced the new k/v pair\n // multiValueSeparateDQuote: true\n //\n // \"ALTREP\": { ... },\n\n // CN just wants a param-value\n // \"CN\": { ... }\n\n \"cutype\": {\n values: [\"INDIVIDUAL\", \"GROUP\", \"RESOURCE\", \"ROOM\", \"UNKNOWN\"],\n allowXName: true,\n allowIanaToken: true\n },\n\n \"delegated-from\": {\n valueType: \"cal-address\",\n multiValue: \",\",\n multiValueSeparateDQuote: true\n },\n \"delegated-to\": {\n valueType: \"cal-address\",\n multiValue: \",\",\n multiValueSeparateDQuote: true\n },\n // \"DIR\": { ... }, // See ALTREP\n \"encoding\": {\n values: [\"8BIT\", \"BASE64\"]\n },\n // \"FMTTYPE\": { ... }, // See ALTREP\n \"fbtype\": {\n values: [\"FREE\", \"BUSY\", \"BUSY-UNAVAILABLE\", \"BUSY-TENTATIVE\"],\n allowXName: true,\n allowIanaToken: true\n },\n // \"LANGUAGE\": { ... }, // See ALTREP\n \"member\": {\n valueType: \"cal-address\",\n multiValue: \",\",\n multiValueSeparateDQuote: true\n },\n \"partstat\": {\n // TODO These values are actually different per-component\n values: [\"NEEDS-ACTION\", \"ACCEPTED\", \"DECLINED\", \"TENTATIVE\",\n \"DELEGATED\", \"COMPLETED\", \"IN-PROCESS\"],\n allowXName: true,\n allowIanaToken: true\n },\n \"range\": {\n values: [\"THISANDFUTURE\"]\n },\n \"related\": {\n values: [\"START\", \"END\"]\n },\n \"reltype\": {\n values: [\"PARENT\", \"CHILD\", \"SIBLING\"],\n allowXName: true,\n allowIanaToken: true\n },\n \"role\": {\n values: [\"REQ-PARTICIPANT\", \"CHAIR\",\n \"OPT-PARTICIPANT\", \"NON-PARTICIPANT\"],\n allowXName: true,\n allowIanaToken: true\n },\n \"rsvp\": {\n values: [\"TRUE\", \"FALSE\"]\n },\n \"sent-by\": {\n valueType: \"cal-address\"\n },\n \"tzid\": {\n matches: /^\\//\n },\n \"value\": {\n // since the value here is a 'type' lowercase is used.\n values: [\"binary\", \"boolean\", \"cal-address\", \"date\", \"date-time\",\n \"duration\", \"float\", \"integer\", \"period\", \"recur\", \"text\",\n \"time\", \"uri\", \"utc-offset\"],\n allowXName: true,\n allowIanaToken: true\n }\n};\n\n// When adding a value here, be sure to add it to the parameter types!\nconst icalValues = extend(commonValues, {\n text: createTextType(FROM_ICAL_NEWLINE, TO_ICAL_NEWLINE),\n\n uri: {\n // TODO\n /* ... */\n },\n\n \"binary\": {\n decorate: function(aString) {\n return Binary.fromString(aString);\n },\n\n undecorate: function(aBinary) {\n return aBinary.toString();\n }\n },\n \"cal-address\": {\n // needs to be an uri\n },\n \"date\": {\n decorate: function(aValue, aProp) {\n if (design.strict) {\n return Time.fromDateString(aValue, aProp);\n } else {\n return Time.fromString(aValue, aProp);\n }\n },\n\n /**\n * undecorates a time object.\n */\n undecorate: function(aValue) {\n return aValue.toString();\n },\n\n fromICAL: function(aValue) {\n // from: 20120901\n // to: 2012-09-01\n if (!design.strict && aValue.length >= 15) {\n // This is probably a date-time, e.g. 20120901T130000Z\n return icalValues[\"date-time\"].fromICAL(aValue);\n } else {\n return aValue.slice(0, 4) + '-' +\n aValue.slice(4, 6) + '-' +\n aValue.slice(6, 8);\n }\n },\n\n toICAL: function(aValue) {\n // from: 2012-09-01\n // to: 20120901\n let len = aValue.length;\n\n if (len == 10) {\n return aValue.slice(0, 4) +\n aValue.slice(5, 7) +\n aValue.slice(8, 10);\n } else if (len >= 19) {\n return icalValues[\"date-time\"].toICAL(aValue);\n } else {\n //TODO: serialize warning?\n return aValue;\n }\n\n }\n },\n \"date-time\": {\n fromICAL: function(aValue) {\n // from: 20120901T130000\n // to: 2012-09-01T13:00:00\n if (!design.strict && aValue.length == 8) {\n // This is probably a date, e.g. 20120901\n return icalValues.date.fromICAL(aValue);\n } else {\n let result = aValue.slice(0, 4) + '-' +\n aValue.slice(4, 6) + '-' +\n aValue.slice(6, 8) + 'T' +\n aValue.slice(9, 11) + ':' +\n aValue.slice(11, 13) + ':' +\n aValue.slice(13, 15);\n\n if (aValue[15] && aValue[15] === 'Z') {\n result += 'Z';\n }\n\n return result;\n }\n },\n\n toICAL: function(aValue) {\n // from: 2012-09-01T13:00:00\n // to: 20120901T130000\n let len = aValue.length;\n\n if (len == 10 && !design.strict) {\n return icalValues.date.toICAL(aValue);\n } else if (len >= 19) {\n let result = aValue.slice(0, 4) +\n aValue.slice(5, 7) +\n // grab the (DDTHH) segment\n aValue.slice(8, 13) +\n // MM\n aValue.slice(14, 16) +\n // SS\n aValue.slice(17, 19);\n\n if (aValue[19] && aValue[19] === 'Z') {\n result += 'Z';\n }\n return result;\n } else {\n // TODO: error\n return aValue;\n }\n },\n\n decorate: function(aValue, aProp) {\n if (design.strict) {\n return Time.fromDateTimeString(aValue, aProp);\n } else {\n return Time.fromString(aValue, aProp);\n }\n },\n\n undecorate: function(aValue) {\n return aValue.toString();\n }\n },\n duration: {\n decorate: function(aValue) {\n return Duration.fromString(aValue);\n },\n undecorate: function(aValue) {\n return aValue.toString();\n }\n },\n period: {\n fromICAL: function(string) {\n let parts = string.split('/');\n parts[0] = icalValues['date-time'].fromICAL(parts[0]);\n\n if (!Duration.isValueString(parts[1])) {\n parts[1] = icalValues['date-time'].fromICAL(parts[1]);\n }\n\n return parts;\n },\n\n toICAL: function(parts) {\n parts = parts.slice();\n if (!design.strict && parts[0].length == 10) {\n parts[0] = icalValues.date.toICAL(parts[0]);\n } else {\n parts[0] = icalValues['date-time'].toICAL(parts[0]);\n }\n\n if (!Duration.isValueString(parts[1])) {\n if (!design.strict && parts[1].length == 10) {\n parts[1] = icalValues.date.toICAL(parts[1]);\n } else {\n parts[1] = icalValues['date-time'].toICAL(parts[1]);\n }\n }\n\n return parts.join(\"/\");\n },\n\n decorate: function(aValue, aProp) {\n return Period.fromJSON(aValue, aProp, !design.strict);\n },\n\n undecorate: function(aValue) {\n return aValue.toJSON();\n }\n },\n recur: {\n fromICAL: function(string) {\n return Recur._stringToData(string, true);\n },\n\n toICAL: function(data) {\n let str = \"\";\n for (let [k, val] of Object.entries(data)) {\n if (k == \"until\") {\n if (val.length > 10) {\n val = icalValues['date-time'].toICAL(val);\n } else {\n val = icalValues.date.toICAL(val);\n }\n } else if (k == \"wkst\") {\n if (typeof val === 'number') {\n val = Recur.numericDayToIcalDay(val);\n }\n } else if (Array.isArray(val)) {\n val = val.join(\",\");\n }\n str += k.toUpperCase() + \"=\" + val + \";\";\n }\n return str.slice(0, Math.max(0, str.length - 1));\n },\n\n decorate: function decorate(aValue) {\n return Recur.fromData(aValue);\n },\n\n undecorate: function(aRecur) {\n return aRecur.toJSON();\n }\n },\n\n time: {\n fromICAL: function(aValue) {\n // from: MMHHSS(Z)?\n // to: HH:MM:SS(Z)?\n if (aValue.length < 6) {\n // TODO: parser exception?\n return aValue;\n }\n\n // HH::MM::SSZ?\n let result = aValue.slice(0, 2) + ':' +\n aValue.slice(2, 4) + ':' +\n aValue.slice(4, 6);\n\n if (aValue[6] === 'Z') {\n result += 'Z';\n }\n\n return result;\n },\n\n toICAL: function(aValue) {\n // from: HH:MM:SS(Z)?\n // to: MMHHSS(Z)?\n if (aValue.length < 8) {\n //TODO: error\n return aValue;\n }\n\n let result = aValue.slice(0, 2) +\n aValue.slice(3, 5) +\n aValue.slice(6, 8);\n\n if (aValue[8] === 'Z') {\n result += 'Z';\n }\n\n return result;\n }\n }\n});\n\nlet icalProperties = extend(commonProperties, {\n\n \"action\": DEFAULT_TYPE_TEXT,\n \"attach\": { defaultType: \"uri\" },\n \"attendee\": { defaultType: \"cal-address\" },\n \"calscale\": DEFAULT_TYPE_TEXT,\n \"class\": DEFAULT_TYPE_TEXT,\n \"comment\": DEFAULT_TYPE_TEXT,\n \"completed\": DEFAULT_TYPE_DATETIME,\n \"contact\": DEFAULT_TYPE_TEXT,\n \"created\": DEFAULT_TYPE_DATETIME,\n \"description\": DEFAULT_TYPE_TEXT,\n \"dtend\": DEFAULT_TYPE_DATETIME_DATE,\n \"dtstamp\": DEFAULT_TYPE_DATETIME,\n \"dtstart\": DEFAULT_TYPE_DATETIME_DATE,\n \"due\": DEFAULT_TYPE_DATETIME_DATE,\n \"duration\": { defaultType: \"duration\" },\n \"exdate\": {\n defaultType: \"date-time\",\n allowedTypes: [\"date-time\", \"date\"],\n multiValue: ','\n },\n \"exrule\": DEFAULT_TYPE_RECUR,\n \"freebusy\": { defaultType: \"period\", multiValue: \",\" },\n \"geo\": { defaultType: \"float\", structuredValue: \";\" },\n \"last-modified\": DEFAULT_TYPE_DATETIME,\n \"location\": DEFAULT_TYPE_TEXT,\n \"method\": DEFAULT_TYPE_TEXT,\n \"organizer\": { defaultType: \"cal-address\" },\n \"percent-complete\": DEFAULT_TYPE_INTEGER,\n \"priority\": DEFAULT_TYPE_INTEGER,\n \"prodid\": DEFAULT_TYPE_TEXT,\n \"related-to\": DEFAULT_TYPE_TEXT,\n \"repeat\": DEFAULT_TYPE_INTEGER,\n \"rdate\": {\n defaultType: \"date-time\",\n allowedTypes: [\"date-time\", \"date\", \"period\"],\n multiValue: ',',\n detectType: function(string) {\n if (string.indexOf('/') !== -1) {\n return 'period';\n }\n return (string.indexOf('T') === -1) ? 'date' : 'date-time';\n }\n },\n \"recurrence-id\": DEFAULT_TYPE_DATETIME_DATE,\n \"resources\": DEFAULT_TYPE_TEXT_MULTI,\n \"request-status\": DEFAULT_TYPE_TEXT_STRUCTURED,\n \"rrule\": DEFAULT_TYPE_RECUR,\n \"sequence\": DEFAULT_TYPE_INTEGER,\n \"status\": DEFAULT_TYPE_TEXT,\n \"summary\": DEFAULT_TYPE_TEXT,\n \"transp\": DEFAULT_TYPE_TEXT,\n \"trigger\": { defaultType: \"duration\", allowedTypes: [\"duration\", \"date-time\"] },\n \"tzoffsetfrom\": DEFAULT_TYPE_UTCOFFSET,\n \"tzoffsetto\": DEFAULT_TYPE_UTCOFFSET,\n \"tzurl\": DEFAULT_TYPE_URI,\n \"tzid\": DEFAULT_TYPE_TEXT,\n \"tzname\": DEFAULT_TYPE_TEXT\n});\n\n// When adding a value here, be sure to add it to the parameter types!\nconst vcardValues = extend(commonValues, {\n text: createTextType(FROM_VCARD_NEWLINE, TO_VCARD_NEWLINE),\n uri: createTextType(FROM_VCARD_NEWLINE, TO_VCARD_NEWLINE),\n\n date: {\n decorate: function(aValue) {\n return VCardTime.fromDateAndOrTimeString(aValue, \"date\");\n },\n undecorate: function(aValue) {\n return aValue.toString();\n },\n fromICAL: function(aValue) {\n if (aValue.length == 8) {\n return icalValues.date.fromICAL(aValue);\n } else if (aValue[0] == '-' && aValue.length == 6) {\n return aValue.slice(0, 4) + '-' + aValue.slice(4);\n } else {\n return aValue;\n }\n },\n toICAL: function(aValue) {\n if (aValue.length == 10) {\n return icalValues.date.toICAL(aValue);\n } else if (aValue[0] == '-' && aValue.length == 7) {\n return aValue.slice(0, 4) + aValue.slice(5);\n } else {\n return aValue;\n }\n }\n },\n\n time: {\n decorate: function(aValue) {\n return VCardTime.fromDateAndOrTimeString(\"T\" + aValue, \"time\");\n },\n undecorate: function(aValue) {\n return aValue.toString();\n },\n fromICAL: function(aValue) {\n let splitzone = vcardValues.time._splitZone(aValue, true);\n let zone = splitzone[0], value = splitzone[1];\n\n //console.log(\"SPLIT: \",splitzone);\n\n if (value.length == 6) {\n value = value.slice(0, 2) + ':' +\n value.slice(2, 4) + ':' +\n value.slice(4, 6);\n } else if (value.length == 4 && value[0] != '-') {\n value = value.slice(0, 2) + ':' + value.slice(2, 4);\n } else if (value.length == 5) {\n value = value.slice(0, 3) + ':' + value.slice(3, 5);\n }\n\n if (zone.length == 5 && (zone[0] == '-' || zone[0] == '+')) {\n zone = zone.slice(0, 3) + ':' + zone.slice(3);\n }\n\n return value + zone;\n },\n\n toICAL: function(aValue) {\n let splitzone = vcardValues.time._splitZone(aValue);\n let zone = splitzone[0], value = splitzone[1];\n\n if (value.length == 8) {\n value = value.slice(0, 2) +\n value.slice(3, 5) +\n value.slice(6, 8);\n } else if (value.length == 5 && value[0] != '-') {\n value = value.slice(0, 2) + value.slice(3, 5);\n } else if (value.length == 6) {\n value = value.slice(0, 3) + value.slice(4, 6);\n }\n\n if (zone.length == 6 && (zone[0] == '-' || zone[0] == '+')) {\n zone = zone.slice(0, 3) + zone.slice(4);\n }\n\n return value + zone;\n },\n\n _splitZone: function(aValue, isFromIcal) {\n let lastChar = aValue.length - 1;\n let signChar = aValue.length - (isFromIcal ? 5 : 6);\n let sign = aValue[signChar];\n let zone, value;\n\n if (aValue[lastChar] == 'Z') {\n zone = aValue[lastChar];\n value = aValue.slice(0, Math.max(0, lastChar));\n } else if (aValue.length > 6 && (sign == '-' || sign == '+')) {\n zone = aValue.slice(signChar);\n value = aValue.slice(0, Math.max(0, signChar));\n } else {\n zone = \"\";\n value = aValue;\n }\n\n return [zone, value];\n }\n },\n\n \"date-time\": {\n decorate: function(aValue) {\n return VCardTime.fromDateAndOrTimeString(aValue, \"date-time\");\n },\n\n undecorate: function(aValue) {\n return aValue.toString();\n },\n\n fromICAL: function(aValue) {\n return vcardValues['date-and-or-time'].fromICAL(aValue);\n },\n\n toICAL: function(aValue) {\n return vcardValues['date-and-or-time'].toICAL(aValue);\n }\n },\n\n \"date-and-or-time\": {\n decorate: function(aValue) {\n return VCardTime.fromDateAndOrTimeString(aValue, \"date-and-or-time\");\n },\n\n undecorate: function(aValue) {\n return aValue.toString();\n },\n\n fromICAL: function(aValue) {\n let parts = aValue.split('T');\n return (parts[0] ? vcardValues.date.fromICAL(parts[0]) : '') +\n (parts[1] ? 'T' + vcardValues.time.fromICAL(parts[1]) : '');\n },\n\n toICAL: function(aValue) {\n let parts = aValue.split('T');\n return vcardValues.date.toICAL(parts[0]) +\n (parts[1] ? 'T' + vcardValues.time.toICAL(parts[1]) : '');\n\n }\n },\n timestamp: icalValues['date-time'],\n \"language-tag\": {\n matches: /^[a-zA-Z0-9-]+$/ // Could go with a more strict regex here\n },\n \"phone-number\": {\n fromICAL: function(aValue) {\n return Array.from(aValue).filter(function(c) {\n return c === '\\\\' ? undefined : c;\n }).join('');\n },\n toICAL: function(aValue) {\n return Array.from(aValue).map(function(c) {\n return c === ',' || c === \";\" ? '\\\\' + c : c;\n }).join('');\n }\n }\n});\n\nlet vcardParams = {\n \"type\": {\n valueType: \"text\",\n multiValue: \",\"\n },\n \"value\": {\n // since the value here is a 'type' lowercase is used.\n values: [\"text\", \"uri\", \"date\", \"time\", \"date-time\", \"date-and-or-time\",\n \"timestamp\", \"boolean\", \"integer\", \"float\", \"utc-offset\",\n \"language-tag\"],\n allowXName: true,\n allowIanaToken: true\n }\n};\n\nlet vcardProperties = extend(commonProperties, {\n \"adr\": { defaultType: \"text\", structuredValue: \";\", multiValue: \",\" },\n \"anniversary\": DEFAULT_TYPE_DATE_ANDOR_TIME,\n \"bday\": DEFAULT_TYPE_DATE_ANDOR_TIME,\n \"caladruri\": DEFAULT_TYPE_URI,\n \"caluri\": DEFAULT_TYPE_URI,\n \"clientpidmap\": DEFAULT_TYPE_TEXT_STRUCTURED,\n \"email\": DEFAULT_TYPE_TEXT,\n \"fburl\": DEFAULT_TYPE_URI,\n \"fn\": DEFAULT_TYPE_TEXT,\n \"gender\": DEFAULT_TYPE_TEXT_STRUCTURED,\n \"geo\": DEFAULT_TYPE_URI,\n \"impp\": DEFAULT_TYPE_URI,\n \"key\": DEFAULT_TYPE_URI,\n \"kind\": DEFAULT_TYPE_TEXT,\n \"lang\": { defaultType: \"language-tag\" },\n \"logo\": DEFAULT_TYPE_URI,\n \"member\": DEFAULT_TYPE_URI,\n \"n\": { defaultType: \"text\", structuredValue: \";\", multiValue: \",\" },\n \"nickname\": DEFAULT_TYPE_TEXT_MULTI,\n \"note\": DEFAULT_TYPE_TEXT,\n \"org\": { defaultType: \"text\", structuredValue: \";\" },\n \"photo\": DEFAULT_TYPE_URI,\n \"related\": DEFAULT_TYPE_URI,\n \"rev\": { defaultType: \"timestamp\" },\n \"role\": DEFAULT_TYPE_TEXT,\n \"sound\": DEFAULT_TYPE_URI,\n \"source\": DEFAULT_TYPE_URI,\n \"tel\": { defaultType: \"uri\", allowedTypes: [\"uri\", \"text\"] },\n \"title\": DEFAULT_TYPE_TEXT,\n \"tz\": { defaultType: \"text\", allowedTypes: [\"text\", \"utc-offset\", \"uri\"] },\n \"xml\": DEFAULT_TYPE_TEXT\n});\n\nlet vcard3Values = extend(commonValues, {\n binary: icalValues.binary,\n date: vcardValues.date,\n \"date-time\": vcardValues[\"date-time\"],\n \"phone-number\": vcardValues[\"phone-number\"],\n uri: icalValues.uri,\n text: vcardValues.text,\n time: icalValues.time,\n vcard: icalValues.text,\n \"utc-offset\": {\n toICAL: function(aValue) {\n return aValue.slice(0, 7);\n },\n\n fromICAL: function(aValue) {\n return aValue.slice(0, 7);\n },\n\n decorate: function(aValue) {\n return UtcOffset.fromString(aValue);\n },\n\n undecorate: function(aValue) {\n return aValue.toString();\n }\n }\n});\n\nlet vcard3Params = {\n \"type\": {\n valueType: \"text\",\n multiValue: \",\"\n },\n \"value\": {\n // since the value here is a 'type' lowercase is used.\n values: [\"text\", \"uri\", \"date\", \"date-time\", \"phone-number\", \"time\",\n \"boolean\", \"integer\", \"float\", \"utc-offset\", \"vcard\", \"binary\"],\n allowXName: true,\n allowIanaToken: true\n }\n};\n\nlet vcard3Properties = extend(commonProperties, {\n fn: DEFAULT_TYPE_TEXT,\n n: { defaultType: \"text\", structuredValue: \";\", multiValue: \",\" },\n nickname: DEFAULT_TYPE_TEXT_MULTI,\n photo: { defaultType: \"binary\", allowedTypes: [\"binary\", \"uri\"] },\n bday: {\n defaultType: \"date-time\",\n allowedTypes: [\"date-time\", \"date\"],\n detectType: function(string) {\n return (string.indexOf('T') === -1) ? 'date' : 'date-time';\n }\n },\n\n adr: { defaultType: \"text\", structuredValue: \";\", multiValue: \",\" },\n label: DEFAULT_TYPE_TEXT,\n\n tel: { defaultType: \"phone-number\" },\n email: DEFAULT_TYPE_TEXT,\n mailer: DEFAULT_TYPE_TEXT,\n\n tz: { defaultType: \"utc-offset\", allowedTypes: [\"utc-offset\", \"text\"] },\n geo: { defaultType: \"float\", structuredValue: \";\" },\n\n title: DEFAULT_TYPE_TEXT,\n role: DEFAULT_TYPE_TEXT,\n logo: { defaultType: \"binary\", allowedTypes: [\"binary\", \"uri\"] },\n agent: { defaultType: \"vcard\", allowedTypes: [\"vcard\", \"text\", \"uri\"] },\n org: DEFAULT_TYPE_TEXT_STRUCTURED,\n\n note: DEFAULT_TYPE_TEXT_MULTI,\n prodid: DEFAULT_TYPE_TEXT,\n rev: {\n defaultType: \"date-time\",\n allowedTypes: [\"date-time\", \"date\"],\n detectType: function(string) {\n return (string.indexOf('T') === -1) ? 'date' : 'date-time';\n }\n },\n \"sort-string\": DEFAULT_TYPE_TEXT,\n sound: { defaultType: \"binary\", allowedTypes: [\"binary\", \"uri\"] },\n\n class: DEFAULT_TYPE_TEXT,\n key: { defaultType: \"binary\", allowedTypes: [\"binary\", \"text\"] }\n});\n\n/**\n * iCalendar design set\n * @type {designSet}\n */\nlet icalSet = {\n name: \"ical\",\n value: icalValues,\n param: icalParams,\n property: icalProperties,\n propertyGroups: false\n};\n\n/**\n * vCard 4.0 design set\n * @type {designSet}\n */\nlet vcardSet = {\n name: \"vcard4\",\n value: vcardValues,\n param: vcardParams,\n property: vcardProperties,\n propertyGroups: true\n};\n\n/**\n * vCard 3.0 design set\n * @type {designSet}\n */\nlet vcard3Set = {\n name: \"vcard3\",\n value: vcard3Values,\n param: vcard3Params,\n property: vcard3Properties,\n propertyGroups: true\n};\n\n/**\n * The design data, used by the parser to determine types for properties and\n * other metadata needed to produce correct jCard/jCal data.\n *\n * @alias ICAL.design\n * @exports module:ICAL.design\n */\nconst design = {\n /**\n * Can be set to false to make the parser more lenient.\n */\n strict: true,\n\n /**\n * The default set for new properties and components if none is specified.\n * @type {designSet}\n */\n defaultSet: icalSet,\n\n /**\n * The default type for unknown properties\n * @type {String}\n */\n defaultType: 'unknown',\n\n /**\n * Holds the design set for known top-level components\n *\n * @type {Object}\n * @property {designSet} vcard vCard VCARD\n * @property {designSet} vevent iCalendar VEVENT\n * @property {designSet} vtodo iCalendar VTODO\n * @property {designSet} vjournal iCalendar VJOURNAL\n * @property {designSet} valarm iCalendar VALARM\n * @property {designSet} vtimezone iCalendar VTIMEZONE\n * @property {designSet} daylight iCalendar DAYLIGHT\n * @property {designSet} standard iCalendar STANDARD\n *\n * @example\n * let propertyName = 'fn';\n * let componentDesign = ICAL.design.components.vcard;\n * let propertyDetails = componentDesign.property[propertyName];\n * if (propertyDetails.defaultType == 'text') {\n * // Yep, sure is...\n * }\n */\n components: {\n vcard: vcardSet,\n vcard3: vcard3Set,\n vevent: icalSet,\n vtodo: icalSet,\n vjournal: icalSet,\n valarm: icalSet,\n vtimezone: icalSet,\n daylight: icalSet,\n standard: icalSet\n },\n\n\n /**\n * The design set for iCalendar (rfc5545/rfc7265) components.\n * @type {designSet}\n */\n icalendar: icalSet,\n\n /**\n * The design set for vCard (rfc6350/rfc7095) components.\n * @type {designSet}\n */\n vcard: vcardSet,\n\n /**\n * The design set for vCard (rfc2425/rfc2426/rfc7095) components.\n * @type {designSet}\n */\n vcard3: vcard3Set,\n\n /**\n * Gets the design set for the given component name.\n *\n * @param {String} componentName The name of the component\n * @return {designSet} The design set for the component\n */\n getDesignSet: function(componentName) {\n let isInDesign = componentName && componentName in design.components;\n return isInDesign ? design.components[componentName] : design.defaultSet;\n }\n};\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n *\n * @ignore\n * @typedef {import(\"./types.js\").designSet} designSet\n * Imports the 'designSet' type from the \"types.js\" module\n */\n\nconst LINE_ENDING = '\\r\\n';\nconst DEFAULT_VALUE_TYPE = 'unknown';\nconst RFC6868_REPLACE_MAP = { '\"': \"^'\", \"\\n\": \"^n\", \"^\": \"^^\" };\n\n/**\n * Convert a full jCal/jCard array into a iCalendar/vCard string.\n *\n * @function ICAL.stringify\n * @variation function\n * @param {Array} jCal The jCal/jCard document\n * @return {String} The stringified iCalendar/vCard document\n */\nfunction stringify(jCal) {\n if (typeof jCal[0] == \"string\") {\n // This is a single component\n jCal = [jCal];\n }\n\n let i = 0;\n let len = jCal.length;\n let result = '';\n\n for (; i < len; i++) {\n result += stringify.component(jCal[i]) + LINE_ENDING;\n }\n\n return result;\n}\n\n/**\n * Converts an jCal component array into a ICAL string.\n * Recursive will resolve sub-components.\n *\n * Exact component/property order is not saved all\n * properties will come before subcomponents.\n *\n * @function ICAL.stringify.component\n * @param {Array} component\n * jCal/jCard fragment of a component\n * @param {designSet} designSet\n * The design data to use for this component\n * @return {String} The iCalendar/vCard string\n */\nstringify.component = function(component, designSet) {\n let name = component[0].toUpperCase();\n let result = 'BEGIN:' + name + LINE_ENDING;\n\n let props = component[1];\n let propIdx = 0;\n let propLen = props.length;\n\n let designSetName = component[0];\n // rfc6350 requires that in vCard 4.0 the first component is the VERSION\n // component with as value 4.0, note that 3.0 does not have this requirement.\n if (designSetName === 'vcard' && component[1].length > 0 &&\n !(component[1][0][0] === \"version\" && component[1][0][3] === \"4.0\")) {\n designSetName = \"vcard3\";\n }\n designSet = designSet || design.getDesignSet(designSetName);\n\n for (; propIdx < propLen; propIdx++) {\n result += stringify.property(props[propIdx], designSet) + LINE_ENDING;\n }\n\n // Ignore subcomponents if none exist, e.g. in vCard.\n let comps = component[2] || [];\n let compIdx = 0;\n let compLen = comps.length;\n\n for (; compIdx < compLen; compIdx++) {\n result += stringify.component(comps[compIdx], designSet) + LINE_ENDING;\n }\n\n result += 'END:' + name;\n return result;\n};\n\n/**\n * Converts a single jCal/jCard property to a iCalendar/vCard string.\n *\n * @function ICAL.stringify.property\n * @param {Array} property\n * jCal/jCard property array\n * @param {designSet} designSet\n * The design data to use for this property\n * @param {Boolean} noFold\n * If true, the line is not folded\n * @return {String} The iCalendar/vCard string\n */\nstringify.property = function(property, designSet, noFold) {\n let name = property[0].toUpperCase();\n let jsName = property[0];\n let params = property[1];\n\n if (!designSet) {\n designSet = design.defaultSet;\n }\n\n let groupName = params.group;\n let line;\n if (designSet.propertyGroups && groupName) {\n line = groupName.toUpperCase() + \".\" + name;\n } else {\n line = name;\n }\n\n for (let [paramName, value] of Object.entries(params)) {\n if (designSet.propertyGroups && paramName == 'group') {\n continue;\n }\n\n let paramDesign = designSet.param[paramName];\n let multiValue = paramDesign && paramDesign.multiValue;\n if (multiValue && Array.isArray(value)) {\n value = value.map(function(val) {\n val = stringify._rfc6868Unescape(val);\n val = stringify.paramPropertyValue(val, paramDesign.multiValueSeparateDQuote);\n return val;\n });\n value = stringify.multiValue(value, multiValue, \"unknown\", null, designSet);\n } else {\n value = stringify._rfc6868Unescape(value);\n value = stringify.paramPropertyValue(value);\n }\n\n line += ';' + paramName.toUpperCase() + '=' + value;\n }\n\n if (property.length === 3) {\n // If there are no values, we must assume a blank value\n return line + ':';\n }\n\n let valueType = property[2];\n\n let propDetails;\n let multiValue = false;\n let structuredValue = false;\n let isDefault = false;\n\n if (jsName in designSet.property) {\n propDetails = designSet.property[jsName];\n\n if ('multiValue' in propDetails) {\n multiValue = propDetails.multiValue;\n }\n\n if (('structuredValue' in propDetails) && Array.isArray(property[3])) {\n structuredValue = propDetails.structuredValue;\n }\n\n if ('defaultType' in propDetails) {\n if (valueType === propDetails.defaultType) {\n isDefault = true;\n }\n } else {\n if (valueType === DEFAULT_VALUE_TYPE) {\n isDefault = true;\n }\n }\n } else {\n if (valueType === DEFAULT_VALUE_TYPE) {\n isDefault = true;\n }\n }\n\n // push the VALUE property if type is not the default\n // for the current property.\n if (!isDefault) {\n // value will never contain ;/:/, so we don't escape it here.\n line += ';VALUE=' + valueType.toUpperCase();\n }\n\n line += ':';\n\n if (multiValue && structuredValue) {\n line += stringify.multiValue(\n property[3], structuredValue, valueType, multiValue, designSet, structuredValue\n );\n } else if (multiValue) {\n line += stringify.multiValue(\n property.slice(3), multiValue, valueType, null, designSet, false\n );\n } else if (structuredValue) {\n line += stringify.multiValue(\n property[3], structuredValue, valueType, null, designSet, structuredValue\n );\n } else {\n line += stringify.value(property[3], valueType, designSet, false);\n }\n\n return noFold ? line : foldline(line);\n};\n\n/**\n * Handles escaping of property values that may contain:\n *\n * COLON (:), SEMICOLON (;), or COMMA (,)\n *\n * If any of the above are present the result is wrapped\n * in double quotes.\n *\n * @function ICAL.stringify.paramPropertyValue\n * @param {String} value Raw property value\n * @param {boolean} force If value should be escaped even when unnecessary\n * @return {String} Given or escaped value when needed\n */\nstringify.paramPropertyValue = function(value, force) {\n if (!force &&\n (value.indexOf(',') === -1) &&\n (value.indexOf(':') === -1) &&\n (value.indexOf(';') === -1)) {\n\n return value;\n }\n\n return '\"' + value + '\"';\n};\n\n/**\n * Converts an array of ical values into a single\n * string based on a type and a delimiter value (like \",\").\n *\n * @function ICAL.stringify.multiValue\n * @param {Array} values List of values to convert\n * @param {String} delim Used to join the values (\",\", \";\", \":\")\n * @param {String} type Lowecase ical value type\n * (like boolean, date-time, etc..)\n * @param {?String} innerMulti If set, each value will again be processed\n * Used for structured values\n * @param {designSet} designSet\n * The design data to use for this property\n *\n * @return {String} iCalendar/vCard string for value\n */\nstringify.multiValue = function(values, delim, type, innerMulti, designSet, structuredValue) {\n let result = '';\n let len = values.length;\n let i = 0;\n\n for (; i < len; i++) {\n if (innerMulti && Array.isArray(values[i])) {\n result += stringify.multiValue(values[i], innerMulti, type, null, designSet, structuredValue);\n } else {\n result += stringify.value(values[i], type, designSet, structuredValue);\n }\n\n if (i !== (len - 1)) {\n result += delim;\n }\n }\n\n return result;\n};\n\n/**\n * Processes a single ical value runs the associated \"toICAL\" method from the\n * design value type if available to convert the value.\n *\n * @function ICAL.stringify.value\n * @param {String|Number} value A formatted value\n * @param {String} type Lowercase iCalendar/vCard value type\n * (like boolean, date-time, etc..)\n * @return {String} iCalendar/vCard value for single value\n */\nstringify.value = function(value, type, designSet, structuredValue) {\n if (type in designSet.value && 'toICAL' in designSet.value[type]) {\n return designSet.value[type].toICAL(value, structuredValue);\n }\n return value;\n};\n\n/**\n * Internal helper for rfc6868. Exposing this on ICAL.stringify so that\n * hackers can disable the rfc6868 parsing if the really need to.\n *\n * @param {String} val The value to unescape\n * @return {String} The escaped value\n */\nstringify._rfc6868Unescape = function(val) {\n return val.replace(/[\\n^\"]/g, function(x) {\n return RFC6868_REPLACE_MAP[x];\n });\n};\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\nconst NAME_INDEX$1 = 0;\nconst PROP_INDEX = 1;\nconst TYPE_INDEX = 2;\nconst VALUE_INDEX = 3;\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n * @ignore\n * @typedef {import(\"./types.js\").designSet} designSet\n * Imports the 'designSet' type from the \"types.js\" module\n * @typedef {import(\"./types.js\").Geo} Geo\n * Imports the 'Geo' type from the \"types.js\" module\n */\n\n/**\n * Provides a layer on top of the raw jCal object for manipulating a single property, with its\n * parameters and value.\n *\n * @memberof ICAL\n */\nclass Property {\n /**\n * Create an {@link ICAL.Property} by parsing the passed iCalendar string.\n *\n * @param {String} str The iCalendar string to parse\n * @param {designSet=} designSet The design data to use for this property\n * @return {Property} The created iCalendar property\n */\n static fromString(str, designSet) {\n return new Property(parse.property(str, designSet));\n }\n\n /**\n * Creates a new ICAL.Property instance.\n *\n * It is important to note that mutations done in the wrapper directly mutate the jCal object used\n * to initialize.\n *\n * Can also be used to create new properties by passing the name of the property (as a String).\n *\n * @param {Array|String} jCal Raw jCal representation OR the new name of the property\n * @param {Component=} parent Parent component\n */\n constructor(jCal, parent) {\n this._parent = parent || null;\n\n if (typeof(jCal) === 'string') {\n // We are creating the property by name and need to detect the type\n this.jCal = [jCal, {}, design.defaultType];\n this.jCal[TYPE_INDEX] = this.getDefaultType();\n } else {\n this.jCal = jCal;\n }\n this._updateType();\n }\n\n /**\n * The value type for this property\n * @type {String}\n */\n get type() {\n return this.jCal[TYPE_INDEX];\n }\n\n /**\n * The name of this property, in lowercase.\n * @type {String}\n */\n get name() {\n return this.jCal[NAME_INDEX$1];\n }\n\n /**\n * The parent component for this property.\n * @type {Component}\n */\n get parent() {\n return this._parent;\n }\n\n set parent(p) {\n // Before setting the parent, check if the design set has changed. If it\n // has, we later need to update the type if it was unknown before.\n let designSetChanged = !this._parent || (p && p._designSet != this._parent._designSet);\n\n this._parent = p;\n\n if (this.type == design.defaultType && designSetChanged) {\n this.jCal[TYPE_INDEX] = this.getDefaultType();\n this._updateType();\n }\n }\n\n /**\n * The design set for this property, e.g. icalendar vs vcard\n *\n * @type {designSet}\n * @private\n */\n get _designSet() {\n return this.parent ? this.parent._designSet : design.defaultSet;\n }\n\n /**\n * Updates the type metadata from the current jCal type and design set.\n *\n * @private\n */\n _updateType() {\n let designSet = this._designSet;\n\n if (this.type in designSet.value) {\n if ('decorate' in designSet.value[this.type]) {\n this.isDecorated = true;\n } else {\n this.isDecorated = false;\n }\n\n if (this.name in designSet.property) {\n this.isMultiValue = ('multiValue' in designSet.property[this.name]);\n this.isStructuredValue = ('structuredValue' in designSet.property[this.name]);\n }\n }\n }\n\n /**\n * Hydrate a single value. The act of hydrating means turning the raw jCal\n * value into a potentially wrapped object, for example {@link ICAL.Time}.\n *\n * @private\n * @param {Number} index The index of the value to hydrate\n * @return {?Object} The decorated value.\n */\n _hydrateValue(index) {\n if (this._values && this._values[index]) {\n return this._values[index];\n }\n\n // for the case where there is no value.\n if (this.jCal.length <= (VALUE_INDEX + index)) {\n return null;\n }\n\n if (this.isDecorated) {\n if (!this._values) {\n this._values = [];\n }\n return (this._values[index] = this._decorate(\n this.jCal[VALUE_INDEX + index]\n ));\n } else {\n return this.jCal[VALUE_INDEX + index];\n }\n }\n\n /**\n * Decorate a single value, returning its wrapped object. This is used by\n * the hydrate function to actually wrap the value.\n *\n * @private\n * @param {?} value The value to decorate\n * @return {Object} The decorated value\n */\n _decorate(value) {\n return this._designSet.value[this.type].decorate(value, this);\n }\n\n /**\n * Undecorate a single value, returning its raw jCal data.\n *\n * @private\n * @param {Object} value The value to undecorate\n * @return {?} The undecorated value\n */\n _undecorate(value) {\n return this._designSet.value[this.type].undecorate(value, this);\n }\n\n /**\n * Sets the value at the given index while also hydrating it. The passed\n * value can either be a decorated or undecorated value.\n *\n * @private\n * @param {?} value The value to set\n * @param {Number} index The index to set it at\n */\n _setDecoratedValue(value, index) {\n if (!this._values) {\n this._values = [];\n }\n\n if (typeof(value) === 'object' && 'icaltype' in value) {\n // decorated value\n this.jCal[VALUE_INDEX + index] = this._undecorate(value);\n this._values[index] = value;\n } else {\n // undecorated value\n this.jCal[VALUE_INDEX + index] = value;\n this._values[index] = this._decorate(value);\n }\n }\n\n /**\n * Gets a parameter on the property.\n *\n * @param {String} name Parameter name (lowercase)\n * @return {Array|String} Parameter value\n */\n getParameter(name) {\n if (name in this.jCal[PROP_INDEX]) {\n return this.jCal[PROP_INDEX][name];\n } else {\n return undefined;\n }\n }\n\n /**\n * Gets first parameter on the property.\n *\n * @param {String} name Parameter name (lowercase)\n * @return {String} Parameter value\n */\n getFirstParameter(name) {\n let parameters = this.getParameter(name);\n\n if (Array.isArray(parameters)) {\n return parameters[0];\n }\n\n return parameters;\n }\n\n /**\n * Sets a parameter on the property.\n *\n * @param {String} name The parameter name\n * @param {Array|String} value The parameter value\n */\n setParameter(name, value) {\n let lcname = name.toLowerCase();\n if (typeof value === \"string\" &&\n lcname in this._designSet.param &&\n 'multiValue' in this._designSet.param[lcname]) {\n value = [value];\n }\n this.jCal[PROP_INDEX][name] = value;\n }\n\n /**\n * Removes a parameter\n *\n * @param {String} name The parameter name\n */\n removeParameter(name) {\n delete this.jCal[PROP_INDEX][name];\n }\n\n /**\n * Get the default type based on this property's name.\n *\n * @return {String} The default type for this property\n */\n getDefaultType() {\n let name = this.jCal[NAME_INDEX$1];\n let designSet = this._designSet;\n\n if (name in designSet.property) {\n let details = designSet.property[name];\n if ('defaultType' in details) {\n return details.defaultType;\n }\n }\n return design.defaultType;\n }\n\n /**\n * Sets type of property and clears out any existing values of the current\n * type.\n *\n * @param {String} type New iCAL type (see design.*.values)\n */\n resetType(type) {\n this.removeAllValues();\n this.jCal[TYPE_INDEX] = type;\n this._updateType();\n }\n\n /**\n * Finds the first property value.\n *\n * @return {Binary | Duration | Period |\n * Recur | Time | UtcOffset | Geo | string | null} First property value\n */\n getFirstValue() {\n return this._hydrateValue(0);\n }\n\n /**\n * Gets all values on the property.\n *\n * NOTE: this creates an array during each call.\n *\n * @return {Array} List of values\n */\n getValues() {\n let len = this.jCal.length - VALUE_INDEX;\n\n if (len < 1) {\n // it is possible for a property to have no value.\n return [];\n }\n\n let i = 0;\n let result = [];\n\n for (; i < len; i++) {\n result[i] = this._hydrateValue(i);\n }\n\n return result;\n }\n\n /**\n * Removes all values from this property\n */\n removeAllValues() {\n if (this._values) {\n this._values.length = 0;\n }\n this.jCal.length = 3;\n }\n\n /**\n * Sets the values of the property. Will overwrite the existing values.\n * This can only be used for multi-value properties.\n *\n * @param {Array} values An array of values\n */\n setValues(values) {\n if (!this.isMultiValue) {\n throw new Error(\n this.name + ': does not not support mulitValue.\\n' +\n 'override isMultiValue'\n );\n }\n\n let len = values.length;\n let i = 0;\n this.removeAllValues();\n\n if (len > 0 &&\n typeof(values[0]) === 'object' &&\n 'icaltype' in values[0]) {\n this.resetType(values[0].icaltype);\n }\n\n if (this.isDecorated) {\n for (; i < len; i++) {\n this._setDecoratedValue(values[i], i);\n }\n } else {\n for (; i < len; i++) {\n this.jCal[VALUE_INDEX + i] = values[i];\n }\n }\n }\n\n /**\n * Sets the current value of the property. If this is a multi-value\n * property, all other values will be removed.\n *\n * @param {String|Object} value New property value.\n */\n setValue(value) {\n this.removeAllValues();\n if (typeof(value) === 'object' && 'icaltype' in value) {\n this.resetType(value.icaltype);\n }\n\n if (this.isDecorated) {\n this._setDecoratedValue(value, 0);\n } else {\n this.jCal[VALUE_INDEX] = value;\n }\n }\n\n /**\n * Returns the Object representation of this component. The returned object\n * is a live jCal object and should be cloned if modified.\n * @return {Object}\n */\n toJSON() {\n return this.jCal;\n }\n\n /**\n * The string representation of this component.\n * @return {String}\n */\n toICALString() {\n return stringify.property(\n this.jCal, this._designSet, true\n );\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n * @ignore\n * @typedef {import(\"./types.js\").designSet} designSet\n * Imports the 'designSet' type from the \"types.js\" module\n * @typedef {import(\"./types.js\").Geo} Geo\n * Imports the 'Geo' type from the \"types.js\" module\n */\n\nconst NAME_INDEX = 0;\nconst PROPERTY_INDEX = 1;\nconst COMPONENT_INDEX = 2;\n\nconst PROPERTY_NAME_INDEX = 0;\nconst PROPERTY_VALUE_INDEX = 3;\n\n/**\n * Wraps a jCal component, adding convenience methods to add, remove and update subcomponents and\n * properties.\n *\n * @memberof ICAL\n */\nclass Component {\n /**\n * Create an {@link ICAL.Component} by parsing the passed iCalendar string.\n *\n * @param {String} str The iCalendar string to parse\n */\n static fromString(str) {\n return new Component(parse.component(str));\n }\n\n /**\n * Creates a new Component instance.\n *\n * @param {Array|String} jCal Raw jCal component data OR name of new\n * component\n * @param {Component=} parent Parent component to associate\n */\n constructor(jCal, parent) {\n if (typeof(jCal) === 'string') {\n // jCal spec (name, properties, components)\n jCal = [jCal, [], []];\n }\n\n // mostly for legacy reasons.\n this.jCal = jCal;\n\n this.parent = parent || null;\n\n if (!this.parent && this.name === 'vcalendar') {\n this._timezoneCache = new Map();\n }\n }\n\n /**\n * Hydrated properties are inserted into the _properties array at the same\n * position as in the jCal array, so it is possible that the array contains\n * undefined values for unhydrdated properties. To avoid iterating the\n * array when checking if all properties have been hydrated, we save the\n * count here.\n *\n * @type {Number}\n * @private\n */\n _hydratedPropertyCount = 0;\n\n /**\n * The same count as for _hydratedPropertyCount, but for subcomponents\n *\n * @type {Number}\n * @private\n */\n _hydratedComponentCount = 0;\n\n /**\n * A cache of hydrated time zone objects which may be used by consumers, keyed\n * by time zone ID.\n *\n * @type {Map}\n * @private\n */\n _timezoneCache = null;\n\n /**\n * @private\n */\n _components = null;\n\n /**\n * @private\n */\n _properties = null;\n\n /**\n * The name of this component\n *\n * @type {String}\n */\n get name() {\n return this.jCal[NAME_INDEX];\n }\n\n /**\n * The design set for this component, e.g. icalendar vs vcard\n *\n * @type {designSet}\n * @private\n */\n get _designSet() {\n let parentDesign = this.parent && this.parent._designSet;\n if (!parentDesign && this.name == \"vcard\") {\n // We can't decide on vcard3 vs vcard4 just based on the component name, the version number is\n // in the version property. We also can't use hydrated properties here because it would lead\n // to recursion, but the spec says that the version property needs to be the very first one.\n let versionProp = this.jCal[PROPERTY_INDEX]?.[0];\n\n if (versionProp && versionProp[PROPERTY_NAME_INDEX] == \"version\" && versionProp[PROPERTY_VALUE_INDEX] == \"3.0\") {\n return design.getDesignSet(\"vcard3\");\n }\n }\n\n return parentDesign || design.getDesignSet(this.name);\n }\n\n /**\n * @private\n */\n _hydrateComponent(index) {\n if (!this._components) {\n this._components = [];\n this._hydratedComponentCount = 0;\n }\n\n if (this._components[index]) {\n return this._components[index];\n }\n\n let comp = new Component(\n this.jCal[COMPONENT_INDEX][index],\n this\n );\n\n this._hydratedComponentCount++;\n return (this._components[index] = comp);\n }\n\n /**\n * @private\n */\n _hydrateProperty(index) {\n if (!this._properties) {\n this._properties = [];\n this._hydratedPropertyCount = 0;\n }\n\n if (this._properties[index]) {\n return this._properties[index];\n }\n\n let prop = new Property(\n this.jCal[PROPERTY_INDEX][index],\n this\n );\n\n this._hydratedPropertyCount++;\n return (this._properties[index] = prop);\n }\n\n /**\n * Finds first sub component, optionally filtered by name.\n *\n * @param {String=} name Optional name to filter by\n * @return {?Component} The found subcomponent\n */\n getFirstSubcomponent(name) {\n if (name) {\n let i = 0;\n let comps = this.jCal[COMPONENT_INDEX];\n let len = comps.length;\n\n for (; i < len; i++) {\n if (comps[i][NAME_INDEX] === name) {\n let result = this._hydrateComponent(i);\n return result;\n }\n }\n } else {\n if (this.jCal[COMPONENT_INDEX].length) {\n return this._hydrateComponent(0);\n }\n }\n\n // ensure we return a value (strict mode)\n return null;\n }\n\n /**\n * Finds all sub components, optionally filtering by name.\n *\n * @param {String=} name Optional name to filter by\n * @return {Component[]} The found sub components\n */\n getAllSubcomponents(name) {\n let jCalLen = this.jCal[COMPONENT_INDEX].length;\n let i = 0;\n\n if (name) {\n let comps = this.jCal[COMPONENT_INDEX];\n let result = [];\n\n for (; i < jCalLen; i++) {\n if (name === comps[i][NAME_INDEX]) {\n result.push(\n this._hydrateComponent(i)\n );\n }\n }\n return result;\n } else {\n if (!this._components ||\n (this._hydratedComponentCount !== jCalLen)) {\n for (; i < jCalLen; i++) {\n this._hydrateComponent(i);\n }\n }\n\n return this._components || [];\n }\n }\n\n /**\n * Returns true when a named property exists.\n *\n * @param {String} name The property name\n * @return {Boolean} True, when property is found\n */\n hasProperty(name) {\n let props = this.jCal[PROPERTY_INDEX];\n let len = props.length;\n\n let i = 0;\n for (; i < len; i++) {\n // 0 is property name\n if (props[i][NAME_INDEX] === name) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Finds the first property, optionally with the given name.\n *\n * @param {String=} name Lowercase property name\n * @return {?Property} The found property\n */\n getFirstProperty(name) {\n if (name) {\n let i = 0;\n let props = this.jCal[PROPERTY_INDEX];\n let len = props.length;\n\n for (; i < len; i++) {\n if (props[i][NAME_INDEX] === name) {\n let result = this._hydrateProperty(i);\n return result;\n }\n }\n } else {\n if (this.jCal[PROPERTY_INDEX].length) {\n return this._hydrateProperty(0);\n }\n }\n\n return null;\n }\n\n /**\n * Returns first property's value, if available.\n *\n * @param {String=} name Lowercase property name\n * @return {Binary | Duration | Period |\n * Recur | Time | UtcOffset | Geo | string | null} The found property value.\n */\n getFirstPropertyValue(name) {\n let prop = this.getFirstProperty(name);\n if (prop) {\n return prop.getFirstValue();\n }\n\n return null;\n }\n\n /**\n * Get all properties in the component, optionally filtered by name.\n *\n * @param {String=} name Lowercase property name\n * @return {Property[]} List of properties\n */\n getAllProperties(name) {\n let jCalLen = this.jCal[PROPERTY_INDEX].length;\n let i = 0;\n\n if (name) {\n let props = this.jCal[PROPERTY_INDEX];\n let result = [];\n\n for (; i < jCalLen; i++) {\n if (name === props[i][NAME_INDEX]) {\n result.push(\n this._hydrateProperty(i)\n );\n }\n }\n return result;\n } else {\n if (!this._properties ||\n (this._hydratedPropertyCount !== jCalLen)) {\n for (; i < jCalLen; i++) {\n this._hydrateProperty(i);\n }\n }\n\n return this._properties || [];\n }\n }\n\n /**\n * @private\n */\n _removeObjectByIndex(jCalIndex, cache, index) {\n cache = cache || [];\n // remove cached version\n if (cache[index]) {\n let obj = cache[index];\n if (\"parent\" in obj) {\n obj.parent = null;\n }\n }\n\n cache.splice(index, 1);\n\n // remove it from the jCal\n this.jCal[jCalIndex].splice(index, 1);\n }\n\n /**\n * @private\n */\n _removeObject(jCalIndex, cache, nameOrObject) {\n let i = 0;\n let objects = this.jCal[jCalIndex];\n let len = objects.length;\n let cached = this[cache];\n\n if (typeof(nameOrObject) === 'string') {\n for (; i < len; i++) {\n if (objects[i][NAME_INDEX] === nameOrObject) {\n this._removeObjectByIndex(jCalIndex, cached, i);\n return true;\n }\n }\n } else if (cached) {\n for (; i < len; i++) {\n if (cached[i] && cached[i] === nameOrObject) {\n this._removeObjectByIndex(jCalIndex, cached, i);\n return true;\n }\n }\n }\n\n return false;\n }\n\n /**\n * @private\n */\n _removeAllObjects(jCalIndex, cache, name) {\n let cached = this[cache];\n\n // Unfortunately we have to run through all children to reset their\n // parent property.\n let objects = this.jCal[jCalIndex];\n let i = objects.length - 1;\n\n // descending search required because splice\n // is used and will effect the indices.\n for (; i >= 0; i--) {\n if (!name || objects[i][NAME_INDEX] === name) {\n this._removeObjectByIndex(jCalIndex, cached, i);\n }\n }\n }\n\n /**\n * Adds a single sub component.\n *\n * @param {Component} component The component to add\n * @return {Component} The passed in component\n */\n addSubcomponent(component) {\n if (!this._components) {\n this._components = [];\n this._hydratedComponentCount = 0;\n }\n\n if (component.parent) {\n component.parent.removeSubcomponent(component);\n }\n\n let idx = this.jCal[COMPONENT_INDEX].push(component.jCal);\n this._components[idx - 1] = component;\n this._hydratedComponentCount++;\n component.parent = this;\n return component;\n }\n\n /**\n * Removes a single component by name or the instance of a specific\n * component.\n *\n * @param {Component|String} nameOrComp Name of component, or component\n * @return {Boolean} True when comp is removed\n */\n removeSubcomponent(nameOrComp) {\n let removed = this._removeObject(COMPONENT_INDEX, '_components', nameOrComp);\n if (removed) {\n this._hydratedComponentCount--;\n }\n return removed;\n }\n\n /**\n * Removes all components or (if given) all components by a particular\n * name.\n *\n * @param {String=} name Lowercase component name\n */\n removeAllSubcomponents(name) {\n let removed = this._removeAllObjects(COMPONENT_INDEX, '_components', name);\n this._hydratedComponentCount = 0;\n return removed;\n }\n\n /**\n * Adds an {@link ICAL.Property} to the component.\n *\n * @param {Property} property The property to add\n * @return {Property} The passed in property\n */\n addProperty(property) {\n if (!(property instanceof Property)) {\n throw new TypeError('must be instance of ICAL.Property');\n }\n\n if (!this._properties) {\n this._properties = [];\n this._hydratedPropertyCount = 0;\n }\n\n if (property.parent) {\n property.parent.removeProperty(property);\n }\n\n let idx = this.jCal[PROPERTY_INDEX].push(property.jCal);\n this._properties[idx - 1] = property;\n this._hydratedPropertyCount++;\n property.parent = this;\n return property;\n }\n\n /**\n * Helper method to add a property with a value to the component.\n *\n * @param {String} name Property name to add\n * @param {String|Number|Object} value Property value\n * @return {Property} The created property\n */\n addPropertyWithValue(name, value) {\n let prop = new Property(name);\n prop.setValue(value);\n\n this.addProperty(prop);\n\n return prop;\n }\n\n /**\n * Helper method that will update or create a property of the given name\n * and sets its value. If multiple properties with the given name exist,\n * only the first is updated.\n *\n * @param {String} name Property name to update\n * @param {String|Number|Object} value Property value\n * @return {Property} The created property\n */\n updatePropertyWithValue(name, value) {\n let prop = this.getFirstProperty(name);\n\n if (prop) {\n prop.setValue(value);\n } else {\n prop = this.addPropertyWithValue(name, value);\n }\n\n return prop;\n }\n\n /**\n * Removes a single property by name or the instance of the specific\n * property.\n *\n * @param {String|Property} nameOrProp Property name or instance to remove\n * @return {Boolean} True, when deleted\n */\n removeProperty(nameOrProp) {\n let removed = this._removeObject(PROPERTY_INDEX, '_properties', nameOrProp);\n if (removed) {\n this._hydratedPropertyCount--;\n }\n return removed;\n }\n\n /**\n * Removes all properties associated with this component, optionally\n * filtered by name.\n *\n * @param {String=} name Lowercase property name\n * @return {Boolean} True, when deleted\n */\n removeAllProperties(name) {\n let removed = this._removeAllObjects(PROPERTY_INDEX, '_properties', name);\n this._hydratedPropertyCount = 0;\n return removed;\n }\n\n /**\n * Returns the Object representation of this component. The returned object\n * is a live jCal object and should be cloned if modified.\n * @return {Object}\n */\n toJSON() {\n return this.jCal;\n }\n\n /**\n * The string representation of this component.\n * @return {String}\n */\n toString() {\n return stringify.component(\n this.jCal, this._designSet\n );\n }\n\n /**\n * Retrieve a time zone definition from the component tree, if any is present.\n * If the tree contains no time zone definitions or the TZID cannot be\n * matched, returns null.\n *\n * @param {String} tzid The ID of the time zone to retrieve\n * @return {Timezone} The time zone corresponding to the ID, or null\n */\n getTimeZoneByID(tzid) {\n // VTIMEZONE components can only appear as a child of the VCALENDAR\n // component; walk the tree if we're not the root.\n if (this.parent) {\n return this.parent.getTimeZoneByID(tzid);\n }\n\n // If there is no time zone cache, we are probably parsing an incomplete\n // file and will have no time zone definitions.\n if (!this._timezoneCache) {\n return null;\n }\n\n if (this._timezoneCache.has(tzid)) {\n return this._timezoneCache.get(tzid);\n }\n\n // If the time zone is not already cached, hydrate it from the\n // subcomponents.\n const zones = this.getAllSubcomponents('vtimezone');\n for (const zone of zones) {\n if (zone.getFirstProperty('tzid').getFirstValue() === tzid) {\n const hydratedZone = new Timezone({\n component: zone,\n tzid: tzid,\n });\n\n this._timezoneCache.set(tzid, hydratedZone);\n\n return hydratedZone;\n }\n }\n\n // Per the standard, we should always have a time zone defined in a file\n // for any referenced TZID, but don't blow up if the file is invalid.\n return null;\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * Primary class for expanding recurring rules. Can take multiple rrules, rdates, exdate(s) and\n * iterate (in order) over each next occurrence.\n *\n * Once initialized this class can also be serialized saved and continue iteration from the last\n * point.\n *\n * NOTE: it is intended that this class is to be used with {@link ICAL.Event} which handles recurrence\n * exceptions.\n *\n * @example\n * // assuming event is a parsed ical component\n * var event;\n *\n * var expand = new ICAL.RecurExpansion({\n * component: event,\n * dtstart: event.getFirstPropertyValue('dtstart')\n * });\n *\n * // remember there are infinite rules so it is a good idea to limit the scope of the iterations\n * // then resume later on.\n *\n * // next is always an ICAL.Time or null\n * var next;\n *\n * while (someCondition && (next = expand.next())) {\n * // do something with next\n * }\n *\n * // save instance for later\n * var json = JSON.stringify(expand);\n *\n * //...\n *\n * // NOTE: if the component's properties have changed you will need to rebuild the class and start\n * // over. This only works when the component's recurrence info is the same.\n * var expand = new ICAL.RecurExpansion(JSON.parse(json));\n *\n * @memberof ICAL\n */\nclass RecurExpansion {\n /**\n * Creates a new ICAL.RecurExpansion instance.\n *\n * The options object can be filled with the specified initial values. It can also contain\n * additional members, as a result of serializing a previous expansion state, as shown in the\n * example.\n *\n * @param {Object} options\n * Recurrence expansion options\n * @param {Time} options.dtstart\n * Start time of the event\n * @param {Component=} options.component\n * Component for expansion, required if not resuming.\n */\n constructor(options) {\n this.ruleDates = [];\n this.exDates = [];\n this.fromData(options);\n }\n\n /**\n * True when iteration is fully completed.\n * @type {Boolean}\n */\n complete = false;\n\n /**\n * Array of rrule iterators.\n *\n * @type {RecurIterator[]}\n * @private\n */\n ruleIterators = null;\n\n /**\n * Array of rdate instances.\n *\n * @type {Time[]}\n * @private\n */\n ruleDates = null;\n\n /**\n * Array of exdate instances.\n *\n * @type {Time[]}\n * @private\n */\n exDates = null;\n\n /**\n * Current position in ruleDates array.\n * @type {Number}\n * @private\n */\n ruleDateInc = 0;\n\n /**\n * Current position in exDates array\n * @type {Number}\n * @private\n */\n exDateInc = 0;\n\n /**\n * Current negative date.\n *\n * @type {Time}\n * @private\n */\n exDate = null;\n\n /**\n * Current additional date.\n *\n * @type {Time}\n * @private\n */\n ruleDate = null;\n\n /**\n * Start date of recurring rules.\n *\n * @type {Time}\n */\n dtstart = null;\n\n /**\n * Last expanded time\n *\n * @type {Time}\n */\n last = null;\n\n /**\n * Initialize the recurrence expansion from the data object. The options\n * object may also contain additional members, see the\n * {@link ICAL.RecurExpansion constructor} for more details.\n *\n * @param {Object} options\n * Recurrence expansion options\n * @param {Time} options.dtstart\n * Start time of the event\n * @param {Component=} options.component\n * Component for expansion, required if not resuming.\n */\n fromData(options) {\n let start = formatClassType(options.dtstart, Time);\n\n if (!start) {\n throw new Error('.dtstart (ICAL.Time) must be given');\n } else {\n this.dtstart = start;\n }\n\n if (options.component) {\n this._init(options.component);\n } else {\n this.last = formatClassType(options.last, Time) || start.clone();\n\n if (!options.ruleIterators) {\n throw new Error('.ruleIterators or .component must be given');\n }\n\n this.ruleIterators = options.ruleIterators.map(function(item) {\n return formatClassType(item, RecurIterator);\n });\n\n this.ruleDateInc = options.ruleDateInc;\n this.exDateInc = options.exDateInc;\n\n if (options.ruleDates) {\n this.ruleDates = options.ruleDates.map(item => formatClassType(item, Time));\n this.ruleDate = this.ruleDates[this.ruleDateInc];\n }\n\n if (options.exDates) {\n this.exDates = options.exDates.map(item => formatClassType(item, Time));\n this.exDate = this.exDates[this.exDateInc];\n }\n\n if (typeof(options.complete) !== 'undefined') {\n this.complete = options.complete;\n }\n }\n }\n\n /**\n * Compare two ICAL.Time objects. When the second parameter is a DATE and the first parameter is\n * DATE-TIME, strip the time and compare only the days.\n *\n * @private\n * @param {Time} a The one object to compare\n * @param {Time} b The other object to compare\n */\n _compare_special(a, b) {\n if (!a.isDate && b.isDate)\n return new Time({ year: a.year, month: a.month, day: a.day }).compare(b);\n return a.compare(b);\n }\n\n /**\n * Retrieve the next occurrence in the series.\n * @return {Time}\n */\n next() {\n let iter;\n let next;\n let compare;\n\n let maxTries = 500;\n let currentTry = 0;\n\n while (true) {\n if (currentTry++ > maxTries) {\n throw new Error(\n 'max tries have occurred, rule may be impossible to fulfill.'\n );\n }\n\n next = this.ruleDate;\n iter = this._nextRecurrenceIter(this.last);\n\n // no more matches\n // because we increment the rule day or rule\n // _after_ we choose a value this should be\n // the only spot where we need to worry about the\n // end of events.\n if (!next && !iter) {\n // there are no more iterators or rdates\n this.complete = true;\n break;\n }\n\n // no next rule day or recurrence rule is first.\n if (!next || (iter && next.compare(iter.last) > 0)) {\n // must be cloned, recur will reuse the time element.\n next = iter.last.clone();\n // move to next so we can continue\n iter.next();\n }\n\n // if the ruleDate is still next increment it.\n if (this.ruleDate === next) {\n this._nextRuleDay();\n }\n\n this.last = next;\n\n // check the negative rules\n if (this.exDate) {\n // EXDATE can be in DATE format, but DTSTART is in DATE-TIME format\n compare = this._compare_special(this.last, this.exDate);\n\n if (compare > 0) {\n this._nextExDay();\n }\n\n // if the current rule is excluded skip it.\n if (compare === 0) {\n this._nextExDay();\n continue;\n }\n }\n\n //XXX: The spec states that after we resolve the final\n // list of dates we execute exdate this seems somewhat counter\n // intuitive to what I have seen most servers do so for now\n // I exclude based on the original date not the one that may\n // have been modified by the exception.\n return this.last;\n }\n }\n\n /**\n * Converts object into a serialize-able format. This format can be passed\n * back into the expansion to resume iteration.\n * @return {Object}\n */\n toJSON() {\n function toJSON(item) {\n return item.toJSON();\n }\n\n let result = Object.create(null);\n result.ruleIterators = this.ruleIterators.map(toJSON);\n\n if (this.ruleDates) {\n result.ruleDates = this.ruleDates.map(toJSON);\n }\n\n if (this.exDates) {\n result.exDates = this.exDates.map(toJSON);\n }\n\n result.ruleDateInc = this.ruleDateInc;\n result.exDateInc = this.exDateInc;\n result.last = this.last.toJSON();\n result.dtstart = this.dtstart.toJSON();\n result.complete = this.complete;\n\n return result;\n }\n\n /**\n * Extract all dates from the properties in the given component. The\n * properties will be filtered by the property name.\n *\n * @private\n * @param {Component} component The component to search in\n * @param {String} propertyName The property name to search for\n * @return {Time[]} The extracted dates.\n */\n _extractDates(component, propertyName) {\n let result = [];\n let props = component.getAllProperties(propertyName);\n\n for (let i = 0, len = props.length; i < len; i++) {\n for (let prop of props[i].getValues()) {\n let idx = binsearchInsert(\n result,\n prop,\n (a, b) => a.compare(b)\n );\n\n // ordered insert\n result.splice(idx, 0, prop);\n }\n }\n\n return result;\n }\n\n /**\n * Initialize the recurrence expansion.\n *\n * @private\n * @param {Component} component The component to initialize from.\n */\n _init(component) {\n this.ruleIterators = [];\n\n this.last = this.dtstart.clone();\n\n // to provide api consistency non-recurring\n // events can also use the iterator though it will\n // only return a single time.\n if (!component.hasProperty('rdate') &&\n !component.hasProperty('rrule') &&\n !component.hasProperty('recurrence-id')) {\n this.ruleDate = this.last.clone();\n this.complete = true;\n return;\n }\n\n if (component.hasProperty('rdate')) {\n this.ruleDates = this._extractDates(component, 'rdate');\n\n // special hack for cases where first rdate is prior\n // to the start date. We only check for the first rdate.\n // This is mostly for google's crazy recurring date logic\n // (contacts birthdays).\n if ((this.ruleDates[0]) &&\n (this.ruleDates[0].compare(this.dtstart) < 0)) {\n\n this.ruleDateInc = 0;\n this.last = this.ruleDates[0].clone();\n } else {\n this.ruleDateInc = binsearchInsert(\n this.ruleDates,\n this.last,\n (a, b) => a.compare(b)\n );\n }\n\n this.ruleDate = this.ruleDates[this.ruleDateInc];\n }\n\n if (component.hasProperty('rrule')) {\n let rules = component.getAllProperties('rrule');\n let i = 0;\n let len = rules.length;\n\n let rule;\n let iter;\n\n for (; i < len; i++) {\n rule = rules[i].getFirstValue();\n iter = rule.iterator(this.dtstart);\n this.ruleIterators.push(iter);\n\n // increment to the next occurrence so future\n // calls to next return times beyond the initial iteration.\n // XXX: I find this suspicious might be a bug?\n iter.next();\n }\n }\n\n if (component.hasProperty('exdate')) {\n this.exDates = this._extractDates(component, 'exdate');\n // if we have a .last day we increment the index to beyond it.\n // When DTSTART is in DATE-TIME format, EXDATE is in DATE format and EXDATE is\n // the date of DTSTART, _compare_special finds this out and compareTime fails.\n this.exDateInc = binsearchInsert(\n this.exDates,\n this.last,\n this._compare_special\n );\n\n this.exDate = this.exDates[this.exDateInc];\n }\n }\n\n /**\n * Advance to the next exdate\n * @private\n */\n _nextExDay() {\n this.exDate = this.exDates[++this.exDateInc];\n }\n\n /**\n * Advance to the next rule date\n * @private\n */\n _nextRuleDay() {\n this.ruleDate = this.ruleDates[++this.ruleDateInc];\n }\n\n /**\n * Find and return the recurrence rule with the most recent event and\n * return it.\n *\n * @private\n * @return {?RecurIterator} Found iterator.\n */\n _nextRecurrenceIter() {\n let iters = this.ruleIterators;\n\n if (iters.length === 0) {\n return null;\n }\n\n let len = iters.length;\n let iter;\n let iterTime;\n let iterIdx = 0;\n let chosenIter;\n\n // loop through each iterator\n for (; iterIdx < len; iterIdx++) {\n iter = iters[iterIdx];\n iterTime = iter.last;\n\n // if iteration is complete\n // then we must exclude it from\n // the search and remove it.\n if (iter.completed) {\n len--;\n if (iterIdx !== 0) {\n iterIdx--;\n }\n iters.splice(iterIdx, 1);\n continue;\n }\n\n // find the most recent possible choice\n if (!chosenIter || chosenIter.last.compare(iterTime) > 0) {\n // that iterator is saved\n chosenIter = iter;\n }\n }\n\n // the chosen iterator is returned but not mutated\n // this iterator contains the most recent event.\n return chosenIter;\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n * @ignore\n * @typedef {import(\"./types.js\").frequencyValues} frequencyValues\n * Imports the 'frequencyValues' type from the \"types.js\" module\n * @typedef {import(\"./types.js\").occurrenceDetails} occurrenceDetails\n * Imports the 'occurrenceDetails' type from the \"types.js\" module\n */\n\n/**\n * ICAL.js is organized into multiple layers. The bottom layer is a raw jCal\n * object, followed by the component/property layer. The highest level is the\n * event representation, which this class is part of. See the\n * {@tutorial layers} guide for more details.\n *\n * @memberof ICAL\n */\nclass Event {\n /**\n * Creates a new ICAL.Event instance.\n *\n * @param {Component=} component The ICAL.Component to base this event on\n * @param {Object} [options] Options for this event\n * @param {Boolean=} options.strictExceptions When true, will verify exceptions are related by\n * their UUID\n * @param {Array=} options.exceptions\n * Exceptions to this event, either as components or events. If not\n * specified exceptions will automatically be set in relation of\n * component's parent\n */\n constructor(component, options) {\n if (!(component instanceof Component)) {\n options = component;\n component = null;\n }\n\n if (component) {\n this.component = component;\n } else {\n this.component = new Component('vevent');\n }\n\n this._rangeExceptionCache = Object.create(null);\n this.exceptions = Object.create(null);\n this.rangeExceptions = [];\n\n if (options && options.strictExceptions) {\n this.strictExceptions = options.strictExceptions;\n }\n\n if (options && options.exceptions) {\n options.exceptions.forEach(this.relateException, this);\n } else if (this.component.parent && !this.isRecurrenceException()) {\n this.component.parent.getAllSubcomponents('vevent').forEach(function(event) {\n if (event.hasProperty('recurrence-id')) {\n this.relateException(event);\n }\n }, this);\n }\n }\n\n\n static THISANDFUTURE = 'THISANDFUTURE';\n\n /**\n * List of related event exceptions.\n *\n * @type {Event[]}\n */\n exceptions = null;\n\n /**\n * When true, will verify exceptions are related by their UUID.\n *\n * @type {Boolean}\n */\n strictExceptions = false;\n\n /**\n * Relates a given event exception to this object. If the given component\n * does not share the UID of this event it cannot be related and will throw\n * an exception.\n *\n * If this component is an exception it cannot have other exceptions\n * related to it.\n *\n * @param {Component|Event} obj Component or event\n */\n relateException(obj) {\n if (this.isRecurrenceException()) {\n throw new Error('cannot relate exception to exceptions');\n }\n\n if (obj instanceof Component) {\n obj = new Event(obj);\n }\n\n if (this.strictExceptions && obj.uid !== this.uid) {\n throw new Error('attempted to relate unrelated exception');\n }\n\n let id = obj.recurrenceId.toString();\n\n // we don't sort or manage exceptions directly\n // here the recurrence expander handles that.\n this.exceptions[id] = obj;\n\n // index RANGE=THISANDFUTURE exceptions so we can\n // look them up later in getOccurrenceDetails.\n if (obj.modifiesFuture()) {\n let item = [\n obj.recurrenceId.toUnixTime(), id\n ];\n\n // we keep them sorted so we can find the nearest\n // value later on...\n let idx = binsearchInsert(\n this.rangeExceptions,\n item,\n compareRangeException\n );\n\n this.rangeExceptions.splice(idx, 0, item);\n }\n }\n\n /**\n * Checks if this record is an exception and has the RANGE=THISANDFUTURE\n * value.\n *\n * @return {Boolean} True, when exception is within range\n */\n modifiesFuture() {\n if (!this.component.hasProperty('recurrence-id')) {\n return false;\n }\n\n let range = this.component.getFirstProperty('recurrence-id').getParameter('range');\n return range === Event.THISANDFUTURE;\n }\n\n /**\n * Finds the range exception nearest to the given date.\n *\n * @param {Time} time usually an occurrence time of an event\n * @return {?Event} the related event/exception or null\n */\n findRangeException(time) {\n if (!this.rangeExceptions.length) {\n return null;\n }\n\n let utc = time.toUnixTime();\n let idx = binsearchInsert(\n this.rangeExceptions,\n [utc],\n compareRangeException\n );\n\n idx -= 1;\n\n // occurs before\n if (idx < 0) {\n return null;\n }\n\n let rangeItem = this.rangeExceptions[idx];\n\n /* c8 ignore next 4 */\n if (utc < rangeItem[0]) {\n // sanity check only\n return null;\n }\n\n return rangeItem[1];\n }\n\n /**\n * Returns the occurrence details based on its start time. If the\n * occurrence has an exception will return the details for that exception.\n *\n * NOTE: this method is intend to be used in conjunction\n * with the {@link ICAL.Event#iterator iterator} method.\n *\n * @param {Time} occurrence time occurrence\n * @return {occurrenceDetails} Information about the occurrence\n */\n getOccurrenceDetails(occurrence) {\n let id = occurrence.toString();\n let utcId = occurrence.convertToZone(Timezone.utcTimezone).toString();\n let item;\n let result = {\n //XXX: Clone?\n recurrenceId: occurrence\n };\n\n if (id in this.exceptions) {\n item = result.item = this.exceptions[id];\n result.startDate = item.startDate;\n result.endDate = item.endDate;\n result.item = item;\n } else if (utcId in this.exceptions) {\n item = this.exceptions[utcId];\n result.startDate = item.startDate;\n result.endDate = item.endDate;\n result.item = item;\n } else {\n // range exceptions (RANGE=THISANDFUTURE) have a\n // lower priority then direct exceptions but\n // must be accounted for first. Their item is\n // always the first exception with the range prop.\n let rangeExceptionId = this.findRangeException(\n occurrence\n );\n let end;\n\n if (rangeExceptionId) {\n let exception = this.exceptions[rangeExceptionId];\n\n // range exception must modify standard time\n // by the difference (if any) in start/end times.\n result.item = exception;\n\n let startDiff = this._rangeExceptionCache[rangeExceptionId];\n\n if (!startDiff) {\n let original = exception.recurrenceId.clone();\n let newStart = exception.startDate.clone();\n\n // zones must be same otherwise subtract may be incorrect.\n original.zone = newStart.zone;\n startDiff = newStart.subtractDate(original);\n\n this._rangeExceptionCache[rangeExceptionId] = startDiff;\n }\n\n let start = occurrence.clone();\n start.zone = exception.startDate.zone;\n start.addDuration(startDiff);\n\n end = start.clone();\n end.addDuration(exception.duration);\n\n result.startDate = start;\n result.endDate = end;\n } else {\n // no range exception standard expansion\n end = occurrence.clone();\n end.addDuration(this.duration);\n\n result.endDate = end;\n result.startDate = occurrence;\n result.item = this;\n }\n }\n\n return result;\n }\n\n /**\n * Builds a recur expansion instance for a specific point in time (defaults\n * to startDate).\n *\n * @param {Time=} startTime Starting point for expansion\n * @return {RecurExpansion} Expansion object\n */\n iterator(startTime) {\n return new RecurExpansion({\n component: this.component,\n dtstart: startTime || this.startDate\n });\n }\n\n /**\n * Checks if the event is recurring\n *\n * @return {Boolean} True, if event is recurring\n */\n isRecurring() {\n let comp = this.component;\n return comp.hasProperty('rrule') || comp.hasProperty('rdate');\n }\n\n /**\n * Checks if the event describes a recurrence exception. See\n * {@tutorial terminology} for details.\n *\n * @return {Boolean} True, if the event describes a recurrence exception\n */\n isRecurrenceException() {\n return this.component.hasProperty('recurrence-id');\n }\n\n /**\n * Returns the types of recurrences this event may have.\n *\n * Returned as an object with the following possible keys:\n *\n * - YEARLY\n * - MONTHLY\n * - WEEKLY\n * - DAILY\n * - MINUTELY\n * - SECONDLY\n *\n * @return {Object.}\n * Object of recurrence flags\n */\n getRecurrenceTypes() {\n let rules = this.component.getAllProperties('rrule');\n let i = 0;\n let len = rules.length;\n let result = Object.create(null);\n\n for (; i < len; i++) {\n let value = rules[i].getFirstValue();\n result[value.freq] = true;\n }\n\n return result;\n }\n\n /**\n * The uid of this event\n * @type {String}\n */\n get uid() {\n return this._firstProp('uid');\n }\n\n set uid(value) {\n this._setProp('uid', value);\n }\n\n /**\n * The start date\n * @type {Time}\n */\n get startDate() {\n return this._firstProp('dtstart');\n }\n\n set startDate(value) {\n this._setTime('dtstart', value);\n }\n\n /**\n * The end date. This can be the result directly from the property, or the\n * end date calculated from start date and duration. Setting the property\n * will remove any duration properties.\n * @type {Time}\n */\n get endDate() {\n let endDate = this._firstProp('dtend');\n if (!endDate) {\n let duration = this._firstProp('duration');\n endDate = this.startDate.clone();\n if (duration) {\n endDate.addDuration(duration);\n } else if (endDate.isDate) {\n endDate.day += 1;\n }\n }\n return endDate;\n }\n\n set endDate(value) {\n if (this.component.hasProperty('duration')) {\n this.component.removeProperty('duration');\n }\n this._setTime('dtend', value);\n }\n\n /**\n * The duration. This can be the result directly from the property, or the\n * duration calculated from start date and end date. Setting the property\n * will remove any `dtend` properties.\n * @type {Duration}\n */\n get duration() {\n let duration = this._firstProp('duration');\n if (!duration) {\n return this.endDate.subtractDateTz(this.startDate);\n }\n return duration;\n }\n\n set duration(value) {\n if (this.component.hasProperty('dtend')) {\n this.component.removeProperty('dtend');\n }\n\n this._setProp('duration', value);\n }\n\n /**\n * The location of the event.\n * @type {String}\n */\n get location() {\n return this._firstProp('location');\n }\n\n set location(value) {\n this._setProp('location', value);\n }\n\n /**\n * The attendees in the event\n * @type {Property[]}\n */\n get attendees() {\n //XXX: This is way lame we should have a better\n // data structure for this later.\n return this.component.getAllProperties('attendee');\n }\n\n /**\n * The event summary\n * @type {String}\n */\n get summary() {\n return this._firstProp('summary');\n }\n\n set summary(value) {\n this._setProp('summary', value);\n }\n\n /**\n * The event description.\n * @type {String}\n */\n get description() {\n return this._firstProp('description');\n }\n\n set description(value) {\n this._setProp('description', value);\n }\n\n /**\n * The event color from [rfc7986](https://datatracker.ietf.org/doc/html/rfc7986)\n * @type {String}\n */\n get color() {\n return this._firstProp('color');\n }\n\n set color(value) {\n this._setProp('color', value);\n }\n\n /**\n * The organizer value as an uri. In most cases this is a mailto: uri, but\n * it can also be something else, like urn:uuid:...\n * @type {String}\n */\n get organizer() {\n return this._firstProp('organizer');\n }\n\n set organizer(value) {\n this._setProp('organizer', value);\n }\n\n /**\n * The sequence value for this event. Used for scheduling\n * see {@tutorial terminology}.\n * @type {Number}\n */\n get sequence() {\n return this._firstProp('sequence');\n }\n\n set sequence(value) {\n this._setProp('sequence', value);\n }\n\n /**\n * The recurrence id for this event. See {@tutorial terminology} for details.\n * @type {Time}\n */\n get recurrenceId() {\n return this._firstProp('recurrence-id');\n }\n\n set recurrenceId(value) {\n this._setTime('recurrence-id', value);\n }\n\n /**\n * Set/update a time property's value.\n * This will also update the TZID of the property.\n *\n * TODO: this method handles the case where we are switching\n * from a known timezone to an implied timezone (one without TZID).\n * This does _not_ handle the case of moving between a known\n * (by TimezoneService) timezone to an unknown timezone...\n *\n * We will not add/remove/update the VTIMEZONE subcomponents\n * leading to invalid ICAL data...\n * @private\n * @param {String} propName The property name\n * @param {Time} time The time to set\n */\n _setTime(propName, time) {\n let prop = this.component.getFirstProperty(propName);\n\n if (!prop) {\n prop = new Property(propName);\n this.component.addProperty(prop);\n }\n\n // utc and local don't get a tzid\n if (\n time.zone === Timezone.localTimezone ||\n time.zone === Timezone.utcTimezone\n ) {\n // remove the tzid\n prop.removeParameter('tzid');\n } else {\n prop.setParameter('tzid', time.zone.tzid);\n }\n\n prop.setValue(time);\n }\n\n _setProp(name, value) {\n this.component.updatePropertyWithValue(name, value);\n }\n\n _firstProp(name) {\n return this.component.getFirstPropertyValue(name);\n }\n\n /**\n * The string representation of this event.\n * @return {String}\n */\n toString() {\n return this.component.toString();\n }\n}\n\nfunction compareRangeException(a, b) {\n if (a[0] > b[0]) return 1;\n if (b[0] > a[0]) return -1;\n return 0;\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * The ComponentParser is used to process a String or jCal Object,\n * firing callbacks for various found components, as well as completion.\n *\n * @example\n * var options = {\n * // when false no events will be emitted for type\n * parseEvent: true,\n * parseTimezone: true\n * };\n *\n * var parser = new ICAL.ComponentParser(options);\n *\n * parser.onevent(eventComponent) {\n * //...\n * }\n *\n * // ontimezone, etc...\n *\n * parser.oncomplete = function() {\n *\n * };\n *\n * parser.process(stringOrComponent);\n *\n * @memberof ICAL\n */\nclass ComponentParser {\n /**\n * Creates a new ICAL.ComponentParser instance.\n *\n * @param {Object=} options Component parser options\n * @param {Boolean} options.parseEvent Whether events should be parsed\n * @param {Boolean} options.parseTimezeone Whether timezones should be parsed\n */\n constructor(options) {\n if (typeof(options) === 'undefined') {\n options = {};\n }\n\n for (let [key, value] of Object.entries(options)) {\n this[key] = value;\n }\n }\n\n /**\n * When true, parse events\n *\n * @type {Boolean}\n */\n parseEvent = true;\n\n /**\n * When true, parse timezones\n *\n * @type {Boolean}\n */\n parseTimezone = true;\n\n\n /* SAX like events here for reference */\n\n /**\n * Fired when parsing is complete\n * @callback\n */\n oncomplete = /* c8 ignore next */ function() {};\n\n /**\n * Fired if an error occurs during parsing.\n *\n * @callback\n * @param {Error} err details of error\n */\n onerror = /* c8 ignore next */ function(err) {};\n\n /**\n * Fired when a top level component (VTIMEZONE) is found\n *\n * @callback\n * @param {Timezone} component Timezone object\n */\n ontimezone = /* c8 ignore next */ function(component) {};\n\n /**\n * Fired when a top level component (VEVENT) is found.\n *\n * @callback\n * @param {Event} component Top level component\n */\n onevent = /* c8 ignore next */ function(component) {};\n\n /**\n * Process a string or parse ical object. This function itself will return\n * nothing but will start the parsing process.\n *\n * Events must be registered prior to calling this method.\n *\n * @param {Component|String|Object} ical The component to process,\n * either in its final form, as a jCal Object, or string representation\n */\n process(ical) {\n //TODO: this is sync now in the future we will have a incremental parser.\n if (typeof(ical) === 'string') {\n ical = parse(ical);\n }\n\n if (!(ical instanceof Component)) {\n ical = new Component(ical);\n }\n\n let components = ical.getAllSubcomponents();\n let i = 0;\n let len = components.length;\n let component;\n\n for (; i < len; i++) {\n component = components[i];\n\n switch (component.name) {\n case 'vtimezone':\n if (this.parseTimezone) {\n let tzid = component.getFirstPropertyValue('tzid');\n if (tzid) {\n this.ontimezone(new Timezone({\n tzid: tzid,\n component: component\n }));\n }\n }\n break;\n case 'vevent':\n if (this.parseEvent) {\n this.onevent(new Event(component));\n }\n break;\n default:\n continue;\n }\n }\n\n //XXX: ideally we should do a \"nextTick\" here\n // so in all cases this is actually async.\n this.oncomplete();\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * The main ICAL module. Provides access to everything else.\n *\n * @alias ICAL\n * @namespace ICAL\n * @property {ICAL.design} design\n * @property {ICAL.helpers} helpers\n */\nvar ICALmodule = {\n /**\n * The number of characters before iCalendar line folding should occur\n * @type {Number}\n * @default 75\n */\n foldLength: 75,\n\n debug: false,\n\n /**\n * The character(s) to be used for a newline. The default value is provided by\n * rfc5545.\n * @type {String}\n * @default \"\\r\\n\"\n */\n newLineChar: '\\r\\n',\n\n Binary,\n Component,\n ComponentParser,\n Duration,\n Event,\n Period,\n Property,\n Recur,\n RecurExpansion,\n RecurIterator,\n Time,\n Timezone,\n TimezoneService,\n UtcOffset,\n VCardTime,\n\n parse,\n stringify,\n\n design,\n helpers\n};\n\nexport { ICALmodule as default };\n","\n\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nexport var ShareType;\n(function (ShareType) {\n ShareType[ShareType[\"User\"] = 0] = \"User\";\n ShareType[ShareType[\"Group\"] = 1] = \"Group\";\n ShareType[ShareType[\"Link\"] = 3] = \"Link\";\n ShareType[ShareType[\"Email\"] = 4] = \"Email\";\n ShareType[ShareType[\"Remote\"] = 6] = \"Remote\";\n /**\n * Was called `Circle` before Nextcloud 29\n */\n ShareType[ShareType[\"Team\"] = 7] = \"Team\";\n ShareType[ShareType[\"Guest\"] = 8] = \"Guest\";\n ShareType[ShareType[\"RemoteGroup\"] = 9] = \"RemoteGroup\";\n ShareType[ShareType[\"Room\"] = 10] = \"Room\";\n ShareType[ShareType[\"Deck\"] = 12] = \"Deck\";\n /**\n * @since 26.0.0\n */\n ShareType[ShareType[\"FederatedGroup\"] = 14] = \"FederatedGroup\";\n /**\n * Third party share types\n *\n * @since 25.0.0\n */\n ShareType[ShareType[\"ScienceMesh\"] = 15] = \"ScienceMesh\";\n})(ShareType || (ShareType = {}));\n","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/// \n\nimport { translate as t } from '@nextcloud/l10n'\nimport { ShareType } from '@nextcloud/sharing'\n\nexport type DefaultGroup = string\nexport type DefaultChart = string\nexport type CircleConfig = number\nexport type MemberLevel = number\nexport type MemberType = number\n\n// Global sizes\nexport const LIST_SIZE = 60\n\n// Dynamic default groups\nexport const GROUP_ALL_CONTACTS: DefaultGroup = t('contacts', 'All contacts')\nexport const GROUP_NO_GROUP_CONTACTS: DefaultGroup = t('contacts', 'Not grouped')\nexport const GROUP_RECENTLY_CONTACTED: DefaultGroup = 'Recently contacted'\n\n// Organization default chart for all contacts\nexport const CHART_ALL_CONTACTS: DefaultChart = t('contacts', 'Organization chart')\n\n// Circle route, see vue-router conf\nexport const ROUTE_CIRCLE = 'circle'\nexport const ROUTE_CHART = 'chart'\nexport const ROUTE_USER_GROUP = 'user_group'\n\n// Contact settings\nexport const CONTACTS_SETTINGS: DefaultGroup = t('contacts', 'Contacts settings')\n\n// Default max number of items to show in the navigation\nexport const ELLIPSIS_COUNT = 5\n\n// Circles member levels\nconst MEMBER_LEVEL_NONE: MemberLevel = 0\nconst MEMBER_LEVEL_MEMBER: MemberLevel = 1\nconst MEMBER_LEVEL_MODERATOR: MemberLevel = 4\nconst MEMBER_LEVEL_ADMIN: MemberLevel = 8\nconst MEMBER_LEVEL_OWNER: MemberLevel = 9\n\n// Circles member types\n\nconst MEMBER_TYPE_SINGLEID: MemberType = 0\nconst MEMBER_TYPE_USER: MemberType = 1\nconst MEMBER_TYPE_GROUP: MemberType = 2\nconst MEMBER_TYPE_MAIL: MemberType = 4\nconst MEMBER_TYPE_CONTACT: MemberType = 8\nconst MEMBER_TYPE_CIRCLE: MemberType = 16\n\nexport const CIRCLE_DESC = t('contacts', 'Teams are groups of people that you can create yourself and with whom you can share data. They can be made up of other accounts or groups of accounts of the Nextcloud instance, but also of contacts from your address book or even external people by simply entering their e-mail addresses.')\n\n// Circles config flags\n\nconst CIRCLE_CONFIG_PERSONAL: CircleConfig = 2 // Personal circle, only the owner can see it.\nconst CIRCLE_CONFIG_SYSTEM: CircleConfig = 4 // System Circle (not managed by the official front-end). Meaning some config are limited\nconst CIRCLE_CONFIG_VISIBLE: CircleConfig = 8 // Visible to everyone, if not visible, people have to know its name to be able to find it\nconst CIRCLE_CONFIG_OPEN: CircleConfig = 16 // Circle is open, people can join\nconst CIRCLE_CONFIG_INVITE: CircleConfig = 32 // Adding a member generate an invitation that needs to be accepted\nconst CIRCLE_CONFIG_REQUEST: CircleConfig = 64 // Request to join Circles needs to be confirmed by a moderator\nconst CIRCLE_CONFIG_FRIEND: CircleConfig = 128 // Members of the circle can invite their friends\nconst CIRCLE_CONFIG_PROTECTED: CircleConfig = 256 // Password protected to join/request\nconst CIRCLE_CONFIG_NO_OWNER: CircleConfig = 512 // no owner, only members\nconst CIRCLE_CONFIG_HIDDEN: CircleConfig = 1024 // hidden from listing, but available as a share entity\nconst CIRCLE_CONFIG_BACKEND: CircleConfig = 2048 // Fully hidden, only backend Circles\nconst CIRCLE_CONFIG_LOCAL: CircleConfig = 4096 // Circle is not shared to other instance in globalscale\nconst CIRCLE_CONFIG_ROOT: CircleConfig = 8192 // Circle cannot be a member of another Circle\nconst CIRCLE_CONFIG_CIRCLE_INVITE: CircleConfig = 16384 // Circle must confirm when invited in another circle\nconst CIRCLE_CONFIG_FEDERATED: CircleConfig = 32768 // Federated\n\n// Existing members types\nexport const CIRCLES_MEMBER_TYPES = {\n\t[MEMBER_TYPE_CIRCLE]: t('contacts', 'Team'),\n\t[MEMBER_TYPE_USER]: t('contacts', 'User'),\n\t[MEMBER_TYPE_GROUP]: t('contacts', 'Group'),\n\t[MEMBER_TYPE_MAIL]: t('contacts', 'Email'),\n\t[MEMBER_TYPE_CONTACT]: t('contacts', 'Contact'),\n}\n\n// Available circles promote/demote levels\nexport const CIRCLES_MEMBER_LEVELS = {\n\t// [MEMBER_LEVEL_NONE]: t('contacts', 'Pending'),\n\t[MEMBER_LEVEL_MEMBER]: t('contacts', 'Member'),\n\t[MEMBER_LEVEL_MODERATOR]: t('contacts', 'Moderator'),\n\t[MEMBER_LEVEL_ADMIN]: t('contacts', 'Admin'),\n\t[MEMBER_LEVEL_OWNER]: t('contacts', 'Owner'),\n}\n\n// Available circle configs in the circle details view\nexport const PUBLIC_CIRCLE_CONFIG = {\n\t[t('contacts', 'Invites')]: {\n\t\t[CIRCLE_CONFIG_OPEN]: t('contacts', 'Anyone can request membership'),\n\t\t[CIRCLE_CONFIG_INVITE]: t('contacts', 'Members need to accept invitation'),\n\t\t[CIRCLE_CONFIG_REQUEST]: t('contacts', 'Memberships must be confirmed/accepted by a Moderator (requires \"Anyone can request membership\")'),\n\t\t[CIRCLE_CONFIG_FRIEND]: t('contacts', 'Members can also invite'),\n\t},\n\n\t[t('contacts', 'Membership')]: {\n\t\t// TODO: implement backend\n\t\t// [CIRCLE_CONFIG_CIRCLE_INVITE]: t('contacts', 'Team must confirm when invited in another circle'),\n\t\t[CIRCLE_CONFIG_ROOT]: t('contacts', 'Prevent teams from being a member of another team'),\n\t},\n\n\t[t('contacts', 'Privacy')]: {\n\t\t[CIRCLE_CONFIG_VISIBLE]: t('contacts', 'Visible to everyone'),\n\t},\n}\n\n// Represents the picker options (label is used lower case in a list of options: Search users, groups, teams, ...)\n// labelStandalone is used as heading for the member list where we need it starting captialized\nexport const CIRCLES_MEMBER_GROUPING = [\n\t{\n\t\tid: `picker-${ShareType.User}`,\n\t\tlabel: t('contacts', 'users'),\n\t\tlabelStandalone: t('contacts', 'Users'),\n\t\tshare: ShareType.User,\n\t\ttype: MEMBER_TYPE_USER,\n\t},\n\t{\n\t\tid: `picker-${ShareType.Group}`,\n\t\tlabel: t('contacts', 'groups'),\n\t\tlabelStandalone: t('contacts', 'Groups'),\n\t\tshare: ShareType.Group,\n\t\ttype: MEMBER_TYPE_GROUP,\n\t},\n\t// TODO: implement federated\n\t// {\n\t// id: `picker-${ShareType.Remote}`,\n\t// label: t('contacts', 'federated users'),\n\t// share: ShareType.Remote,\n\t// type: MEMBER_TYPE_USER\n\t// },\n\t// {\n\t// id: `picker-${ShareType.RemoteGroup}`,\n\t// label: t('contacts', 'federated groups'),\n\t// share: ShareType.RemoteGroup,\n\t// type: MEMBER_TYPE_GROUP\n\t// },\n\t{\n\t\tid: `picker-${ShareType.Team}`,\n\t\tlabel: t('contacts', 'teams'),\n\t\tlabelStandalone: t('contacts', 'Teams'),\n\t\tshare: ShareType.Team,\n\t\ttype: MEMBER_TYPE_CIRCLE,\n\t},\n\t{\n\t\tid: `picker-${ShareType.Email}`,\n\t\tlabel: t('contacts', 'email addresses'),\n\t\tlabelStandalone: t('contacts', 'Email addresses'),\n\t\tshare: ShareType.Email,\n\t\ttype: MEMBER_TYPE_MAIL,\n\t},\n\t// TODO: implement SHARE_TYPE_CONTACT\n\t{\n\t\tid: 'picker-contact',\n\t\tlabel: t('contacts', 'contacts'),\n\t\tlabelStandalone: t('contacts', 'Contacts'),\n\t\tshare: ShareType.Email,\n\t\ttype: MEMBER_TYPE_CONTACT,\n\t},\n]\n\n// Generating a map between share types and circle member types\nexport const SHARES_TYPES_MEMBER_MAP = CIRCLES_MEMBER_GROUPING.reduce((list, entry) => {\n\t// ! Ignore duplicate share types\n\tif (!list[entry.share]) {\n\t\tlist[entry.share] = entry.type\n\t}\n\treturn list\n}, {})\n\nexport enum MemberLevels {\n\tNONE = MEMBER_LEVEL_NONE,\n\tMEMBER = MEMBER_LEVEL_MEMBER,\n\tMODERATOR = MEMBER_LEVEL_MODERATOR,\n\tADMIN = MEMBER_LEVEL_ADMIN,\n\tOWNER = MEMBER_LEVEL_OWNER,\n}\n\nexport enum MemberTypes {\n\tCIRCLE = MEMBER_TYPE_CIRCLE,\n\tUSER = MEMBER_TYPE_USER,\n\tGROUP = MEMBER_TYPE_GROUP,\n\tMAIL = MEMBER_TYPE_MAIL,\n\tCONTACT = MEMBER_TYPE_CONTACT,\n}\n\nexport enum CircleConfigs {\n\tPERSONAL = CIRCLE_CONFIG_PERSONAL,\n\tSYSTEM = CIRCLE_CONFIG_SYSTEM,\n\tVISIBLE = CIRCLE_CONFIG_VISIBLE,\n\tOPEN = CIRCLE_CONFIG_OPEN,\n\tINVITE = CIRCLE_CONFIG_INVITE,\n\tREQUEST = CIRCLE_CONFIG_REQUEST,\n\tFRIEND = CIRCLE_CONFIG_FRIEND,\n\tPROTECTED = CIRCLE_CONFIG_PROTECTED,\n\tNO_OWNER = CIRCLE_CONFIG_NO_OWNER,\n\tHIDDEN = CIRCLE_CONFIG_HIDDEN,\n\tBACKEND = CIRCLE_CONFIG_BACKEND,\n\tLOCAL = CIRCLE_CONFIG_LOCAL,\n\tROOT = CIRCLE_CONFIG_ROOT,\n\tCIRCLE_INVITE = CIRCLE_CONFIG_CIRCLE_INVITE,\n\tFEDERATED = CIRCLE_CONFIG_FEDERATED,\n}\n\nexport enum MemberStatus {\n\tINVITED = 'Invited',\n\tMEMBER = 'Member',\n\tREQUESTING = 'Requesting',\n}\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { generateUrl } from '@nextcloud/router'\nimport { GROUP_ALL_CONTACTS } from '../models/constants.ts'\n\nexport function getChart(allNodes, currentNode) {\n\tconst result = [currentNode]\n\tconst children = allNodes.filter((node) => {\n\t\treturn node.nodeId !== currentNode.nodeId && node.parentNodeId === currentNode.nodeId\n\t})\n\n\treturn [\n\t\t...result,\n\t\t...children.flatMap((child) => getChart(allNodes, child)),\n\t]\n}\n\nexport function transformNode(contact) {\n\treturn {\n\t\tnodeId: contact.uid,\n\t\tkey: contact.key,\n\t\tparentNodeId: contact.managersName,\n\t\tfullName: contact.displayName,\n\t\torg: contact.org,\n\t\tphotoUrl: `${contact.url}?photo`,\n\t\ttitle: contact.title,\n\t\tlink: generateUrl(`apps/contacts/${GROUP_ALL_CONTACTS}/${contact.key}`),\n\t\texpanded: !contact.managersName,\n\t}\n}\n\nexport function otherContacts({ $store, self }) {\n\treturn $store.getters.getSortedContacts.filter(({ key }) => {\n\t\tconst contact = $store.getters.getContact(key)\n\t\treturn contact.addressbook.id === self.addressbook.id && contact.uid !== self.uid\n\t})\n}\n","\n\n","\n\n","\n\n","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { MemberLevel, MemberType } from '../models/constants.ts'\n\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { MemberLevels } from '../models/constants.ts'\ninterface MemberPairs {\n\tid: string\n\ttype: MemberType\n}\n\ntype CircleEditType = 'name' | 'description' | 'settings' | 'config'\nexport enum CircleEdit {\n\tName = 'name',\n\tDescription = 'description',\n\tSettings = 'settings',\n\tConfig = 'config',\n}\n\ninterface CircleSetting {\n\tsetting: string\n\tvalue: string\n}\n\n/**\n * Get the circles list without the members\n *\n * @return\n */\nexport async function getCircles() {\n\tconst response = await axios.get(generateOcsUrl('apps/circles/circles'))\n\treturn response.data.ocs.data\n}\n\n/**\n * Get a specific circle\n *\n * @param circleId\n * @return\n */\nexport async function getCircle(circleId: string) {\n\tconst response = await axios.get(generateOcsUrl('apps/circles/circles/{circleId}', { circleId }))\n\treturn response.data.ocs.data\n}\n\n/**\n * Create a new circle\n *\n * @param name the circle name\n * @param personal\n * @param local\n * @return\n */\nexport async function createCircle(name: string, personal: boolean, local: boolean) {\n\tconst response = await axios.post(generateOcsUrl('apps/circles/circles'), {\n\t\tname,\n\t\tpersonal,\n\t\tlocal,\n\t})\n\treturn response.data.ocs.data\n}\n\n/**\n * Delete an existing circle\n *\n * @param circleId the circle id\n * @return\n */\nexport async function deleteCircle(circleId: string) {\n\tconst response = await axios.delete(generateOcsUrl('apps/circles/circles/{circleId}', { circleId }))\n\treturn response.data.ocs.data\n}\n\n/**\n * Edit an existing circle\n *\n * @param circleId the circle id\n * @param type the edit type\n * @param data the data\n * @param value\n * @return\n */\nexport async function editCircle(circleId: string, type: CircleEditType, value: any) {\n\tconst response = await axios.put(generateOcsUrl('apps/circles/circles/{circleId}/{type}', { circleId, type }), { value })\n\treturn response.data.ocs.data\n}\n\n/**\n * Join a circle\n *\n * @param circleId the circle id\n * @return\n */\nexport async function joinCircle(circleId: string) {\n\tconst response = await axios.put(generateOcsUrl('apps/circles/circles/{circleId}/join', { circleId }))\n\treturn response.data.ocs.data\n}\n\n/**\n * Leave a circle\n *\n * @param circleId the circle id\n * @return\n */\nexport async function leaveCircle(circleId: string) {\n\tconst response = await axios.put(generateOcsUrl('apps/circles/circles/{circleId}/leave', { circleId }))\n\treturn response.data.ocs.data\n}\n\n/**\n * Get the circle members without the members\n *\n * @param circleId the circle id\n * @return\n */\nexport async function getCircleMembers(circleId: string) {\n\tconst response = await axios.get(generateOcsUrl('apps/circles/circles/{circleId}/members', { circleId }))\n\treturn response.data.ocs.data\n}\n\n/**\n * Search a potential circle member\n *\n * @param term the search query\n * @return\n */\nexport async function searchMember(term: string) {\n\tconst response = await axios.get(generateOcsUrl('apps/circles/search?term={term}', { term }))\n\treturn response.data.ocs.data\n}\n\n/**\n * Add a circle member\n *\n * @param circleId the circle id\n * @param members the member id\n * @return\n */\nexport async function addMembers(circleId: string, members: Array) {\n\tconst response = await axios.post(generateOcsUrl('apps/circles/circles/{circleId}/members/multi', { circleId }), { members })\n\treturn response.data.ocs.data\n}\n\n/**\n * Delete a circle member\n *\n * @param circleId the circle id\n * @param memberId the member id\n * @return\n */\nexport async function deleteMember(circleId: string, memberId: string) {\n\tconst response = await axios.delete(generateOcsUrl('apps/circles/circles/{circleId}/members/{memberId}', { circleId, memberId }))\n\treturn Object.values(response.data.ocs.data)\n}\n\n/**\n * change a member level\n *\n * @see levels file src/models/constants.js\n *\n * @param circleId the circle id\n * @param memberId the member id\n * @param level the new member level\n * @return\n */\nexport async function changeMemberLevel(circleId: string, memberId: string, level: MemberLevel) {\n\tif (!(level in MemberLevels)) {\n\t\tthrow new Error('Invalid level.')\n\t}\n\n\tconst response = await axios.put(generateOcsUrl('apps/circles/circles/{circleId}/members/{memberId}/level', { circleId, memberId }), {\n\t\tlevel,\n\t})\n\treturn Object.values(response.data.ocs.data)\n}\n\n/**\n * Accept a circle member request\n *\n * @param circleId the circle id\n * @param memberId the member id\n * @return\n */\nexport async function acceptMember(circleId: string, memberId: string) {\n\tconst response = await axios.put(generateOcsUrl('apps/circles/circles/{circleId}/members/{memberId}', { circleId, memberId }))\n\treturn response.data.ocs.data\n}\n\nexport async function editCircleSetting(circleId: string, setting: CircleSetting) {\n\tconst response = await axios.put(\n\t\tgenerateOcsUrl('apps/circles/circles/{circleId}/setting', { circleId }),\n\t\tsetting,\n\t)\n\treturn response.data.ocs.data\n}\n","\n\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { MemberLevel, MemberType } from './constants.ts'\n\nimport logger from '../services/logger.js'\nimport Circle from './circle.ts'\nimport { MemberLevels, MemberTypes } from './constants.ts'\n\nexport default class Member {\n\t_data: any = {}\n\t_circle: Circle\n\n\t/**\n\t * Creates an instance of Member\n\t *\n\t * @param data\n\t * @param circle\n\t */\n\tconstructor(data: any, circle: Circle) {\n\t\tif (typeof data !== 'object') {\n\t\t\tthrow new Error('Invalid member')\n\t\t}\n\n\t\t// if no uid set, fail\n\t\tif (data.id && typeof data.id !== 'string') {\n\t\t\tlogger.error('This member do not have a proper uid', data)\n\t\t\tthrow new Error('This member do not have a proper uid')\n\t\t}\n\n\t\tthis._circle = circle\n\t\tthis._data = data\n\t}\n\n\t/**\n\t * Get the circle of this member\n\t */\n\tget circle(): Circle {\n\t\treturn this._circle\n\t}\n\n\t/**\n\t * Set the circle of this member\n\t */\n\tset circle(circle: Circle) {\n\t\tif (circle.constructor.name !== Circle.name) {\n\t\t\tthrow new Error('circle must be a Circle type')\n\t\t}\n\t\tthis._circle = circle\n\t}\n\n\t/**\n\t * Member id\n\t */\n\tget id(): string {\n\t\treturn this._data.id\n\t}\n\n\t/**\n\t * Single uid\n\t */\n\tget singleId(): string {\n\t\treturn this._data.singleId\n\t}\n\n\t/**\n\t * Formatted display name\n\t */\n\tget displayName(): string {\n\t\treturn this._data.displayName\n\t}\n\n\t/**\n\t * Member userId\n\t */\n\tget userId(): string {\n\t\treturn this._data.userId\n\t}\n\n\t/**\n\t * Member type\n\t */\n\tget userType(): MemberType {\n\t\t// If the user type is a circle, this could originate from multiple sources\n\t\treturn this._data.userType !== MemberTypes.CIRCLE\n\t\t\t? this._data.userType\n\t\t\t: this.basedOn.source\n\t}\n\n\t/**\n\t * Member based on source\n\t */\n\tget basedOn(): any {\n\t\treturn this._data.basedOn\n\t}\n\n\t/**\n\t * Member level\n\t *\n\t */\n\tget level(): MemberLevel {\n\t\treturn this._data.level\n\t}\n\n\t/**\n\t * Set member level\n\t */\n\tset level(level: MemberLevel) {\n\t\tif (!(level in MemberLevels)) {\n\t\t\tthrow new Error('Invalid level')\n\t\t}\n\t\tthis._data.level = level\n\t}\n\n\t/**\n\t * Member request status\n\t *\n\t */\n\tget status(): string {\n\t\treturn this._data.status\n\t}\n\n\t/**\n\t * Is the current member a user?\n\t */\n\tget isUser() {\n\t\treturn this._data.userType === MemberLevels.MEMBER\n\t}\n\n\t/**\n\t * Is the current member without a circle?\n\t */\n\tget isOrphan() {\n\t\treturn this._circle?.constructor?.name !== Circle.name\n\t}\n\n\t/**\n\t * Delete this member and any reference from its circle\n\t */\n\tdelete() {\n\t\tif (this.isOrphan) {\n\t\t\tthrow new Error('Cannot delete this member as it doesn\\'t belong to any circle')\n\t\t}\n\t\tthis.circle.deleteMember(this)\n\t\tthis._data = undefined\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { CircleConfigs, MemberLevels, ROUTE_CIRCLE } from './constants.ts'\nimport Member from './member.ts'\n\ntype MemberList = Record\n\nexport default class Circle {\n\t_data: any = {}\n\t_members: MemberList = {}\n\t_owner: Member\n\t_initiator: Member\n\n\t/**\n\t * Creates an instance of Circle\n\t *\n\t * @param data\n\t */\n\tconstructor(data: object) {\n\t\tthis.updateData(data)\n\t}\n\n\t/**\n\t * Update inner circle data, owner and initiator\n\t *\n\t * @param data\n\t */\n\tupdateData(data: any) {\n\t\tif (typeof data !== 'object') {\n\t\t\tthrow new Error('Invalid circle')\n\t\t}\n\n\t\t// if no uid set, fail\n\t\tif (!data.id) {\n\t\t\tthrow new Error('This circle do not have a proper uid')\n\t\t}\n\n\t\tthis._data = data\n\t\tthis._owner = new Member(data.owner, this)\n\n\t\tif (data.initiator) {\n\t\t\tthis._initiator = new Member(data.initiator, this)\n\t\t}\n\t}\n\n\t// METADATA -----------------------------------------\n\t/**\n\t * Circle id\n\t */\n\tget id(): string {\n\t\treturn this._data.id\n\t}\n\n\t/**\n\t * Formatted display name\n\t */\n\tget displayName(): string {\n\t\treturn this._data.displayName\n\t}\n\n\t/**\n\t * Set the display name\n\t */\n\tset displayName(text: string) {\n\t\tthis._data.displayName = text\n\t}\n\n\t/**\n\t * Circle creation date\n\t */\n\tget creation(): number {\n\t\treturn this._data.creation\n\t}\n\n\t/**\n\t * Circle description\n\t */\n\tget description(): string {\n\t\treturn this._data.description\n\t}\n\n\t/**\n\t * Circle description\n\t */\n\tset description(text: string) {\n\t\tthis._data.description = text\n\t}\n\n\t/**\n\t * Circle member count\n\t */\n\tget population() {\n\t\treturn this._data.population\n\t}\n\n\t// MEMBERSHIP -----------------------------------------\n\t/**\n\t * Circle ini_initiator the current\n\t * user info for this circle\n\t * null if not a member\n\t */\n\tget initiator(): Member | null {\n\t\treturn this._initiator\n\t}\n\n\t/**\n\t * Set new circle initiator\n\t * null if not a member\n\t */\n\tset initiator(initiator: Member) {\n\t\tif (initiator && initiator.constructor.name !== Member.name) {\n\t\t\tthrow new Error('Initiator must be a Member type')\n\t\t}\n\t\tthis._initiator = initiator\n\t}\n\n\t/**\n\t * Circle ownership\n\t */\n\tget owner(): Member {\n\t\treturn this._owner\n\t}\n\n\t/**\n\t * Set new circle owner\n\t */\n\tset owner(owner: Member) {\n\t\tif (owner.constructor.name !== Member.name) {\n\t\t\tthrow new Error('Owner must be a Member type')\n\t\t}\n\t\tthis._owner = owner\n\t}\n\n\t/**\n\t * Circle members\n\t */\n\tget members(): MemberList {\n\t\treturn this._members\n\t}\n\n\t/**\n\t * Define members circle\n\t */\n\tset members(members: MemberList) {\n\t\tthis._members = members\n\t}\n\n\t/**\n\t * Add a member to this circle\n\t *\n\t * @param member\n\t */\n\taddMember(member: Member) {\n\t\tif (member.constructor.name !== Member.name) {\n\t\t\tthrow new Error('Member must be a Member type')\n\t\t}\n\n\t\tconst singleId = member.singleId\n\t\tif (this._members[singleId]) {\n\t\t\tconsole.warn('Replacing existing member data', member)\n\t\t}\n\t\tthis._members[singleId] = member\n\t}\n\n\t/**\n\t * Remove a member from this circle\n\t *\n\t * @param member\n\t */\n\tdeleteMember(member: Member) {\n\t\tif (member.constructor.name !== Member.name) {\n\t\t\tthrow new Error('Member must be a Member type')\n\t\t}\n\n\t\tconst singleId = member.singleId\n\t\tif (!this._members[singleId]) {\n\t\t\tconsole.warn('The member was not in this circle. Nothing was done.', member)\n\t\t}\n\n\t\t// Delete and clear memory\n\t\tdelete this._members[singleId]\n\t}\n\n\t// CONFIGS --------------------------------------------\n\tget settings() {\n\t\treturn this._data.settings\n\t}\n\n\t/**\n\t * Circle config\n\t */\n\tget config(): number {\n\t\treturn this._data.config\n\t}\n\n\t/**\n\t * Define circle config\n\t */\n\tset config(config: number) {\n\t\tthis._data.config = config\n\t}\n\n\t/**\n\t * Circle is personal\n\t */\n\tget isPersonal() {\n\t\treturn (this._data.config & CircleConfigs.PERSONAL) !== 0\n\t}\n\n\t/**\n\t * Circle requires invite to be confirmed by moderator or above\n\t */\n\tget requireJoinAccept() {\n\t\treturn (this._data.config & CircleConfigs.VISIBLE) !== 0\n\t}\n\n\t/**\n\t * Circle can be requested to join\n\t */\n\tget canJoin() {\n\t\treturn (this._data.config & CircleConfigs.OPEN) !== 0\n\t}\n\n\t/**\n\t * Circle is visible to others\n\t */\n\tget isVisible() {\n\t\treturn (this._data.config & CircleConfigs.VISIBLE) !== 0\n\t}\n\n\t/**\n\t * Circle requires invite to be accepted by the member\n\t */\n\tget requireInviteAccept() {\n\t\treturn (this._data.config & CircleConfigs.INVITE) !== 0\n\t}\n\n\t// PERMISSIONS SHORTCUTS ------------------------------\n\t/**\n\t * Can the initiator add members to this circle?\n\t */\n\tget isOwner() {\n\t\treturn this.initiator?.level === MemberLevels.OWNER\n\t}\n\n\t// PERMISSIONS SHORTCUTS ------------------------------\n\t/**\n\t * Is the initiator an admin of this circle?\n\t */\n\tget isAdmin() {\n\t\treturn this.initiator?.level === MemberLevels.ADMIN\n\t}\n\n\t/**\n\t * Is the initiator a member of this circle?\n\t */\n\tget isMember() {\n\t\treturn this.initiator?.level\n\t\t\t&& this.initiator?.level > MemberLevels.NONE\n\t}\n\n\t/**\n\t * Is the initiator a pending member of this circle?\n\t */\n\tget isPendingMember() {\n\t\treturn this.initiator?.level === MemberLevels.NONE\n\t}\n\n\t/**\n\t * Can the initiator delete this circle?\n\t */\n\tget canDelete() {\n\t\treturn this.isOwner\n\t}\n\n\t/**\n\t * Can the initiator leave this circle?\n\t */\n\tget canLeave() {\n\t\treturn this.isMember && !this.isOwner\n\t}\n\n\t/**\n\t * Can the initiator add/remove members to this circle?\n\t */\n\tget canManageMembers() {\n\t\treturn (this.initiator?.level\n\t\t\t&& this.initiator?.level >= MemberLevels.MODERATOR)\n\t\t|| (this.config & CircleConfigs.FRIEND) !== 0\n\t}\n\n\t// PARAMS ---------------------------------------------\n\t/**\n\t * Vue router param\n\t */\n\tget router() {\n\t\treturn {\n\t\t\tname: 'circle',\n\t\t\tparams: { selectedCircle: this.id, selectedGroup: ROUTE_CIRCLE },\n\t\t}\n\t}\n\n\t/**\n\t * Default javascript fallback\n\t * Used for sorting as well\n\t */\n\ttoString() {\n\t\treturn this.displayName\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { useIsMobile } from '@nextcloud/vue'\n\nexport default {\n\tcomputed: {\n\t\tisMobile() {\n\t\t\treturn useIsMobile().value\n\t\t},\n\t},\n}\n","export default function(n){return{all:n=n||new Map,on:function(t,e){var i=n.get(t);i?i.push(e):n.set(t,[e])},off:function(t,e){var i=n.get(t);i&&(e?i.splice(i.indexOf(e)>>>0,1):n.set(t,[]))},emit:function(t,e){var i=n.get(t);i&&i.slice().map(function(n){n(e)}),(i=n.get(\"*\"))&&i.slice().map(function(n){n(t,e)})}}}\n//# sourceMappingURL=mitt.mjs.map\n","/** Used to map aliases to their real names. */\nexports.aliasToReal = {\n\n // Lodash aliases.\n 'each': 'forEach',\n 'eachRight': 'forEachRight',\n 'entries': 'toPairs',\n 'entriesIn': 'toPairsIn',\n 'extend': 'assignIn',\n 'extendAll': 'assignInAll',\n 'extendAllWith': 'assignInAllWith',\n 'extendWith': 'assignInWith',\n 'first': 'head',\n\n // Methods that are curried variants of others.\n 'conforms': 'conformsTo',\n 'matches': 'isMatch',\n 'property': 'get',\n\n // Ramda aliases.\n '__': 'placeholder',\n 'F': 'stubFalse',\n 'T': 'stubTrue',\n 'all': 'every',\n 'allPass': 'overEvery',\n 'always': 'constant',\n 'any': 'some',\n 'anyPass': 'overSome',\n 'apply': 'spread',\n 'assoc': 'set',\n 'assocPath': 'set',\n 'complement': 'negate',\n 'compose': 'flowRight',\n 'contains': 'includes',\n 'dissoc': 'unset',\n 'dissocPath': 'unset',\n 'dropLast': 'dropRight',\n 'dropLastWhile': 'dropRightWhile',\n 'equals': 'isEqual',\n 'identical': 'eq',\n 'indexBy': 'keyBy',\n 'init': 'initial',\n 'invertObj': 'invert',\n 'juxt': 'over',\n 'omitAll': 'omit',\n 'nAry': 'ary',\n 'path': 'get',\n 'pathEq': 'matchesProperty',\n 'pathOr': 'getOr',\n 'paths': 'at',\n 'pickAll': 'pick',\n 'pipe': 'flow',\n 'pluck': 'map',\n 'prop': 'get',\n 'propEq': 'matchesProperty',\n 'propOr': 'getOr',\n 'props': 'at',\n 'symmetricDifference': 'xor',\n 'symmetricDifferenceBy': 'xorBy',\n 'symmetricDifferenceWith': 'xorWith',\n 'takeLast': 'takeRight',\n 'takeLastWhile': 'takeRightWhile',\n 'unapply': 'rest',\n 'unnest': 'flatten',\n 'useWith': 'overArgs',\n 'where': 'conformsTo',\n 'whereEq': 'isMatch',\n 'zipObj': 'zipObject'\n};\n\n/** Used to map ary to method names. */\nexports.aryMethod = {\n '1': [\n 'assignAll', 'assignInAll', 'attempt', 'castArray', 'ceil', 'create',\n 'curry', 'curryRight', 'defaultsAll', 'defaultsDeepAll', 'floor', 'flow',\n 'flowRight', 'fromPairs', 'invert', 'iteratee', 'memoize', 'method', 'mergeAll',\n 'methodOf', 'mixin', 'nthArg', 'over', 'overEvery', 'overSome','rest', 'reverse',\n 'round', 'runInContext', 'spread', 'template', 'trim', 'trimEnd', 'trimStart',\n 'uniqueId', 'words', 'zipAll'\n ],\n '2': [\n 'add', 'after', 'ary', 'assign', 'assignAllWith', 'assignIn', 'assignInAllWith',\n 'at', 'before', 'bind', 'bindAll', 'bindKey', 'chunk', 'cloneDeepWith',\n 'cloneWith', 'concat', 'conformsTo', 'countBy', 'curryN', 'curryRightN',\n 'debounce', 'defaults', 'defaultsDeep', 'defaultTo', 'delay', 'difference',\n 'divide', 'drop', 'dropRight', 'dropRightWhile', 'dropWhile', 'endsWith', 'eq',\n 'every', 'filter', 'find', 'findIndex', 'findKey', 'findLast', 'findLastIndex',\n 'findLastKey', 'flatMap', 'flatMapDeep', 'flattenDepth', 'forEach',\n 'forEachRight', 'forIn', 'forInRight', 'forOwn', 'forOwnRight', 'get',\n 'groupBy', 'gt', 'gte', 'has', 'hasIn', 'includes', 'indexOf', 'intersection',\n 'invertBy', 'invoke', 'invokeMap', 'isEqual', 'isMatch', 'join', 'keyBy',\n 'lastIndexOf', 'lt', 'lte', 'map', 'mapKeys', 'mapValues', 'matchesProperty',\n 'maxBy', 'meanBy', 'merge', 'mergeAllWith', 'minBy', 'multiply', 'nth', 'omit',\n 'omitBy', 'overArgs', 'pad', 'padEnd', 'padStart', 'parseInt', 'partial',\n 'partialRight', 'partition', 'pick', 'pickBy', 'propertyOf', 'pull', 'pullAll',\n 'pullAt', 'random', 'range', 'rangeRight', 'rearg', 'reject', 'remove',\n 'repeat', 'restFrom', 'result', 'sampleSize', 'some', 'sortBy', 'sortedIndex',\n 'sortedIndexOf', 'sortedLastIndex', 'sortedLastIndexOf', 'sortedUniqBy',\n 'split', 'spreadFrom', 'startsWith', 'subtract', 'sumBy', 'take', 'takeRight',\n 'takeRightWhile', 'takeWhile', 'tap', 'throttle', 'thru', 'times', 'trimChars',\n 'trimCharsEnd', 'trimCharsStart', 'truncate', 'union', 'uniqBy', 'uniqWith',\n 'unset', 'unzipWith', 'without', 'wrap', 'xor', 'zip', 'zipObject',\n 'zipObjectDeep'\n ],\n '3': [\n 'assignInWith', 'assignWith', 'clamp', 'differenceBy', 'differenceWith',\n 'findFrom', 'findIndexFrom', 'findLastFrom', 'findLastIndexFrom', 'getOr',\n 'includesFrom', 'indexOfFrom', 'inRange', 'intersectionBy', 'intersectionWith',\n 'invokeArgs', 'invokeArgsMap', 'isEqualWith', 'isMatchWith', 'flatMapDepth',\n 'lastIndexOfFrom', 'mergeWith', 'orderBy', 'padChars', 'padCharsEnd',\n 'padCharsStart', 'pullAllBy', 'pullAllWith', 'rangeStep', 'rangeStepRight',\n 'reduce', 'reduceRight', 'replace', 'set', 'slice', 'sortedIndexBy',\n 'sortedLastIndexBy', 'transform', 'unionBy', 'unionWith', 'update', 'xorBy',\n 'xorWith', 'zipWith'\n ],\n '4': [\n 'fill', 'setWith', 'updateWith'\n ]\n};\n\n/** Used to map ary to rearg configs. */\nexports.aryRearg = {\n '2': [1, 0],\n '3': [2, 0, 1],\n '4': [3, 2, 0, 1]\n};\n\n/** Used to map method names to their iteratee ary. */\nexports.iterateeAry = {\n 'dropRightWhile': 1,\n 'dropWhile': 1,\n 'every': 1,\n 'filter': 1,\n 'find': 1,\n 'findFrom': 1,\n 'findIndex': 1,\n 'findIndexFrom': 1,\n 'findKey': 1,\n 'findLast': 1,\n 'findLastFrom': 1,\n 'findLastIndex': 1,\n 'findLastIndexFrom': 1,\n 'findLastKey': 1,\n 'flatMap': 1,\n 'flatMapDeep': 1,\n 'flatMapDepth': 1,\n 'forEach': 1,\n 'forEachRight': 1,\n 'forIn': 1,\n 'forInRight': 1,\n 'forOwn': 1,\n 'forOwnRight': 1,\n 'map': 1,\n 'mapKeys': 1,\n 'mapValues': 1,\n 'partition': 1,\n 'reduce': 2,\n 'reduceRight': 2,\n 'reject': 1,\n 'remove': 1,\n 'some': 1,\n 'takeRightWhile': 1,\n 'takeWhile': 1,\n 'times': 1,\n 'transform': 2\n};\n\n/** Used to map method names to iteratee rearg configs. */\nexports.iterateeRearg = {\n 'mapKeys': [1],\n 'reduceRight': [1, 0]\n};\n\n/** Used to map method names to rearg configs. */\nexports.methodRearg = {\n 'assignInAllWith': [1, 0],\n 'assignInWith': [1, 2, 0],\n 'assignAllWith': [1, 0],\n 'assignWith': [1, 2, 0],\n 'differenceBy': [1, 2, 0],\n 'differenceWith': [1, 2, 0],\n 'getOr': [2, 1, 0],\n 'intersectionBy': [1, 2, 0],\n 'intersectionWith': [1, 2, 0],\n 'isEqualWith': [1, 2, 0],\n 'isMatchWith': [2, 1, 0],\n 'mergeAllWith': [1, 0],\n 'mergeWith': [1, 2, 0],\n 'padChars': [2, 1, 0],\n 'padCharsEnd': [2, 1, 0],\n 'padCharsStart': [2, 1, 0],\n 'pullAllBy': [2, 1, 0],\n 'pullAllWith': [2, 1, 0],\n 'rangeStep': [1, 2, 0],\n 'rangeStepRight': [1, 2, 0],\n 'setWith': [3, 1, 2, 0],\n 'sortedIndexBy': [2, 1, 0],\n 'sortedLastIndexBy': [2, 1, 0],\n 'unionBy': [1, 2, 0],\n 'unionWith': [1, 2, 0],\n 'updateWith': [3, 1, 2, 0],\n 'xorBy': [1, 2, 0],\n 'xorWith': [1, 2, 0],\n 'zipWith': [1, 2, 0]\n};\n\n/** Used to map method names to spread configs. */\nexports.methodSpread = {\n 'assignAll': { 'start': 0 },\n 'assignAllWith': { 'start': 0 },\n 'assignInAll': { 'start': 0 },\n 'assignInAllWith': { 'start': 0 },\n 'defaultsAll': { 'start': 0 },\n 'defaultsDeepAll': { 'start': 0 },\n 'invokeArgs': { 'start': 2 },\n 'invokeArgsMap': { 'start': 2 },\n 'mergeAll': { 'start': 0 },\n 'mergeAllWith': { 'start': 0 },\n 'partial': { 'start': 1 },\n 'partialRight': { 'start': 1 },\n 'without': { 'start': 1 },\n 'zipAll': { 'start': 0 }\n};\n\n/** Used to identify methods which mutate arrays or objects. */\nexports.mutate = {\n 'array': {\n 'fill': true,\n 'pull': true,\n 'pullAll': true,\n 'pullAllBy': true,\n 'pullAllWith': true,\n 'pullAt': true,\n 'remove': true,\n 'reverse': true\n },\n 'object': {\n 'assign': true,\n 'assignAll': true,\n 'assignAllWith': true,\n 'assignIn': true,\n 'assignInAll': true,\n 'assignInAllWith': true,\n 'assignInWith': true,\n 'assignWith': true,\n 'defaults': true,\n 'defaultsAll': true,\n 'defaultsDeep': true,\n 'defaultsDeepAll': true,\n 'merge': true,\n 'mergeAll': true,\n 'mergeAllWith': true,\n 'mergeWith': true,\n },\n 'set': {\n 'set': true,\n 'setWith': true,\n 'unset': true,\n 'update': true,\n 'updateWith': true\n }\n};\n\n/** Used to map real names to their aliases. */\nexports.realToAlias = (function() {\n var hasOwnProperty = Object.prototype.hasOwnProperty,\n object = exports.aliasToReal,\n result = {};\n\n for (var key in object) {\n var value = object[key];\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }\n return result;\n}());\n\n/** Used to map method names to other names. */\nexports.remap = {\n 'assignAll': 'assign',\n 'assignAllWith': 'assignWith',\n 'assignInAll': 'assignIn',\n 'assignInAllWith': 'assignInWith',\n 'curryN': 'curry',\n 'curryRightN': 'curryRight',\n 'defaultsAll': 'defaults',\n 'defaultsDeepAll': 'defaultsDeep',\n 'findFrom': 'find',\n 'findIndexFrom': 'findIndex',\n 'findLastFrom': 'findLast',\n 'findLastIndexFrom': 'findLastIndex',\n 'getOr': 'get',\n 'includesFrom': 'includes',\n 'indexOfFrom': 'indexOf',\n 'invokeArgs': 'invoke',\n 'invokeArgsMap': 'invokeMap',\n 'lastIndexOfFrom': 'lastIndexOf',\n 'mergeAll': 'merge',\n 'mergeAllWith': 'mergeWith',\n 'padChars': 'pad',\n 'padCharsEnd': 'padEnd',\n 'padCharsStart': 'padStart',\n 'propertyOf': 'get',\n 'rangeStep': 'range',\n 'rangeStepRight': 'rangeRight',\n 'restFrom': 'rest',\n 'spreadFrom': 'spread',\n 'trimChars': 'trim',\n 'trimCharsEnd': 'trimEnd',\n 'trimCharsStart': 'trimStart',\n 'zipAll': 'zip'\n};\n\n/** Used to track methods that skip fixing their arity. */\nexports.skipFixed = {\n 'castArray': true,\n 'flow': true,\n 'flowRight': true,\n 'iteratee': true,\n 'mixin': true,\n 'rearg': true,\n 'runInContext': true\n};\n\n/** Used to track methods that skip rearranging arguments. */\nexports.skipRearg = {\n 'add': true,\n 'assign': true,\n 'assignIn': true,\n 'bind': true,\n 'bindKey': true,\n 'concat': true,\n 'difference': true,\n 'divide': true,\n 'eq': true,\n 'gt': true,\n 'gte': true,\n 'isEqual': true,\n 'lt': true,\n 'lte': true,\n 'matchesProperty': true,\n 'merge': true,\n 'multiply': true,\n 'overArgs': true,\n 'partial': true,\n 'partialRight': true,\n 'propertyOf': true,\n 'random': true,\n 'range': true,\n 'rangeRight': true,\n 'subtract': true,\n 'zip': true,\n 'zipObject': true,\n 'zipObjectDeep': true\n};\n","/**\n * The default argument placeholder value for methods.\n *\n * @type {Object}\n */\nmodule.exports = {};\n","var mapping = require('./_mapping'),\n fallbackHolder = require('./placeholder');\n\n/** Built-in value reference. */\nvar push = Array.prototype.push;\n\n/**\n * Creates a function, with an arity of `n`, that invokes `func` with the\n * arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} n The arity of the new function.\n * @returns {Function} Returns the new function.\n */\nfunction baseArity(func, n) {\n return n == 2\n ? function(a, b) { return func.apply(undefined, arguments); }\n : function(a) { return func.apply(undefined, arguments); };\n}\n\n/**\n * Creates a function that invokes `func`, with up to `n` arguments, ignoring\n * any additional arguments.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @param {number} n The arity cap.\n * @returns {Function} Returns the new function.\n */\nfunction baseAry(func, n) {\n return n == 2\n ? function(a, b) { return func(a, b); }\n : function(a) { return func(a); };\n}\n\n/**\n * Creates a clone of `array`.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the cloned array.\n */\nfunction cloneArray(array) {\n var length = array ? array.length : 0,\n result = Array(length);\n\n while (length--) {\n result[length] = array[length];\n }\n return result;\n}\n\n/**\n * Creates a function that clones a given object using the assignment `func`.\n *\n * @private\n * @param {Function} func The assignment function.\n * @returns {Function} Returns the new cloner function.\n */\nfunction createCloner(func) {\n return function(object) {\n return func({}, object);\n };\n}\n\n/**\n * A specialized version of `_.spread` which flattens the spread array into\n * the arguments of the invoked `func`.\n *\n * @private\n * @param {Function} func The function to spread arguments over.\n * @param {number} start The start position of the spread.\n * @returns {Function} Returns the new function.\n */\nfunction flatSpread(func, start) {\n return function() {\n var length = arguments.length,\n lastIndex = length - 1,\n args = Array(length);\n\n while (length--) {\n args[length] = arguments[length];\n }\n var array = args[start],\n otherArgs = args.slice(0, start);\n\n if (array) {\n push.apply(otherArgs, array);\n }\n if (start != lastIndex) {\n push.apply(otherArgs, args.slice(start + 1));\n }\n return func.apply(this, otherArgs);\n };\n}\n\n/**\n * Creates a function that wraps `func` and uses `cloner` to clone the first\n * argument it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} cloner The function to clone arguments.\n * @returns {Function} Returns the new immutable function.\n */\nfunction wrapImmutable(func, cloner) {\n return function() {\n var length = arguments.length;\n if (!length) {\n return;\n }\n var args = Array(length);\n while (length--) {\n args[length] = arguments[length];\n }\n var result = args[0] = cloner.apply(undefined, args);\n func.apply(undefined, args);\n return result;\n };\n}\n\n/**\n * The base implementation of `convert` which accepts a `util` object of methods\n * required to perform conversions.\n *\n * @param {Object} util The util object.\n * @param {string} name The name of the function to convert.\n * @param {Function} func The function to convert.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.cap=true] Specify capping iteratee arguments.\n * @param {boolean} [options.curry=true] Specify currying.\n * @param {boolean} [options.fixed=true] Specify fixed arity.\n * @param {boolean} [options.immutable=true] Specify immutable operations.\n * @param {boolean} [options.rearg=true] Specify rearranging arguments.\n * @returns {Function|Object} Returns the converted function or object.\n */\nfunction baseConvert(util, name, func, options) {\n var isLib = typeof name == 'function',\n isObj = name === Object(name);\n\n if (isObj) {\n options = func;\n func = name;\n name = undefined;\n }\n if (func == null) {\n throw new TypeError;\n }\n options || (options = {});\n\n var config = {\n 'cap': 'cap' in options ? options.cap : true,\n 'curry': 'curry' in options ? options.curry : true,\n 'fixed': 'fixed' in options ? options.fixed : true,\n 'immutable': 'immutable' in options ? options.immutable : true,\n 'rearg': 'rearg' in options ? options.rearg : true\n };\n\n var defaultHolder = isLib ? func : fallbackHolder,\n forceCurry = ('curry' in options) && options.curry,\n forceFixed = ('fixed' in options) && options.fixed,\n forceRearg = ('rearg' in options) && options.rearg,\n pristine = isLib ? func.runInContext() : undefined;\n\n var helpers = isLib ? func : {\n 'ary': util.ary,\n 'assign': util.assign,\n 'clone': util.clone,\n 'curry': util.curry,\n 'forEach': util.forEach,\n 'isArray': util.isArray,\n 'isError': util.isError,\n 'isFunction': util.isFunction,\n 'isWeakMap': util.isWeakMap,\n 'iteratee': util.iteratee,\n 'keys': util.keys,\n 'rearg': util.rearg,\n 'toInteger': util.toInteger,\n 'toPath': util.toPath\n };\n\n var ary = helpers.ary,\n assign = helpers.assign,\n clone = helpers.clone,\n curry = helpers.curry,\n each = helpers.forEach,\n isArray = helpers.isArray,\n isError = helpers.isError,\n isFunction = helpers.isFunction,\n isWeakMap = helpers.isWeakMap,\n keys = helpers.keys,\n rearg = helpers.rearg,\n toInteger = helpers.toInteger,\n toPath = helpers.toPath;\n\n var aryMethodKeys = keys(mapping.aryMethod);\n\n var wrappers = {\n 'castArray': function(castArray) {\n return function() {\n var value = arguments[0];\n return isArray(value)\n ? castArray(cloneArray(value))\n : castArray.apply(undefined, arguments);\n };\n },\n 'iteratee': function(iteratee) {\n return function() {\n var func = arguments[0],\n arity = arguments[1],\n result = iteratee(func, arity),\n length = result.length;\n\n if (config.cap && typeof arity == 'number') {\n arity = arity > 2 ? (arity - 2) : 1;\n return (length && length <= arity) ? result : baseAry(result, arity);\n }\n return result;\n };\n },\n 'mixin': function(mixin) {\n return function(source) {\n var func = this;\n if (!isFunction(func)) {\n return mixin(func, Object(source));\n }\n var pairs = [];\n each(keys(source), function(key) {\n if (isFunction(source[key])) {\n pairs.push([key, func.prototype[key]]);\n }\n });\n\n mixin(func, Object(source));\n\n each(pairs, function(pair) {\n var value = pair[1];\n if (isFunction(value)) {\n func.prototype[pair[0]] = value;\n } else {\n delete func.prototype[pair[0]];\n }\n });\n return func;\n };\n },\n 'nthArg': function(nthArg) {\n return function(n) {\n var arity = n < 0 ? 1 : (toInteger(n) + 1);\n return curry(nthArg(n), arity);\n };\n },\n 'rearg': function(rearg) {\n return function(func, indexes) {\n var arity = indexes ? indexes.length : 0;\n return curry(rearg(func, indexes), arity);\n };\n },\n 'runInContext': function(runInContext) {\n return function(context) {\n return baseConvert(util, runInContext(context), options);\n };\n }\n };\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Casts `func` to a function with an arity capped iteratee if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @returns {Function} Returns the cast function.\n */\n function castCap(name, func) {\n if (config.cap) {\n var indexes = mapping.iterateeRearg[name];\n if (indexes) {\n return iterateeRearg(func, indexes);\n }\n var n = !isLib && mapping.iterateeAry[name];\n if (n) {\n return iterateeAry(func, n);\n }\n }\n return func;\n }\n\n /**\n * Casts `func` to a curried function if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @param {number} n The arity of `func`.\n * @returns {Function} Returns the cast function.\n */\n function castCurry(name, func, n) {\n return (forceCurry || (config.curry && n > 1))\n ? curry(func, n)\n : func;\n }\n\n /**\n * Casts `func` to a fixed arity function if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @param {number} n The arity cap.\n * @returns {Function} Returns the cast function.\n */\n function castFixed(name, func, n) {\n if (config.fixed && (forceFixed || !mapping.skipFixed[name])) {\n var data = mapping.methodSpread[name],\n start = data && data.start;\n\n return start === undefined ? ary(func, n) : flatSpread(func, start);\n }\n return func;\n }\n\n /**\n * Casts `func` to an rearged function if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @param {number} n The arity of `func`.\n * @returns {Function} Returns the cast function.\n */\n function castRearg(name, func, n) {\n return (config.rearg && n > 1 && (forceRearg || !mapping.skipRearg[name]))\n ? rearg(func, mapping.methodRearg[name] || mapping.aryRearg[n])\n : func;\n }\n\n /**\n * Creates a clone of `object` by `path`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {Array|string} path The path to clone by.\n * @returns {Object} Returns the cloned object.\n */\n function cloneByPath(object, path) {\n path = toPath(path);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n result = clone(Object(object)),\n nested = result;\n\n while (nested != null && ++index < length) {\n var key = path[index],\n value = nested[key];\n\n if (value != null &&\n !(isFunction(value) || isError(value) || isWeakMap(value))) {\n nested[key] = clone(index == lastIndex ? value : Object(value));\n }\n nested = nested[key];\n }\n return result;\n }\n\n /**\n * Converts `lodash` to an immutable auto-curried iteratee-first data-last\n * version with conversion `options` applied.\n *\n * @param {Object} [options] The options object. See `baseConvert` for more details.\n * @returns {Function} Returns the converted `lodash`.\n */\n function convertLib(options) {\n return _.runInContext.convert(options)(undefined);\n }\n\n /**\n * Create a converter function for `func` of `name`.\n *\n * @param {string} name The name of the function to convert.\n * @param {Function} func The function to convert.\n * @returns {Function} Returns the new converter function.\n */\n function createConverter(name, func) {\n var realName = mapping.aliasToReal[name] || name,\n methodName = mapping.remap[realName] || realName,\n oldOptions = options;\n\n return function(options) {\n var newUtil = isLib ? pristine : helpers,\n newFunc = isLib ? pristine[methodName] : func,\n newOptions = assign(assign({}, oldOptions), options);\n\n return baseConvert(newUtil, realName, newFunc, newOptions);\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke its iteratee, with up to `n`\n * arguments, ignoring any additional arguments.\n *\n * @private\n * @param {Function} func The function to cap iteratee arguments for.\n * @param {number} n The arity cap.\n * @returns {Function} Returns the new function.\n */\n function iterateeAry(func, n) {\n return overArg(func, function(func) {\n return typeof func == 'function' ? baseAry(func, n) : func;\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke its iteratee with arguments\n * arranged according to the specified `indexes` where the argument value at\n * the first index is provided as the first argument, the argument value at\n * the second index is provided as the second argument, and so on.\n *\n * @private\n * @param {Function} func The function to rearrange iteratee arguments for.\n * @param {number[]} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n */\n function iterateeRearg(func, indexes) {\n return overArg(func, function(func) {\n var n = indexes.length;\n return baseArity(rearg(baseAry(func, n), indexes), n);\n });\n }\n\n /**\n * Creates a function that invokes `func` with its first argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function() {\n var length = arguments.length;\n if (!length) {\n return func();\n }\n var args = Array(length);\n while (length--) {\n args[length] = arguments[length];\n }\n var index = config.rearg ? 0 : (length - 1);\n args[index] = transform(args[index]);\n return func.apply(undefined, args);\n };\n }\n\n /**\n * Creates a function that wraps `func` and applys the conversions\n * rules by `name`.\n *\n * @private\n * @param {string} name The name of the function to wrap.\n * @param {Function} func The function to wrap.\n * @returns {Function} Returns the converted function.\n */\n function wrap(name, func, placeholder) {\n var result,\n realName = mapping.aliasToReal[name] || name,\n wrapped = func,\n wrapper = wrappers[realName];\n\n if (wrapper) {\n wrapped = wrapper(func);\n }\n else if (config.immutable) {\n if (mapping.mutate.array[realName]) {\n wrapped = wrapImmutable(func, cloneArray);\n }\n else if (mapping.mutate.object[realName]) {\n wrapped = wrapImmutable(func, createCloner(func));\n }\n else if (mapping.mutate.set[realName]) {\n wrapped = wrapImmutable(func, cloneByPath);\n }\n }\n each(aryMethodKeys, function(aryKey) {\n each(mapping.aryMethod[aryKey], function(otherName) {\n if (realName == otherName) {\n var data = mapping.methodSpread[realName],\n afterRearg = data && data.afterRearg;\n\n result = afterRearg\n ? castFixed(realName, castRearg(realName, wrapped, aryKey), aryKey)\n : castRearg(realName, castFixed(realName, wrapped, aryKey), aryKey);\n\n result = castCap(realName, result);\n result = castCurry(realName, result, aryKey);\n return false;\n }\n });\n return !result;\n });\n\n result || (result = wrapped);\n if (result == func) {\n result = forceCurry ? curry(result, 1) : function() {\n return func.apply(this, arguments);\n };\n }\n result.convert = createConverter(realName, func);\n result.placeholder = func.placeholder = placeholder;\n\n return result;\n }\n\n /*--------------------------------------------------------------------------*/\n\n if (!isObj) {\n return wrap(name, func, defaultHolder);\n }\n var _ = func;\n\n // Convert methods by ary cap.\n var pairs = [];\n each(aryMethodKeys, function(aryKey) {\n each(mapping.aryMethod[aryKey], function(key) {\n var func = _[mapping.remap[key] || key];\n if (func) {\n pairs.push([key, wrap(key, func, _)]);\n }\n });\n });\n\n // Convert remaining methods.\n each(keys(_), function(key) {\n var func = _[key];\n if (typeof func == 'function') {\n var length = pairs.length;\n while (length--) {\n if (pairs[length][0] == key) {\n return;\n }\n }\n func.convert = createConverter(key, func);\n pairs.push([key, func]);\n }\n });\n\n // Assign to `_` leaving `_.prototype` unchanged to allow chaining.\n each(pairs, function(pair) {\n _[pair[0]] = pair[1];\n });\n\n _.convert = convertLib;\n _.placeholder = _;\n\n // Assign aliases.\n each(keys(_), function(key) {\n each(mapping.realToAlias[key] || [], function(alias) {\n _[alias] = _[key];\n });\n });\n\n return _;\n}\n\nmodule.exports = baseConvert;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","var WeakMap = require('./_WeakMap');\n\n/** Used to store function metadata. */\nvar metaMap = WeakMap && new WeakMap;\n\nmodule.exports = metaMap;\n","var identity = require('./identity'),\n metaMap = require('./_metaMap');\n\n/**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\nvar baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n};\n\nmodule.exports = baseSetData;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n","var baseCreate = require('./_baseCreate'),\n isObject = require('./isObject');\n\n/**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n}\n\nmodule.exports = createCtor;\n","var createCtor = require('./_createCtor'),\n root = require('./_root');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1;\n\n/**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n}\n\nmodule.exports = createBind;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\nfunction composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n}\n\nmodule.exports = composeArgs;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\nfunction composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n}\n\nmodule.exports = composeArgsRight;\n","/**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\nfunction countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n}\n\nmodule.exports = countHolders;\n","/**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\nfunction baseLodash() {\n // No operation performed.\n}\n\nmodule.exports = baseLodash;\n","var baseCreate = require('./_baseCreate'),\n baseLodash = require('./_baseLodash');\n\n/** Used as references for the maximum length and index of an array. */\nvar MAX_ARRAY_LENGTH = 4294967295;\n\n/**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\nfunction LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n}\n\n// Ensure `LazyWrapper` is an instance of `baseLodash`.\nLazyWrapper.prototype = baseCreate(baseLodash.prototype);\nLazyWrapper.prototype.constructor = LazyWrapper;\n\nmodule.exports = LazyWrapper;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var metaMap = require('./_metaMap'),\n noop = require('./noop');\n\n/**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\nvar getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n};\n\nmodule.exports = getData;\n","/** Used to lookup unminified function names. */\nvar realNames = {};\n\nmodule.exports = realNames;\n","var realNames = require('./_realNames');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\nfunction getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n}\n\nmodule.exports = getFuncName;\n","var baseCreate = require('./_baseCreate'),\n baseLodash = require('./_baseLodash');\n\n/**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\nfunction LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n}\n\nLodashWrapper.prototype = baseCreate(baseLodash.prototype);\nLodashWrapper.prototype.constructor = LodashWrapper;\n\nmodule.exports = LodashWrapper;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","var LazyWrapper = require('./_LazyWrapper'),\n LodashWrapper = require('./_LodashWrapper'),\n copyArray = require('./_copyArray');\n\n/**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\nfunction wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n}\n\nmodule.exports = wrapperClone;\n","var LazyWrapper = require('./_LazyWrapper'),\n LodashWrapper = require('./_LodashWrapper'),\n baseLodash = require('./_baseLodash'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike'),\n wrapperClone = require('./_wrapperClone');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\nfunction lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n}\n\n// Ensure wrappers are instances of `baseLodash`.\nlodash.prototype = baseLodash.prototype;\nlodash.prototype.constructor = lodash;\n\nmodule.exports = lodash;\n","var LazyWrapper = require('./_LazyWrapper'),\n getData = require('./_getData'),\n getFuncName = require('./_getFuncName'),\n lodash = require('./wrapperLodash');\n\n/**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\nfunction isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n}\n\nmodule.exports = isLaziable;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var baseSetData = require('./_baseSetData'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\nvar setData = shortOut(baseSetData);\n\nmodule.exports = setData;\n","/** Used to match wrap detail comments. */\nvar reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n/**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\nfunction getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n}\n\nmodule.exports = getWrapDetails;\n","/** Used to match wrap detail comments. */\nvar reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/;\n\n/**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\nfunction insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n}\n\nmodule.exports = insertWrapDetails;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","var arrayEach = require('./_arrayEach'),\n arrayIncludes = require('./_arrayIncludes');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n/** Used to associate wrap methods with their bit flags. */\nvar wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n];\n\n/**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\nfunction updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n}\n\nmodule.exports = updateWrapDetails;\n","var getWrapDetails = require('./_getWrapDetails'),\n insertWrapDetails = require('./_insertWrapDetails'),\n setToString = require('./_setToString'),\n updateWrapDetails = require('./_updateWrapDetails');\n\n/**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\nfunction setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n}\n\nmodule.exports = setWrapToString;\n","var isLaziable = require('./_isLaziable'),\n setData = require('./_setData'),\n setWrapToString = require('./_setWrapToString');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64;\n\n/**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n}\n\nmodule.exports = createRecurry;\n","/**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\nfunction getHolder(func) {\n var object = func;\n return object.placeholder;\n}\n\nmodule.exports = getHolder;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var copyArray = require('./_copyArray'),\n isIndex = require('./_isIndex');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\nfunction reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n}\n\nmodule.exports = reorder;\n","/** Used as the internal argument placeholder. */\nvar PLACEHOLDER = '__lodash_placeholder__';\n\n/**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\nfunction replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n}\n\nmodule.exports = replaceHolders;\n","var composeArgs = require('./_composeArgs'),\n composeArgsRight = require('./_composeArgsRight'),\n countHolders = require('./_countHolders'),\n createCtor = require('./_createCtor'),\n createRecurry = require('./_createRecurry'),\n getHolder = require('./_getHolder'),\n reorder = require('./_reorder'),\n replaceHolders = require('./_replaceHolders'),\n root = require('./_root');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_ARY_FLAG = 128,\n WRAP_FLIP_FLAG = 512;\n\n/**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n}\n\nmodule.exports = createHybrid;\n","var apply = require('./_apply'),\n createCtor = require('./_createCtor'),\n createHybrid = require('./_createHybrid'),\n createRecurry = require('./_createRecurry'),\n getHolder = require('./_getHolder'),\n replaceHolders = require('./_replaceHolders'),\n root = require('./_root');\n\n/**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n}\n\nmodule.exports = createCurry;\n","var apply = require('./_apply'),\n createCtor = require('./_createCtor'),\n root = require('./_root');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1;\n\n/**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n}\n\nmodule.exports = createPartial;\n","var composeArgs = require('./_composeArgs'),\n composeArgsRight = require('./_composeArgsRight'),\n replaceHolders = require('./_replaceHolders');\n\n/** Used as the internal argument placeholder. */\nvar PLACEHOLDER = '__lodash_placeholder__';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\nfunction mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n}\n\nmodule.exports = mergeData;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","var baseSetData = require('./_baseSetData'),\n createBind = require('./_createBind'),\n createCurry = require('./_createCurry'),\n createHybrid = require('./_createHybrid'),\n createPartial = require('./_createPartial'),\n getData = require('./_getData'),\n mergeData = require('./_mergeData'),\n setData = require('./_setData'),\n setWrapToString = require('./_setWrapToString'),\n toInteger = require('./toInteger');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n}\n\nmodule.exports = createWrap;\n","var createWrap = require('./_createWrap');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_ARY_FLAG = 128;\n\n/**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\nfunction ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n}\n\nmodule.exports = ary;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n","var copyObject = require('./_copyObject'),\n getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneDataView = require('./_cloneDataView'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","var baseIsMap = require('./_baseIsMap'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","var baseIsSet = require('./_baseIsSet'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseAssignIn = require('./_baseAssignIn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n copySymbolsIn = require('./_copySymbolsIn'),\n getAllKeys = require('./_getAllKeys'),\n getAllKeysIn = require('./_getAllKeysIn'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isMap = require('./isMap'),\n isObject = require('./isObject'),\n isSet = require('./isSet'),\n keys = require('./keys'),\n keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nmodule.exports = baseClone;\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = clone;\n","var createWrap = require('./_createWrap');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_CURRY_FLAG = 8;\n\n/**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\nfunction curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n}\n\n// Assign default placeholders.\ncurry.placeholder = {};\n\nmodule.exports = curry;\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike'),\n isPlainObject = require('./isPlainObject');\n\n/** `Object#toString` result references. */\nvar domExcTag = '[object DOMException]',\n errorTag = '[object Error]';\n\n/**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\nfunction isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n}\n\nmodule.exports = isError;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar weakMapTag = '[object WeakMap]';\n\n/**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\nfunction isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n}\n\nmodule.exports = isWeakMap;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var baseClone = require('./_baseClone'),\n baseIteratee = require('./_baseIteratee');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1;\n\n/**\n * Creates a function that invokes `func` with the arguments of the created\n * function. If `func` is a property name, the created function returns the\n * property value for a given element. If `func` is an array or object, the\n * created function returns `true` for elements that contain the equivalent\n * source properties, otherwise it returns `false`.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Util\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, _.iteratee(['user', 'fred']));\n * // => [{ 'user': 'fred', 'age': 40 }]\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, _.iteratee('user'));\n * // => ['barney', 'fred']\n *\n * // Create custom iteratee shorthands.\n * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n * return !_.isRegExp(func) ? iteratee(func) : function(string) {\n * return func.test(string);\n * };\n * });\n *\n * _.filter(['abc', 'def'], /ef/);\n * // => ['def']\n */\nfunction iteratee(func) {\n return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n}\n\nmodule.exports = iteratee;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","var flatten = require('./flatten'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nmodule.exports = flatRest;\n","var createWrap = require('./_createWrap'),\n flatRest = require('./_flatRest');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_REARG_FLAG = 256;\n\n/**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\nvar rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n});\n\nmodule.exports = rearg;\n","var arrayMap = require('./_arrayMap'),\n copyArray = require('./_copyArray'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol'),\n stringToPath = require('./_stringToPath'),\n toKey = require('./_toKey'),\n toString = require('./toString');\n\n/**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\nfunction toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n}\n\nmodule.exports = toPath;\n","module.exports = {\n 'ary': require('../ary'),\n 'assign': require('../_baseAssign'),\n 'clone': require('../clone'),\n 'curry': require('../curry'),\n 'forEach': require('../_arrayEach'),\n 'isArray': require('../isArray'),\n 'isError': require('../isError'),\n 'isFunction': require('../isFunction'),\n 'isWeakMap': require('../isWeakMap'),\n 'iteratee': require('../iteratee'),\n 'keys': require('../_baseKeys'),\n 'rearg': require('../rearg'),\n 'toInteger': require('../toInteger'),\n 'toPath': require('../toPath')\n};\n","var baseConvert = require('./_baseConvert'),\n util = require('./_util');\n\n/**\n * Converts `func` of `name` to an immutable auto-curried iteratee-first data-last\n * version with conversion `options` applied. If `name` is an object its methods\n * will be converted.\n *\n * @param {string} name The name of the function to wrap.\n * @param {Function} [func] The function to wrap.\n * @param {Object} [options] The options object. See `baseConvert` for more details.\n * @returns {Function|Object} Returns the converted function or object.\n */\nfunction convert(name, func, options) {\n return baseConvert(util, name, func, options);\n}\n\nmodule.exports = convert;\n","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = basePropertyOf;\n","var basePropertyOf = require('./_basePropertyOf');\n\n/** Used to map characters to HTML entities. */\nvar htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\n\n/**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\nvar escapeHtmlChar = basePropertyOf(htmlEscapes);\n\nmodule.exports = escapeHtmlChar;\n","var escapeHtmlChar = require('./_escapeHtmlChar'),\n toString = require('./toString');\n\n/** Used to match HTML entities and HTML characters. */\nvar reUnescapedHtml = /[&<>\"']/g,\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n/**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\nfunction escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n}\n\nmodule.exports = escape;\n","module.exports = {\n 'cap': false,\n 'curry': false,\n 'fixed': false,\n 'immutable': false,\n 'rearg': false\n};\n","var convert = require('./convert'),\n func = convert('escape', require('../escape'), require('./_falseOptions'));\n\nfunc.placeholder = require('./placeholder');\nmodule.exports = func;\n","\n\n","\n\n","\n\n","\n\n","\n\n","\n\n","\n\n","\n\n","\n\n","\n\n","\n\n","\n\n","\n\n","\n\n","\n\n","\n\n","\n\n","\n\n","\n\n","\n\n\n\n","\n\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { otherContacts } from '../utils/chartUtils.js'\n\nexport default {\n\tmethods: {\n\t\t// The current component root\n\t\totherContacts(self) {\n\t\t\treturn otherContacts({\n\t\t\t\t$store: this.$store,\n\t\t\t\tself,\n\t\t\t})\n\t\t},\n\t},\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst svgDisallowed = [\n 'a',\n 'animate',\n 'color-profile',\n 'cursor',\n 'discard',\n 'fedropshadow',\n 'font-face',\n 'font-face-format',\n 'font-face-name',\n 'font-face-src',\n 'font-face-uri',\n 'foreignobject',\n 'hatch',\n 'hatchpath',\n 'mesh',\n 'meshgradient',\n 'meshpatch',\n 'meshrow',\n 'missing-glyph',\n 'script',\n 'set',\n 'solidcolor',\n 'unknown',\n 'use'\n];\nconst getWindow = () => (typeof window === 'undefined' ? null : window);\nconst readAsText = (svg) => new Promise((resolve) => {\n if (!isFile(svg)) {\n resolve(svg.toString('utf-8'));\n }\n else {\n const fileReader = new FileReader();\n fileReader.onload = () => {\n resolve(fileReader.result);\n };\n fileReader.readAsText(svg);\n }\n});\nconst isFile = (obj) => {\n return obj.size !== undefined;\n};\nconst sanitizeSVG = async (svg, window = getWindow()) => {\n if (!window)\n throw new Error('DOM window required');\n if (isFile(svg) && svg.type !== 'image/svg+xml')\n return svg;\n const svgText = await readAsText(svg);\n if (!svgText)\n throw new Error('Image corrupt');\n const playground = window.document.createElement('template');\n playground.innerHTML = svgText;\n const svgEl = playground.content.firstElementChild;\n const attributes = Array.from(svgEl.attributes).map(({ name }) => name);\n const hasScriptAttr = !!attributes.find((attr) => attr.startsWith('on'));\n const disallowedSvgElements = svgEl.querySelectorAll(svgDisallowed.join(','));\n return disallowedSvgElements.length === 0 && !hasScriptAttr ? svg : null;\n};\nexports.default = sanitizeSVG;\n//# sourceMappingURL=sanitizeSVG.js.map","(function(root, globalName, factory) {\r\n if (typeof define === 'function' && define.amd) {\r\n // AMD:\r\n define([], factory);\r\n } else if (typeof module === 'object' && module.exports) {\r\n // Node:\r\n module.exports = factory();\r\n // Use module export as simulated ES6 default export:\r\n module.exports.default = module.exports;\r\n } else {\r\n // Browser:\r\n window[globalName] = factory();\r\n }\r\n}(this, 'b64toBlob', function() {\r\n 'use strict';\r\n\r\n return function b64toBlob(b64Data, contentType, sliceSize) {\r\n contentType = contentType || '';\r\n sliceSize = sliceSize || 512;\r\n\r\n var byteCharacters = atob(b64Data);\r\n var byteArrays = [];\r\n\r\n for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) {\r\n var slice = byteCharacters.slice(offset, offset + sliceSize);\r\n\r\n var byteNumbers = new Array(slice.length);\r\n for (var i = 0; i < slice.length; i++) {\r\n byteNumbers[i] = slice.charCodeAt(i);\r\n }\r\n \r\n var byteArray = new Uint8Array(byteNumbers);\r\n \r\n byteArrays.push(byteArray);\r\n }\r\n \r\n var blob = new Blob(byteArrays, {type: contentType});\r\n return blob;\r\n };\r\n}));\r\n","import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n","let getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n if (!getRandomValues) {\n if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n getRandomValues = crypto.getRandomValues.bind(crypto);\n }\n return getRandomValues(rnds8);\n}\n","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default { randomUUID };\n","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction _v4(options, buf, offset) {\n options = options || {};\n const rnds = options.random ?? options.rng?.() ?? rng();\n if (rnds.length < 16) {\n throw new Error('Random bytes length must be >= 16');\n }\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n return _v4(options, buf, offset);\n}\nexport default v4;\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport ICAL from 'ical.js'\n\n/**\n * Some clients group properties by naming them something like 'ITEM1.URL'.\n * These should be treated the same as their original (i.e. 'URL' in this\n * example), so we iterate through the vCard to find these properties and\n * add them to the ical.js design set.\n *\n * { @link https://github.com/nextcloud/contacts/issues/42 }\n *\n * @param {Array} vCard The ical.js vCard\n * @return {boolean} Whether or not the design set has been altered.\n */\nfunction addGroupedProperties(vCard) {\n\tlet madeChanges = false\n\tvCard[1].forEach((prop) => {\n\t\tconst propGroup = prop[0].split('.')\n\n\t\t// if this is a grouped property, update the designSet\n\t\tif (propGroup.length === 2) {\n\t\t\tmadeChanges = setPropertyAlias(propGroup[1], prop[0])\n\t\t}\n\t})\n\treturn madeChanges\n}\n\n/**\n * Fixes misbehaviour with TYPE quotes and separated commas\n * Seems to have been introduced with https://github.com/mozilla-comm/ical.js/pull/387\n *\n * @return {boolean} Whether or not the design set has been altered.\n */\nfunction setTypeMultiValueSeparateDQuote() {\n\tif (\n\t\t!ICAL.design.vcard.param.type\n\t\t|| ICAL.design.vcard.param.type.multiValueSeparateDQuote !== false\n\t\t|| !ICAL.design.vcard3.param.type\n\t\t|| ICAL.design.vcard3.param.type.multiValueSeparateDQuote !== false\n\t) {\n\t\t// https://github.com/mozilla-comm/ical.js/blob/ba8e2522ffd30ffbe65197a96a487689d6e6e9a1/lib/ical/stringify.js#L121\n\t\tICAL.design.vcard.param.type.multiValueSeparateDQuote = false\n\t\tICAL.design.vcard3.param.type.multiValueSeparateDQuote = false\n\n\t\treturn true\n\t}\n\n\treturn false\n}\n\n/**\n/**\n * Check whether the ical.js design sets need updating (and if so, do it)\n *\n * @param {Array} vCard The ical.js vCard\n * @return {boolean} Whether or not the design set has been altered.\n */\nexport default function(vCard) {\n\tlet madeChanges = false\n\n\tmadeChanges |= setTypeMultiValueSeparateDQuote()\n\tmadeChanges |= addGroupedProperties(vCard)\n\n\treturn madeChanges\n}\n\n/**\n * @param {string} original Name of the property whose settings should be copied\n * @param {string} alias Name of the new property\n * @return {boolean} Whether or not the design set has been altered.\n */\nexport function setPropertyAlias(original, alias) {\n\tlet madeChanges = false\n\toriginal = original.toLowerCase()\n\talias = alias.toLowerCase()\n\n\tif (ICAL.design.vcard.property[original]) {\n\t\tICAL.design.vcard.property[alias] = ICAL.design.vcard.property[original]\n\t\tmadeChanges = true\n\t}\n\n\tif (ICAL.design.vcard3.property[original]) {\n\t\tICAL.design.vcard3.property[alias] = ICAL.design.vcard3.property[original]\n\t\tmadeChanges = true\n\t}\n\n\treturn madeChanges\n}\n","export function getDevtoolsGlobalHook() {\n return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__;\n}\nexport function getTarget() {\n // @ts-expect-error navigator and windows are not available in all environments\n return (typeof navigator !== 'undefined' && typeof window !== 'undefined')\n ? window\n : typeof globalThis !== 'undefined'\n ? globalThis\n : {};\n}\nexport const isProxyAvailable = typeof Proxy === 'function';\n","export const HOOK_SETUP = 'devtools-plugin:setup';\nexport const HOOK_PLUGIN_SETTINGS_SET = 'plugin:settings:set';\n","let supported;\nlet perf;\nexport function isPerformanceSupported() {\n var _a;\n if (supported !== undefined) {\n return supported;\n }\n if (typeof window !== 'undefined' && window.performance) {\n supported = true;\n perf = window.performance;\n }\n else if (typeof globalThis !== 'undefined' && ((_a = globalThis.perf_hooks) === null || _a === void 0 ? void 0 : _a.performance)) {\n supported = true;\n perf = globalThis.perf_hooks.performance;\n }\n else {\n supported = false;\n }\n return supported;\n}\nexport function now() {\n return isPerformanceSupported() ? perf.now() : Date.now();\n}\n","import { HOOK_PLUGIN_SETTINGS_SET } from './const.js';\nimport { now } from './time.js';\nexport class ApiProxy {\n constructor(plugin, hook) {\n this.target = null;\n this.targetQueue = [];\n this.onQueue = [];\n this.plugin = plugin;\n this.hook = hook;\n const defaultSettings = {};\n if (plugin.settings) {\n for (const id in plugin.settings) {\n const item = plugin.settings[id];\n defaultSettings[id] = item.defaultValue;\n }\n }\n const localSettingsSaveId = `__vue-devtools-plugin-settings__${plugin.id}`;\n let currentSettings = Object.assign({}, defaultSettings);\n try {\n const raw = localStorage.getItem(localSettingsSaveId);\n const data = JSON.parse(raw);\n Object.assign(currentSettings, data);\n }\n catch (e) {\n // noop\n }\n this.fallbacks = {\n getSettings() {\n return currentSettings;\n },\n setSettings(value) {\n try {\n localStorage.setItem(localSettingsSaveId, JSON.stringify(value));\n }\n catch (e) {\n // noop\n }\n currentSettings = value;\n },\n now() {\n return now();\n },\n };\n if (hook) {\n hook.on(HOOK_PLUGIN_SETTINGS_SET, (pluginId, value) => {\n if (pluginId === this.plugin.id) {\n this.fallbacks.setSettings(value);\n }\n });\n }\n this.proxiedOn = new Proxy({}, {\n get: (_target, prop) => {\n if (this.target) {\n return this.target.on[prop];\n }\n else {\n return (...args) => {\n this.onQueue.push({\n method: prop,\n args,\n });\n };\n }\n },\n });\n this.proxiedTarget = new Proxy({}, {\n get: (_target, prop) => {\n if (this.target) {\n return this.target[prop];\n }\n else if (prop === 'on') {\n return this.proxiedOn;\n }\n else if (Object.keys(this.fallbacks).includes(prop)) {\n return (...args) => {\n this.targetQueue.push({\n method: prop,\n args,\n resolve: () => { },\n });\n return this.fallbacks[prop](...args);\n };\n }\n else {\n return (...args) => {\n return new Promise((resolve) => {\n this.targetQueue.push({\n method: prop,\n args,\n resolve,\n });\n });\n };\n }\n },\n });\n }\n async setRealTarget(target) {\n this.target = target;\n for (const item of this.onQueue) {\n this.target.on[item.method](...item.args);\n }\n for (const item of this.targetQueue) {\n item.resolve(await this.target[item.method](...item.args));\n }\n }\n}\n","import { getDevtoolsGlobalHook, getTarget, isProxyAvailable } from './env.js';\nimport { HOOK_SETUP } from './const.js';\nimport { ApiProxy } from './proxy.js';\nexport * from './api/index.js';\nexport * from './plugin.js';\nexport * from './time.js';\nexport function setupDevtoolsPlugin(pluginDescriptor, setupFn) {\n const descriptor = pluginDescriptor;\n const target = getTarget();\n const hook = getDevtoolsGlobalHook();\n const enableProxy = isProxyAvailable && descriptor.enableEarlyProxy;\n if (hook && (target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ || !enableProxy)) {\n hook.emit(HOOK_SETUP, pluginDescriptor, setupFn);\n }\n else {\n const proxy = enableProxy ? new ApiProxy(descriptor, hook) : null;\n const list = target.__VUE_DEVTOOLS_PLUGINS__ = target.__VUE_DEVTOOLS_PLUGINS__ || [];\n list.push({\n pluginDescriptor: descriptor,\n setupFn,\n proxy,\n });\n if (proxy) {\n setupFn(proxy.proxiedTarget);\n }\n }\n}\n","/*!\n * vuex v4.1.0\n * (c) 2022 Evan You\n * @license MIT\n */\nimport { inject, effectScope, reactive, watch, computed } from 'vue';\nimport { setupDevtoolsPlugin } from '@vue/devtools-api';\n\nvar storeKey = 'store';\n\nfunction useStore (key) {\n if ( key === void 0 ) key = null;\n\n return inject(key !== null ? key : storeKey)\n}\n\n/**\n * Get the first item that pass the test\n * by second argument function\n *\n * @param {Array} list\n * @param {Function} f\n * @return {*}\n */\nfunction find (list, f) {\n return list.filter(f)[0]\n}\n\n/**\n * Deep copy the given object considering circular structure.\n * This function caches all nested objects and its copies.\n * If it detects circular structure, use cached copy to avoid infinite loop.\n *\n * @param {*} obj\n * @param {Array} cache\n * @return {*}\n */\nfunction deepCopy (obj, cache) {\n if ( cache === void 0 ) cache = [];\n\n // just return if obj is immutable value\n if (obj === null || typeof obj !== 'object') {\n return obj\n }\n\n // if obj is hit, it is in circular structure\n var hit = find(cache, function (c) { return c.original === obj; });\n if (hit) {\n return hit.copy\n }\n\n var copy = Array.isArray(obj) ? [] : {};\n // put the copy into cache at first\n // because we want to refer it in recursive deepCopy\n cache.push({\n original: obj,\n copy: copy\n });\n\n Object.keys(obj).forEach(function (key) {\n copy[key] = deepCopy(obj[key], cache);\n });\n\n return copy\n}\n\n/**\n * forEach for object\n */\nfunction forEachValue (obj, fn) {\n Object.keys(obj).forEach(function (key) { return fn(obj[key], key); });\n}\n\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\nfunction isPromise (val) {\n return val && typeof val.then === 'function'\n}\n\nfunction assert (condition, msg) {\n if (!condition) { throw new Error((\"[vuex] \" + msg)) }\n}\n\nfunction partial (fn, arg) {\n return function () {\n return fn(arg)\n }\n}\n\nfunction genericSubscribe (fn, subs, options) {\n if (subs.indexOf(fn) < 0) {\n options && options.prepend\n ? subs.unshift(fn)\n : subs.push(fn);\n }\n return function () {\n var i = subs.indexOf(fn);\n if (i > -1) {\n subs.splice(i, 1);\n }\n }\n}\n\nfunction resetStore (store, hot) {\n store._actions = Object.create(null);\n store._mutations = Object.create(null);\n store._wrappedGetters = Object.create(null);\n store._modulesNamespaceMap = Object.create(null);\n var state = store.state;\n // init all modules\n installModule(store, state, [], store._modules.root, true);\n // reset state\n resetStoreState(store, state, hot);\n}\n\nfunction resetStoreState (store, state, hot) {\n var oldState = store._state;\n var oldScope = store._scope;\n\n // bind store public getters\n store.getters = {};\n // reset local getters cache\n store._makeLocalGettersCache = Object.create(null);\n var wrappedGetters = store._wrappedGetters;\n var computedObj = {};\n var computedCache = {};\n\n // create a new effect scope and create computed object inside it to avoid\n // getters (computed) getting destroyed on component unmount.\n var scope = effectScope(true);\n\n scope.run(function () {\n forEachValue(wrappedGetters, function (fn, key) {\n // use computed to leverage its lazy-caching mechanism\n // direct inline function use will lead to closure preserving oldState.\n // using partial to return function with only arguments preserved in closure environment.\n computedObj[key] = partial(fn, store);\n computedCache[key] = computed(function () { return computedObj[key](); });\n Object.defineProperty(store.getters, key, {\n get: function () { return computedCache[key].value; },\n enumerable: true // for local getters\n });\n });\n });\n\n store._state = reactive({\n data: state\n });\n\n // register the newly created effect scope to the store so that we can\n // dispose the effects when this method runs again in the future.\n store._scope = scope;\n\n // enable strict mode for new state\n if (store.strict) {\n enableStrictMode(store);\n }\n\n if (oldState) {\n if (hot) {\n // dispatch changes in all subscribed watchers\n // to force getter re-evaluation for hot reloading.\n store._withCommit(function () {\n oldState.data = null;\n });\n }\n }\n\n // dispose previously registered effect scope if there is one.\n if (oldScope) {\n oldScope.stop();\n }\n}\n\nfunction installModule (store, rootState, path, module, hot) {\n var isRoot = !path.length;\n var namespace = store._modules.getNamespace(path);\n\n // register in namespace map\n if (module.namespaced) {\n if (store._modulesNamespaceMap[namespace] && (process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] duplicate namespace \" + namespace + \" for the namespaced module \" + (path.join('/'))));\n }\n store._modulesNamespaceMap[namespace] = module;\n }\n\n // set state\n if (!isRoot && !hot) {\n var parentState = getNestedState(rootState, path.slice(0, -1));\n var moduleName = path[path.length - 1];\n store._withCommit(function () {\n if ((process.env.NODE_ENV !== 'production')) {\n if (moduleName in parentState) {\n console.warn(\n (\"[vuex] state field \\\"\" + moduleName + \"\\\" was overridden by a module with the same name at \\\"\" + (path.join('.')) + \"\\\"\")\n );\n }\n }\n parentState[moduleName] = module.state;\n });\n }\n\n var local = module.context = makeLocalContext(store, namespace, path);\n\n module.forEachMutation(function (mutation, key) {\n var namespacedType = namespace + key;\n registerMutation(store, namespacedType, mutation, local);\n });\n\n module.forEachAction(function (action, key) {\n var type = action.root ? key : namespace + key;\n var handler = action.handler || action;\n registerAction(store, type, handler, local);\n });\n\n module.forEachGetter(function (getter, key) {\n var namespacedType = namespace + key;\n registerGetter(store, namespacedType, getter, local);\n });\n\n module.forEachChild(function (child, key) {\n installModule(store, rootState, path.concat(key), child, hot);\n });\n}\n\n/**\n * make localized dispatch, commit, getters and state\n * if there is no namespace, just use root ones\n */\nfunction makeLocalContext (store, namespace, path) {\n var noNamespace = namespace === '';\n\n var local = {\n dispatch: noNamespace ? store.dispatch : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if ((process.env.NODE_ENV !== 'production') && !store._actions[type]) {\n console.error((\"[vuex] unknown local action type: \" + (args.type) + \", global type: \" + type));\n return\n }\n }\n\n return store.dispatch(type, payload)\n },\n\n commit: noNamespace ? store.commit : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if ((process.env.NODE_ENV !== 'production') && !store._mutations[type]) {\n console.error((\"[vuex] unknown local mutation type: \" + (args.type) + \", global type: \" + type));\n return\n }\n }\n\n store.commit(type, payload, options);\n }\n };\n\n // getters and state object must be gotten lazily\n // because they will be changed by state update\n Object.defineProperties(local, {\n getters: {\n get: noNamespace\n ? function () { return store.getters; }\n : function () { return makeLocalGetters(store, namespace); }\n },\n state: {\n get: function () { return getNestedState(store.state, path); }\n }\n });\n\n return local\n}\n\nfunction makeLocalGetters (store, namespace) {\n if (!store._makeLocalGettersCache[namespace]) {\n var gettersProxy = {};\n var splitPos = namespace.length;\n Object.keys(store.getters).forEach(function (type) {\n // skip if the target getter is not match this namespace\n if (type.slice(0, splitPos) !== namespace) { return }\n\n // extract local getter type\n var localType = type.slice(splitPos);\n\n // Add a port to the getters proxy.\n // Define as getter property because\n // we do not want to evaluate the getters in this time.\n Object.defineProperty(gettersProxy, localType, {\n get: function () { return store.getters[type]; },\n enumerable: true\n });\n });\n store._makeLocalGettersCache[namespace] = gettersProxy;\n }\n\n return store._makeLocalGettersCache[namespace]\n}\n\nfunction registerMutation (store, type, handler, local) {\n var entry = store._mutations[type] || (store._mutations[type] = []);\n entry.push(function wrappedMutationHandler (payload) {\n handler.call(store, local.state, payload);\n });\n}\n\nfunction registerAction (store, type, handler, local) {\n var entry = store._actions[type] || (store._actions[type] = []);\n entry.push(function wrappedActionHandler (payload) {\n var res = handler.call(store, {\n dispatch: local.dispatch,\n commit: local.commit,\n getters: local.getters,\n state: local.state,\n rootGetters: store.getters,\n rootState: store.state\n }, payload);\n if (!isPromise(res)) {\n res = Promise.resolve(res);\n }\n if (store._devtoolHook) {\n return res.catch(function (err) {\n store._devtoolHook.emit('vuex:error', err);\n throw err\n })\n } else {\n return res\n }\n });\n}\n\nfunction registerGetter (store, type, rawGetter, local) {\n if (store._wrappedGetters[type]) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] duplicate getter key: \" + type));\n }\n return\n }\n store._wrappedGetters[type] = function wrappedGetter (store) {\n return rawGetter(\n local.state, // local state\n local.getters, // local getters\n store.state, // root state\n store.getters // root getters\n )\n };\n}\n\nfunction enableStrictMode (store) {\n watch(function () { return store._state.data; }, function () {\n if ((process.env.NODE_ENV !== 'production')) {\n assert(store._committing, \"do not mutate vuex store state outside mutation handlers.\");\n }\n }, { deep: true, flush: 'sync' });\n}\n\nfunction getNestedState (state, path) {\n return path.reduce(function (state, key) { return state[key]; }, state)\n}\n\nfunction unifyObjectStyle (type, payload, options) {\n if (isObject(type) && type.type) {\n options = payload;\n payload = type;\n type = type.type;\n }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(typeof type === 'string', (\"expects string as the type, but found \" + (typeof type) + \".\"));\n }\n\n return { type: type, payload: payload, options: options }\n}\n\nvar LABEL_VUEX_BINDINGS = 'vuex bindings';\nvar MUTATIONS_LAYER_ID = 'vuex:mutations';\nvar ACTIONS_LAYER_ID = 'vuex:actions';\nvar INSPECTOR_ID = 'vuex';\n\nvar actionId = 0;\n\nfunction addDevtools (app, store) {\n setupDevtoolsPlugin(\n {\n id: 'org.vuejs.vuex',\n app: app,\n label: 'Vuex',\n homepage: 'https://next.vuex.vuejs.org/',\n logo: 'https://vuejs.org/images/icons/favicon-96x96.png',\n packageName: 'vuex',\n componentStateTypes: [LABEL_VUEX_BINDINGS]\n },\n function (api) {\n api.addTimelineLayer({\n id: MUTATIONS_LAYER_ID,\n label: 'Vuex Mutations',\n color: COLOR_LIME_500\n });\n\n api.addTimelineLayer({\n id: ACTIONS_LAYER_ID,\n label: 'Vuex Actions',\n color: COLOR_LIME_500\n });\n\n api.addInspector({\n id: INSPECTOR_ID,\n label: 'Vuex',\n icon: 'storage',\n treeFilterPlaceholder: 'Filter stores...'\n });\n\n api.on.getInspectorTree(function (payload) {\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n if (payload.filter) {\n var nodes = [];\n flattenStoreForInspectorTree(nodes, store._modules.root, payload.filter, '');\n payload.rootNodes = nodes;\n } else {\n payload.rootNodes = [\n formatStoreForInspectorTree(store._modules.root, '')\n ];\n }\n }\n });\n\n api.on.getInspectorState(function (payload) {\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n var modulePath = payload.nodeId;\n makeLocalGetters(store, modulePath);\n payload.state = formatStoreForInspectorState(\n getStoreModule(store._modules, modulePath),\n modulePath === 'root' ? store.getters : store._makeLocalGettersCache,\n modulePath\n );\n }\n });\n\n api.on.editInspectorState(function (payload) {\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n var modulePath = payload.nodeId;\n var path = payload.path;\n if (modulePath !== 'root') {\n path = modulePath.split('/').filter(Boolean).concat( path);\n }\n store._withCommit(function () {\n payload.set(store._state.data, path, payload.state.value);\n });\n }\n });\n\n store.subscribe(function (mutation, state) {\n var data = {};\n\n if (mutation.payload) {\n data.payload = mutation.payload;\n }\n\n data.state = state;\n\n api.notifyComponentUpdate();\n api.sendInspectorTree(INSPECTOR_ID);\n api.sendInspectorState(INSPECTOR_ID);\n\n api.addTimelineEvent({\n layerId: MUTATIONS_LAYER_ID,\n event: {\n time: Date.now(),\n title: mutation.type,\n data: data\n }\n });\n });\n\n store.subscribeAction({\n before: function (action, state) {\n var data = {};\n if (action.payload) {\n data.payload = action.payload;\n }\n action._id = actionId++;\n action._time = Date.now();\n data.state = state;\n\n api.addTimelineEvent({\n layerId: ACTIONS_LAYER_ID,\n event: {\n time: action._time,\n title: action.type,\n groupId: action._id,\n subtitle: 'start',\n data: data\n }\n });\n },\n after: function (action, state) {\n var data = {};\n var duration = Date.now() - action._time;\n data.duration = {\n _custom: {\n type: 'duration',\n display: (duration + \"ms\"),\n tooltip: 'Action duration',\n value: duration\n }\n };\n if (action.payload) {\n data.payload = action.payload;\n }\n data.state = state;\n\n api.addTimelineEvent({\n layerId: ACTIONS_LAYER_ID,\n event: {\n time: Date.now(),\n title: action.type,\n groupId: action._id,\n subtitle: 'end',\n data: data\n }\n });\n }\n });\n }\n );\n}\n\n// extracted from tailwind palette\nvar COLOR_LIME_500 = 0x84cc16;\nvar COLOR_DARK = 0x666666;\nvar COLOR_WHITE = 0xffffff;\n\nvar TAG_NAMESPACED = {\n label: 'namespaced',\n textColor: COLOR_WHITE,\n backgroundColor: COLOR_DARK\n};\n\n/**\n * @param {string} path\n */\nfunction extractNameFromPath (path) {\n return path && path !== 'root' ? path.split('/').slice(-2, -1)[0] : 'Root'\n}\n\n/**\n * @param {*} module\n * @return {import('@vue/devtools-api').CustomInspectorNode}\n */\nfunction formatStoreForInspectorTree (module, path) {\n return {\n id: path || 'root',\n // all modules end with a `/`, we want the last segment only\n // cart/ -> cart\n // nested/cart/ -> cart\n label: extractNameFromPath(path),\n tags: module.namespaced ? [TAG_NAMESPACED] : [],\n children: Object.keys(module._children).map(function (moduleName) { return formatStoreForInspectorTree(\n module._children[moduleName],\n path + moduleName + '/'\n ); }\n )\n }\n}\n\n/**\n * @param {import('@vue/devtools-api').CustomInspectorNode[]} result\n * @param {*} module\n * @param {string} filter\n * @param {string} path\n */\nfunction flattenStoreForInspectorTree (result, module, filter, path) {\n if (path.includes(filter)) {\n result.push({\n id: path || 'root',\n label: path.endsWith('/') ? path.slice(0, path.length - 1) : path || 'Root',\n tags: module.namespaced ? [TAG_NAMESPACED] : []\n });\n }\n Object.keys(module._children).forEach(function (moduleName) {\n flattenStoreForInspectorTree(result, module._children[moduleName], filter, path + moduleName + '/');\n });\n}\n\n/**\n * @param {*} module\n * @return {import('@vue/devtools-api').CustomInspectorState}\n */\nfunction formatStoreForInspectorState (module, getters, path) {\n getters = path === 'root' ? getters : getters[path];\n var gettersKeys = Object.keys(getters);\n var storeState = {\n state: Object.keys(module.state).map(function (key) { return ({\n key: key,\n editable: true,\n value: module.state[key]\n }); })\n };\n\n if (gettersKeys.length) {\n var tree = transformPathsToObjectTree(getters);\n storeState.getters = Object.keys(tree).map(function (key) { return ({\n key: key.endsWith('/') ? extractNameFromPath(key) : key,\n editable: false,\n value: canThrow(function () { return tree[key]; })\n }); });\n }\n\n return storeState\n}\n\nfunction transformPathsToObjectTree (getters) {\n var result = {};\n Object.keys(getters).forEach(function (key) {\n var path = key.split('/');\n if (path.length > 1) {\n var target = result;\n var leafKey = path.pop();\n path.forEach(function (p) {\n if (!target[p]) {\n target[p] = {\n _custom: {\n value: {},\n display: p,\n tooltip: 'Module',\n abstract: true\n }\n };\n }\n target = target[p]._custom.value;\n });\n target[leafKey] = canThrow(function () { return getters[key]; });\n } else {\n result[key] = canThrow(function () { return getters[key]; });\n }\n });\n return result\n}\n\nfunction getStoreModule (moduleMap, path) {\n var names = path.split('/').filter(function (n) { return n; });\n return names.reduce(\n function (module, moduleName, i) {\n var child = module[moduleName];\n if (!child) {\n throw new Error((\"Missing module \\\"\" + moduleName + \"\\\" for path \\\"\" + path + \"\\\".\"))\n }\n return i === names.length - 1 ? child : child._children\n },\n path === 'root' ? moduleMap : moduleMap.root._children\n )\n}\n\nfunction canThrow (cb) {\n try {\n return cb()\n } catch (e) {\n return e\n }\n}\n\n// Base data struct for store's module, package with some attribute and method\nvar Module = function Module (rawModule, runtime) {\n this.runtime = runtime;\n // Store some children item\n this._children = Object.create(null);\n // Store the origin module object which passed by programmer\n this._rawModule = rawModule;\n var rawState = rawModule.state;\n\n // Store the origin module's state\n this.state = (typeof rawState === 'function' ? rawState() : rawState) || {};\n};\n\nvar prototypeAccessors$1 = { namespaced: { configurable: true } };\n\nprototypeAccessors$1.namespaced.get = function () {\n return !!this._rawModule.namespaced\n};\n\nModule.prototype.addChild = function addChild (key, module) {\n this._children[key] = module;\n};\n\nModule.prototype.removeChild = function removeChild (key) {\n delete this._children[key];\n};\n\nModule.prototype.getChild = function getChild (key) {\n return this._children[key]\n};\n\nModule.prototype.hasChild = function hasChild (key) {\n return key in this._children\n};\n\nModule.prototype.update = function update (rawModule) {\n this._rawModule.namespaced = rawModule.namespaced;\n if (rawModule.actions) {\n this._rawModule.actions = rawModule.actions;\n }\n if (rawModule.mutations) {\n this._rawModule.mutations = rawModule.mutations;\n }\n if (rawModule.getters) {\n this._rawModule.getters = rawModule.getters;\n }\n};\n\nModule.prototype.forEachChild = function forEachChild (fn) {\n forEachValue(this._children, fn);\n};\n\nModule.prototype.forEachGetter = function forEachGetter (fn) {\n if (this._rawModule.getters) {\n forEachValue(this._rawModule.getters, fn);\n }\n};\n\nModule.prototype.forEachAction = function forEachAction (fn) {\n if (this._rawModule.actions) {\n forEachValue(this._rawModule.actions, fn);\n }\n};\n\nModule.prototype.forEachMutation = function forEachMutation (fn) {\n if (this._rawModule.mutations) {\n forEachValue(this._rawModule.mutations, fn);\n }\n};\n\nObject.defineProperties( Module.prototype, prototypeAccessors$1 );\n\nvar ModuleCollection = function ModuleCollection (rawRootModule) {\n // register root module (Vuex.Store options)\n this.register([], rawRootModule, false);\n};\n\nModuleCollection.prototype.get = function get (path) {\n return path.reduce(function (module, key) {\n return module.getChild(key)\n }, this.root)\n};\n\nModuleCollection.prototype.getNamespace = function getNamespace (path) {\n var module = this.root;\n return path.reduce(function (namespace, key) {\n module = module.getChild(key);\n return namespace + (module.namespaced ? key + '/' : '')\n }, '')\n};\n\nModuleCollection.prototype.update = function update$1 (rawRootModule) {\n update([], this.root, rawRootModule);\n};\n\nModuleCollection.prototype.register = function register (path, rawModule, runtime) {\n var this$1$1 = this;\n if ( runtime === void 0 ) runtime = true;\n\n if ((process.env.NODE_ENV !== 'production')) {\n assertRawModule(path, rawModule);\n }\n\n var newModule = new Module(rawModule, runtime);\n if (path.length === 0) {\n this.root = newModule;\n } else {\n var parent = this.get(path.slice(0, -1));\n parent.addChild(path[path.length - 1], newModule);\n }\n\n // register nested modules\n if (rawModule.modules) {\n forEachValue(rawModule.modules, function (rawChildModule, key) {\n this$1$1.register(path.concat(key), rawChildModule, runtime);\n });\n }\n};\n\nModuleCollection.prototype.unregister = function unregister (path) {\n var parent = this.get(path.slice(0, -1));\n var key = path[path.length - 1];\n var child = parent.getChild(key);\n\n if (!child) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\n \"[vuex] trying to unregister module '\" + key + \"', which is \" +\n \"not registered\"\n );\n }\n return\n }\n\n if (!child.runtime) {\n return\n }\n\n parent.removeChild(key);\n};\n\nModuleCollection.prototype.isRegistered = function isRegistered (path) {\n var parent = this.get(path.slice(0, -1));\n var key = path[path.length - 1];\n\n if (parent) {\n return parent.hasChild(key)\n }\n\n return false\n};\n\nfunction update (path, targetModule, newModule) {\n if ((process.env.NODE_ENV !== 'production')) {\n assertRawModule(path, newModule);\n }\n\n // update target module\n targetModule.update(newModule);\n\n // update nested modules\n if (newModule.modules) {\n for (var key in newModule.modules) {\n if (!targetModule.getChild(key)) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\n \"[vuex] trying to add a new module '\" + key + \"' on hot reloading, \" +\n 'manual reload is needed'\n );\n }\n return\n }\n update(\n path.concat(key),\n targetModule.getChild(key),\n newModule.modules[key]\n );\n }\n }\n}\n\nvar functionAssert = {\n assert: function (value) { return typeof value === 'function'; },\n expected: 'function'\n};\n\nvar objectAssert = {\n assert: function (value) { return typeof value === 'function' ||\n (typeof value === 'object' && typeof value.handler === 'function'); },\n expected: 'function or object with \"handler\" function'\n};\n\nvar assertTypes = {\n getters: functionAssert,\n mutations: functionAssert,\n actions: objectAssert\n};\n\nfunction assertRawModule (path, rawModule) {\n Object.keys(assertTypes).forEach(function (key) {\n if (!rawModule[key]) { return }\n\n var assertOptions = assertTypes[key];\n\n forEachValue(rawModule[key], function (value, type) {\n assert(\n assertOptions.assert(value),\n makeAssertionMessage(path, key, type, value, assertOptions.expected)\n );\n });\n });\n}\n\nfunction makeAssertionMessage (path, key, type, value, expected) {\n var buf = key + \" should be \" + expected + \" but \\\"\" + key + \".\" + type + \"\\\"\";\n if (path.length > 0) {\n buf += \" in module \\\"\" + (path.join('.')) + \"\\\"\";\n }\n buf += \" is \" + (JSON.stringify(value)) + \".\";\n return buf\n}\n\nfunction createStore (options) {\n return new Store(options)\n}\n\nvar Store = function Store (options) {\n var this$1$1 = this;\n if ( options === void 0 ) options = {};\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(typeof Promise !== 'undefined', \"vuex requires a Promise polyfill in this browser.\");\n assert(this instanceof Store, \"store must be called with the new operator.\");\n }\n\n var plugins = options.plugins; if ( plugins === void 0 ) plugins = [];\n var strict = options.strict; if ( strict === void 0 ) strict = false;\n var devtools = options.devtools;\n\n // store internal state\n this._committing = false;\n this._actions = Object.create(null);\n this._actionSubscribers = [];\n this._mutations = Object.create(null);\n this._wrappedGetters = Object.create(null);\n this._modules = new ModuleCollection(options);\n this._modulesNamespaceMap = Object.create(null);\n this._subscribers = [];\n this._makeLocalGettersCache = Object.create(null);\n\n // EffectScope instance. when registering new getters, we wrap them inside\n // EffectScope so that getters (computed) would not be destroyed on\n // component unmount.\n this._scope = null;\n\n this._devtools = devtools;\n\n // bind commit and dispatch to self\n var store = this;\n var ref = this;\n var dispatch = ref.dispatch;\n var commit = ref.commit;\n this.dispatch = function boundDispatch (type, payload) {\n return dispatch.call(store, type, payload)\n };\n this.commit = function boundCommit (type, payload, options) {\n return commit.call(store, type, payload, options)\n };\n\n // strict mode\n this.strict = strict;\n\n var state = this._modules.root.state;\n\n // init root module.\n // this also recursively registers all sub-modules\n // and collects all module getters inside this._wrappedGetters\n installModule(this, state, [], this._modules.root);\n\n // initialize the store state, which is responsible for the reactivity\n // (also registers _wrappedGetters as computed properties)\n resetStoreState(this, state);\n\n // apply plugins\n plugins.forEach(function (plugin) { return plugin(this$1$1); });\n};\n\nvar prototypeAccessors = { state: { configurable: true } };\n\nStore.prototype.install = function install (app, injectKey) {\n app.provide(injectKey || storeKey, this);\n app.config.globalProperties.$store = this;\n\n var useDevtools = this._devtools !== undefined\n ? this._devtools\n : (process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__;\n\n if (useDevtools) {\n addDevtools(app, this);\n }\n};\n\nprototypeAccessors.state.get = function () {\n return this._state.data\n};\n\nprototypeAccessors.state.set = function (v) {\n if ((process.env.NODE_ENV !== 'production')) {\n assert(false, \"use store.replaceState() to explicit replace store state.\");\n }\n};\n\nStore.prototype.commit = function commit (_type, _payload, _options) {\n var this$1$1 = this;\n\n // check object-style commit\n var ref = unifyObjectStyle(_type, _payload, _options);\n var type = ref.type;\n var payload = ref.payload;\n var options = ref.options;\n\n var mutation = { type: type, payload: payload };\n var entry = this._mutations[type];\n if (!entry) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] unknown mutation type: \" + type));\n }\n return\n }\n this._withCommit(function () {\n entry.forEach(function commitIterator (handler) {\n handler(payload);\n });\n });\n\n this._subscribers\n .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n .forEach(function (sub) { return sub(mutation, this$1$1.state); });\n\n if (\n (process.env.NODE_ENV !== 'production') &&\n options && options.silent\n ) {\n console.warn(\n \"[vuex] mutation type: \" + type + \". Silent option has been removed. \" +\n 'Use the filter functionality in the vue-devtools'\n );\n }\n};\n\nStore.prototype.dispatch = function dispatch (_type, _payload) {\n var this$1$1 = this;\n\n // check object-style dispatch\n var ref = unifyObjectStyle(_type, _payload);\n var type = ref.type;\n var payload = ref.payload;\n\n var action = { type: type, payload: payload };\n var entry = this._actions[type];\n if (!entry) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] unknown action type: \" + type));\n }\n return\n }\n\n try {\n this._actionSubscribers\n .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n .filter(function (sub) { return sub.before; })\n .forEach(function (sub) { return sub.before(action, this$1$1.state); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in before action subscribers: \");\n console.error(e);\n }\n }\n\n var result = entry.length > 1\n ? Promise.all(entry.map(function (handler) { return handler(payload); }))\n : entry[0](payload);\n\n return new Promise(function (resolve, reject) {\n result.then(function (res) {\n try {\n this$1$1._actionSubscribers\n .filter(function (sub) { return sub.after; })\n .forEach(function (sub) { return sub.after(action, this$1$1.state); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in after action subscribers: \");\n console.error(e);\n }\n }\n resolve(res);\n }, function (error) {\n try {\n this$1$1._actionSubscribers\n .filter(function (sub) { return sub.error; })\n .forEach(function (sub) { return sub.error(action, this$1$1.state, error); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in error action subscribers: \");\n console.error(e);\n }\n }\n reject(error);\n });\n })\n};\n\nStore.prototype.subscribe = function subscribe (fn, options) {\n return genericSubscribe(fn, this._subscribers, options)\n};\n\nStore.prototype.subscribeAction = function subscribeAction (fn, options) {\n var subs = typeof fn === 'function' ? { before: fn } : fn;\n return genericSubscribe(subs, this._actionSubscribers, options)\n};\n\nStore.prototype.watch = function watch$1 (getter, cb, options) {\n var this$1$1 = this;\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(typeof getter === 'function', \"store.watch only accepts a function.\");\n }\n return watch(function () { return getter(this$1$1.state, this$1$1.getters); }, cb, Object.assign({}, options))\n};\n\nStore.prototype.replaceState = function replaceState (state) {\n var this$1$1 = this;\n\n this._withCommit(function () {\n this$1$1._state.data = state;\n });\n};\n\nStore.prototype.registerModule = function registerModule (path, rawModule, options) {\n if ( options === void 0 ) options = {};\n\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n assert(path.length > 0, 'cannot register the root module by using registerModule.');\n }\n\n this._modules.register(path, rawModule);\n installModule(this, this.state, path, this._modules.get(path), options.preserveState);\n // reset store to update getters...\n resetStoreState(this, this.state);\n};\n\nStore.prototype.unregisterModule = function unregisterModule (path) {\n var this$1$1 = this;\n\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n }\n\n this._modules.unregister(path);\n this._withCommit(function () {\n var parentState = getNestedState(this$1$1.state, path.slice(0, -1));\n delete parentState[path[path.length - 1]];\n });\n resetStore(this);\n};\n\nStore.prototype.hasModule = function hasModule (path) {\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n }\n\n return this._modules.isRegistered(path)\n};\n\nStore.prototype.hotUpdate = function hotUpdate (newOptions) {\n this._modules.update(newOptions);\n resetStore(this, true);\n};\n\nStore.prototype._withCommit = function _withCommit (fn) {\n var committing = this._committing;\n this._committing = true;\n fn();\n this._committing = committing;\n};\n\nObject.defineProperties( Store.prototype, prototypeAccessors );\n\n/**\n * Reduce the code which written in Vue.js for getting the state.\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} states # Object's item can be a function which accept state and getters for param, you can do something for state and getters in it.\n * @param {Object}\n */\nvar mapState = normalizeNamespace(function (namespace, states) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(states)) {\n console.error('[vuex] mapState: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(states).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedState () {\n var state = this.$store.state;\n var getters = this.$store.getters;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapState', namespace);\n if (!module) {\n return\n }\n state = module.context.state;\n getters = module.context.getters;\n }\n return typeof val === 'function'\n ? val.call(this, state, getters)\n : state[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for committing the mutation\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} mutations # Object's item can be a function which accept `commit` function as the first param, it can accept another params. You can commit mutation and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapMutations = normalizeNamespace(function (namespace, mutations) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(mutations)) {\n console.error('[vuex] mapMutations: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(mutations).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedMutation () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // Get the commit method from store\n var commit = this.$store.commit;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapMutations', namespace);\n if (!module) {\n return\n }\n commit = module.context.commit;\n }\n return typeof val === 'function'\n ? val.apply(this, [commit].concat(args))\n : commit.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for getting the getters\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} getters\n * @return {Object}\n */\nvar mapGetters = normalizeNamespace(function (namespace, getters) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(getters)) {\n console.error('[vuex] mapGetters: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(getters).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n // The namespace has been mutated by normalizeNamespace\n val = namespace + val;\n res[key] = function mappedGetter () {\n if (namespace && !getModuleByNamespace(this.$store, 'mapGetters', namespace)) {\n return\n }\n if ((process.env.NODE_ENV !== 'production') && !(val in this.$store.getters)) {\n console.error((\"[vuex] unknown getter: \" + val));\n return\n }\n return this.$store.getters[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for dispatch the action\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} actions # Object's item can be a function which accept `dispatch` function as the first param, it can accept anthor params. You can dispatch action and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapActions = normalizeNamespace(function (namespace, actions) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(actions)) {\n console.error('[vuex] mapActions: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(actions).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedAction () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // get dispatch function from store\n var dispatch = this.$store.dispatch;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapActions', namespace);\n if (!module) {\n return\n }\n dispatch = module.context.dispatch;\n }\n return typeof val === 'function'\n ? val.apply(this, [dispatch].concat(args))\n : dispatch.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\n/**\n * Rebinding namespace param for mapXXX function in special scoped, and return them by simple object\n * @param {String} namespace\n * @return {Object}\n */\nvar createNamespacedHelpers = function (namespace) { return ({\n mapState: mapState.bind(null, namespace),\n mapGetters: mapGetters.bind(null, namespace),\n mapMutations: mapMutations.bind(null, namespace),\n mapActions: mapActions.bind(null, namespace)\n}); };\n\n/**\n * Normalize the map\n * normalizeMap([1, 2, 3]) => [ { key: 1, val: 1 }, { key: 2, val: 2 }, { key: 3, val: 3 } ]\n * normalizeMap({a: 1, b: 2, c: 3}) => [ { key: 'a', val: 1 }, { key: 'b', val: 2 }, { key: 'c', val: 3 } ]\n * @param {Array|Object} map\n * @return {Object}\n */\nfunction normalizeMap (map) {\n if (!isValidMap(map)) {\n return []\n }\n return Array.isArray(map)\n ? map.map(function (key) { return ({ key: key, val: key }); })\n : Object.keys(map).map(function (key) { return ({ key: key, val: map[key] }); })\n}\n\n/**\n * Validate whether given map is valid or not\n * @param {*} map\n * @return {Boolean}\n */\nfunction isValidMap (map) {\n return Array.isArray(map) || isObject(map)\n}\n\n/**\n * Return a function expect two param contains namespace and map. it will normalize the namespace and then the param's function will handle the new namespace and the map.\n * @param {Function} fn\n * @return {Function}\n */\nfunction normalizeNamespace (fn) {\n return function (namespace, map) {\n if (typeof namespace !== 'string') {\n map = namespace;\n namespace = '';\n } else if (namespace.charAt(namespace.length - 1) !== '/') {\n namespace += '/';\n }\n return fn(namespace, map)\n }\n}\n\n/**\n * Search a special module from store by namespace. if module not exist, print error message.\n * @param {Object} store\n * @param {String} helper\n * @param {String} namespace\n * @return {Object}\n */\nfunction getModuleByNamespace (store, helper, namespace) {\n var module = store._modulesNamespaceMap[namespace];\n if ((process.env.NODE_ENV !== 'production') && !module) {\n console.error((\"[vuex] module namespace not found in \" + helper + \"(): \" + namespace));\n }\n return module\n}\n\n// Credits: borrowed code from fcomb/redux-logger\n\nfunction createLogger (ref) {\n if ( ref === void 0 ) ref = {};\n var collapsed = ref.collapsed; if ( collapsed === void 0 ) collapsed = true;\n var filter = ref.filter; if ( filter === void 0 ) filter = function (mutation, stateBefore, stateAfter) { return true; };\n var transformer = ref.transformer; if ( transformer === void 0 ) transformer = function (state) { return state; };\n var mutationTransformer = ref.mutationTransformer; if ( mutationTransformer === void 0 ) mutationTransformer = function (mut) { return mut; };\n var actionFilter = ref.actionFilter; if ( actionFilter === void 0 ) actionFilter = function (action, state) { return true; };\n var actionTransformer = ref.actionTransformer; if ( actionTransformer === void 0 ) actionTransformer = function (act) { return act; };\n var logMutations = ref.logMutations; if ( logMutations === void 0 ) logMutations = true;\n var logActions = ref.logActions; if ( logActions === void 0 ) logActions = true;\n var logger = ref.logger; if ( logger === void 0 ) logger = console;\n\n return function (store) {\n var prevState = deepCopy(store.state);\n\n if (typeof logger === 'undefined') {\n return\n }\n\n if (logMutations) {\n store.subscribe(function (mutation, state) {\n var nextState = deepCopy(state);\n\n if (filter(mutation, prevState, nextState)) {\n var formattedTime = getFormattedTime();\n var formattedMutation = mutationTransformer(mutation);\n var message = \"mutation \" + (mutation.type) + formattedTime;\n\n startMessage(logger, message, collapsed);\n logger.log('%c prev state', 'color: #9E9E9E; font-weight: bold', transformer(prevState));\n logger.log('%c mutation', 'color: #03A9F4; font-weight: bold', formattedMutation);\n logger.log('%c next state', 'color: #4CAF50; font-weight: bold', transformer(nextState));\n endMessage(logger);\n }\n\n prevState = nextState;\n });\n }\n\n if (logActions) {\n store.subscribeAction(function (action, state) {\n if (actionFilter(action, state)) {\n var formattedTime = getFormattedTime();\n var formattedAction = actionTransformer(action);\n var message = \"action \" + (action.type) + formattedTime;\n\n startMessage(logger, message, collapsed);\n logger.log('%c action', 'color: #03A9F4; font-weight: bold', formattedAction);\n endMessage(logger);\n }\n });\n }\n }\n}\n\nfunction startMessage (logger, message, collapsed) {\n var startMessage = collapsed\n ? logger.groupCollapsed\n : logger.group;\n\n // render\n try {\n startMessage.call(logger, message);\n } catch (e) {\n logger.log(message);\n }\n}\n\nfunction endMessage (logger) {\n try {\n logger.groupEnd();\n } catch (e) {\n logger.log('—— log end ——');\n }\n}\n\nfunction getFormattedTime () {\n var time = new Date();\n return (\" @ \" + (pad(time.getHours(), 2)) + \":\" + (pad(time.getMinutes(), 2)) + \":\" + (pad(time.getSeconds(), 2)) + \".\" + (pad(time.getMilliseconds(), 3)))\n}\n\nfunction repeat (str, times) {\n return (new Array(times + 1)).join(str)\n}\n\nfunction pad (num, maxLength) {\n return repeat('0', maxLength - num.toString().length) + num\n}\n\nvar index = {\n version: '4.1.0',\n Store: Store,\n storeKey: storeKey,\n createStore: createStore,\n useStore: useStore,\n mapState: mapState,\n mapMutations: mapMutations,\n mapGetters: mapGetters,\n mapActions: mapActions,\n createNamespacedHelpers: createNamespacedHelpers,\n createLogger: createLogger\n};\n\nexport default index;\nexport { Store, createLogger, createNamespacedHelpers, createStore, mapActions, mapGetters, mapMutations, mapState, storeKey, useStore };\n","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { loadState } from '@nextcloud/initial-state'\n\nconst isCirclesEnabled = loadState('contacts', 'isCirclesEnabled', false)\nexport default isCirclesEnabled\n","/*\nHow it works:\n`this.#head` is an instance of `Node` which keeps track of its current value and nests another instance of `Node` that keeps the value that comes after it. When a value is provided to `.enqueue()`, the code needs to iterate through `this.#head`, going deeper and deeper to find the last value. However, iterating through every single item is slow. This problem is solved by saving a reference to the last value as `this.#tail` so that it can reference it to add a new value.\n*/\n\nclass Node {\n\tvalue;\n\tnext;\n\n\tconstructor(value) {\n\t\tthis.value = value;\n\t}\n}\n\nexport default class Queue {\n\t#head;\n\t#tail;\n\t#size;\n\n\tconstructor() {\n\t\tthis.clear();\n\t}\n\n\tenqueue(value) {\n\t\tconst node = new Node(value);\n\n\t\tif (this.#head) {\n\t\t\tthis.#tail.next = node;\n\t\t\tthis.#tail = node;\n\t\t} else {\n\t\t\tthis.#head = node;\n\t\t\tthis.#tail = node;\n\t\t}\n\n\t\tthis.#size++;\n\t}\n\n\tdequeue() {\n\t\tconst current = this.#head;\n\t\tif (!current) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#head = this.#head.next;\n\t\tthis.#size--;\n\t\treturn current.value;\n\t}\n\n\tpeek() {\n\t\tif (!this.#head) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn this.#head.value;\n\n\t\t// TODO: Node.js 18.\n\t\t// return this.#head?.value;\n\t}\n\n\tclear() {\n\t\tthis.#head = undefined;\n\t\tthis.#tail = undefined;\n\t\tthis.#size = 0;\n\t}\n\n\tget size() {\n\t\treturn this.#size;\n\t}\n\n\t* [Symbol.iterator]() {\n\t\tlet current = this.#head;\n\n\t\twhile (current) {\n\t\t\tyield current.value;\n\t\t\tcurrent = current.next;\n\t\t}\n\t}\n\n\t* drain() {\n\t\twhile (this.#head) {\n\t\t\tyield this.dequeue();\n\t\t}\n\t}\n}\n","import Queue from 'yocto-queue';\n\nexport default function pLimit(concurrency) {\n\tvalidateConcurrency(concurrency);\n\n\tconst queue = new Queue();\n\tlet activeCount = 0;\n\n\tconst resumeNext = () => {\n\t\t// Process the next queued function if we're under the concurrency limit\n\t\tif (activeCount < concurrency && queue.size > 0) {\n\t\t\tactiveCount++;\n\t\t\tqueue.dequeue()();\n\t\t}\n\t};\n\n\tconst next = () => {\n\t\tactiveCount--;\n\t\tresumeNext();\n\t};\n\n\tconst run = async (function_, resolve, arguments_) => {\n\t\t// Execute the function and capture the result promise\n\t\tconst result = (async () => function_(...arguments_))();\n\n\t\t// Resolve immediately with the promise (don't wait for completion)\n\t\tresolve(result);\n\n\t\t// Wait for the function to complete (success or failure)\n\t\t// We catch errors here to prevent unhandled rejections,\n\t\t// but the original promise rejection is preserved for the caller\n\t\ttry {\n\t\t\tawait result;\n\t\t} catch {}\n\n\t\t// Decrement active count and process next queued function\n\t\tnext();\n\t};\n\n\tconst enqueue = (function_, resolve, arguments_) => {\n\t\t// Queue the internal resolve function instead of the run function\n\t\t// to preserve the asynchronous execution context.\n\t\tnew Promise(internalResolve => { // eslint-disable-line promise/param-names\n\t\t\tqueue.enqueue(internalResolve);\n\t\t}).then(run.bind(undefined, function_, resolve, arguments_)); // eslint-disable-line promise/prefer-await-to-then\n\n\t\t// Start processing immediately if we haven't reached the concurrency limit\n\t\tif (activeCount < concurrency) {\n\t\t\tresumeNext();\n\t\t}\n\t};\n\n\tconst generator = (function_, ...arguments_) => new Promise(resolve => {\n\t\tenqueue(function_, resolve, arguments_);\n\t});\n\n\tObject.defineProperties(generator, {\n\t\tactiveCount: {\n\t\t\tget: () => activeCount,\n\t\t},\n\t\tpendingCount: {\n\t\t\tget: () => queue.size,\n\t\t},\n\t\tclearQueue: {\n\t\t\tvalue() {\n\t\t\t\tqueue.clear();\n\t\t\t},\n\t\t},\n\t\tconcurrency: {\n\t\t\tget: () => concurrency,\n\n\t\t\tset(newConcurrency) {\n\t\t\t\tvalidateConcurrency(newConcurrency);\n\t\t\t\tconcurrency = newConcurrency;\n\n\t\t\t\tqueueMicrotask(() => {\n\t\t\t\t\t// eslint-disable-next-line no-unmodified-loop-condition\n\t\t\t\t\twhile (activeCount < concurrency && queue.size > 0) {\n\t\t\t\t\t\tresumeNext();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t\tmap: {\n\t\t\tasync value(iterable, function_) {\n\t\t\t\tconst promises = Array.from(iterable, (value, index) => this(function_, value, index));\n\t\t\t\treturn Promise.all(promises);\n\t\t\t},\n\t\t},\n\t});\n\n\treturn generator;\n}\n\nexport function limitFunction(function_, options) {\n\tconst {concurrency} = options;\n\tconst limit = pLimit(concurrency);\n\n\treturn (...arguments_) => limit(() => function_(...arguments_));\n}\n\nfunction validateConcurrency(concurrency) {\n\tif (!((Number.isInteger(concurrency) || concurrency === Number.POSITIVE_INFINITY) && concurrency > 0)) {\n\t\tthrow new TypeError('Expected `concurrency` to be a number from 1 and up');\n\t}\n}\n","import axios from \"@nextcloud/axios\";\nclass Parser {\n /**\n *\n */\n constructor() {\n this._parser = {};\n this._registerDefaultParsers();\n }\n /**\n * checks if a parser exists for a given property name\n *\n * @param {string} propertyName\n * @return {boolean}\n */\n canParse(propertyName) {\n return Object.prototype.hasOwnProperty.call(this._parser, propertyName);\n }\n /**\n * parses a single prop Node\n *\n * @param {Document} document\n * @param {Node} node\n * @param {XPathNSResolver} resolver\n * @return {*}\n */\n parse(document2, node, resolver) {\n const propertyName = `{${node.namespaceURI}}${node.localName}`;\n if (!this.canParse(propertyName)) {\n throw new Error(`Unable to parse unknown property \"${propertyName}\"`);\n }\n return this._parser[propertyName](document2, node, resolver);\n }\n /**\n * registers a parser for propertyName\n *\n * @param {string} propertyName\n * @param {Function} parser\n */\n registerParser(propertyName, parser) {\n this._parser[propertyName] = parser;\n }\n /**\n * unregisters a parser for propertyName\n *\n * @param {string} propertyName\n */\n unregisterParser(propertyName) {\n delete this._parser[propertyName];\n }\n /**\n * registers the predefined parsers\n *\n * @private\n */\n _registerDefaultParsers() {\n this.registerParser(\"{DAV:}displayname\", Parser.text);\n this.registerParser(\"{DAV:}creationdate\", Parser.text);\n this.registerParser(\"{DAV:}getcontentlength\", Parser.decInt);\n this.registerParser(\"{DAV:}getcontenttype\", Parser.text);\n this.registerParser(\"{DAV:}getcontentlanguage\", Parser.text);\n this.registerParser(\"{DAV:}getlastmodified\", Parser.rfc1123Date);\n this.registerParser(\"{DAV:}getetag\", Parser.text);\n this.registerParser(\"{DAV:}resourcetype\", Parser.resourceType);\n this.registerParser(\"{DAV:}inherited-acl-set\", Parser.hrefs);\n this.registerParser(\"{DAV:}group\", Parser.href);\n this.registerParser(\"{DAV:}owner\", Parser.href);\n this.registerParser(\"{DAV:}current-user-privilege-set\", Parser.privileges);\n this.registerParser(\"{DAV:}principal-collection-set\", Parser.hrefs);\n this.registerParser(\"{DAV:}principal-URL\", Parser.href);\n this.registerParser(\"{DAV:}alternate-URI-set\", Parser.hrefs);\n this.registerParser(\"{DAV:}group-member-set\", Parser.hrefs);\n this.registerParser(\"{DAV:}group-membership\", Parser.hrefs);\n this.registerParser(\"{DAV:}current-user-principal\", Parser.currentUserPrincipal);\n this.registerParser(\"{DAV:}sync-token\", Parser.text);\n this.registerParser(\"{urn:ietf:params:xml:ns:carddav}address-data\", Parser.text);\n this.registerParser(\"{urn:ietf:params:xml:ns:carddav}addressbook-description\", Parser.text);\n this.registerParser(\"{urn:ietf:params:xml:ns:carddav}supported-address-data\", Parser.addressDataTypes);\n this.registerParser(\"{urn:ietf:params:xml:ns:carddav}max-resource-size\", Parser.decInt);\n this.registerParser(\"{urn:ietf:params:xml:ns:carddav}addressbook-home-set\", Parser.hrefs);\n this.registerParser(\"{urn:ietf:params:xml:ns:carddav}principal-address\", Parser.href);\n this.registerParser(\"{urn:ietf:params:xml:ns:carddav}supported-collation-set\", Parser.supportedCardDAVCollations);\n this.registerParser(\"{urn:ietf:params:xml:ns:caldav}calendar-data\", Parser.text);\n this.registerParser(\"{urn:ietf:params:xml:ns:caldav}calendar-home-set\", Parser.hrefs);\n this.registerParser(\"{urn:ietf:params:xml:ns:caldav}calendar-description\", Parser.text);\n this.registerParser(\"{urn:ietf:params:xml:ns:caldav}calendar-timezone\", Parser.text);\n this.registerParser(\"{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set\", Parser.calendarComps);\n this.registerParser(\"{urn:ietf:params:xml:ns:caldav}supported-calendar-data\", Parser.calendarDatas);\n this.registerParser(\"{urn:ietf:params:xml:ns:caldav}max-resource-size\", Parser.decInt);\n this.registerParser(\"{urn:ietf:params:xml:ns:caldav}min-date-time\", Parser.iCalendarTimestamp);\n this.registerParser(\"{urn:ietf:params:xml:ns:caldav}max-date-time\", Parser.iCalendarTimestamp);\n this.registerParser(\"{urn:ietf:params:xml:ns:caldav}max-instances\", Parser.decInt);\n this.registerParser(\"{urn:ietf:params:xml:ns:caldav}max-attendees-per-instance\", Parser.decInt);\n this.registerParser(\"{urn:ietf:params:xml:ns:caldav}supported-collation-set\", Parser.supportedCalDAVCollations);\n this.registerParser(\"{urn:ietf:params:xml:ns:caldav}schedule-outbox-URL\", Parser.href);\n this.registerParser(\"{urn:ietf:params:xml:ns:caldav}schedule-inbox-URL\", Parser.href);\n this.registerParser(\"{urn:ietf:params:xml:ns:caldav}calendar-user-address-set\", Parser.hrefs);\n this.registerParser(\"{urn:ietf:params:xml:ns:caldav}calendar-user-type\", Parser.text);\n this.registerParser(\"{urn:ietf:params:xml:ns:caldav}schedule-calendar-transp\", Parser.scheduleCalendarTransp);\n this.registerParser(\"{urn:ietf:params:xml:ns:caldav}schedule-default-calendar-URL\", Parser.href);\n this.registerParser(\"{urn:ietf:params:xml:ns:caldav}schedule-tag\", Parser.text);\n this.registerParser(\"{urn:ietf:params:xml:ns:caldav}timezone-service-set\", Parser.hrefs);\n this.registerParser(\"{urn:ietf:params:xml:ns:caldav}calendar-timezone-id\", Parser.text);\n this.registerParser(\"{urn:ietf:params:xml:ns:caldav}calendar-availability\", Parser.text);\n this.registerParser(\"{http://apple.com/ns/ical/}calendar-order\", Parser.decInt);\n this.registerParser(\"{http://apple.com/ns/ical/}calendar-color\", Parser.color);\n this.registerParser(\"{http://calendarserver.org/ns/}source\", Parser.href);\n this.registerParser(\"{urn:ietf:params:xml:ns:caldav}default-alarm-vevent-datetime\", Parser.text);\n this.registerParser(\"{urn:ietf:params:xml:ns:caldav}default-alarm-vevent-date\", Parser.text);\n this.registerParser(\"{urn:ietf:params:xml:ns:caldav}default-alarm-vtodo-datetime\", Parser.text);\n this.registerParser(\"{urn:ietf:params:xml:ns:caldav}default-alarm-vtodo-date\", Parser.text);\n this.registerParser(\"{http://calendarserver.org/ns/}getctag\", Parser.text);\n this.registerParser(\"{http://calendarserver.org/ns/}calendar-proxy-read-for\", Parser.hrefs);\n this.registerParser(\"{http://calendarserver.org/ns/}calendar-proxy-write-for\", Parser.hrefs);\n this.registerParser(\"{http://calendarserver.org/ns/}allowed-sharing-modes\", Parser.allowedSharingModes);\n this.registerParser(\"{http://calendarserver.org/ns/}shared-url\", Parser.href);\n this.registerParser(\"{http://sabredav.org/ns}owner-principal\", Parser.href);\n this.registerParser(\"{http://sabredav.org/ns}read-only\", Parser.bool);\n this.registerParser(\"{http://calendarserver.org/ns/}pre-publish-url\", Parser.href);\n this.registerParser(\"{http://calendarserver.org/ns/}publish-url\", Parser.href);\n this.registerParser(\"{http://owncloud.org/ns}invite\", Parser.ocInvite);\n this.registerParser(\"{http://owncloud.org/ns}calendar-enabled\", Parser.bool);\n this.registerParser(\"{http://owncloud.org/ns}enabled\", Parser.bool);\n this.registerParser(\"{http://owncloud.org/ns}read-only\", Parser.bool);\n this.registerParser(\"{http://nextcloud.com/ns}owner-displayname\", Parser.text);\n this.registerParser(\"{http://nextcloud.com/ns}deleted-at\", Parser.iso8601DateTime);\n this.registerParser(\"{http://nextcloud.com/ns}calendar-uri\", Parser.text);\n this.registerParser(\"{http://nextcloud.com/ns}has-photo\", Parser.bool);\n this.registerParser(\"{http://nextcloud.com/ns}trash-bin-retention-duration\", Parser.decInt);\n this.registerParser(\"{http://nextcloud.com/ns}language\", Parser.text);\n this.registerParser(\"{http://nextcloud.com/ns}room-type\", Parser.text);\n this.registerParser(\"{http://nextcloud.com/ns}room-seating-capacity\", Parser.decInt);\n this.registerParser(\"{http://nextcloud.com/ns}room-building-address\", Parser.text);\n this.registerParser(\"{http://nextcloud.com/ns}room-building-story\", Parser.text);\n this.registerParser(\"{http://nextcloud.com/ns}room-building-room-number\", Parser.text);\n this.registerParser(\"{http://nextcloud.com/ns}room-features\", Parser.text);\n this.registerParser(\"{http://sabredav.org/ns}email-address\", Parser.text);\n }\n /**\n * returns text value of Node\n *\n * @param {Document} document\n * @param {Node} node\n * @param {XPathNSResolver} resolver\n * @return {string}\n */\n static text(document2, node, resolver) {\n return document2.evaluate(\"string(.)\", node, resolver, XPathResult.ANY_TYPE, null).stringValue;\n }\n /**\n * returns boolean value of Node\n *\n * @param {Document} document\n * @param {Node} node\n * @param {XPathNSResolver} resolver\n * @return {boolean}\n */\n static bool(document2, node, resolver) {\n return Parser.text(document2, node, resolver) === \"1\";\n }\n /**\n * returns decimal integer value of Node\n *\n * @param {Document} document\n * @param {Node} node\n * @param {XPathNSResolver} resolver\n * @return {number}\n */\n static decInt(document2, node, resolver) {\n return parseInt(Parser.text(document2, node, resolver), 10);\n }\n /**\n * returns Date value of Node\n *\n * @param {Document} document\n * @param {Node} node\n * @param {XPathNSResolver} resolver\n * @return {Date}\n */\n static rfc1123Date(document2, node, resolver) {\n const text = Parser.text(document2, node, resolver);\n return new Date(text);\n }\n /**\n * returns Date from an ISO8601 string\n *\n * @param {Document} document\n * @param {Node} node\n * @param {XPathNSResolver} resolver\n * @return {Date}\n */\n static iso8601DateTime(document2, node, resolver) {\n const text = Parser.text(document2, node, resolver);\n return new Date(text);\n }\n /**\n * returns Date value of Node\n *\n * @param {Document} document\n * @param {Node} node\n * @param {XPathNSResolver} resolver\n * @return {Date}\n */\n static iCalendarTimestamp(document2, node, resolver) {\n const text = Parser.text(document2, node, resolver);\n const year = parseInt(text.slice(0, 4), 10);\n const month = parseInt(text.slice(4, 6), 10) - 1;\n const date = parseInt(text.slice(6, 8), 10);\n const hour = parseInt(text.slice(9, 11), 10);\n const minute = parseInt(text.slice(11, 13), 10);\n const second = parseInt(text.slice(13, 15), 10);\n const dateObj = /* @__PURE__ */ new Date();\n dateObj.setUTCFullYear(year, month, date);\n dateObj.setUTCHours(hour, minute, second, 0);\n return dateObj;\n }\n /**\n * parses a {DAV:}resourcetype Node\n *\n * @param {Document} document\n * @param {Node} node\n * @param {XPathNSResolver} resolver\n * @return {string[]}\n */\n static resourceType(document2, node, resolver) {\n const result = [];\n const children = document2.evaluate(\"*\", node, resolver, XPathResult.ANY_TYPE, null);\n let childNode;\n while ((childNode = children.iterateNext()) !== null) {\n const ns = document2.evaluate(\"namespace-uri(.)\", childNode, resolver, XPathResult.ANY_TYPE, null).stringValue;\n const local = document2.evaluate(\"local-name(.)\", childNode, resolver, XPathResult.ANY_TYPE, null).stringValue;\n result.push(`{${ns}}${local}`);\n }\n return result;\n }\n /**\n * parses a node with one href nodes as child\n *\n * @param {Document} document\n * @param {Node} node\n * @param {XPathNSResolver} resolver\n * @return {string}\n */\n static href(document2, node, resolver) {\n return document2.evaluate(\"string(d:href)\", node, resolver, XPathResult.ANY_TYPE, null).stringValue;\n }\n /**\n * parses a node with multiple href nodes as children\n *\n * @param {Document} document\n * @param {Node} node\n * @param {XPathNSResolver} resolver\n * @return {string[]}\n */\n static hrefs(document2, node, resolver) {\n const result = [];\n const hrefs = document2.evaluate(\"d:href\", node, resolver, XPathResult.ANY_TYPE, null);\n let hrefNode;\n while ((hrefNode = hrefs.iterateNext()) !== null) {\n result.push(document2.evaluate(\"string(.)\", hrefNode, resolver, XPathResult.ANY_TYPE, null).stringValue);\n }\n return result;\n }\n /**\n * Parses a set of {DAV:}privilege Nodes\n *\n * @param {Document} document\n * @param {Node} node\n * @param {XPathNSResolver} resolver\n * @return {string[]}\n */\n static privileges(document2, node, resolver) {\n const result = [];\n const privileges = document2.evaluate(\"d:privilege/*\", node, resolver, XPathResult.ANY_TYPE, null);\n let privilegeNode;\n while ((privilegeNode = privileges.iterateNext()) !== null) {\n const ns = document2.evaluate(\"namespace-uri(.)\", privilegeNode, resolver, XPathResult.ANY_TYPE, null).stringValue;\n const local = document2.evaluate(\"local-name(.)\", privilegeNode, resolver, XPathResult.ANY_TYPE, null).stringValue;\n result.push(`{${ns}}${local}`);\n }\n return result;\n }\n /**\n * parses the {DAV:}current-user-principal Node\n *\n * @param {Document} document\n * @param {Node} node\n * @param {XPathNSResolver} resolver\n * @return {object}\n * @property {string} type\n * @property {string} href\n */\n static currentUserPrincipal(document2, node, resolver) {\n const unauthenticatedCount = document2.evaluate(\"count(d:unauthenticated)\", node, resolver, XPathResult.ANY_TYPE, null).numberValue;\n if (unauthenticatedCount !== 0) {\n return {\n type: \"unauthenticated\",\n href: null\n };\n } else {\n return {\n type: \"href\",\n href: Parser.href(...arguments)\n };\n }\n }\n /**\n * Parses a {urn:ietf:params:xml:ns:carddav}supported-address-data Node\n *\n * @param {Document} document\n * @param {Node} node\n * @param {XPathNSResolver} resolver\n * @return {*}\n */\n static addressDataTypes(document2, node, resolver) {\n const result = [];\n const addressDatas = document2.evaluate(\"cr:address-data-type\", node, resolver, XPathResult.ANY_TYPE, null);\n let addressDataNode;\n while ((addressDataNode = addressDatas.iterateNext()) !== null) {\n result.push({\n \"content-type\": document2.evaluate(\"string(@content-type)\", addressDataNode, resolver, XPathResult.ANY_TYPE, null).stringValue,\n version: document2.evaluate(\"string(@version)\", addressDataNode, resolver, XPathResult.ANY_TYPE, null).stringValue\n });\n }\n return result;\n }\n /**\n * Parses a {urn:ietf:params:xml:ns:carddav}supported-collation-set Node\n *\n * @param {Document} document\n * @param {Node} node\n * @param {XPathNSResolver} resolver\n * @return {*}\n */\n static supportedCardDAVCollations(document2, node, resolver) {\n const result = [];\n const collations = document2.evaluate(\"cr:supported-collation\", node, resolver, XPathResult.ANY_TYPE, null);\n let collationNode;\n while ((collationNode = collations.iterateNext()) !== null) {\n result.push(document2.evaluate(\"string(.)\", collationNode, resolver, XPathResult.ANY_TYPE, null).stringValue);\n }\n return result;\n }\n /**\n * Parses a {urn:ietf:params:xml:ns:caldav}supported-collation-set Node\n *\n * @param {Document} document\n * @param {Node} node\n * @param {XPathNSResolver} resolver\n * @return {*}\n */\n static supportedCalDAVCollations(document2, node, resolver) {\n const result = [];\n const collations = document2.evaluate(\"cl:supported-collation\", node, resolver, XPathResult.ANY_TYPE, null);\n let collationNode;\n while ((collationNode = collations.iterateNext()) !== null) {\n result.push(document2.evaluate(\"string(.)\", collationNode, resolver, XPathResult.ANY_TYPE, null).stringValue);\n }\n return result;\n }\n /**\n * Parses a {urn:ietf:params:xml:ns:caldav}supported-calendar-component-set Node\n *\n * @param {Document} document\n * @param {Node} node\n * @param {XPathNSResolver} resolver\n * @return {string[]}\n */\n static calendarComps(document2, node, resolver) {\n const result = [];\n const comps = document2.evaluate(\"cl:comp\", node, resolver, XPathResult.ANY_TYPE, null);\n let compNode;\n while ((compNode = comps.iterateNext()) !== null) {\n result.push(document2.evaluate(\"string(@name)\", compNode, resolver, XPathResult.ANY_TYPE, null).stringValue);\n }\n return result;\n }\n /**\n * Parses a {urn:ietf:params:xml:ns:caldav}supported-calendar-data Node\n *\n * @param {Document} document\n * @param {Node} node\n * @param {XPathNSResolver} resolver\n * @return {*}\n */\n static calendarDatas(document2, node, resolver) {\n const result = [];\n const calendarDatas = document2.evaluate(\"cl:calendar-data\", node, resolver, XPathResult.ANY_TYPE, null);\n let calendarDataNode;\n while ((calendarDataNode = calendarDatas.iterateNext()) !== null) {\n result.push({\n \"content-type\": document2.evaluate(\"string(@content-type)\", calendarDataNode, resolver, XPathResult.ANY_TYPE, null).stringValue,\n version: document2.evaluate(\"string(@version)\", calendarDataNode, resolver, XPathResult.ANY_TYPE, null).stringValue\n });\n }\n return result;\n }\n /**\n * Parses a {urn:ietf:params:xml:ns:caldav}schedule-calendar-transp Node\n *\n * @param {Document} document\n * @param {Node} node\n * @param {XPathNSResolver} resolver\n * @return {string}\n */\n static scheduleCalendarTransp(document2, node, resolver) {\n const children = document2.evaluate(\"cl:opaque | cl:transparent\", node, resolver, XPathResult.ANY_TYPE, null);\n const childNode = children.iterateNext();\n if (childNode) {\n return document2.evaluate(\"local-name(.)\", childNode, resolver, XPathResult.ANY_TYPE, null).stringValue;\n }\n }\n /**\n * Parses a {http://apple.com/ns/ical/}calendar-color Node\n * strips the alpha value of RGB values\n *\n * @param {Document} document\n * @param {Node} node\n * @param {XPathNSResolver} resolver\n * @return {string}\n */\n static color(document2, node, resolver) {\n const text = Parser.text(document2, node, resolver);\n if (text.length === 9) {\n return text.slice(0, 7);\n }\n return text;\n }\n /**\n * Parses a {http://calendarserver.org/ns/}allowed-sharing-modes Node\n *\n * @param {Document} document\n * @param {Node} node\n * @param {XPathNSResolver} resolver\n * @return {string[]}\n */\n static allowedSharingModes(document2, node, resolver) {\n const result = [];\n const children = document2.evaluate(\"cs:can-be-shared | cs:can-be-published\", node, resolver, XPathResult.ANY_TYPE, null);\n let childNode;\n while ((childNode = children.iterateNext()) !== null) {\n const ns = document2.evaluate(\"namespace-uri(.)\", childNode, resolver, XPathResult.ANY_TYPE, null).stringValue;\n const local = document2.evaluate(\"local-name(.)\", childNode, resolver, XPathResult.ANY_TYPE, null).stringValue;\n result.push(`{${ns}}${local}`);\n }\n return result;\n }\n /**\n * Parses a {http://owncloud.org/ns}invite Node\n *\n * @param {Document} document\n * @param {Node} node\n * @param {XPathNSResolver} resolver\n * @return {*}\n */\n static ocInvite(document2, node, resolver) {\n const result = [];\n const users = document2.evaluate(\"oc:user\", node, resolver, XPathResult.ANY_TYPE, null);\n let userNode;\n while ((userNode = users.iterateNext()) !== null) {\n result.push({\n href: Parser.href(document2, userNode, resolver),\n \"common-name\": document2.evaluate(\"string(oc:common-name)\", userNode, resolver, XPathResult.ANY_TYPE, null).stringValue,\n \"invite-accepted\": document2.evaluate(\"count(oc:invite-accepted)\", userNode, resolver, XPathResult.ANY_TYPE, null).numberValue === 1,\n access: Parser.ocAccess(document2, userNode, resolver)\n });\n }\n return result;\n }\n /**\n * Parses a set of {http://owncloud.org/ns}access Nodes\n *\n * @param {Document} document\n * @param {Node} node\n * @param {XPathNSResolver} resolver\n * @return {string[]}\n */\n static ocAccess(document2, node, resolver) {\n const result = [];\n const privileges = document2.evaluate(\"oc:access/*\", node, resolver, XPathResult.ANY_TYPE, null);\n let privilegeNode;\n while ((privilegeNode = privileges.iterateNext()) !== null) {\n const ns = document2.evaluate(\"namespace-uri(.)\", privilegeNode, resolver, XPathResult.ANY_TYPE, null).stringValue;\n const local = document2.evaluate(\"local-name(.)\", privilegeNode, resolver, XPathResult.ANY_TYPE, null).stringValue;\n result.push(`{${ns}}${local}`);\n }\n return result;\n }\n}\nconst DAV = \"DAV:\";\nconst IETF_CALDAV = \"urn:ietf:params:xml:ns:caldav\";\nconst IETF_CARDDAV = \"urn:ietf:params:xml:ns:carddav\";\nconst OWNCLOUD = \"http://owncloud.org/ns\";\nconst NEXTCLOUD = \"http://nextcloud.com/ns\";\nconst APPLE = \"http://apple.com/ns/ical/\";\nconst CALENDARSERVER = \"http://calendarserver.org/ns/\";\nconst SABREDAV = \"http://sabredav.org/ns\";\nconst NS_MAP = {\n d: DAV,\n cl: IETF_CALDAV,\n cr: IETF_CARDDAV,\n oc: OWNCLOUD,\n nc: NEXTCLOUD,\n aapl: APPLE,\n cs: CALENDARSERVER,\n sd: SABREDAV\n};\nfunction resolve(short) {\n return NS_MAP[short] || null;\n}\nconst namespaceUtility = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n APPLE,\n CALENDARSERVER,\n DAV,\n IETF_CALDAV,\n IETF_CARDDAV,\n NEXTCLOUD,\n NS_MAP,\n OWNCLOUD,\n SABREDAV,\n resolve\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst serializer = new XMLSerializer();\nlet prefixMap = {};\nfunction getRootSkeleton() {\n if (arguments.length === 0) {\n return [{}, null];\n }\n const skeleton = {\n name: arguments[0],\n children: []\n };\n let childrenWrapper = skeleton.children;\n const args = Array.prototype.slice.call(arguments, 1);\n args.forEach(function(argument) {\n const level = {\n name: argument,\n children: []\n };\n childrenWrapper.push(level);\n childrenWrapper = level.children;\n });\n return [skeleton, childrenWrapper];\n}\nfunction serialize(json) {\n json = json || {};\n if (typeof json !== \"object\" || !Object.prototype.hasOwnProperty.call(json, \"name\")) {\n return \"\";\n }\n const root = document.implementation.createDocument(\"\", \"\", null);\n xmlify(root, root, json);\n return serializer.serializeToString(root);\n}\nfunction xmlify(xmlDoc, parent, json) {\n const [ns, localName] = json.name;\n const element = xmlDoc.createElementNS(ns, getPrefixedNameForNamespace(ns, localName));\n json.attributes = json.attributes || [];\n json.attributes.forEach((attribute) => {\n if (attribute.length === 2) {\n const [name, value] = attribute;\n element.setAttribute(name, value);\n } else {\n const [namespace, localName2, value] = attribute;\n element.setAttributeNS(namespace, getPrefixedNameForNamespace(namespace, localName2), value);\n }\n });\n if (json.value) {\n element.textContent = json.value;\n } else if (json.children) {\n json.children.forEach((child) => {\n xmlify(xmlDoc, element, child);\n });\n }\n parent.appendChild(element);\n}\nfunction getPrefixedNameForNamespace(ns, localName) {\n if (!Object.prototype.hasOwnProperty.call(prefixMap, ns)) {\n prefixMap[ns] = \"x\" + Object.keys(prefixMap).length;\n }\n return prefixMap[ns] + \":\" + localName;\n}\nclass AttachError extends Error {\n /**\n *\n * @param {object} attach\n */\n constructor(attach) {\n super();\n Object.assign(this, attach);\n }\n}\nclass NetworkRequestAbortedError extends AttachError {\n}\nclass NetworkRequestError extends AttachError {\n}\nclass NetworkRequestHttpError extends AttachError {\n}\nclass NetworkRequestServerError extends NetworkRequestHttpError {\n}\nclass NetworkRequestClientError extends NetworkRequestHttpError {\n}\nclass Request {\n /**\n * Creates a new Request object\n *\n * @param {string} baseUrl - root url of DAV server, use OC.remote('dav')\n * @param {{[name: string]: any}} [defaultHeaders] - additional HTTP headers to send with each request\n * @param {import('./parser.js').Parser} parser - instance of Parser class\n */\n constructor(baseUrl, parser, defaultHeaders = {}) {\n this.baseUrl = baseUrl;\n this.parser = parser;\n this.defaultHeaders = defaultHeaders;\n }\n /**\n * sends an OPTIONS request\n *\n * @param {string} url - URL to do the request on\n * @param {object} headers - additional HTTP headers to send\n * @param {AbortSignal} abortSignal - the signal from an abort controller\n * @return {Promise<{body: string|object, status: number, headers: object}>}\n */\n async options(url, headers = {}, abortSignal = null) {\n return this.request(\"OPTIONS\", url, headers, null, abortSignal);\n }\n /**\n * sends a GET request\n *\n * @param {string} url - URL to do the request on\n * @param {object} headers - additional HTTP headers to send\n * @param {string} body - request body\n * @param {AbortSignal} abortSignal - the signal from an abort controller\n * @return {Promise<{body: string|object, status: number, headers: object}>}\n */\n async get(url, headers = {}, body = null, abortSignal = null) {\n return this.request(\"GET\", url, headers, body, abortSignal);\n }\n /**\n * sends a PATCH request\n *\n * @param {string} url - URL to do the request on\n * @param {object} headers - additional HTTP headers to send\n * @param {string} body - request body\n * @param {AbortSignal} abortSignal - the signal from an abort controller\n * @return {Promise<{body: string|object, status: number, headers: object}>}\n */\n async patch(url, headers, body, abortSignal = null) {\n return this.request(\"PATCH\", url, headers, body, abortSignal);\n }\n /**\n * sends a POST request\n *\n * @param {string} url - URL to do the request on\n * @param {object} headers - additional HTTP headers to send\n * @param {string} body - request body\n * @param {AbortSignal} abortSignal - the signal from an abort controller\n * @return {Promise<{body: string|object, status: number, headers: object}>}\n */\n async post(url, headers, body, abortSignal = null) {\n return this.request(\"POST\", url, headers, body, abortSignal);\n }\n /**\n * sends a PUT request\n *\n * @param {string} url - URL to do the request on\n * @param {object} headers - additional HTTP headers to send\n * @param {string} body - request body\n * @param {AbortSignal} abortSignal - the signal from an abort controller\n * @return {Promise<{body: string|object, status: number, headers: object}>}\n */\n async put(url, headers, body, abortSignal = null) {\n return this.request(\"PUT\", url, headers, body, abortSignal);\n }\n /**\n * sends a DELETE request\n *\n * @param {string} url - URL to do the request on\n * @param {object} headers - additional HTTP headers to send\n * @param {string} body - request body\n * @param {AbortSignal} abortSignal - the signal from an abort controller\n * @return {Promise<{body: string|object, status: number, headers: object}>}\n */\n async delete(url, headers = {}, body = null, abortSignal = null) {\n return this.request(\"DELETE\", url, headers, body, abortSignal);\n }\n /**\n * sends a COPY request\n * https://tools.ietf.org/html/rfc4918#section-9.8\n *\n * @param {string} url - URL to do the request on\n * @param {string} destination - place to copy the object/collection to\n * @param {number | string} depth - 0 = copy collection without content, Infinity = copy collection with content\n * @param {boolean} overwrite - whether or not to overwrite destination if existing\n * @param {object} headers - additional HTTP headers to send\n * @param {string} body - request body\n * @param {AbortSignal} abortSignal - the signal from an abort controller\n * @return {Promise<{body: string|object, status: number, headers: object}>}\n */\n async copy(url, destination, depth = 0, overwrite = false, headers = {}, body = null, abortSignal = null) {\n headers.Destination = destination;\n headers.Depth = depth;\n headers.Overwrite = overwrite ? \"T\" : \"F\";\n return this.request(\"COPY\", url, headers, body, abortSignal);\n }\n /**\n * sends a MOVE request\n * https://tools.ietf.org/html/rfc4918#section-9.9\n *\n * @param {string} url - URL to do the request on\n * @param {string} destination - place to move the object/collection to\n * @param {boolean} overwrite - whether or not to overwrite destination if existing\n * @param {object} headers - additional HTTP headers to send\n * @param {string} body - request body\n * @param {AbortSignal} abortSignal - the signal from an abort controller\n * @return {Promise<{body: string|object, status: number, headers: object}>}\n */\n async move(url, destination, overwrite = false, headers = {}, body = null, abortSignal = null) {\n headers.Destination = destination;\n headers.Depth = \"Infinity\";\n headers.Overwrite = overwrite ? \"T\" : \"F\";\n return this.request(\"MOVE\", url, headers, body, abortSignal);\n }\n /**\n * sends a LOCK request\n * https://tools.ietf.org/html/rfc4918#section-9.10\n *\n * @param {string} url - URL to do the request on\n * @param {object} headers - additional HTTP headers to send\n * @param {string} body - request body\n * @param {AbortSignal} abortSignal - the signal from an abort controller\n * @return {Promise<{body: string|object, status: number, headers: object}>}\n */\n async lock(url, headers = {}, body = null, abortSignal = null) {\n return this.request(\"LOCK\", url, headers, body, abortSignal);\n }\n /**\n * sends an UNLOCK request\n * https://tools.ietf.org/html/rfc4918#section-9.11\n *\n * @param {string} url - URL to do the request on\n * @param {object} headers - additional HTTP headers to send\n * @param {string} body - request body\n * @param {AbortSignal} abortSignal - the signal from an abort controller\n * @return {Promise<{body: string|object, status: number, headers: object}>}\n */\n async unlock(url, headers = {}, body = null, abortSignal = null) {\n return this.request(\"UNLOCK\", url, headers, body, abortSignal);\n }\n /**\n * sends a PROPFIND request\n * https://tools.ietf.org/html/rfc4918#section-9.1\n *\n * @param {string} url - URL to do the request on\n * @param {string[][]} properties - list of properties to search for, formatted as [namespace, localName]\n * @param {number | string} depth - Depth header to send\n * @param {object} headers - additional HTTP headers to send\n * @param {AbortSignal} abortSignal - the signal from an abort controller\n * @return {Promise<{body: string|object, status: number, headers: object}>}\n */\n async propFind(url, properties, depth = 0, headers = {}, abortSignal = null) {\n headers.Depth = depth;\n const [skeleton, dPropChildren] = getRootSkeleton([DAV, \"propfind\"], [DAV, \"prop\"]);\n dPropChildren.push(...properties.map((p) => ({ name: p })));\n const body = serialize(skeleton);\n return this.request(\"PROPFIND\", url, headers, body, abortSignal);\n }\n /**\n * sends a PROPPATCH request\n * https://tools.ietf.org/html/rfc4918#section-9.2\n *\n * @param {string} url - URL to do the request on\n * @param {object} headers - additional HTTP headers to send\n * @param {string} body - request body\n * @param {AbortSignal} abortSignal - the signal from an abort controller\n * @return {Promise<{body: string|object, status: number, headers: object}>}\n */\n async propPatch(url, headers, body, abortSignal = null) {\n return this.request(\"PROPPATCH\", url, headers, body, abortSignal);\n }\n /**\n * sends a MKCOL request\n * https://tools.ietf.org/html/rfc4918#section-9.3\n * https://tools.ietf.org/html/rfc5689\n *\n * @param {string} url - URL to do the request on\n * @param {object} headers - additional HTTP headers to send\n * @param {string} body - request body\n * @param {AbortSignal} abortSignal - the signal from an abort controller\n * @return {Promise<{body: string|object, status: number, headers: object}>}\n */\n async mkCol(url, headers, body, abortSignal = null) {\n return this.request(\"MKCOL\", url, headers, body, abortSignal);\n }\n /**\n * sends a REPORT request\n * https://tools.ietf.org/html/rfc3253#section-3.6\n *\n * @param {string} url - URL to do the request on\n * @param {object} headers - additional HTTP headers to send\n * @param {string} body - request body\n * @param {AbortSignal} abortSignal - the signal from an abort controller\n * @return {Promise<{body: string|object, status: number, headers: object}>}\n */\n async report(url, headers, body, abortSignal = null) {\n return this.request(\"REPORT\", url, headers, body, abortSignal);\n }\n /**\n * sends generic request\n *\n * @param {string} method - HTTP Method name\n * @param {string} url - URL to do the request on\n * @param {object} headers - additional HTTP headers to send\n * @param {string} body - request body\n * @param {AbortSignal} abortSignal - the signal from an abort controller\n * @return {Promise<{body: string|object, status: number, headers: object}>}\n */\n async request(method, url, headers, body, abortSignal) {\n const assignHeaders = Object.assign({}, getDefaultHeaders(), this.defaultHeaders, headers);\n try {\n const response = await axios.request({\n url: this.absoluteUrl(url),\n method,\n headers: assignHeaders,\n data: body,\n // all statuses not in success are treated as errors in catch\n validateStatus: wasRequestSuccessful,\n signal: abortSignal\n });\n let responseBody = response.data;\n if (response.status === 207) {\n responseBody = this._parseMultiStatusResponse(responseBody);\n if (parseInt(assignHeaders.Depth, 10) === 0 && method === \"PROPFIND\") {\n responseBody = responseBody[Object.keys(responseBody)[0]];\n }\n }\n return {\n body: responseBody,\n status: response.status,\n headers: response.headers\n };\n } catch (error) {\n if (axios.isCancel(error)) {\n throw new NetworkRequestAbortedError({\n body: null,\n status: -1,\n headers: error.headers || {}\n });\n }\n if (error.request) {\n throw new NetworkRequestError({\n body: null,\n status: -1,\n headers: error.headers || {}\n });\n }\n if (error.status >= 400 && error.status < 500) {\n throw new NetworkRequestClientError({\n body: error.data,\n status: error.status,\n headers: error.headers || {}\n });\n }\n if (error.status >= 500 && error.status < 600) {\n throw new NetworkRequestServerError({\n body: error.data,\n status: error.status,\n headers: error.headers || {}\n });\n }\n throw new NetworkRequestHttpError({\n body: error.data,\n status: error.status,\n headers: error.headers || {}\n });\n }\n }\n /**\n * returns name of file / folder of a url\n *\n * @params {string} url\n * @return {string}\n */\n filename(url) {\n let pathname = this.pathname(url);\n if (pathname.slice(-1) === \"/\") {\n pathname = pathname.slice(0, -1);\n }\n const slashPos = pathname.lastIndexOf(\"/\");\n return pathname.slice(slashPos);\n }\n /**\n * returns pathname for a URL\n *\n * @params {string} url\n * @return {string}\n */\n pathname(url) {\n const urlObject = new URL(url, this.baseUrl);\n return urlObject.pathname;\n }\n /**\n * returns absolute url\n *\n * @param {string} url\n * @return {string}\n */\n absoluteUrl(url) {\n const urlObject = new URL(url, this.baseUrl);\n return urlObject.href;\n }\n /**\n * parses a multi status response (207), sorts them by path\n * and drops all unsuccessful responses\n *\n * @param {string} body\n * @return {object}\n * @private\n */\n _parseMultiStatusResponse(body) {\n const result = {};\n const domParser = new DOMParser();\n const document2 = domParser.parseFromString(body, \"application/xml\");\n const responses = document2.evaluate(\"/d:multistatus/d:response\", document2, resolve, XPathResult.ANY_TYPE, null);\n let responseNode;\n while ((responseNode = responses.iterateNext()) !== null) {\n const href = document2.evaluate(\"string(d:href)\", responseNode, resolve, XPathResult.ANY_TYPE, null).stringValue;\n const parsedProperties = {};\n const propStats = document2.evaluate(\"d:propstat\", responseNode, resolve, XPathResult.ANY_TYPE, null);\n let propStatNode;\n while ((propStatNode = propStats.iterateNext()) !== null) {\n const status = document2.evaluate(\"string(d:status)\", propStatNode, resolve, XPathResult.ANY_TYPE, null).stringValue;\n if (!wasRequestSuccessful(getStatusCodeFromString(status))) {\n continue;\n }\n const props = document2.evaluate(\"d:prop/*\", propStatNode, resolve, XPathResult.ANY_TYPE, null);\n let propNode;\n while ((propNode = props.iterateNext()) !== null) {\n if (this.parser.canParse(`{${propNode.namespaceURI}}${propNode.localName}`)) {\n parsedProperties[`{${propNode.namespaceURI}}${propNode.localName}`] = this.parser.parse(document2, propNode, resolve);\n }\n }\n }\n result[href] = parsedProperties;\n }\n return result;\n }\n}\nfunction wasRequestSuccessful(status) {\n return status >= 200 && status < 300;\n}\nfunction getStatusCodeFromString(status) {\n return parseInt(status.split(\" \")[1], 10);\n}\nfunction getDefaultHeaders() {\n return {\n Depth: \"0\",\n \"Content-Type\": \"application/xml; charset=utf-8\"\n };\n}\nfunction uuidv4() {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function(c) {\n const r = Math.random() * 16 | 0;\n const v = c === \"x\" ? r : r & 3 | 8;\n return v.toString(16).toUpperCase();\n });\n}\nfunction uid(prefix, suffix) {\n prefix = prefix || \"\";\n suffix = suffix || \"\";\n if (prefix !== \"\") {\n prefix += \"-\";\n }\n if (suffix !== \"\") {\n suffix = \".\" + suffix;\n }\n return prefix + uuidv4() + suffix;\n}\nfunction uri(start, isAvailable) {\n start = start || \"\";\n let uri2 = start.toString().toLowerCase().replace(/\\s+/g, \"-\").replace(/[^\\w-]+/g, \"\").replace(/--+/g, \"-\").replace(/^-+/, \"\").replace(/-+$/, \"\");\n if (uri2 === \"\") {\n uri2 = \"-\";\n }\n if (isAvailable(uri2)) {\n return uri2;\n }\n if (uri2.indexOf(\"-\") === -1) {\n uri2 = uri2 + \"-1\";\n if (isAvailable(uri2)) {\n return uri2;\n }\n }\n do {\n const positionLastDash = uri2.lastIndexOf(\"-\");\n const firstPart = uri2.slice(0, positionLastDash);\n let lastPart = uri2.slice(positionLastDash + 1);\n if (lastPart.match(/^\\d+$/)) {\n lastPart = parseInt(lastPart);\n lastPart++;\n uri2 = firstPart + \"-\" + lastPart;\n } else {\n uri2 = uri2 + \"-1\";\n }\n } while (isAvailable(uri2) === false);\n return uri2;\n}\nclass DAVEventListener {\n constructor() {\n this._eventListeners = {};\n }\n /**\n * adds an event listener\n *\n * @param {string} type\n * @param {Function} listener\n * @param {object} options\n */\n addEventListener(type, listener, options = null) {\n this._eventListeners[type] = this._eventListeners[type] || [];\n this._eventListeners[type].push({ listener, options });\n }\n /**\n * removes an event listener\n *\n * @param {string} type\n * @param {Function} dListener\n */\n removeEventListener(type, dListener) {\n if (!this._eventListeners[type]) {\n return;\n }\n const index = this._eventListeners[type].findIndex(({ listener }) => listener === dListener);\n if (index === -1) {\n return;\n }\n this._eventListeners[type].splice(index, 1);\n }\n /**\n * dispatch event on object\n *\n * @param {string} type\n * @param {DAVEvent} event\n */\n dispatchEvent(type, event) {\n if (!this._eventListeners[type]) {\n return;\n }\n const listenersToCall = [];\n const listenersToCallAndRemove = [];\n this._eventListeners[type].forEach(({ listener, options }) => {\n if (options && options.once) {\n listenersToCallAndRemove.push(listener);\n } else {\n listenersToCall.push(listener);\n }\n });\n listenersToCallAndRemove.forEach((listener) => {\n this.removeEventListener(type, listener);\n listener(event);\n });\n listenersToCall.forEach((listener) => {\n listener(event);\n });\n }\n}\nfunction debugFactory(context) {\n return (...args) => {\n if (debugFactory.enabled) {\n console.debug(context, ...args);\n }\n };\n}\ndebugFactory.enabled = false;\nfunction davCollectionPropSet(props) {\n const xmlified = [];\n Object.entries(props).forEach(([key, value]) => {\n switch (key) {\n case \"{DAV:}displayname\":\n xmlified.push({\n name: [DAV, \"displayname\"],\n value\n });\n break;\n }\n });\n return xmlified;\n}\nconst debug$8 = debugFactory(\"DavObject\");\nclass DavObject extends DAVEventListener {\n /**\n * @param {DavCollection} parent - The parent collection this DavObject is a child of\n * @param {Request} request - The request object initialized by DavClient\n * @param {string} url - Full url of this DavObject\n * @param {object} props - Properties including etag, content-type, etc.\n * @param {boolean} isPartial - Are we dealing with the complete or just partial addressbook / calendar data\n */\n constructor(parent, request, url, props, isPartial = false) {\n super();\n Object.assign(this, {\n // parameters\n _parent: parent,\n _request: request,\n _url: url,\n _props: props,\n // housekeeping\n _isPartial: isPartial,\n _isDirty: false\n });\n this._exposeProperty(\"etag\", DAV, \"getetag\", true);\n this._exposeProperty(\"contenttype\", DAV, \"getcontenttype\");\n Object.defineProperty(this, \"url\", {\n get: () => this._url\n });\n }\n /**\n * gets unfiltered data for this object\n *\n * @param {boolean} forceReFetch Always refetch data, even if not partial\n * @return {Promise}\n */\n async fetchCompleteData(forceReFetch = false) {\n if (!forceReFetch && !this.isPartial()) {\n return;\n }\n const request = await this._request.propFind(this._url, this.constructor.getPropFindList(), 0);\n this._props = request.body;\n this._isDirty = false;\n this._isPartial = false;\n }\n /**\n * copies a DavObject to a different DavCollection\n * @param {DavCollection} collection\n * @param {boolean} overwrite\n * @param headers\n * @return {Promise} Promise that resolves to the copied DavObject\n */\n async copy(collection, overwrite = false, headers = {}) {\n debug$8(`copying ${this.url} from ${this._parent.url} to ${collection.url}`);\n if (this._parent === collection) {\n throw new Error(\"Copying an object to the collection it's already part of is not supported\");\n }\n if (!this._parent.isSameCollectionTypeAs(collection)) {\n throw new Error(\"Copying an object to a collection of a different type is not supported\");\n }\n if (!collection.isWriteable()) {\n throw new Error(\"Can not copy object into read-only destination collection\");\n }\n const uri2 = this.url.split(\"/\").splice(-1, 1)[0];\n const destination = collection.url + uri2;\n await this._request.copy(this.url, destination, 0, overwrite, headers);\n return collection.find(uri2);\n }\n /**\n * moves a DavObject to a different DavCollection\n * @param {DavCollection} collection\n * @param {boolean} overwrite\n * @param headers\n * @return {Promise}\n */\n async move(collection, overwrite = false, headers = {}) {\n debug$8(`moving ${this.url} from ${this._parent.url} to ${collection.url}`);\n if (this._parent === collection) {\n throw new Error(\"Moving an object to the collection it's already part of is not supported\");\n }\n if (!this._parent.isSameCollectionTypeAs(collection)) {\n throw new Error(\"Moving an object to a collection of a different type is not supported\");\n }\n if (!collection.isWriteable()) {\n throw new Error(\"Can not move object into read-only destination collection\");\n }\n const uri2 = this.url.split(\"/\").splice(-1, 1)[0];\n const destination = collection.url + uri2;\n await this._request.move(this.url, destination, overwrite, headers);\n this._parent = collection;\n this._url = destination;\n }\n /**\n * updates the DavObject on the server\n * @return {Promise}\n */\n async update() {\n if (this.isPartial() || !this.isDirty() || !this.data) {\n return;\n }\n const headers = {};\n if (this.contenttype) {\n headers[\"Content-Type\"] = `${this.contenttype}; charset=utf-8`;\n }\n if (this.etag) {\n headers[\"If-Match\"] = this.etag;\n }\n return this._request.put(this.url, headers, this.data).then((res) => {\n this._isDirty = false;\n this._props[\"{DAV:}getetag\"] = res.headers.etag || null;\n }).catch((ex) => {\n this._isDirty = true;\n if (ex instanceof NetworkRequestClientError && ex.status === 412) {\n this._isPartial = true;\n }\n throw ex;\n });\n }\n /**\n * deletes the DavObject on the server\n *\n * @param headers\n * @return {Promise<{body: string|object, status: number, headers: object}>}\n */\n async delete(headers = {}) {\n return this._request.delete(this.url, headers);\n }\n /**\n * returns whether the data in this DavObject is the result of a partial retrieval\n *\n * @return {boolean}\n */\n isPartial() {\n return this._isPartial;\n }\n /**\n * returns whether the data in this DavObject contains unsynced changes\n *\n * @return {boolean}\n */\n isDirty() {\n return this._isDirty;\n }\n /**\n * @protected\n * @param {string} localName\n * @param {string} xmlNamespace\n * @param {string} xmlName\n * @param {boolean} mutable\n * @return void\n */\n _exposeProperty(localName, xmlNamespace, xmlName, mutable = false) {\n if (mutable) {\n Object.defineProperty(this, localName, {\n get: () => this._props[`{${xmlNamespace}}${xmlName}`],\n set: (val) => {\n this._isDirty = true;\n this._props[`{${xmlNamespace}}${xmlName}`] = val;\n }\n });\n } else {\n Object.defineProperty(this, localName, {\n get: () => this._props[`{${xmlNamespace}}${xmlName}`]\n });\n }\n }\n /**\n * A list of all property names that should be included\n * in propfind requests that may include this object\n *\n * @return {string[][]}\n */\n static getPropFindList() {\n return [\n [DAV, \"getcontenttype\"],\n [DAV, \"getetag\"],\n [DAV, \"resourcetype\"]\n ];\n }\n}\nconst debug$7 = debugFactory(\"DavCollection\");\nclass DavCollection extends DAVEventListener {\n /**\n * @param {object} parent\n * @param {Request} request\n * @param {string} url\n * @param {object} props\n */\n constructor(parent, request, url, props) {\n super();\n if (url.slice(-1) !== \"/\") {\n url += \"/\";\n }\n Object.assign(this, {\n // parameters\n _parent: parent,\n _request: request,\n _url: url,\n _props: props,\n // constructors\n _collectionFactoryMapper: {},\n _objectFactoryMapper: {},\n // house keeping\n _updatedProperties: [],\n _childrenNames: [],\n // parsers / factories\n _propFindList: [],\n _propSetFactory: []\n });\n this._registerPropSetFactory(davCollectionPropSet);\n this._exposeProperty(\"displayname\", DAV, \"displayname\", true);\n this._exposeProperty(\"owner\", DAV, \"owner\");\n this._exposeProperty(\"resourcetype\", DAV, \"resourcetype\");\n this._exposeProperty(\"syncToken\", DAV, \"sync-token\");\n this._exposeProperty(\"currentUserPrivilegeSet\", DAV, \"current-user-privilege-set\");\n Object.defineProperty(this, \"url\", {\n get: () => this._url\n });\n this._propFindList.push(...DavObject.getPropFindList());\n this._propFindList.push(...DavCollection.getPropFindList());\n }\n /**\n * finds all children of a collection\n *\n * @return {Promise}\n */\n async findAll() {\n const response = await this._request.propFind(this._url, this._propFindList, 1);\n return this._handleMultiStatusResponse(response, false);\n }\n /**\n * finds all children of a collection filtered by filter\n *\n * @param {Function} filter\n * @return {Promise}\n */\n async findAllByFilter(filter) {\n const all = await this.findAll();\n return all.filter(filter);\n }\n /**\n * find one object by its uri\n *\n * @param {string} uri\n * @return {Promise}\n */\n async find(uri2) {\n const response = await this._request.propFind(this._url + uri2, this._propFindList, 0);\n response.body = { [this._url + uri2]: response.body };\n return this._handleMultiStatusResponse(response, false)[0];\n }\n /**\n * creates a new webdav collection\n * https://tools.ietf.org/html/rfc5689\n *\n * You usually don't want to call this method directly\n * but instead use:\n * - AddressBookHome->createAddressBookCollection\n * - CalendarHome->createCalendarCollection\n * - CalendarHome->createSubscribedCollection\n *\n * @param {string} name\n * @param {?Array} props\n * @return {Promise}\n */\n async createCollection(name, props = null) {\n debug$7(\"creating a collection\");\n if (!props) {\n props = [{\n name: [DAV, \"resourcetype\"],\n children: [{\n name: [DAV, \"collection\"]\n }]\n }];\n }\n const [skeleton, dPropChildren] = getRootSkeleton(\n [DAV, \"mkcol\"],\n [DAV, \"set\"],\n [DAV, \"prop\"]\n );\n dPropChildren.push(...props);\n const uri2 = this._getAvailableNameFromToken(name);\n const data = serialize(skeleton);\n await this._request.mkCol(this.url + uri2, {}, data);\n return this.find(uri2 + \"/\");\n }\n /**\n * creates a new webdav object inside this collection\n *\n * You usually don't want to call this method directly\n * but instead use:\n * - AddressBook->createVCard\n * - Calendar->createVObject\n *\n * @param {string} name\n * @param {object} headers\n * @param {string} data\n * @return {Promise}\n */\n async createObject(name, headers, data) {\n debug$7(\"creating an object\");\n await this._request.put(this.url + name, headers, data);\n return this.find(name);\n }\n /**\n * sends a PropPatch request to update the collections' properties\n * The request is only made if properties actually changed\n *\n * @return {Promise}\n */\n async update() {\n if (this._updatedProperties.length === 0) {\n return;\n }\n const properties = {};\n this._updatedProperties.forEach((updatedProperty) => {\n properties[updatedProperty] = this._props[updatedProperty];\n });\n const propSet = this._propSetFactory.reduce((arr, p) => [...arr, ...p(properties)], []);\n const [skeleton, dPropSet] = getRootSkeleton(\n [DAV, \"propertyupdate\"],\n [DAV, \"set\"],\n [DAV, \"prop\"]\n );\n dPropSet.push(...propSet);\n const body = serialize(skeleton);\n await this._request.propPatch(this._url, {}, body);\n }\n /**\n * deletes the DavCollection on the server\n *\n * @param {object} headers - additional HTTP headers to send\n * @return {Promise}\n */\n async delete(headers = {}) {\n await this._request.delete(this._url, headers);\n }\n /**\n *\n * @return {boolean}\n */\n isReadable() {\n return this.currentUserPrivilegeSet.includes(\"{DAV:}read\");\n }\n /**\n *\n * @return {boolean}\n */\n isWriteable() {\n return this.currentUserPrivilegeSet.includes(\"{DAV:}write\");\n }\n /**\n * checks whether this is of the same type as another collection\n * @param {DavCollection} collection\n */\n isSameCollectionTypeAs(collection) {\n const ownResourceType = this.resourcetype;\n const foreignResourceType = collection.resourcetype;\n const ownDiff = ownResourceType.find((r) => foreignResourceType.indexOf(r) === -1);\n const foreignDiff = foreignResourceType.find((r) => ownResourceType.indexOf(r) === -1);\n return ownDiff === void 0 && foreignDiff === void 0;\n }\n /**\n * @protected\n * @param {string} identifier\n * @param {Function} factory\n * @return void\n */\n _registerCollectionFactory(identifier, factory) {\n this._collectionFactoryMapper[identifier] = factory;\n if (typeof factory.getPropFindList === \"function\") {\n this._propFindList.push(...factory.getPropFindList());\n }\n }\n /**\n * @protected\n * @param {string} identifier\n * @param {Function} factory\n * @return void\n */\n _registerObjectFactory(identifier, factory) {\n this._objectFactoryMapper[identifier] = factory;\n if (typeof factory.getPropFindList === \"function\") {\n this._propFindList.push(...factory.getPropFindList());\n }\n }\n /**\n * @protected\n * @param factory\n * @return void\n */\n _registerPropSetFactory(factory) {\n this._propSetFactory.push(factory);\n }\n /**\n * @protected\n * @param {string} localName\n * @param {string} xmlNamespace\n * @param {string} xmlName\n * @param {boolean} mutable\n * @return void\n */\n _exposeProperty(localName, xmlNamespace, xmlName, mutable = false) {\n if (mutable) {\n Object.defineProperty(this, localName, {\n get: () => this._props[`{${xmlNamespace}}${xmlName}`],\n set: (val) => {\n this._props[`{${xmlNamespace}}${xmlName}`] = val;\n if (this._updatedProperties.indexOf(`{${xmlNamespace}}${xmlName}`) === -1) {\n this._updatedProperties.push(`{${xmlNamespace}}${xmlName}`);\n }\n }\n });\n } else {\n Object.defineProperty(this, localName, {\n get: () => this._props[`{${xmlNamespace}}${xmlName}`]\n });\n }\n }\n /**\n * @protected\n * @param {string} token\n * @return {string}\n */\n _getAvailableNameFromToken(token) {\n return uri(token, (name) => {\n return this._childrenNames.indexOf(this._url + name) === -1 && this._childrenNames.indexOf(this._url + name + \"/\") === -1;\n });\n }\n /**\n * get updated properties for this collection from server\n * @protected\n * @return {object}\n */\n async _updatePropsFromServer() {\n const response = await this._request.propFind(this.url, this.constructor.getPropFindList());\n this._props = response.body;\n }\n /**\n * @param {object} response\n * @param {boolean} isPartial\n * @return {DavObject[]|DavCollection[]}\n * @protected\n */\n _handleMultiStatusResponse(response, isPartial = false) {\n const index = [];\n const children = [];\n Object.entries(response.body).forEach(([path, props]) => {\n if (path === this._url || path + \"/\" === this.url) {\n return;\n }\n index.push(path);\n const url = this._request.pathname(path);\n if ((!props[\"{DAV:}resourcetype\"] || props[\"{DAV:}resourcetype\"].length === 0) && props[\"{DAV:}getcontenttype\"]) {\n debug$7(`${path} was identified as a file`);\n const contentType = props[\"{DAV:}getcontenttype\"].split(\";\")[0];\n if (!this._objectFactoryMapper[contentType]) {\n debug$7(`No constructor for content-type ${contentType} (${path}) registered, treating as generic object`);\n children.push(new DavObject(this, this._request, url, props));\n return;\n }\n children.push(new this._objectFactoryMapper[contentType](this, this._request, url, props, isPartial));\n } else {\n debug$7(`${path} was identified as a collection`);\n const collectionType = props[\"{DAV:}resourcetype\"].find((r) => {\n return r !== `{${DAV}}collection`;\n });\n if (!collectionType) {\n debug$7(`Collection-type of ${path} was not specified, treating as generic collection`);\n children.push(new DavCollection(this, this._request, url, props));\n return;\n }\n if (!this._collectionFactoryMapper[collectionType]) {\n debug$7(`No constructor for collection-type ${collectionType} (${path}) registered, treating as generic collection`);\n children.push(new DavCollection(this, this._request, url, props));\n return;\n }\n children.push(new this._collectionFactoryMapper[collectionType](this, this._request, url, props));\n }\n });\n this._childrenNames.push(...index);\n return children;\n }\n /**\n * A list of all property names that should be included\n * in propfind requests that may include this collection\n *\n * @return {string[][]}\n */\n static getPropFindList() {\n return [\n [DAV, \"displayname\"],\n [DAV, \"owner\"],\n [DAV, \"resourcetype\"],\n [DAV, \"sync-token\"],\n [DAV, \"current-user-privilege-set\"]\n ];\n }\n}\nconst debug$6 = debugFactory(\"DavCollectionPublishable\");\nfunction davCollectionPublishable(Base) {\n return class extends Base {\n /**\n * @inheritDoc\n */\n constructor(...args) {\n super(...args);\n super._exposeProperty(\"publishURL\", CALENDARSERVER, \"publish-url\");\n }\n /**\n * publishes the DavCollection\n *\n * @return {Promise}\n */\n async publish() {\n debug$6(`Publishing ${this.url}`);\n const [skeleton] = getRootSkeleton(\n [CALENDARSERVER, \"publish-calendar\"]\n );\n const xml = serialize(skeleton);\n await this._request.post(this._url, { \"Content-Type\": \"application/xml; charset=utf-8\" }, xml);\n await this._updatePropsFromServer();\n }\n /**\n * unpublishes the DavCollection\n *\n * @return {Promise}\n */\n async unpublish() {\n debug$6(`Unpublishing ${this.url}`);\n const [skeleton] = getRootSkeleton(\n [CALENDARSERVER, \"unpublish-calendar\"]\n );\n const xml = serialize(skeleton);\n await this._request.post(this._url, { \"Content-Type\": \"application/xml; charset=utf-8\" }, xml);\n delete this._props[\"{http://calendarserver.org/ns/}publish-url\"];\n }\n /**\n * @inheritDoc\n */\n static getPropFindList() {\n return super.getPropFindList().concat([\n [CALENDARSERVER, \"publish-url\"]\n ]);\n }\n };\n}\nconst debug$5 = debugFactory(\"DavCollectionShareable\");\nfunction davCollectionShareable(Base) {\n return class extends Base {\n /**\n * @inheritDoc\n */\n constructor(...args) {\n super(...args);\n super._exposeProperty(\"shares\", OWNCLOUD, \"invite\");\n super._exposeProperty(\"allowedSharingModes\", CALENDARSERVER, \"allowed-sharing-modes\");\n }\n /**\n * shares a DavCollection\n *\n * @param {string} principalScheme\n * @param {boolean} writeable\n * @param {string} summary\n * @return {Promise}\n */\n async share(principalScheme, writeable = false, summary = \"\") {\n debug$5(`Sharing ${this.url} with ${principalScheme}`);\n const [skeleton, setProp] = getRootSkeleton(\n [OWNCLOUD, \"share\"],\n [OWNCLOUD, \"set\"]\n );\n setProp.push({\n name: [DAV, \"href\"],\n value: principalScheme\n });\n if (writeable) {\n setProp.push({\n name: [OWNCLOUD, \"read-write\"]\n });\n }\n if (summary !== \"\") {\n setProp.push({\n name: [OWNCLOUD, \"summary\"],\n value: summary\n });\n }\n const xml = serialize(skeleton);\n return this._request.post(this._url, { \"Content-Type\": \"application/xml; charset=utf-8\" }, xml).then(() => {\n const index = this.shares.findIndex((e) => e.href === principalScheme);\n if (index === -1) {\n this.shares.push({\n href: principalScheme,\n access: [writeable ? \"{http://owncloud.org/ns}read-write\" : \"{http://owncloud.org/ns}read\"],\n \"common-name\": null,\n \"invite-accepted\": true\n });\n } else {\n this.shares[index].access = [writeable ? \"{http://owncloud.org/ns}read-write\" : \"{http://owncloud.org/ns}read\"];\n }\n });\n }\n /**\n * unshares a DAVCollection\n *\n * @param {string} principalScheme\n * @return {Promise}\n */\n async unshare(principalScheme) {\n debug$5(`Unsharing ${this.url} with ${principalScheme}`);\n const [skeleton, oSetChildren] = getRootSkeleton(\n [OWNCLOUD, \"share\"],\n [OWNCLOUD, \"remove\"]\n );\n oSetChildren.push({\n name: [DAV, \"href\"],\n value: principalScheme\n });\n const xml = serialize(skeleton);\n return this._request.post(this._url, { \"Content-Type\": \"application/xml; charset=utf-8\" }, xml).then(() => {\n const index = this.shares.findIndex((e) => e.href === principalScheme);\n if (index === -1) {\n return;\n }\n this.shares.splice(index, 1);\n });\n }\n /**\n * checks whether a collection is shareable\n *\n * @return {boolean}\n */\n isShareable() {\n if (!Array.isArray(this.allowedSharingModes)) {\n return false;\n }\n return this.allowedSharingModes.includes(`{${CALENDARSERVER}}can-be-shared`);\n }\n /**\n * checks whether a collection is publishable\n *\n * @return {boolean}\n */\n isPublishable() {\n if (!Array.isArray(this.allowedSharingModes)) {\n return false;\n }\n return this.allowedSharingModes.includes(`{${CALENDARSERVER}}can-be-published`);\n }\n /**\n * @inheritDoc\n */\n static getPropFindList() {\n return super.getPropFindList().concat([\n [OWNCLOUD, \"invite\"],\n [CALENDARSERVER, \"allowed-sharing-modes\"]\n ]);\n }\n };\n}\nclass VObject extends DavObject {\n /**\n * Creates a VObject that is supposed to store calendar-data\n * as specified in RFC 5545.\n *\n * https://tools.ietf.org/html/rfc5545\n *\n * @inheritDoc\n */\n constructor(...args) {\n super(...args);\n super._exposeProperty(\"data\", IETF_CALDAV, \"calendar-data\", true);\n }\n /**\n * @inheritDoc\n */\n static getPropFindList() {\n return super.getPropFindList().concat([\n [IETF_CALDAV, \"calendar-data\"]\n ]);\n }\n}\nfunction calendarPropSet$1(props) {\n const xmlified = [];\n Object.entries(props).forEach(([key, value]) => {\n switch (key) {\n case \"{http://apple.com/ns/ical/}calendar-order\":\n xmlified.push({\n name: [APPLE, \"calendar-order\"],\n value: value.toString()\n });\n break;\n case \"{http://apple.com/ns/ical/}calendar-color\":\n xmlified.push({\n name: [APPLE, \"calendar-color\"],\n value\n });\n break;\n case \"{http://calendarserver.org/ns/}source\":\n xmlified.push({\n name: [CALENDARSERVER, \"source\"],\n children: [{\n name: [DAV, \"href\"],\n value\n }]\n });\n break;\n case \"{urn:ietf:params:xml:ns:caldav}calendar-description\":\n xmlified.push({\n name: [IETF_CALDAV, \"calendar-description\"],\n value\n });\n break;\n case \"{urn:ietf:params:xml:ns:caldav}calendar-timezone\":\n xmlified.push({\n name: [IETF_CALDAV, \"calendar-timezone\"],\n value\n });\n break;\n case \"{http://owncloud.org/ns}calendar-enabled\":\n xmlified.push({\n name: [OWNCLOUD, \"calendar-enabled\"],\n value: value ? \"1\" : \"0\"\n });\n break;\n case \"{urn:ietf:params:xml:ns:caldav}schedule-calendar-transp\":\n xmlified.push({\n name: [IETF_CALDAV, \"schedule-calendar-transp\"],\n children: [{\n name: [IETF_CALDAV, value]\n }]\n });\n break;\n }\n });\n return xmlified;\n}\nconst debug$4 = debugFactory(\"Calendar\");\nclass Calendar extends davCollectionPublishable(davCollectionShareable(DavCollection)) {\n /**\n * @inheritDoc\n */\n constructor(...args) {\n super(...args);\n super._registerObjectFactory(\"text/calendar\", VObject);\n super._registerPropSetFactory(calendarPropSet$1);\n super._exposeProperty(\"color\", APPLE, \"calendar-color\", true);\n super._exposeProperty(\"enabled\", OWNCLOUD, \"calendar-enabled\", true);\n super._exposeProperty(\"order\", APPLE, \"calendar-order\", true);\n super._exposeProperty(\"timezone\", IETF_CALDAV, \"calendar-timezone\", true);\n super._exposeProperty(\"components\", IETF_CALDAV, \"supported-calendar-component-set\");\n super._exposeProperty(\"transparency\", IETF_CALDAV, \"schedule-calendar-transp\", true);\n }\n /**\n * finds all VObjects in this calendar\n *\n * @return {Promise}\n */\n async findAllVObjects() {\n return super.findAllByFilter((elm) => elm instanceof VObject);\n }\n /**\n * find all VObjects filtered by type\n *\n * @param {string} type\n * @return {Promise}\n */\n async findByType(type) {\n return this.calendarQuery([{\n name: [IETF_CALDAV, \"comp-filter\"],\n attributes: [\n [\"name\", \"VCALENDAR\"]\n ],\n children: [{\n name: [IETF_CALDAV, \"comp-filter\"],\n attributes: [\n [\"name\", type]\n ]\n }]\n }]);\n }\n /**\n * find all VObjects in a time-range filtered by type\n *\n * @param {number} type\n * @param {Date} from\n * @param {Date} to\n * @return {Promise}\n */\n async findByTypeInTimeRange(type, from, to) {\n return this.calendarQuery([{\n name: [IETF_CALDAV, \"comp-filter\"],\n attributes: [\n [\"name\", \"VCALENDAR\"]\n ],\n children: [{\n name: [IETF_CALDAV, \"comp-filter\"],\n attributes: [\n [\"name\", type]\n ],\n children: [{\n name: [IETF_CALDAV, \"time-range\"],\n attributes: [\n [\"start\", Calendar._getICalendarDateTimeFromDateObject(from)],\n [\"end\", Calendar._getICalendarDateTimeFromDateObject(to)]\n ]\n }]\n }]\n }]);\n }\n /**\n * create a VObject inside this calendar\n *\n * @param data\n * @return {Promise}\n */\n async createVObject(data) {\n const name = uid(\"\", \"ics\");\n const headers = {\n \"Content-Type\": \"text/calendar; charset=utf-8\"\n };\n return super.createObject(name, headers, data);\n }\n /**\n * sends a calendar query as defined in\n * https://tools.ietf.org/html/rfc4791#section-7.8\n *\n * @param {object[]} filter\n * @param {object[]} prop\n * @param {string} timezone\n * @return {Promise}\n */\n async calendarQuery(filter, prop = null, timezone = null) {\n debug$4(\"sending an calendar-query request\");\n const [skeleton] = getRootSkeleton(\n [IETF_CALDAV, \"calendar-query\"]\n );\n if (!prop) {\n skeleton.children.push({\n name: [DAV, \"prop\"],\n children: this._propFindList.map((p) => ({ name: p }))\n });\n } else {\n skeleton.children.push({\n name: [DAV, \"prop\"],\n children: prop\n });\n }\n if (filter) {\n skeleton.children.push({\n name: [IETF_CALDAV, \"filter\"],\n children: filter\n });\n }\n if (timezone) {\n skeleton.children.push({\n name: [IETF_CALDAV, \"timezone\"],\n value: timezone\n });\n }\n const headers = {\n Depth: \"1\"\n };\n const body = serialize(skeleton);\n const response = await this._request.report(this.url, headers, body);\n return super._handleMultiStatusResponse(response, Calendar._isRetrievalPartial(prop));\n }\n /**\n * sends a calendar multiget query as defined in\n * https://tools.ietf.org/html/rfc4791#section-7.9\n *\n * @param {string[]} hrefs\n * @param {object[]} prop\n * @return {Promise}\n */\n async calendarMultiget(hrefs = [], prop) {\n debug$4(\"sending an calendar-multiget request\");\n if (hrefs.length === 0) {\n return [];\n }\n const [skeleton] = getRootSkeleton(\n [IETF_CALDAV, \"calendar-multiget\"]\n );\n if (!prop) {\n skeleton.children.push({\n name: [DAV, \"prop\"],\n children: this._propFindList.map((p) => ({ name: p }))\n });\n } else {\n skeleton.children.push({\n name: [DAV, \"prop\"],\n children: prop\n });\n }\n hrefs.forEach((href) => {\n skeleton.children.push({\n name: [DAV, \"href\"],\n value: href\n });\n });\n const headers = {\n Depth: \"1\"\n };\n const body = serialize(skeleton);\n const response = await this._request.report(this.url, headers, body);\n return super._handleMultiStatusResponse(response, Calendar._isRetrievalPartial(prop));\n }\n /**\n * sends a calendar free-busy-query as defined in\n * https://tools.ietf.org/html/rfc4791#section-7.10\n *\n * @param {Date} from\n * @param {Date} to\n * @return {Promise}\n */\n async freeBusyQuery(from, to) {\n }\n /**\n * @inheritDoc\n */\n static getPropFindList() {\n return super.getPropFindList().concat([\n [APPLE, \"calendar-order\"],\n [APPLE, \"calendar-color\"],\n [CALENDARSERVER, \"getctag\"],\n [IETF_CALDAV, \"calendar-description\"],\n [IETF_CALDAV, \"calendar-timezone\"],\n [IETF_CALDAV, \"supported-calendar-component-set\"],\n [IETF_CALDAV, \"supported-calendar-data\"],\n [IETF_CALDAV, \"max-resource-size\"],\n [IETF_CALDAV, \"min-date-time\"],\n [IETF_CALDAV, \"max-date-time\"],\n [IETF_CALDAV, \"max-instances\"],\n [IETF_CALDAV, \"max-attendees-per-instance\"],\n [IETF_CALDAV, \"supported-collation-set\"],\n [IETF_CALDAV, \"calendar-free-busy-set\"],\n [IETF_CALDAV, \"schedule-calendar-transp\"],\n [IETF_CALDAV, \"schedule-default-calendar-URL\"],\n [OWNCLOUD, \"calendar-enabled\"],\n [NEXTCLOUD, \"owner-displayname\"],\n [NEXTCLOUD, \"trash-bin-retention-duration\"],\n [NEXTCLOUD, \"deleted-at\"]\n ]);\n }\n /**\n * checks if the prop part of a report requested partial data\n *\n * @param {object[]} prop\n * @return {boolean}\n * @private\n */\n static _isRetrievalPartial(prop) {\n if (!prop) {\n return false;\n }\n const addressBookDataProperty = prop.find((p) => {\n return p.name[0] === IETF_CALDAV && p.name[1] === \"calendar-data\";\n });\n if (!addressBookDataProperty) {\n return false;\n }\n return !!addressBookDataProperty.children;\n }\n /**\n * creates an iCalendar formatted DATE-TIME string from a date object\n *\n * @param {Date} date\n * @return {string}\n * @private\n */\n static _getICalendarDateTimeFromDateObject(date) {\n return [\n date.getUTCFullYear(),\n (\"0\" + (date.getUTCMonth() + 1)).slice(-2),\n (\"0\" + date.getUTCDate()).slice(-2),\n \"T\",\n (\"0\" + date.getUTCHours()).slice(-2),\n (\"0\" + date.getUTCMinutes()).slice(-2),\n (\"0\" + date.getUTCSeconds()).slice(-2),\n \"Z\"\n ].join(\"\");\n }\n}\nclass Subscription extends Calendar {\n /**\n * @inheritDoc\n */\n constructor(...args) {\n super(...args);\n super._exposeProperty(\"source\", CALENDARSERVER, \"source\", true);\n super._exposeProperty(\"refreshRate\", APPLE, \"refreshrate\", true);\n super._exposeProperty(\"stripTodos\", CALENDARSERVER, \"subscribed-strip-todos\", true);\n super._exposeProperty(\"stripAlarms\", CALENDARSERVER, \"subscribed-strip-alarms\", true);\n super._exposeProperty(\"stripAttachments\", CALENDARSERVER, \"subscribed-strip-attachments\", true);\n }\n /**\n * @inheritDoc\n */\n static getPropFindList() {\n return super.getPropFindList().concat([\n [CALENDARSERVER, \"source\"],\n [APPLE, \"refreshrate\"],\n [CALENDARSERVER, \"subscribed-strip-todos\"],\n [CALENDARSERVER, \"subscribed-strip-alarms\"],\n [CALENDARSERVER, \"subscribed-strip-attachments\"]\n ]);\n }\n}\nfunction calendarPropSet(props) {\n const xmlified = [];\n Object.entries(props).forEach(([key, value]) => {\n switch (key) {\n case \"{urn:ietf:params:xml:ns:caldav}calendar-availability\":\n xmlified.push({\n name: [IETF_CALDAV, \"calendar-availability\"],\n value: value.toString()\n });\n break;\n }\n });\n return xmlified;\n}\nclass ScheduleInbox extends Calendar {\n /**\n * @inheritDoc\n */\n constructor(...args) {\n super(...args);\n super._registerPropSetFactory(calendarPropSet);\n super._exposeProperty(\"availability\", IETF_CALDAV, \"calendar-availability\", true);\n }\n /**\n * @inheritDoc\n */\n static getPropFindList() {\n return super.getPropFindList().concat([\n [IETF_CALDAV, \"calendar-availability\"]\n ]);\n }\n}\nclass ScheduleOutbox extends DavCollection {\n /**\n * Sends a free-busy-request for the scheduling outbox\n * The data is required to be a valid iTIP data.\n * For an example, see https://tools.ietf.org/html/rfc6638#appendix-B.5\n *\n * @param {string} data iTIP with VFREEBUSY component and METHOD:REQUEST\n * @return {Promise}\n */\n async freeBusyRequest(data) {\n const result = {};\n const response = await this._request.post(this.url, {\n \"Content-Type\": 'text/calendar; charset=\"utf-8\"'\n }, data);\n const domParser = new DOMParser();\n const document2 = domParser.parseFromString(response.body, \"application/xml\");\n const responses = document2.evaluate(\"/cl:schedule-response/cl:response\", document2, resolve, XPathResult.ANY_TYPE, null);\n let responseNode;\n while ((responseNode = responses.iterateNext()) !== null) {\n const recipient = document2.evaluate(\"string(cl:recipient/d:href)\", responseNode, resolve, XPathResult.ANY_TYPE, null).stringValue;\n const status = document2.evaluate(\"string(cl:request-status)\", responseNode, resolve, XPathResult.ANY_TYPE, null).stringValue;\n const calendarData = document2.evaluate(\"string(cl:calendar-data)\", responseNode, resolve, XPathResult.ANY_TYPE, null).stringValue;\n const success = /^2.\\d(;.+)?$/.test(status);\n result[recipient] = {\n calendarData,\n status,\n success\n };\n }\n return result;\n }\n}\nclass CalendarTrashBin extends DavCollection {\n /**\n * @inheritDoc\n */\n constructor(...args) {\n super(...args);\n super._registerObjectFactory(\"text/calendar\", VObject);\n super._exposeProperty(\"retentionDuration\", NEXTCLOUD, \"trash-bin-retention-duration\");\n }\n async findDeletedObjects() {\n const [skeleton] = getRootSkeleton(\n [IETF_CALDAV, \"calendar-query\"]\n );\n skeleton.children.push({\n name: [DAV, \"prop\"],\n children: VObject.getPropFindList().map((p) => ({ name: p })).concat([\n { name: [NEXTCLOUD, \"calendar-uri\"] },\n { name: [NEXTCLOUD, \"deleted-at\"] }\n ])\n });\n skeleton.children.push({\n name: [IETF_CALDAV, \"filter\"],\n children: [{\n name: [IETF_CALDAV, \"comp-filter\"],\n attributes: [\n [\"name\", \"VCALENDAR\"]\n ],\n children: [{\n name: [IETF_CALDAV, \"comp-filter\"],\n attributes: [\n [\"name\", \"VEVENT\"]\n ],\n children: []\n }]\n }]\n });\n const headers = {\n Depth: \"1\"\n };\n const body = serialize(skeleton);\n const response = await this._request.report(this._url + \"objects\", headers, body);\n return super._handleMultiStatusResponse(response);\n }\n async restore(uri2) {\n await this._request.move(uri2, this._url + \"restore/file\");\n }\n}\nclass DeletedCalendar extends Calendar {\n}\nconst debug$3 = debugFactory(\"CalendarHome\");\nclass CalendarHome extends DavCollection {\n /**\n * @inheritDoc\n */\n constructor(...args) {\n super(...args);\n super._registerCollectionFactory(\"{\" + IETF_CALDAV + \"}calendar\", Calendar);\n super._registerCollectionFactory(\"{\" + NEXTCLOUD + \"}deleted-calendar\", DeletedCalendar);\n super._registerCollectionFactory(\"{\" + CALENDARSERVER + \"}subscribed\", Subscription);\n super._registerCollectionFactory(\"{\" + IETF_CALDAV + \"}schedule-inbox\", ScheduleInbox);\n super._registerCollectionFactory(\"{\" + IETF_CALDAV + \"}schedule-outbox\", ScheduleOutbox);\n super._registerCollectionFactory(\"{\" + NEXTCLOUD + \"}trash-bin\", CalendarTrashBin);\n }\n /**\n * Finds all CalDAV-specific collections in this calendar home\n *\n * @return {Promise<(Calendar|Subscription|ScheduleInbox|ScheduleOutbox|CalendarTrashBin|DeletedCalendar)[]>}\n */\n async findAllCalDAVCollections() {\n return super.findAllByFilter((elm) => elm instanceof Calendar || elm instanceof CalendarTrashBin || elm instanceof Subscription || elm instanceof ScheduleInbox || elm instanceof ScheduleOutbox || elm instanceof DeletedCalendar);\n }\n /**\n * Finds all CalDAV-specific collections in this calendar home, grouped by type\n *\n * @return {Promise<{\n \t\tcalendars: Calendar[],\n \t\tdeletedCalendars: DeletedCalendar[],\n \t\ttrashBins: CalendarTrashBin[],\n \t\tsubscriptions: Subscription[],\n \t\tscheduleInboxes: ScheduleInbox[],\n \t\tscheduleOutboxes: ScheduleOutbox[],\n \t}>}\n */\n async findAllCalDAVCollectionsGrouped() {\n const collections = await super.findAll();\n return {\n calendars: collections.filter((c) => c instanceof Calendar && !(c instanceof ScheduleInbox) && !(c instanceof Subscription) && !(c instanceof DeletedCalendar)),\n deletedCalendars: collections.filter((c) => c instanceof DeletedCalendar),\n trashBins: collections.filter((c) => c instanceof CalendarTrashBin),\n subscriptions: collections.filter((c) => c instanceof Subscription),\n scheduleInboxes: collections.filter((c) => c instanceof ScheduleInbox),\n scheduleOutboxes: collections.filter((c) => c instanceof ScheduleOutbox)\n };\n }\n /**\n * finds all calendars in this calendar home\n *\n * @return {Promise}\n */\n async findAllCalendars() {\n return super.findAllByFilter((elm) => elm instanceof Calendar && !(elm instanceof ScheduleInbox) && !(elm instanceof Subscription) && !(elm instanceof DeletedCalendar));\n }\n /**\n * Finds all deleted calendars in this calendar home\n *\n * @return {Promise}\n */\n async findAllDeletedCalendars() {\n return super.findAllByFilter((elm) => elm instanceof DeletedCalendar);\n }\n /**\n * finds all subscriptions in this calendar home\n *\n * @return {Promise}\n */\n async findAllSubscriptions() {\n return super.findAllByFilter((elm) => elm instanceof Subscription);\n }\n /**\n * finds all schedule inboxes in this calendar home\n *\n * @return {Promise}\n */\n async findAllScheduleInboxes() {\n return super.findAllByFilter((elm) => elm instanceof ScheduleInbox);\n }\n /**\n * finds all schedule outboxes in this calendar home\n *\n * @return {Promise}\n */\n async findAllScheduleOutboxes() {\n return super.findAllByFilter((elm) => elm instanceof ScheduleOutbox);\n }\n /**\n * creates a new calendar collection\n *\n * @param {string} displayname\n * @param {string} color\n * @param {string[]} supportedComponentSet\n * @param {number} order\n * @param {string=} timezone\n * @return {Promise}\n */\n async createCalendarCollection(displayname, color, supportedComponentSet = null, order = null, timezone = null) {\n debug$3(\"creating a calendar collection\");\n const props = [{\n name: [DAV, \"resourcetype\"],\n children: [{\n name: [DAV, \"collection\"]\n }, {\n name: [IETF_CALDAV, \"calendar\"]\n }]\n }, {\n name: [DAV, \"displayname\"],\n value: displayname\n }, {\n name: [APPLE, \"calendar-color\"],\n value: color\n }, {\n name: [OWNCLOUD, \"calendar-enabled\"],\n value: \"1\"\n }];\n if (timezone) {\n props.push({\n name: [IETF_CALDAV, \"calendar-timezone\"],\n value: timezone\n });\n }\n if (supportedComponentSet) {\n props.push({\n name: [IETF_CALDAV, \"supported-calendar-component-set\"],\n children: supportedComponentSet.map((supportedComponent) => {\n return {\n name: [IETF_CALDAV, \"comp\"],\n attributes: [\n [\"name\", supportedComponent]\n ]\n };\n })\n });\n }\n if (order) {\n props.push({\n name: [APPLE, \"calendar-order\"],\n value: order\n });\n }\n const name = super._getAvailableNameFromToken(displayname);\n return super.createCollection(name, props);\n }\n /**\n * creates a new subscription\n *\n * @param {string} displayname\n * @param {string} color\n * @param {string} source\n * @param {number} order\n * @return {Promise}\n */\n async createSubscribedCollection(displayname, color, source, order = null) {\n debug$3(\"creating a subscribed collection\");\n const props = [{\n name: [DAV, \"resourcetype\"],\n children: [{\n name: [DAV, \"collection\"]\n }, {\n name: [CALENDARSERVER, \"subscribed\"]\n }]\n }, {\n name: [DAV, \"displayname\"],\n value: displayname\n }, {\n name: [APPLE, \"calendar-color\"],\n value: color\n }, {\n name: [OWNCLOUD, \"calendar-enabled\"],\n value: \"1\"\n }, {\n name: [CALENDARSERVER, \"source\"],\n children: [{\n name: [DAV, \"href\"],\n value: source\n }]\n }];\n if (order) {\n props.push({\n name: [APPLE, \"calendar-order\"],\n value: order\n });\n }\n const name = super._getAvailableNameFromToken(displayname);\n return super.createCollection(name, props);\n }\n /**\n * Search all calendars the user has access to\n * This method makes use of Nextcloud's custom\n * calendar Search API\n *\n * Documentation about that API can be found at: ...\n *\n * @return {Promise}\n */\n async search() {\n }\n /**\n * enables the birthday calendar for the Calendar Home that belongs to this user\n *\n * @return {Promise}\n */\n async enableBirthdayCalendar() {\n const [skeleton] = getRootSkeleton(\n [NEXTCLOUD, \"enable-birthday-calendar\"]\n );\n const xmlBody = serialize(skeleton);\n await this._request.post(this.url, {}, xmlBody);\n }\n}\nfunction addressBookPropSet(props) {\n const xmlified = [];\n Object.entries(props).forEach(([key, value]) => {\n switch (key) {\n case \"{urn:ietf:params:xml:ns:carddav}addressbook-description\":\n xmlified.push({\n name: [IETF_CARDDAV, \"addressbook-description\"],\n value\n });\n break;\n case \"{http://owncloud.org/ns}enabled\":\n xmlified.push({\n name: [OWNCLOUD, \"enabled\"],\n value: value ? \"1\" : \"0\"\n });\n break;\n }\n });\n return xmlified;\n}\nclass VCard extends DavObject {\n /**\n * Creates a VCard that is supposed to store address-data\n * as specified in RFC 6350.\n *\n * https://tools.ietf.org/html/rfc6350\n *\n * @inheritDoc\n */\n constructor(...args) {\n super(...args);\n super._exposeProperty(\"data\", IETF_CARDDAV, \"address-data\", true);\n super._exposeProperty(\"hasphoto\", NEXTCLOUD, \"has-photo\", false);\n }\n /**\n * @inheritDoc\n */\n static getPropFindList() {\n return super.getPropFindList().concat([\n [IETF_CARDDAV, \"address-data\"]\n ]);\n }\n}\nconst debug$2 = debugFactory(\"AddressBook\");\nclass AddressBook extends davCollectionShareable(DavCollection) {\n /**\n * @inheritDoc\n */\n constructor(...args) {\n super(...args);\n super._registerObjectFactory(\"text/vcard\", VCard);\n super._registerPropSetFactory(addressBookPropSet);\n super._exposeProperty(\"description\", IETF_CARDDAV, \"addressbook-description\", true);\n super._exposeProperty(\"enabled\", OWNCLOUD, \"enabled\", true);\n super._exposeProperty(\"readOnly\", OWNCLOUD, \"read-only\");\n }\n /**\n * finds all VCards in this address book\n *\n * @return {Promise}\n */\n findAllVCards() {\n return super.findAllByFilter((elm) => elm instanceof VCard);\n }\n /**\n * finds all contacts in an address-book, but with filtered data.\n *\n * Example use:\n * findAllAndFilterBySimpleProperties(['EMAIL', 'UID', 'CATEGORIES', 'FN', 'TEL', 'NICKNAME', 'N'])\n *\n * @param {string[]} props\n * @return {Promise}\n */\n async findAllAndFilterBySimpleProperties(props) {\n const children = [];\n props.forEach((prop) => {\n children.push({\n name: [IETF_CARDDAV, \"prop\"],\n attributes: [[\"name\", prop]]\n });\n });\n return this.addressbookQuery(null, [{\n name: [DAV, \"getetag\"]\n }, {\n name: [DAV, \"getcontenttype\"]\n }, {\n name: [DAV, \"resourcetype\"]\n }, {\n name: [IETF_CARDDAV, \"address-data\"],\n children\n }, {\n name: [NEXTCLOUD, \"has-photo\"]\n }]);\n }\n /**\n * creates a new VCard object in this address book\n *\n * @param {string} data\n * @return {Promise}\n */\n async createVCard(data) {\n debug$2(\"creating VCard object\");\n const name = uid(\"\", \"vcf\");\n const headers = {\n \"Content-Type\": \"text/vcard; charset=utf-8\"\n };\n return super.createObject(name, headers, data);\n }\n /**\n * sends an addressbook query as defined in\n * https://tools.ietf.org/html/rfc6352#section-8.6\n *\n * @param {object[]} filter\n * @param {object[]} prop\n * @param {number} limit\n * @param {string} test Either anyof or allof\n * @return {Promise}\n */\n async addressbookQuery(filter, prop = null, limit = null, test = \"anyof\") {\n debug$2(\"sending an addressbook-query request\");\n const [skeleton] = getRootSkeleton(\n [IETF_CARDDAV, \"addressbook-query\"]\n );\n if (!prop) {\n skeleton.children.push({\n name: [DAV, \"prop\"],\n children: this._propFindList.map((p) => ({ name: p }))\n });\n } else {\n skeleton.children.push({\n name: [DAV, \"prop\"],\n children: prop\n });\n }\n if (filter) {\n skeleton.children.push({\n name: [IETF_CARDDAV, \"filter\"],\n attributes: [\n [\"test\", test]\n ],\n children: filter\n });\n }\n if (limit) {\n skeleton.children.push({\n name: [IETF_CARDDAV, \"limit\"],\n children: [{\n name: [IETF_CARDDAV, \"nresults\"],\n value: limit\n }]\n });\n }\n const headers = {\n Depth: \"1\"\n };\n const body = serialize(skeleton);\n const response = await this._request.report(this.url, headers, body);\n return super._handleMultiStatusResponse(response, AddressBook._isRetrievalPartial(prop));\n }\n /**\n * sends an addressbook multiget query as defined in\n * https://tools.ietf.org/html/rfc6352#section-8.7\n *\n * @param {string[]} hrefs\n * @param {object[]} prop\n * @return {Promise}\n */\n async addressbookMultiget(hrefs = [], prop) {\n debug$2(\"sending an addressbook-multiget request\");\n if (hrefs.length === 0) {\n return [];\n }\n const headers = {\n Depth: \"1\"\n };\n const body = this._buildMultiGetBody(hrefs, prop);\n const response = await this._request.report(this.url, headers, body);\n return super._handleMultiStatusResponse(response, AddressBook._isRetrievalPartial(prop));\n }\n /**\n * sends an addressbook multiget query as defined in\n * https://tools.ietf.org/html/rfc6352#section-8.7\n * and requests a download of the result\n *\n * @param {string[]} hrefs\n * @param {object[]} prop\n * @return {Promise<{body: string|object, status: number, headers: object}>}\n */\n async addressbookMultigetExport(hrefs = [], prop) {\n debug$2(\"sending an addressbook-multiget request and request download\");\n if (hrefs.length === 0) {\n return \"\";\n }\n const headers = {\n Depth: \"1\"\n };\n const body = this._buildMultiGetBody(hrefs, prop);\n return this._request.report(this.url + \"?export\", headers, body);\n }\n /**\n *\n * @param {string[]} hrefs\n * @param {object[]} prop\n * @return String\n * @private\n */\n _buildMultiGetBody(hrefs, prop) {\n const [skeleton] = getRootSkeleton(\n [IETF_CARDDAV, \"addressbook-multiget\"]\n );\n if (!prop) {\n skeleton.children.push({\n name: [DAV, \"prop\"],\n children: this._propFindList.map((p) => ({ name: p }))\n });\n } else {\n skeleton.children.push({\n name: [DAV, \"prop\"],\n children: prop\n });\n }\n hrefs.forEach((href) => {\n skeleton.children.push({\n name: [DAV, \"href\"],\n value: href\n });\n });\n return serialize(skeleton);\n }\n /**\n * @inheritDoc\n */\n static getPropFindList() {\n return super.getPropFindList().concat([\n [IETF_CARDDAV, \"addressbook-description\"],\n [IETF_CARDDAV, \"supported-address-data\"],\n [IETF_CARDDAV, \"max-resource-size\"],\n [CALENDARSERVER, \"getctag\"],\n [OWNCLOUD, \"enabled\"],\n [OWNCLOUD, \"read-only\"]\n ]);\n }\n /**\n * checks if the prop part of a report requested partial data\n *\n * @param {object[]} prop\n * @return {boolean}\n * @private\n */\n static _isRetrievalPartial(prop) {\n if (!prop) {\n return false;\n }\n const addressBookDataProperty = prop.find((p) => {\n return p.name[0] === IETF_CARDDAV && p.name[1] === \"address-data\";\n });\n if (!addressBookDataProperty) {\n return false;\n }\n return !!addressBookDataProperty.children;\n }\n}\nconst debug$1 = debugFactory(\"AddressBookHome\");\nclass AddressBookHome extends DavCollection {\n /**\n * @inheritDoc\n */\n constructor(...args) {\n super(...args);\n super._registerCollectionFactory(\"{\" + IETF_CARDDAV + \"}addressbook\", AddressBook);\n }\n /**\n * finds all address books in this address book home\n *\n * @return {Promise}\n */\n async findAllAddressBooks() {\n return super.findAllByFilter((elm) => elm instanceof AddressBook);\n }\n /**\n * creates a new address book collection\n *\n * @param {string} displayname\n * @return {Promise}\n */\n async createAddressBookCollection(displayname) {\n debug$1(\"creating an addressbook collection\");\n const props = [{\n name: [DAV, \"resourcetype\"],\n children: [{\n name: [DAV, \"collection\"]\n }, {\n name: [IETF_CARDDAV, \"addressbook\"]\n }]\n }, {\n name: [DAV, \"displayname\"],\n value: displayname\n }];\n const name = super._getAvailableNameFromToken(displayname);\n return super.createCollection(name, props);\n }\n}\nfunction prinicipalPropSet(props) {\n const xmlified = [];\n Object.entries(props).forEach(([key, value]) => {\n switch (key) {\n case \"{urn:ietf:params:xml:ns:caldav}schedule-default-calendar-URL\":\n xmlified.push({\n name: [IETF_CALDAV, \"schedule-default-calendar-URL\"],\n children: [\n {\n name: [\"DAV:\", \"href\"],\n value\n }\n ]\n });\n break;\n }\n });\n return xmlified;\n}\nclass Principal extends DavObject {\n /**\n * Creates an object that represents a single principal\n * as specified in RFC 3744\n *\n * https://tools.ietf.org/html/rfc3744#section-2\n *\n * @inheritDoc\n */\n constructor(...args) {\n super(...args);\n Object.assign(this, {\n // house keeping\n _updatedProperties: [],\n // parsers / factories\n _propSetFactory: []\n });\n this._registerPropSetFactory(prinicipalPropSet);\n this._exposeProperty(\"displayname\", DAV, \"displayname\");\n this._exposeProperty(\"calendarUserType\", IETF_CALDAV, \"calendar-user-type\");\n this._exposeProperty(\"calendarUserAddressSet\", IETF_CALDAV, \"calendar-user-address-set\");\n this._exposeProperty(\"principalUrl\", DAV, \"principal-URL\");\n this._exposeProperty(\"email\", SABREDAV, \"email-address\");\n this._exposeProperty(\"language\", NEXTCLOUD, \"language\");\n this._exposeProperty(\"calendarHomes\", IETF_CALDAV, \"calendar-home-set\");\n this._exposeProperty(\"scheduleInbox\", IETF_CALDAV, \"schedule-inbox-URL\");\n this._exposeProperty(\"scheduleOutbox\", IETF_CALDAV, \"schedule-outbox-URL\");\n this._exposeProperty(\"scheduleDefaultCalendarUrl\", IETF_CALDAV, \"schedule-default-calendar-URL\", true);\n this._exposeProperty(\"addressBookHomes\", IETF_CARDDAV, \"addressbook-home-set\");\n this._exposeProperty(\"roomType\", NEXTCLOUD, \"room-type\");\n this._exposeProperty(\"roomSeatingCapacity\", NEXTCLOUD, \"room-seating-capacity\");\n this._exposeProperty(\"roomBuildingAddress\", NEXTCLOUD, \"room-building-address\");\n this._exposeProperty(\"roomBuildingStory\", NEXTCLOUD, \"room-building-story\");\n this._exposeProperty(\"roomBuildingRoomNumber\", NEXTCLOUD, \"room-building-room-number\");\n this._exposeProperty(\"roomFeatures\", NEXTCLOUD, \"room-features\");\n Object.defineProperties(this, {\n principalScheme: {\n get: () => {\n const baseUrl = this._request.pathname(this._request.baseUrl);\n let principalURI = this.url.slice(baseUrl.length);\n if (principalURI.slice(-1) === \"/\") {\n principalURI = principalURI.slice(0, -1);\n }\n return \"principal:\" + principalURI;\n }\n },\n userId: {\n get: () => {\n if (this.calendarUserType !== \"INDIVIDUAL\") {\n return null;\n }\n return this.url.split(\"/\").splice(-2, 2)[this.url.endsWith(\"/\") ? 0 : 1];\n }\n },\n groupId: {\n get: () => {\n if (this.calendarUserType !== \"GROUP\") {\n return null;\n }\n return this.url.split(\"/\").splice(-2, 2)[this.url.endsWith(\"/\") ? 0 : 1];\n }\n },\n resourceId: {\n get: () => {\n if (this.calendarUserType !== \"RESOURCE\") {\n return null;\n }\n return this.url.split(\"/\").splice(-2, 2)[this.url.endsWith(\"/\") ? 0 : 1];\n }\n },\n roomId: {\n get: () => {\n if (this.calendarUserType !== \"ROOM\") {\n return null;\n }\n return this.url.split(\"/\").splice(-2, 2)[this.url.endsWith(\"/\") ? 0 : 1];\n }\n },\n roomAddress: {\n get: () => {\n const data = [\n this.roomBuildingRoomNumber,\n this.roomBuildingStory,\n this.roomBuildingAddress\n ];\n return data.filter((value) => !!value).join(\", \");\n }\n }\n });\n }\n /**\n * Expose property to the outside and track changes if it's mutable\n *\n * @protected\n * @param {string} localName\n * @param {string} xmlNamespace\n * @param {string} xmlName\n * @param {boolean} mutable\n * @return void\n */\n _exposeProperty(localName, xmlNamespace, xmlName, mutable = false) {\n if (mutable) {\n Object.defineProperty(this, localName, {\n get: () => this._props[`{${xmlNamespace}}${xmlName}`],\n set: (val) => {\n this._props[`{${xmlNamespace}}${xmlName}`] = val;\n if (this._updatedProperties.indexOf(`{${xmlNamespace}}${xmlName}`) === -1) {\n this._updatedProperties.push(`{${xmlNamespace}}${xmlName}`);\n }\n }\n });\n } else {\n Object.defineProperty(this, localName, {\n get: () => this._props[`{${xmlNamespace}}${xmlName}`]\n });\n }\n }\n /**\n * @protected\n * @param factory\n * @return void\n */\n _registerPropSetFactory(factory) {\n this._propSetFactory.push(factory);\n }\n /**\n * @inheritDoc\n *\n * @param {PrincipalPropfindOptions} options\n */\n static getPropFindList(options = {}) {\n const list = [\n [DAV, \"displayname\"],\n [IETF_CALDAV, \"calendar-user-type\"],\n [IETF_CALDAV, \"calendar-user-address-set\"],\n [DAV, \"principal-URL\"],\n [DAV, \"alternate-URI-set\"],\n [SABREDAV, \"email-address\"],\n [NEXTCLOUD, \"language\"]\n ];\n if (options.enableCalDAV) {\n list.push(\n [IETF_CALDAV, \"calendar-home-set\"],\n [IETF_CALDAV, \"schedule-inbox-URL\"],\n [IETF_CALDAV, \"schedule-outbox-URL\"],\n [IETF_CALDAV, \"schedule-default-calendar-URL\"]\n );\n }\n if (options.enableCalDAVResourceBooking || options.enableCalDAV) {\n list.push(\n // Room and Resource booking related\n [NEXTCLOUD, \"resource-type\"],\n [NEXTCLOUD, \"resource-vehicle-type\"],\n [NEXTCLOUD, \"resource-vehicle-make\"],\n [NEXTCLOUD, \"resource-vehicle-model\"],\n [NEXTCLOUD, \"resource-vehicle-is-electric\"],\n [NEXTCLOUD, \"resource-vehicle-range\"],\n [NEXTCLOUD, \"resource-vehicle-seating-capacity\"],\n [NEXTCLOUD, \"resource-contact-person\"],\n [NEXTCLOUD, \"resource-contact-person-vcard\"],\n [NEXTCLOUD, \"room-type\"],\n [NEXTCLOUD, \"room-seating-capacity\"],\n [NEXTCLOUD, \"room-building-address\"],\n [NEXTCLOUD, \"room-building-story\"],\n [NEXTCLOUD, \"room-building-room-number\"],\n [NEXTCLOUD, \"room-features\"]\n );\n }\n if (options.enableCardDAV) {\n list.push(\n [IETF_CARDDAV, \"addressbook-home-set\"]\n );\n }\n return list;\n }\n /**\n * Sends a PropPatch request to update the principal's properties.\n * The request is only made if properties actually changed.\n *\n * @return {Promise}\n */\n async update() {\n if (this._updatedProperties.length === 0) {\n return;\n }\n const properties = {};\n this._updatedProperties.forEach((updatedProperty) => {\n properties[updatedProperty] = this._props[updatedProperty];\n });\n const propSet = this._propSetFactory.reduce((arr, p) => [...arr, ...p(properties)], []);\n const [skeleton, dPropSet] = getRootSkeleton(\n [DAV, \"propertyupdate\"],\n [DAV, \"set\"],\n [DAV, \"prop\"]\n );\n dPropSet.push(...propSet);\n const body = serialize(skeleton);\n await this._request.propPatch(this._url, {}, body);\n }\n}\nconst debug = debugFactory(\"index.js\");\nclass DavClient {\n /**\n * @param {object} options\n * @param {string} options.rootUrl\n * @param {{[name: string]: any}} [options.defaultHeaders] A dictionary of default headers to apply to each request.\n * @param {object} factories\n */\n constructor(options, factories = {}) {\n this.rootUrl = options.rootUrl;\n if (this.rootUrl.slice(-1) !== \"/\") {\n this.rootUrl += \"/\";\n }\n this.advertisedFeatures = [];\n this.currentUserPrincipal = null;\n this.principalCollections = [];\n this.calendarHomes = [];\n this.publicCalendarHome = null;\n this.addressBookHomes = [];\n this.parser = new Parser();\n this._isConnected = false;\n this._request = new Request(this.rootUrl, this.parser, options.defaultHeaders);\n }\n /**\n * initializes the DAVClient\n * @param {object} options\n * @return {Promise}\n */\n async connect(options = { enableCalDAV: false, enableCardDAV: false }) {\n if (this._isConnected) {\n return this;\n }\n if (!this.rootUrl) {\n throw new Error(\"No rootUrl configured\");\n }\n const principalUrl = await this._discoverPrincipalUri();\n debug(`PrincipalURL: ${principalUrl}`);\n const propFindList = Principal.getPropFindList(options);\n if (options.enableCalDAV || options.enableCardDAV) {\n propFindList.push(\n [DAV, \"principal-collection-set\"],\n [DAV, \"supported-report-set\"]\n );\n }\n const [propFindResponse, optionsResponse] = await Promise.all([\n this._request.propFind(principalUrl, propFindList),\n this._request.options(principalUrl)\n ]);\n this.currentUserPrincipal = new Principal(null, this._request, principalUrl, propFindResponse.body);\n this._extractAdvertisedDavFeatures(optionsResponse.headers);\n this._extractAddressBookHomes(propFindResponse.body);\n this._extractCalendarHomes(propFindResponse.body);\n this._extractPrincipalCollectionSets(propFindResponse.body);\n this._createPublicCalendarHome();\n this._isConnected = true;\n return this;\n }\n // /**\n // * @returns {Promise<[any , any , any , any , any , any , any , any , any , any]>}\n // */\n // async sync() {\n // const promises = [];\n //\n // // Ideally we would also check for new calendar-homes and\n // // new addressbook-homes as well, but then Nextcloud will\n // // ever only send provide one each, so we omit this step\n // // to cut down network traffic\n //\n // this.calendarHomes.forEach((calendarHome) => {\n // promises.push(calendarHome.sync());\n // });\n // this.addressbookHomes.forEach((addressbookHome) => {\n // promises.push(addressbookHome.sync());\n // });\n //\n // return Promise.all(promises);\n // }\n /**\n * performs a principal property search based on a principal's displayname\n *\n * @param {string} name\n * @return {Promise}\n */\n async principalPropertySearchByDisplayname(name) {\n return this.principalPropertySearch([\n { name: [DAV, \"displayname\"] }\n ], name);\n }\n /**\n * performs a principal property search based on a principal's displayname OR email address\n *\n * @param {string} value\n * @return {Promise}\n */\n async principalPropertySearchByDisplaynameOrEmail(value) {\n return this.principalPropertySearch([\n { name: [DAV, \"displayname\"] },\n { name: [SABREDAV, \"email-address\"] }\n ], value, \"anyof\");\n }\n /**\n * Performs a principal property based on the address of a room\n *\n * @param {string} address Address of the building the room is in\n * @return {Promise}\n */\n async principalPropertySearchByAddress(address) {\n return this.principalPropertySearch([\n { name: [NEXTCLOUD, \"room-building-address\"] }\n ], address);\n }\n /**\n * Performs a principal property search based on the address and story of a room\n *\n * @param {string} address Address of the building the room is in\n * @param {string} story Story inside the building the room is in\n * @return {Promise<[]>}\n */\n async principalPropertySearchByAddressAndStory(address, story) {\n const [skeleton] = getRootSkeleton(\n [DAV, \"principal-property-search\"]\n );\n skeleton.children.push({\n name: [DAV, \"property-search\"],\n children: [{\n name: [DAV, \"prop\"],\n children: [{\n name: [NEXTCLOUD, \"room-building-address\"]\n }]\n }, {\n name: [DAV, \"match\"],\n value: address\n }]\n });\n skeleton.children.push({\n name: [DAV, \"property-search\"],\n children: [{\n name: [DAV, \"prop\"],\n children: [{\n name: [NEXTCLOUD, \"room-building-story\"]\n }]\n }, {\n name: [DAV, \"match\"],\n value: story\n }]\n });\n skeleton.children.push({\n name: [DAV, \"prop\"],\n children: Principal.getPropFindList({ enableCalDAV: true }).map((propFindListItem) => ({ name: propFindListItem }))\n });\n skeleton.children.push({ name: [DAV, \"apply-to-principal-collection-set\"] });\n const xml = serialize(skeleton);\n return this._request.report(this.rootUrl, { Depth: 0 }, xml).then((response) => {\n const result = [];\n Object.entries(response.body).forEach(([path, props]) => {\n const url = this._request.pathname(path);\n result.push(new Principal(null, this._request, url, props));\n });\n return result;\n });\n }\n /**\n * Performs a principal property search based on multiple advanced filters\n *\n * @param {object} query The destructuring query object\n * @param {string=} query.displayName The display name to filter by\n * @param {number=} query.capacity The minimum required seating capacity\n * @param {string[]=} query.features The features to filter by\n * @param {string=} query.roomType The room type to filter by\n * @return {Promise}\n */\n async advancedPrincipalPropertySearch(query) {\n const [skeleton] = getRootSkeleton([DAV, \"principal-property-search\"]);\n skeleton.attributes = [\n [\"test\", \"allof\"]\n ];\n const { displayName, capacity, features, roomType } = query;\n if (displayName) {\n skeleton.children.push({\n name: [DAV, \"property-search\"],\n children: [{\n name: [DAV, \"prop\"],\n children: [\n { name: [DAV, \"displayname\"] }\n ]\n }, {\n name: [DAV, \"match\"],\n value: displayName\n }]\n });\n }\n if (capacity) {\n skeleton.children.push({\n name: [DAV, \"property-search\"],\n children: [{\n name: [DAV, \"prop\"],\n children: [{\n name: [NEXTCLOUD, \"room-seating-capacity\"]\n }]\n }, {\n name: [DAV, \"match\"],\n value: capacity\n }]\n });\n }\n if (features && features.length > 0) {\n skeleton.children.push({\n name: [DAV, \"property-search\"],\n children: [{\n name: [DAV, \"prop\"],\n children: [{\n name: [NEXTCLOUD, \"room-features\"]\n }]\n }, {\n name: [DAV, \"match\"],\n value: features.join(\",\")\n }]\n });\n }\n if (roomType) {\n skeleton.children.push({\n name: [DAV, \"property-search\"],\n children: [{\n name: [DAV, \"prop\"],\n children: [{\n name: [NEXTCLOUD, \"room-type\"]\n }]\n }, {\n name: [DAV, \"match\"],\n value: roomType\n }]\n });\n }\n if (skeleton.children.length === 0) {\n return [];\n }\n skeleton.children.push({\n name: [DAV, \"prop\"],\n children: Principal.getPropFindList({ enableCalDAV: true }).map((propFindListItem) => ({ name: propFindListItem }))\n });\n skeleton.children.push({ name: [DAV, \"apply-to-principal-collection-set\"] });\n const xml = serialize(skeleton);\n const response = await this._request.report(this.rootUrl, { Depth: 0 }, xml);\n return Object.entries(response.body).map(([path, props]) => {\n const url = this._request.pathname(path);\n return new Principal(null, this._request, url, props);\n });\n }\n /**\n * performs a principal property search\n * @see https://tools.ietf.org/html/rfc3744#section-9.4\n *\n * @param {Array} props\n * @param {string} match\n * @param {string} test 'anyof', 'allof' or none\n * @return {Promise}\n */\n async principalPropertySearch(props, match, test) {\n const [skeleton, propSearch] = getRootSkeleton(\n [DAV, \"principal-property-search\"],\n [DAV, \"property-search\"]\n );\n if (test) {\n skeleton.attributes = [\n [\"test\", test]\n ];\n }\n propSearch.push({\n name: [DAV, \"prop\"],\n children: props\n }, {\n name: [DAV, \"match\"],\n value: match\n });\n skeleton.children.push({\n name: [DAV, \"prop\"],\n children: Principal.getPropFindList({ enableCalDAV: true }).map((propFindListItem) => ({ name: propFindListItem }))\n });\n skeleton.children.push({ name: [DAV, \"apply-to-principal-collection-set\"] });\n const xml = serialize(skeleton);\n return this._request.report(this.rootUrl, { Depth: 0 }, xml).then((response) => {\n const result = [];\n Object.entries(response.body).forEach(([path, props2]) => {\n const url = this._request.pathname(path);\n result.push(new Principal(null, this._request, url, props2));\n });\n return result;\n });\n }\n /**\n * finds one principal at a given principalUrl\n *\n * @param {string} principalUrl\n * @return {Promise}\n */\n async findPrincipal(principalUrl) {\n return this._request.propFind(principalUrl, Principal.getPropFindList()).then(({ body }) => {\n return new Principal(null, this._request, principalUrl, body);\n }).catch((err) => {\n console.debug(err);\n });\n }\n /**\n * finds all principals in a collection at a given principalCollectionUrl\n *\n * @param {string} principalCollectionUrl\n * @param {import('./models/principal.js').PrincipalPropfindOptions} options Passed to Principal.getPropFindList()\n * @return {Promise}\n */\n async findPrincipalsInCollection(principalCollectionUrl, options = {}) {\n try {\n const { body } = await this._request.propFind(\n principalCollectionUrl,\n Principal.getPropFindList(options),\n 1\n );\n const principals = Object.entries(body).filter(([principalUrl]) => !principalCollectionUrl.endsWith(principalUrl)).map(([principalUrl, principal]) => new Principal(\n null,\n this._request,\n principalUrl,\n principal\n ));\n return principals;\n } catch (err) {\n console.debug(err);\n }\n }\n /**\n * discovers the accounts principal uri solely based on rootURL\n *\n * @return {Promise}\n * @private\n */\n async _discoverPrincipalUri() {\n const response = await this._request.propFind(this.rootUrl, [\n [DAV, \"current-user-principal\"]\n ], 0);\n if (!response.body[\"{DAV:}current-user-principal\"]) {\n throw new Error(\"Error retrieving current user principal\");\n }\n if (response.body[\"{DAV:}current-user-principal\"].type === \"unauthenticated\") {\n throw new Error(\"Current user is not authenticated\");\n }\n return this._request.pathname(response.body[\"{DAV:}current-user-principal\"].href);\n }\n /**\n * discovers all calendar-homes in this account, all principal collections\n * and advertised features\n *\n * a user will most commonly only have one calendar-home,\n * the CalDAV standard allows multiple calendar-homes though\n *\n * @param {object} props\n * @return void\n * @private\n */\n async _extractCalendarHomes(props) {\n const calendarHomes = props[`{${IETF_CALDAV}}calendar-home-set`];\n if (!calendarHomes) {\n return;\n }\n this.calendarHomes = calendarHomes.map((calendarHome) => {\n const url = this._request.pathname(calendarHome);\n return new CalendarHome(this, this._request, url, props);\n });\n }\n /**\n * discovers all address-book-homes in this account, all principal collections\n * and advertised features\n *\n * a user will most commonly only have one address-book-home,\n * the CardDAV standard allows multiple address-book-homes though\n *\n * @param {object} props\n * @return void\n * @private\n */\n async _extractAddressBookHomes(props) {\n const addressBookHomes = props[`{${IETF_CARDDAV}}addressbook-home-set`];\n if (!addressBookHomes) {\n return;\n }\n this.addressBookHomes = addressBookHomes.map((addressbookHome) => {\n const url = this._request.pathname(addressbookHome);\n return new AddressBookHome(this, this._request, url, props);\n });\n }\n /**\n * extracts principalCollection Information from an existing props object\n * returned from the server\n *\n * @param {object} props\n * @return void\n * @private\n */\n _extractPrincipalCollectionSets(props) {\n const principalCollectionSets = props[`{${DAV}}principal-collection-set`];\n this.principalCollections = principalCollectionSets.map((principalCollection) => {\n return this._request.pathname(principalCollection);\n });\n }\n /**\n * extracts the advertised features supported by the DAV server\n *\n * @param {object} headers\n * @return void\n * @private\n */\n _extractAdvertisedDavFeatures(headers) {\n const dav = headers.dav;\n this.advertisedFeatures.push(...dav.split(\",\").map((s) => s.trim()));\n }\n /**\n * Creates a public calendar home\n *\n * @return void\n * @private\n */\n _createPublicCalendarHome() {\n const url = this._request.pathname(this.rootUrl) + \"public-calendars/\";\n this.publicCalendarHome = new CalendarHome(this, this._request, url, {});\n }\n}\nexport {\n debugFactory as debug,\n DavClient as default,\n namespaceUtility as namespaces\n};\n//# sourceMappingURL=index.mjs.map\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getRequestToken } from '@nextcloud/auth'\nimport DavClient from '@nextcloud/cdav-library'\nimport { generateRemoteUrl } from '@nextcloud/router'\n\n/**\n *\n */\nfunction xhrProvider() {\n\tconst headers = {\n\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\trequesttoken: getRequestToken(),\n\t}\n\tconst xhr = new XMLHttpRequest()\n\tconst oldOpen = xhr.open\n\n\t// override open() method to add headers\n\txhr.open = function() {\n\t\tconst result = oldOpen.apply(this, arguments)\n\t\tfor (const name in headers) {\n\t\t\txhr.setRequestHeader(name, headers[name])\n\t\t}\n\t\treturn result\n\t}\n\twindow.OC.registerXHRForErrorProcessing(xhr)\n\treturn xhr\n}\n\nexport default new DavClient({\n\trootUrl: generateRemoteUrl('dav'),\n}, xhrProvider)\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport Contact from '../models/contact.js'\nimport Store from '../store/index.js'\n\n/**\n * Parse a vcf data string, add them to the store\n * and return a list of contacts\n *\n * @param {string} data The vcf data\n * @param {object} addressbook the addressbook to add to\n * @return {Contact[]}\n */\nexport default function parseVcf(data, addressbook) {\n\tconst regexp = /BEGIN:VCARD[\\s\\S]*?END:VCARD/mgi\n\tconst vCards = data.match(regexp)\n\n\tif (!vCards) {\n\t\tconsole.error('Error during the parsing of the following vcf file', data)\n\t\treturn []\n\t}\n\n\tif (!addressbook) {\n\t\tconsole.error('Invalid addressbook', addressbook)\n\t\treturn []\n\t}\n\n\tStore.dispatch('setTotal', vCards.length)\n\n\t// Not using map because we want to only push valid contacts\n\t// map force to return at least undefined\n\treturn vCards.reduce((contacts, vCard) => {\n\t\ttry {\n\t\t\t// console.log(vCards.indexOf(vCard))\n\t\t\tconst contact = new Contact(vCard, addressbook)\n\t\t\tcontacts.push(contact)\n\t\t} catch (e) {\n\t\t\t// Parse error! Do not stop here...\n\t\t\tStore.dispatch('incrementDenied')\n\t\t\tconsole.error(e)\n\t\t}\n\t\treturn contacts\n\t}, [])\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { defineStore } from 'pinia'\n\nexport default defineStore('principals', {\n\tstate: () => ({\n\t\tcurrentUserPrincipal: null,\n\t}),\n\tactions: {\n\t\tsetCurrentUserPrincipal(client) {\n\t\t\tthis.currentUserPrincipal = client?.currentUserPrincipal\n\t\t},\n\t},\n})\n","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport usePrincipalsStore from '../store/principals.js'\n\n/**\n * Sorts addressbooks into groups with the following priority:\n * 1. First group: My addressbooks\n * 2. Second group: Shared with me and writeable\n * 3. Third group: Read-only\n *\n * Withing each group, addressbooks are sorted by the number of contacts, from highest to lowest\n *\n * @param {Array} addressbooks\n * @return {Array}\n */\nexport function sortAddressbooks(addressbooks) {\n\treturn addressbooks\n\t\t.slice()\n\t\t.sort((a, b) => {\n\t\t\tconst getContactCount = (ab) => Object.keys(ab.contacts || {}).length\n\n\t\t\tconst groupA = getPriorityGroup(a)\n\t\t\tconst groupB = getPriorityGroup(b)\n\n\t\t\t// First, sort by priority group\n\t\t\tif (groupA !== groupB) {\n\t\t\t\treturn groupA - groupB\n\t\t\t}\n\n\t\t\t// If not sort by contact count\n\t\t\tconst countA = getContactCount(a)\n\t\t\tconst countB = getContactCount(b)\n\n\t\t\tif (countA !== countB) {\n\t\t\t\treturn countB - countA\n\t\t\t}\n\n\t\t\t// If contact counts are equal, sort alphabetically by ID as tiebreaker\n\t\t\treturn a.id.localeCompare(b.id)\n\t\t})\n}\n\n/**\n *\n * @param ab\n */\nfunction getPriorityGroup(ab) {\n\tconst principalsStore = usePrincipalsStore()\n\n\tif (ab.readOnly) {\n\t\treturn 3\n\t}\n\tif (ab.owner !== principalsStore.currentUserPrincipal.url) {\n\t\treturn 2\n\t}\n\treturn 1\n}\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { showError } from '@nextcloud/dialogs'\nimport pLimit from 'p-limit'\nimport Contact, { MinimalContactProperties } from '../models/contact.js'\nimport client from '../services/cdav.js'\nimport parseVcf from '../services/parseVcf.js'\nimport { sortAddressbooks } from '../utils/addressbookUtils.js'\n\nconst addressbookModel = {\n\tid: '',\n\tdisplayName: '',\n\tenabled: true,\n\towner: '',\n\tshares: [],\n\tcontacts: {},\n\turl: '',\n\treadOnly: false,\n\tcanCreateCard: false,\n\tcanModifyCard: false,\n\tcanDeleteCard: false,\n\twriteProps: false,\n\tdav: false,\n}\n\nconst state = {\n\taddressbooks: [],\n\taddressbooksFetched: false,\n}\n\n/**\n * map a dav collection to our addressbook object model\n *\n * @param {object} addressbook the addressbook object from the cdav library\n * @return {object}\n */\nexport function mapDavCollectionToAddressbook(addressbook) {\n\treturn {\n\t\t// get last part of url\n\t\tid: addressbook.url.split('/').slice(-2, -1)[0],\n\t\tdisplayName: addressbook.displayname,\n\t\tenabled: addressbook.enabled !== false,\n\t\towner: addressbook.owner,\n\t\treadOnly: addressbook.readOnly === true,\n\t\twriteProps: addressbook.currentUserPrivilegeSet.includes('{DAV:}write-properties') === true,\n\t\tcanCreateCard: addressbook.currentUserPrivilegeSet.includes('{DAV:}bind') || addressbook.currentUserPrivilegeSet.includes('{DAV:}write') || addressbook.currentUserPrivilegeSet.includes('{DAV:}all') === true,\n\t\tcanModifyCard: addressbook.currentUserPrivilegeSet.includes('{DAV:}write-content') || addressbook.currentUserPrivilegeSet.includes('{DAV:}write') || addressbook.currentUserPrivilegeSet.includes('{DAV:}all') === true,\n\t\tcanDeleteCard: addressbook.currentUserPrivilegeSet.includes('{DAV:}unbind') || addressbook.currentUserPrivilegeSet.includes('{DAV:}write') || addressbook.currentUserPrivilegeSet.includes('{DAV:}all') === true,\n\t\turl: addressbook.url,\n\t\tdav: addressbook,\n\t\tshares: addressbook.shares\n\t\t\t? addressbook.shares.map((sharee) => ({ ...mapDavShareeToSharee(sharee) }))\n\t\t\t: [],\n\t}\n}\n\n/**\n * map a dav collection to our addressbook object model\n *\n * @param {object} sharee the sharee object from the cdav library shares\n * @return {object}\n */\nexport function mapDavShareeToSharee(sharee) {\n\tconst id = sharee.href.split('/').slice(-1)[0]\n\tconst name = sharee['common-name']\n\t\t? sharee['common-name']\n\t\t: id\n\treturn {\n\t\tdisplayName: name,\n\t\tid,\n\t\twriteable: sharee.access[0].endsWith('read-write'),\n\t\tisGroup: sharee.href.startsWith('principal:principals/groups/'),\n\t\turi: sharee.href,\n\t}\n}\n\nconst mutations = {\n\n\t/**\n\t * Add addressbook into state\n\t *\n\t * @param {object} state the store data\n\t * @param {object} addressbook the addressbook to add\n\t */\n\taddAddressbook(state, addressbook) {\n\t\t// extend the addressbook to the default model\n\t\tconst newAddressbook = { ...addressbookModel, ...addressbook }\n\t\t// force reinit of the contacts object to prevent\n\t\t// data passed as references\n\t\tnewAddressbook.contacts = {}\n\t\tstate.addressbooks.push(newAddressbook)\n\t},\n\n\t/**\n\t * Delete addressbook\n\t *\n\t * @param {object} state the store data\n\t * @param {object} addressbook the addressbook to delete\n\t */\n\tdeleteAddressbook(state, addressbook) {\n\t\tstate.addressbooks.splice(state.addressbooks.indexOf(addressbook), 1)\n\t},\n\n\t/**\n\t * Toggle whether a Addressbook is Enabled\n\t *\n\t * @param {object} context the store mutations\n\t * @param {object} addressbook the addressbook to toggle\n\t */\n\ttoggleAddressbookEnabled(context, addressbook) {\n\t\taddressbook = state.addressbooks.find((search) => search.id === addressbook.id)\n\t\taddressbook.enabled = !addressbook.enabled\n\t},\n\n\t/**\n\t * Rename a Addressbook\n\t *\n\t * @param {object} context the store mutations\n\t * @param {object} data destructuring object\n\t * @param {object} data.addressbook the addressbook to rename\n\t * @param {string} data.newName the new name of the addressbook\n\t */\n\trenameAddressbook(context, { addressbook, newName }) {\n\t\taddressbook = state.addressbooks.find((search) => search.id === addressbook.id)\n\t\taddressbook.displayName = newName\n\t},\n\n\t/**\n\t * Append a list of contacts to an addressbook\n\t * and remove duplicates\n\t *\n\t * @param {object} state the store data\n\t * @param {object} data destructuring object\n\t * @param {object} data.addressbook the addressbook to add the contacts to\n\t * @param {Contact[]} data.contacts array of contacts to append\n\t */\n\tappendContactsToAddressbook(state, { addressbook, contacts }) {\n\t\taddressbook = state.addressbooks.find((search) => search.id === addressbook.id)\n\n\t\t// convert list into an array and remove duplicate\n\t\taddressbook.contacts = contacts.reduce((list, contact) => {\n\t\t\tif (list[contact.uid]) {\n\t\t\t\tconsole.info('Duplicate contact overrided', list[contact.uid], contact)\n\t\t\t}\n\t\t\tlist[contact.uid] = contact\n\t\t\treturn list\n\t\t}, addressbook.contacts)\n\t},\n\n\t/**\n\t * Add a contact to an addressbook and overwrite if duplicate uid\n\t *\n\t * @param {object} state the store data\n\t * @param {Contact} contact the contact to add\n\t */\n\taddContactToAddressbook(state, contact) {\n\t\tconst addressbook = state.addressbooks.find((search) => search.id === contact.addressbook.id)\n\t\taddressbook.contacts[contact.uid] = contact\n\t},\n\n\t/**\n\t * Delete a contact in a specified addressbook\n\t *\n\t * @param {object} state the store data\n\t * @param {Contact} contact the contact to delete\n\t */\n\tdeleteContactFromAddressbook(state, contact) {\n\t\tconst addressbook = state.addressbooks.find((search) => search.id === contact.addressbook.id)\n\t\tdelete addressbook.contacts[contact.uid]\n\t},\n\n\t/**\n\t * Share addressbook with a user or group\n\t *\n\t * @param {object} state the store data\n\t * @param {object} data destructuring object\n\t * @param {object} data.addressbook the addressbook\n\t * @param {string} data.user the userId\n\t * @param {string} data.displayName the displayName\n\t * @param {string} data.uri the sharing principalScheme uri\n\t * @param {boolean} data.isGroup is this a group ?\n\t */\n\tshareAddressbook(state, { addressbook, user, displayName, uri, isGroup }) {\n\t\taddressbook = state.addressbooks.find((search) => search.id === addressbook.id)\n\t\tconst newSharee = {\n\t\t\tdisplayName,\n\t\t\tid: user,\n\t\t\twriteable: false,\n\t\t\tisGroup,\n\t\t\turi,\n\t\t}\n\t\tif (!addressbook.shares.some((share) => share.uri === uri)) {\n\t\t\taddressbook.shares.push(newSharee)\n\t\t}\n\t},\n\n\t/**\n\t * Remove Sharee from addressbook shares list\n\t *\n\t * @param {object} state the store data\n\t * @param {object} data destructuring object\n\t * @param {object} data.addressbook the addressbook\n\t * @param {string} data.uri the sharee uri\n\t */\n\tremoveSharee(state, { addressbook, uri }) {\n\t\taddressbook = state.addressbooks.find((search) => search.id === addressbook.id)\n\t\tconst shareIndex = addressbook.shares.findIndex((sharee) => sharee.uri === uri)\n\t\taddressbook.shares.splice(shareIndex, 1)\n\t},\n\n\t/**\n\t * Toggle sharee's writable permission\n\t *\n\t * @param {object} state the store data\n\t * @param {object} data destructuring object\n\t * @param {object} data.addressbook the addressbook\n\t * @param {string} data.uri the sharee uri\n\t */\n\tupdateShareeWritable(state, { addressbook, uri }) {\n\t\taddressbook = state.addressbooks.find((search) => search.id === addressbook.id)\n\t\tconst sharee = addressbook.shares.find((sharee) => sharee.uri === uri)\n\t\tsharee.writeable = !sharee.writeable\n\t},\n\n\t/**\n\t * Needed to track indirect state changes for addressbook sorting\n\t *\n\t * @param state\n\t */\n\tresortAddressbooks(state) {\n\t\tstate.addressbooks = sortAddressbooks(state.addressbooks)\n\t},\n}\n\nconst getters = {\n\tgetAddressbooks: (state) => state.addressbooks,\n}\n\nconst actions = {\n\n\t/**\n\t * Retrieve and commit addressbooks\n\t *\n\t * @param {object} context the store mutations\n\t * @return {object[]} the addressbooks\n\t */\n\tasync getAddressbooks(context) {\n\t\tif (context.state.addressbooksFetched) {\n\t\t\treturn context.getters.getAddressbooks\n\t\t}\n\n\t\tconst addressbooks = await client.addressBookHomes[0]\n\t\t\t.findAllAddressBooks()\n\t\t\t.then((addressbooks) => {\n\t\t\t\treturn addressbooks.map((addressbook) => {\n\t\t\t\t\t// formatting addressbooks\n\t\t\t\t\treturn mapDavCollectionToAddressbook(addressbook)\n\t\t\t\t})\n\t\t\t})\n\n\t\taddressbooks.forEach((addressbook) => {\n\t\t\tcontext.commit('addAddressbook', addressbook)\n\t\t})\n\n\t\tcontext.commit('resortAddressbooks')\n\n\t\tcontext.state.addressbooksFetched = true\n\n\t\treturn addressbooks\n\t},\n\n\t/**\n\t * Append a new address book to array of existing address books\n\t *\n\t * @param {object} context the store mutations\n\t * @param {object} addressbook The address book to append\n\t * @return {Promise}\n\t */\n\tasync appendAddressbook(context, addressbook) {\n\t\treturn client.addressBookHomes[0]\n\t\t\t.createAddressBookCollection(addressbook.displayName)\n\t\t\t.then((response) => {\n\t\t\t\taddressbook = mapDavCollectionToAddressbook(response)\n\t\t\t\tcontext.commit('addAddressbook', addressbook)\n\t\t\t})\n\t\t\t.catch((error) => { throw error })\n\t},\n\n\t/**\n\t * Delete Addressbook\n\t *\n\t * @param {object} context the store mutations Current context\n\t * @param {object} addressbook the addressbool to delete\n\t * @return {Promise}\n\t */\n\tasync deleteAddressbook(context, addressbook) {\n\t\treturn addressbook.dav\n\t\t\t.delete()\n\t\t\t.then(() => {\n\t\t\t\t// delete all the contacts from the store that belong to this addressbook\n\t\t\t\tObject.values(addressbook.contacts)\n\t\t\t\t\t.forEach((contact) => context.commit('deleteContact', contact))\n\t\t\t\t// then delete the addressbook\n\t\t\t\tcontext.commit('deleteAddressbook', addressbook)\n\t\t\t})\n\t\t\t.catch((error) => { throw error })\n\t},\n\n\t/**\n\t * Toggle whether a Addressbook is Enabled\n\t *\n\t * @param {object} context the store mutations Current context\n\t * @param {object} addressbook the addressbook to toggle\n\t * @return {Promise}\n\t */\n\tasync toggleAddressbookEnabled(context, addressbook) {\n\t\taddressbook.dav.enabled = !addressbook.enabled\n\t\treturn addressbook.dav\n\t\t\t.update()\n\t\t\t.then(async (response) => {\n\t\t\t\tcontext.commit('toggleAddressbookEnabled', addressbook)\n\t\t\t\tif (addressbook.enabled) {\n\t\t\t\t\tconst contacts = Object.values(addressbook.contacts)\n\n\t\t\t\t\t// If the address book is disabled on first load, the store does not fetch/store the AB's contacts\n\t\t\t\t\tif (contacts.length === 0) {\n\t\t\t\t\t\tawait context.dispatch('getContactsFromAddressBook', { addressbook })\n\t\t\t\t\t}\n\n\t\t\t\t\t// Add contacts from the just enabled address book to the contacts store\n\t\t\t\t\tObject.values(addressbook.contacts).forEach((contact) => {\n\t\t\t\t\t\tcontext.commit('addContact', contact)\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\t// Remove contacts from the just disabled address book from the contacts store\n\t\t\t\t\tObject.values(addressbook.contacts).forEach((contact) => {\n\t\t\t\t\t\tcontext.commit('deleteContact', contact)\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch((error) => { throw error })\n\t},\n\n\t/**\n\t * Rename a Addressbook\n\t *\n\t * @param {object} context the store mutations Current context\n\t * @param {object} data.addressbook the addressbook to rename\n\t * @param {string} data.newName the new name of the addressbook\n\t * @param data.addressbook.addressbook\n\t * @param data.addressbook.newName\n\t * @param root0\n\t * @param root0.addressbook\n\t * @param root0.newName\n\t * @return {Promise}\n\t */\n\tasync renameAddressbook(context, { addressbook, newName }) {\n\t\taddressbook.dav.displayname = newName\n\t\treturn addressbook.dav\n\t\t\t.update()\n\t\t\t.then((response) => context.commit('renameAddressbook', { addressbook, newName }))\n\t\t\t.catch((error) => { throw error })\n\t},\n\n\t/**\n\t * Retrieve the contacts of the specified addressbook\n\t * and commit the results\n\t *\n\t * @param {object} context the store mutations\n\t * @param {object} importDetails = { vcf, addressbook }\n\t * @param importDetails.addressbook\n\t * @return {Promise}\n\t */\n\tasync getContactsFromAddressBook(context, { addressbook }) {\n\t\treturn addressbook.dav\n\t\t\t.findAllAndFilterBySimpleProperties(MinimalContactProperties)\n\t\t\t.then((response) => {\n\t\t\t\t// We don't want to lose the url information\n\t\t\t\t// so we need to parse one by one\n\t\t\t\tlet failed = 0\n\t\t\t\tconst contacts = response\n\t\t\t\t\t.reduce((contacts, item) => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst contact = new Contact(item.data, addressbook)\n\t\t\t\t\t\t\tcontact.dav = item\n\t\t\t\t\t\t\tcontacts.push(contact)\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t// PARSING FAILED\n\t\t\t\t\t\t\tconsole.error('Error reading contact', item.url, item.data)\n\t\t\t\t\t\t\tconsole.error(error)\n\t\t\t\t\t\t\tfailed++\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn contacts\n\t\t\t\t\t}, [])\n\n\t\t\t\tif (failed > 0) {\n\t\t\t\t\tshowError(n(\n\t\t\t\t\t\t'contacts',\n\t\t\t\t\t\t'{failed} contact failed to be read',\n\t\t\t\t\t\t'{failed} contacts failed to be read',\n\t\t\t\t\t\tfailed,\n\t\t\t\t\t\t{ failed },\n\t\t\t\t\t))\n\t\t\t\t}\n\n\t\t\t\tcontext.commit('appendContactsToAddressbook', { addressbook, contacts })\n\t\t\t\tcontext.commit('extractGroupsFromContacts', contacts)\n\n\t\t\t\t// don't add contacts from disabled address book to contacts store\n\t\t\t\tif (addressbook.enabled) {\n\t\t\t\t\tcontext.commit('appendContacts', contacts)\n\t\t\t\t\tcontext.commit('sortContacts')\n\t\t\t\t}\n\t\t\t\treturn contacts\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\t// unrecoverable error, if no contacts were loaded,\n\t\t\t\t// remove the addressbook\n\t\t\t\t// TODO: create a failed addressbook state and show that there was an issue?\n\t\t\t\tcontext.commit('deleteAddressbook', addressbook)\n\t\t\t\tconsole.error(error)\n\t\t\t})\n\t},\n\n\t/**\n\t *\n\t * @param {object} context the store mutations\n\t * @param {object} importDetails = { vcf, addressbook }\n\t * @param importDetails.vcf\n\t * @param importDetails.addressbook\n\t */\n\tasync importContactsIntoAddressbook(context, { vcf, addressbook }) {\n\t\tconst contacts = parseVcf(vcf, addressbook)\n\t\tcontext.commit('changeStage', 'importing')\n\n\t\t// max simultaneous requests\n\t\tconst limit = pLimit(3)\n\t\tconst requests = []\n\n\t\t// create the array of requests to send\n\t\tcontacts.map(async (contact) => {\n\t\t\tconsole.info(contact)\n\n\t\t\t// Get vcard string\n\t\t\ttry {\n\t\t\t\tconst vData = contact.toStringStripQuotes()\n\t\t\t\t// push contact to server and use limit\n\t\t\t\trequests.push(limit(() => contact.addressbook.dav.createVCard(vData)\n\t\t\t\t\t.then((response) => {\n\t\t\t\t\t\t// setting the contact dav property\n\t\t\t\t\t\tcontact.dav = response\n\n\t\t\t\t\t\t// success, update store\n\t\t\t\t\t\tcontext.commit('addContact', contact)\n\t\t\t\t\t\tcontext.commit('addContactToAddressbook', contact)\n\t\t\t\t\t\tcontext.commit('extractGroupsFromContacts', [contact])\n\t\t\t\t\t\tcontext.commit('incrementAccepted')\n\t\t\t\t\t})\n\t\t\t\t\t.catch((error) => {\n\t\t\t\t\t\t// error\n\t\t\t\t\t\tcontext.commit('incrementDenied')\n\t\t\t\t\t\tconsole.error(error)\n\t\t\t\t\t})))\n\t\t\t} catch (e) {\n\t\t\t\tcontext.commit('incrementDenied')\n\t\t\t}\n\t\t})\n\n\t\tPromise.all(requests).then(() => {\n\t\t\tcontext.commit('changeStage', 'done')\n\t\t})\n\t},\n\n\t/**\n\t * Remove sharee from Addressbook\n\t *\n\t * @param {object} context the store mutations Current context\n\t * @param {object} data destructuring object\n\t * @param {object} data.addressbook the addressbook\n\t * @param {string} data.uri the sharee uri\n\t */\n\tasync removeSharee(context, { addressbook, uri }) {\n\t\ttry {\n\t\t\tawait addressbook.dav.unshare(uri)\n\t\t\tcontext.commit('removeSharee', { addressbook, uri })\n\t\t} catch (error) {\n\t\t\tconsole.error(error)\n\t\t\tthrow error\n\t\t}\n\t},\n\n\t/**\n\t * Toggle permissions of Addressbook Sharees writeable rights\n\t *\n\t * @param {object} context the store mutations Current context\n\t * @param {object} data destructuring object\n\t * @param {object} data.addressbook the addressbook\n\t * @param {string} data.uri the sharee uri\n\t * @param {boolean} data.writeable the sharee permission\n\t */\n\tasync toggleShareeWritable(context, { addressbook, uri, writeable }) {\n\t\ttry {\n\t\t\tawait addressbook.dav.share(uri, writeable)\n\t\t\tcontext.commit('updateShareeWritable', { addressbook, uri, writeable })\n\t\t} catch (error) {\n\t\t\tconsole.error(error)\n\t\t\tthrow error\n\t\t}\n\t},\n\n\t/**\n\t * Share Adressbook with User or Group\n\t *\n\t * @param {object} context the store mutations Current context\n\t * @param {object} data.addressbook the addressbook\n\t * @param {string} data.user the userId\n\t * @param {string} data.displayName the displayName\n\t * @param {string} data.uri the sharing principalScheme uri\n\t * @param {boolean} data.isGroup is this a group ?\n\t * @param data.addressbook.addressbook\n\t * @param data.addressbook.user\n\t * @param data.addressbook.displayName\n\t * @param data.addressbook.uri\n\t * @param data.addressbook.isGroup\n\t * @param root0\n\t * @param root0.addressbook\n\t * @param root0.user\n\t * @param root0.displayName\n\t * @param root0.uri\n\t * @param root0.isGroup\n\t */\n\tasync shareAddressbook(context, { addressbook, user, displayName, uri, isGroup }) {\n\t\t// Share addressbook with entered group or user\n\t\ttry {\n\t\t\tawait addressbook.dav.share(uri)\n\t\t\tcontext.commit('shareAddressbook', { addressbook, user, displayName, uri, isGroup })\n\t\t} catch (error) {\n\t\t\tconsole.error(error)\n\t\t\tthrow error\n\t\t}\n\t},\n\n\t/**\n\t * Move a contact to the provided addressbook\n\t *\n\t * @param {object} context the store mutations\n\t * @param {object} data destructuring object\n\t * @param {Contact} data.contact the contact to move\n\t * @param {object} data.addressbook the addressbook to move the contact to\n\t * @return {Contact} the new contact object\n\t */\n\tasync moveContactToAddressbook(context, { contact, addressbook }) {\n\t\t// only local move if the contact doesn't exists on the server\n\t\tif (contact.dav) {\n\t\t\ttry {\n\t\t\t\tawait contact.dav.move(addressbook.dav)\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t\tthrow error\n\t\t\t}\n\t\t}\n\t\tconst groups = contact.groups\n\t\tawait context.commit('deleteContactFromAddressbook', contact)\n\t\tawait context.commit('removeContactFromGroups', contact)\n\t\tawait context.commit('updateContactAddressbook', { contact, addressbook })\n\t\tawait context.commit('addContactToAddressbook', contact)\n\t\tawait context.commit('addContactToGroups', { contact, groupNames: groups })\n\t\treturn contact\n\t},\n\n\t/**\n\t * Copy a contact to the provided addressbook\n\t *\n\t * @param {object} context the store mutations\n\t * @param {object} data destructuring object\n\t * @param {Contact} data.contact the contact to copy\n\t * @param {object} data.addressbook the addressbook to move the contact to\n\t * @return {Contact} the new contact object\n\t */\n\tasync copyContactToAddressbook(context, { contact, addressbook }) {\n\t\t// init new contact & strip old uid\n\t\tconst vData = contact.vCard.toString().replace(/^UID.+/im, '')\n\t\tconst newContact = new Contact(vData, addressbook)\n\n\t\ttry {\n\t\t\tconst response = await contact.dav.copy(addressbook.dav)\n\t\t\t// setting the contact dav property\n\t\t\tnewContact.dav = response\n\t\t} catch (error) {\n\t\t\tconsole.error(error)\n\t\t\tthrow error\n\t\t}\n\t\t// success, update store\n\t\tawait context.commit('addContact', newContact)\n\t\tawait context.commit('addContactToAddressbook', newContact)\n\t\treturn newContact\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { showError } from '@nextcloud/dialogs'\nimport Circle from '../models/circle.ts'\nimport Member from '../models/member.ts'\nimport {\n\tacceptMember,\n\taddMembers,\n\tcreateCircle,\n\tdeleteCircle,\n\tdeleteMember,\n\teditCircleSetting,\n\tgetCircle,\n\tgetCircleMembers,\n\tgetCircles,\n\tleaveCircle,\n} from '../services/circles.ts'\nimport logger from '../services/logger.js'\n\nconst state = {\n\t/** @type {Object} Circle */\n\tcircles: {},\n}\n\nconst mutations = {\n\n\t/**\n\t * Add a circle into state\n\t *\n\t * @param {object} state the store data\n\t * @param {Circle} circle the circle to add\n\t */\n\taddCircle(state, circle) {\n\t\tif (circle.constructor.name !== Circle.name) {\n\t\t\tthrow new Error('circle must be a Circle type')\n\t\t}\n\t\tstate.circles[circle.id] = circle\n\t},\n\n\t/**\n\t * Delete circle\n\t *\n\t * @param {object} state the store data\n\t * @param {Circle} circle the circle to delete\n\t */\n\tdeleteCircle(state, circle) {\n\t\tif (!(circle.id in state.circles)) {\n\t\t\tlogger.warn('Skipping deletion of unknown circle', { circle })\n\t\t}\n\t\tdelete state.circles[circle.id]\n\t},\n\n\t/**\n\t * Append a list of members to a circle\n\t * and remove duplicates\n\t *\n\t * @param {object} state the store data\n\t * @param {Members[]} members array of members to append\n\t */\n\tappendMembersToCircle(state, members) {\n\t\tmembers.forEach((member) => member.circle.addMember(member))\n\t},\n\n\t/**\n\t * Add a member to a circle and overwrite if duplicate uid\n\t *\n\t * @param {object} state the store data\n\t * @param {object} data destructuring object\n\t * @param {string} data.circleId the circle to add the members to\n\t * @param {Member} data.member array of contacts to append\n\t */\n\taddMemberToCircle(state, { circleId, member }) {\n\t\tconst circle = state.circles[circleId]\n\t\tcircle.addMember(member)\n\t},\n\n\t/**\n\t * Delete a contact in a specified circle\n\t *\n\t * @param {object} state the store data\n\t * @param {Member} member the member to add\n\t */\n\tdeleteMemberFromCircle(state, member) {\n\t\t// Circles dependencies are managed directly from the model\n\t\tmember.delete()\n\t},\n\n\tsetCircleSettings(state, { circleId, settings }) {\n\t\tstate.circles[circleId]._data.settings = settings\n\t},\n}\n\nconst getters = {\n\tgetCircles: (state) => Object.values(state.circles),\n\tgetCircle: (state) => (id) => state.circles[id],\n}\n\nconst actions = {\n\t/**\n\t * Retrieve and commit circles\n\t *\n\t * @param {object} context the store mutations\n\t * @return {object[]} the circles\n\t */\n\tasync getCircles(context) {\n\t\tconst circles = await getCircles()\n\t\tlogger.debug(`Retrieved ${circles.length} circle(s)`, { circles })\n\n\t\tlet failure = false\n\t\tcircles.forEach((circle) => {\n\t\t\ttry {\n\t\t\t\tconst newCircle = new Circle(circle)\n\t\t\t\tcontext.commit('addCircle', newCircle)\n\t\t\t} catch (error) {\n\t\t\t\tfailure = true\n\t\t\t\tlogger.error('This circle failed to be processed', { circle, error })\n\t\t\t}\n\t\t})\n\n\t\tif (failure) {\n\t\t\tshowError(t('contacts', 'An error has occurred in team(s). Check the console for more details.'))\n\t\t}\n\n\t\treturn circles\n\t},\n\n\t/**\n\t * Retrieve and commit circles\n\t *\n\t * @param {object} context the store mutations\n\t * @param {string} circleId the circle id\n\t * @return {object[]} the circles\n\t */\n\tasync getCircle(context, circleId) {\n\t\tconst circle = await getCircle(circleId)\n\t\tlogger.debug('Retrieved 1 circle', { circle })\n\n\t\ttry {\n\t\t\tconst newCircle = new Circle(circle)\n\t\t\tcontext.commit('addCircle', newCircle)\n\t\t} catch (error) {\n\t\t\tlogger.error('This circle failed to be processed', { circle, error })\n\t\t}\n\n\t\treturn circle\n\t},\n\n\t/**\n\t * Retrieve and commit circle members\n\t *\n\t * @param {object} context the store mutations\n\t * @param {string} circleId the circle id\n\t */\n\tasync getCircleMembers(context, circleId) {\n\t\tconst circle = context.getters.getCircle(circleId)\n\t\tconst members = await getCircleMembers(circleId)\n\n\t\tlogger.debug(`${circleId} have ${members.length} member(s)`, { members })\n\t\tcontext.commit('appendMembersToCircle', members.map((member) => new Member(member, circle)))\n\t},\n\n\t/**\n\t * Create circle\n\t *\n\t * @param {object} context the store mutations Current context\n\t * @param {object} data destructuring object\n\t * @param {string} data.circleName the circle name\n\t * @param {boolean} data.isPersonal the circle is a personal one\n\t * @param {boolean} data.isLocal the circle is not distributed to the GlobalScale\n\t * @return {Circle} the new circle\n\t */\n\tasync createCircle(context, { circleName, isPersonal, isLocal }) {\n\t\ttry {\n\t\t\tconst response = await createCircle(circleName, isPersonal, isLocal)\n\t\t\tconst circle = new Circle(response)\n\t\t\tcontext.commit('addCircle', circle)\n\t\t\tlogger.debug('Created circle', { circleName, circle })\n\t\t\treturn circle\n\t\t} catch (error) {\n\t\t\tconsole.error(error)\n\t\t\tshowError(t('contacts', 'Unable to create team {circleName}', { circleName }))\n\t\t}\n\t},\n\n\t/**\n\t * Delete circle\n\t *\n\t * @param {object} context the store mutations Current context\n\t * @param {Circle} circleId the circle to delete\n\t */\n\tasync deleteCircle(context, circleId) {\n\t\tconst circle = context.getters.getCircle(circleId)\n\t\ttry {\n\t\t\tawait deleteCircle(circleId)\n\t\t\tcontext.commit('deleteCircle', circle)\n\t\t\tlogger.debug('Deleted circle', { circleId })\n\t\t} catch (error) {\n\t\t\tconsole.error(error)\n\t\t\tshowError(t('contacts', 'Unable to delete team {circleId}', circleId))\n\t\t}\n\t},\n\n\t/**\n\t * Add members to a circle\n\t *\n\t * @param {object} context the store mutations Current context\n\t * @param {object} data destructuring object\n\t * @param {string} data.circleId the circle to manage\n\t * @param {Array} data.selection the members to add, see addMembers service\n\t * @return {Member[]}\n\t */\n\tasync addMembersToCircle(context, { circleId, selection }) {\n\t\tconst circle = context.getters.getCircle(circleId)\n\t\tconst results = await addMembers(circleId, selection)\n\t\tconst members = results.map((member) => new Member(member, circle))\n\n\t\tlogger.debug('Added members to circle', { circle, members })\n\t\tcontext.commit('appendMembersToCircle', members)\n\n\t\treturn members\n\t},\n\n\t/**\n\t * Delete a member from a circle\n\t *\n\t * @param {object} context the store mutations Current context\n\t * @param {Member} member the member to remove\n\t * @param {boolean} [leave] leave the circle instead of removing the member\n\t */\n\tasync deleteMemberFromCircle(context, { member, leave = false }) {\n\t\tconst circleId = member.circle.id\n\t\tconst memberId = member.id\n\n\t\tif (leave) {\n\t\t\tconst circle = await leaveCircle(circleId)\n\t\t\tmember.circle.updateData(circle)\n\n\t\t\t// If the circle is not visible, we remove it from the list\n\t\t\tif (!member.circle.isVisible && !member.circle.isMember) {\n\t\t\t\tawait context.commit('deleteCircle', circle)\n\t\t\t\tlogger.debug('Deleted circle', { circleId, memberId })\n\t\t\t}\n\t\t} else {\n\t\t\tawait deleteMember(circleId, memberId)\n\t\t}\n\n\t\t// success, let's remove from store\n\t\tcontext.commit('deleteMemberFromCircle', member)\n\t\tlogger.debug('Deleted member', { circleId, memberId })\n\t},\n\n\t/**\n\t * Accept a circle member request\n\t *\n\t * @param {object} context the store mutations Current context\n\t * @param {object} data destructuring object\n\t * @param {string} data.circleId the circle id\n\t * @param {string} data.memberId the member id\n\t */\n\tasync acceptCircleMember(context, { circleId, memberId }) {\n\t\tconst circle = context.getters.getCircle(circleId)\n\n\t\tconst result = await acceptMember(circleId, memberId)\n\t\tconst member = new Member(result, circle)\n\n\t\tawait context.commit('addMemberToCircle', { circleId, member })\n\t},\n\n\tasync editCircleSetting(context, { circleId, setting }) {\n\t\tconst { settings } = await editCircleSetting(circleId, setting)\n\t\tawait context.commit('setCircleSettings', {\n\t\t\tcircleId,\n\t\t\tsettings,\n\t\t})\n\t},\n\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport default {\n\tprops: {\n\t\t// The current component root\n\t\tcomponent: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t},\n}\n","\n\n\n\n\n","\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport default [\n\t'Africa/Abidjan',\n\t'Africa/Accra',\n\t'Africa/Addis_Ababa',\n\t'Africa/Algiers',\n\t'Africa/Asmara',\n\t'Africa/Bamako',\n\t'Africa/Bangui',\n\t'Africa/Banjul',\n\t'Africa/Bissau',\n\t'Africa/Blantyre',\n\t'Africa/Brazzaville',\n\t'Africa/Bujumbura',\n\t'Africa/Cairo',\n\t'Africa/Casablanca',\n\t'Africa/Ceuta',\n\t'Africa/Conakry',\n\t'Africa/Dakar',\n\t'Africa/Dar_es_Salaam',\n\t'Africa/Djibouti',\n\t'Africa/Douala',\n\t'Africa/El_Aaiun',\n\t'Africa/Freetown',\n\t'Africa/Gaborone',\n\t'Africa/Harare',\n\t'Africa/Johannesburg',\n\t'Africa/Juba',\n\t'Africa/Kampala',\n\t'Africa/Khartoum',\n\t'Africa/Kigali',\n\t'Africa/Kinshasa',\n\t'Africa/Lagos',\n\t'Africa/Libreville',\n\t'Africa/Lome',\n\t'Africa/Luanda',\n\t'Africa/Lubumbashi',\n\t'Africa/Lusaka',\n\t'Africa/Malabo',\n\t'Africa/Maputo',\n\t'Africa/Maseru',\n\t'Africa/Mbabane',\n\t'Africa/Mogadishu',\n\t'Africa/Monrovia',\n\t'Africa/Nairobi',\n\t'Africa/Ndjamena',\n\t'Africa/Niamey',\n\t'Africa/Nouakchott',\n\t'Africa/Ouagadougou',\n\t'Africa/Porto-Novo',\n\t'Africa/Sao_Tome',\n\t'Africa/Tripoli',\n\t'Africa/Tunis',\n\t'Africa/Windhoek',\n\t'America/Adak',\n\t'America/Anchorage',\n\t'America/Anguilla',\n\t'America/Antigua',\n\t'America/Araguaina',\n\t'America/Argentina/Buenos_Aires',\n\t'America/Argentina/Catamarca',\n\t'America/Argentina/Cordoba',\n\t'America/Argentina/Jujuy',\n\t'America/Argentina/La_Rioja',\n\t'America/Argentina/Mendoza',\n\t'America/Argentina/Rio_Gallegos',\n\t'America/Argentina/Salta',\n\t'America/Argentina/San_Juan',\n\t'America/Argentina/San_Luis',\n\t'America/Argentina/Tucuman',\n\t'America/Argentina/Ushuaia',\n\t'America/Aruba',\n\t'America/Asuncion',\n\t'America/Atikokan',\n\t'America/Bahia',\n\t'America/Bahia_Banderas',\n\t'America/Barbados',\n\t'America/Belem',\n\t'America/Belize',\n\t'America/Blanc-Sablon',\n\t'America/Boa_Vista',\n\t'America/Bogota',\n\t'America/Boise',\n\t'America/Cambridge_Bay',\n\t'America/Campo_Grande',\n\t'America/Cancun',\n\t'America/Caracas',\n\t'America/Cayenne',\n\t'America/Cayman',\n\t'America/Chicago',\n\t'America/Chihuahua',\n\t'America/Costa_Rica',\n\t'America/Creston',\n\t'America/Cuiaba',\n\t'America/Curacao',\n\t'America/Danmarkshavn',\n\t'America/Dawson',\n\t'America/Dawson_Creek',\n\t'America/Denver',\n\t'America/Detroit',\n\t'America/Dominica',\n\t'America/Edmonton',\n\t'America/Eirunepe',\n\t'America/El_Salvador',\n\t'America/Fort_Nelson',\n\t'America/Fortaleza',\n\t'America/Glace_Bay',\n\t'America/Godthab',\n\t'America/Goose_Bay',\n\t'America/Grand_Turk',\n\t'America/Grenada',\n\t'America/Guadeloupe',\n\t'America/Guatemala',\n\t'America/Guayaquil',\n\t'America/Guyana',\n\t'America/Halifax',\n\t'America/Havana',\n\t'America/Hermosillo',\n\t'America/Indiana/Indianapolis',\n\t'America/Indiana/Knox',\n\t'America/Indiana/Marengo',\n\t'America/Indiana/Petersburg',\n\t'America/Indiana/Tell_City',\n\t'America/Indiana/Vevay',\n\t'America/Indiana/Vincennes',\n\t'America/Indiana/Winamac',\n\t'America/Inuvik',\n\t'America/Iqaluit',\n\t'America/Jamaica',\n\t'America/Juneau',\n\t'America/Kentucky/Louisville',\n\t'America/Kentucky/Monticello',\n\t'America/Kralendijk',\n\t'America/La_Paz',\n\t'America/Lima',\n\t'America/Los_Angeles',\n\t'America/Lower_Princes',\n\t'America/Maceio',\n\t'America/Managua',\n\t'America/Manaus',\n\t'America/Marigot',\n\t'America/Martinique',\n\t'America/Matamoros',\n\t'America/Mazatlan',\n\t'America/Menominee',\n\t'America/Merida',\n\t'America/Metlakatla',\n\t'America/Mexico_City',\n\t'America/Miquelon',\n\t'America/Moncton',\n\t'America/Monterrey',\n\t'America/Montevideo',\n\t'America/Montserrat',\n\t'America/Nassau',\n\t'America/New_York',\n\t'America/Nipigon',\n\t'America/Nome',\n\t'America/Noronha',\n\t'America/North_Dakota/Beulah',\n\t'America/North_Dakota/Center',\n\t'America/North_Dakota/New_Salem',\n\t'America/Ojinaga',\n\t'America/Panama',\n\t'America/Pangnirtung',\n\t'America/Paramaribo',\n\t'America/Phoenix',\n\t'America/Port-au-Prince',\n\t'America/Port_of_Spain',\n\t'America/Porto_Velho',\n\t'America/Puerto_Rico',\n\t'America/Rainy_River',\n\t'America/Rankin_Inlet',\n\t'America/Recife',\n\t'America/Regina',\n\t'America/Resolute',\n\t'America/Rio_Branco',\n\t'America/Santarem',\n\t'America/Santiago',\n\t'America/Santo_Domingo',\n\t'America/Sao_Paulo',\n\t'America/Scoresbysund',\n\t'America/Sitka',\n\t'America/St_Barthelemy',\n\t'America/St_Johns',\n\t'America/St_Kitts',\n\t'America/St_Lucia',\n\t'America/St_Thomas',\n\t'America/St_Vincent',\n\t'America/Swift_Current',\n\t'America/Tegucigalpa',\n\t'America/Thule',\n\t'America/Thunder_Bay',\n\t'America/Tijuana',\n\t'America/Toronto',\n\t'America/Tortola',\n\t'America/Vancouver',\n\t'America/Whitehorse',\n\t'America/Winnipeg',\n\t'America/Yakutat',\n\t'America/Yellowknife',\n\t'Antarctica/Casey',\n\t'Antarctica/Davis',\n\t'Antarctica/DumontDUrville',\n\t'Antarctica/Macquarie',\n\t'Antarctica/Mawson',\n\t'Antarctica/McMurdo',\n\t'Antarctica/Palmer',\n\t'Antarctica/Rothera',\n\t'Antarctica/Syowa',\n\t'Antarctica/Troll',\n\t'Antarctica/Vostok',\n\t'Arctic/Longyearbyen',\n\t'Asia/Aden',\n\t'Asia/Almaty',\n\t'Asia/Amman',\n\t'Asia/Anadyr',\n\t'Asia/Aqtau',\n\t'Asia/Aqtobe',\n\t'Asia/Ashgabat',\n\t'Asia/Atyrau',\n\t'Asia/Baghdad',\n\t'Asia/Bahrain',\n\t'Asia/Baku',\n\t'Asia/Bangkok',\n\t'Asia/Barnaul',\n\t'Asia/Beirut',\n\t'Asia/Bishkek',\n\t'Asia/Brunei',\n\t'Asia/Chita',\n\t'Asia/Choibalsan',\n\t'Asia/Colombo',\n\t'Asia/Damascus',\n\t'Asia/Dhaka',\n\t'Asia/Dili',\n\t'Asia/Dubai',\n\t'Asia/Dushanbe',\n\t'Asia/Famagusta',\n\t'Asia/Gaza',\n\t'Asia/Hebron',\n\t'Asia/Ho_Chi_Minh',\n\t'Asia/Hong_Kong',\n\t'Asia/Hovd',\n\t'Asia/Irkutsk',\n\t'Asia/Istanbul',\n\t'Asia/Jakarta',\n\t'Asia/Jayapura',\n\t'Asia/Jerusalem',\n\t'Asia/Kabul',\n\t'Asia/Kamchatka',\n\t'Asia/Karachi',\n\t'Asia/Kathmandu',\n\t'Asia/Khandyga',\n\t'Asia/Kolkata',\n\t'Asia/Krasnoyarsk',\n\t'Asia/Kuala_Lumpur',\n\t'Asia/Kuching',\n\t'Asia/Kuwait',\n\t'Asia/Macau',\n\t'Asia/Magadan',\n\t'Asia/Makassar',\n\t'Asia/Manila',\n\t'Asia/Muscat',\n\t'Asia/Nicosia',\n\t'Asia/Novokuznetsk',\n\t'Asia/Novosibirsk',\n\t'Asia/Omsk',\n\t'Asia/Oral',\n\t'Asia/Phnom_Penh',\n\t'Asia/Pontianak',\n\t'Asia/Pyongyang',\n\t'Asia/Qatar',\n\t'Asia/Qyzylorda',\n\t'Asia/Riyadh',\n\t'Asia/Sakhalin',\n\t'Asia/Samarkand',\n\t'Asia/Seoul',\n\t'Asia/Shanghai',\n\t'Asia/Singapore',\n\t'Asia/Srednekolymsk',\n\t'Asia/Taipei',\n\t'Asia/Tashkent',\n\t'Asia/Tbilisi',\n\t'Asia/Tehran',\n\t'Asia/Thimphu',\n\t'Asia/Tokyo',\n\t'Asia/Tomsk',\n\t'Asia/Ulaanbaatar',\n\t'Asia/Urumqi',\n\t'Asia/Ust-Nera',\n\t'Asia/Vientiane',\n\t'Asia/Vladivostok',\n\t'Asia/Yakutsk',\n\t'Asia/Yangon',\n\t'Asia/Yekaterinburg',\n\t'Asia/Yerevan',\n\t'Atlantic/Azores',\n\t'Atlantic/Bermuda',\n\t'Atlantic/Canary',\n\t'Atlantic/Cape_Verde',\n\t'Atlantic/Faroe',\n\t'Atlantic/Madeira',\n\t'Atlantic/Reykjavik',\n\t'Atlantic/South_Georgia',\n\t'Atlantic/St_Helena',\n\t'Atlantic/Stanley',\n\t'Australia/Adelaide',\n\t'Australia/Brisbane',\n\t'Australia/Broken_Hill',\n\t'Australia/Currie',\n\t'Australia/Darwin',\n\t'Australia/Eucla',\n\t'Australia/Hobart',\n\t'Australia/Lindeman',\n\t'Australia/Lord_Howe',\n\t'Australia/Melbourne',\n\t'Australia/Perth',\n\t'Australia/Sydney',\n\t'Europe/Amsterdam',\n\t'Europe/Andorra',\n\t'Europe/Astrakhan',\n\t'Europe/Athens',\n\t'Europe/Belgrade',\n\t'Europe/Berlin',\n\t'Europe/Bratislava',\n\t'Europe/Brussels',\n\t'Europe/Bucharest',\n\t'Europe/Budapest',\n\t'Europe/Busingen',\n\t'Europe/Chisinau',\n\t'Europe/Copenhagen',\n\t'Europe/Dublin',\n\t'Europe/Gibraltar',\n\t'Europe/Guernsey',\n\t'Europe/Helsinki',\n\t'Europe/Isle_of_Man',\n\t'Europe/Istanbul',\n\t'Europe/Jersey',\n\t'Europe/Kaliningrad',\n\t'Europe/Kiev',\n\t'Europe/Kirov',\n\t'Europe/Lisbon',\n\t'Europe/Ljubljana',\n\t'Europe/London',\n\t'Europe/Luxembourg',\n\t'Europe/Madrid',\n\t'Europe/Malta',\n\t'Europe/Mariehamn',\n\t'Europe/Minsk',\n\t'Europe/Monaco',\n\t'Europe/Moscow',\n\t'Europe/Nicosia',\n\t'Europe/Oslo',\n\t'Europe/Paris',\n\t'Europe/Podgorica',\n\t'Europe/Prague',\n\t'Europe/Riga',\n\t'Europe/Rome',\n\t'Europe/Samara',\n\t'Europe/San_Marino',\n\t'Europe/Sarajevo',\n\t'Europe/Saratov',\n\t'Europe/Simferopol',\n\t'Europe/Skopje',\n\t'Europe/Sofia',\n\t'Europe/Stockholm',\n\t'Europe/Tallinn',\n\t'Europe/Tirane',\n\t'Europe/Ulyanovsk',\n\t'Europe/Uzhgorod',\n\t'Europe/Vaduz',\n\t'Europe/Vatican',\n\t'Europe/Vienna',\n\t'Europe/Vilnius',\n\t'Europe/Volgograd',\n\t'Europe/Warsaw',\n\t'Europe/Zagreb',\n\t'Europe/Zaporozhye',\n\t'Europe/Zurich',\n\t'Indian/Antananarivo',\n\t'Indian/Chagos',\n\t'Indian/Christmas',\n\t'Indian/Cocos',\n\t'Indian/Comoro',\n\t'Indian/Kerguelen',\n\t'Indian/Mahe',\n\t'Indian/Maldives',\n\t'Indian/Mauritius',\n\t'Indian/Mayotte',\n\t'Indian/Reunion',\n\t'Pacific/Apia',\n\t'Pacific/Auckland',\n\t'Pacific/Bougainville',\n\t'Pacific/Chatham',\n\t'Pacific/Chuuk',\n\t'Pacific/Easter',\n\t'Pacific/Efate',\n\t'Pacific/Enderbury',\n\t'Pacific/Fakaofo',\n\t'Pacific/Fiji',\n\t'Pacific/Funafuti',\n\t'Pacific/Galapagos',\n\t'Pacific/Gambier',\n\t'Pacific/Guadalcanal',\n\t'Pacific/Guam',\n\t'Pacific/Honolulu',\n\t'Pacific/Johnston',\n\t'Pacific/Kiritimati',\n\t'Pacific/Kosrae',\n\t'Pacific/Kwajalein',\n\t'Pacific/Majuro',\n\t'Pacific/Marquesas',\n\t'Pacific/Midway',\n\t'Pacific/Nauru',\n\t'Pacific/Niue',\n\t'Pacific/Norfolk',\n\t'Pacific/Noumea',\n\t'Pacific/Pago_Pago',\n\t'Pacific/Palau',\n\t'Pacific/Pitcairn',\n\t'Pacific/Pohnpei',\n\t'Pacific/Port_Moresby',\n\t'Pacific/Rarotonga',\n\t'Pacific/Saipan',\n\t'Pacific/Tahiti',\n\t'Pacific/Tarawa',\n\t'Pacific/Tongatapu',\n\t'Pacific/Wake',\n\t'Pacific/Wallis',\n]\n","import { loadState } from '@nextcloud/initial-state'\n/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport ICAL from 'ical.js'\nimport ActionCopyNtoFN from '../components/Actions/ActionCopyNtoFN.vue'\nimport NcActionToggleYear from '../components/Actions/NcActionToggleYear.vue'\nimport { otherContacts } from '../utils/chartUtils.js'\nimport zones from './zones.js'\n\n// Load the default profile (for example, home or work) configured by the user\nconst defaultProfileState = loadState('contacts', 'defaultProfile', 'HOME')\nconst localesState = loadState('contacts', 'locales', false)\nconst locales = localesState\n\t? localesState.map(({ code, name }) => ({\n\t\t\tid: code.toLowerCase().replace('_', '-'),\n\t\t\tname,\n\t\t}))\n\t: []\n\nconsole.debug('Initial state loaded', 'defaultProfileState', defaultProfileState)\nconsole.debug('Initial state loaded', 'localesState', localesState)\n\nconst properties = {\n\tn: {\n\t\treadableName: t('contacts', 'Detailed name'),\n\t\treadableValues: [\n\t\t\tt('contacts', 'Last name'),\n\t\t\tt('contacts', 'First name'),\n\t\t\tt('contacts', 'Additional names'),\n\t\t\tt('contacts', 'Prefix'),\n\t\t\tt('contacts', 'Suffix'),\n\t\t],\n\t\tdisplayOrder: [3, 1, 2, 0, 4],\n\t\tdefaultValue: {\n\t\t\tvalue: ['', '', '', '', ''],\n\t\t},\n\t\ticon: 'icon-detailed-name',\n\t\tactions: [\n\t\t\tActionCopyNtoFN,\n\t\t],\n\t\tprimary: false,\n\t},\n\tnickname: {\n\t\treadableName: t('contacts', 'Nickname'),\n\t\ticon: 'icon-detailed-name',\n\t\tprimary: false,\n\t},\n\t'x-phonetic-first-name': {\n\t\treadableName: t('contacts', 'Phonetic first name'),\n\t\ticon: 'icon-detailed-name',\n\t\tforce: 'text',\n\t\tprimary: false,\n\t},\n\t'x-phonetic-last-name': {\n\t\treadableName: t('contacts', 'Phonetic last name'),\n\t\ticon: 'icon-detailed-name',\n\t\tforce: 'text',\n\t\tprimary: false,\n\t},\n\tnote: {\n\t\treadableName: t('contacts', 'Notes'),\n\t\ticon: 'icon-note',\n\t\tprimary: true,\n\t\tdefault: true,\n\t\tdefaultValue: {\n\t\t\tvalue: '',\n\t\t},\n\t},\n\turl: {\n\t\tmultiple: true,\n\t\treadableName: t('contacts', 'Website'),\n\t\ticon: 'icon-public',\n\t\tprimary: true,\n\t},\n\tgeo: {\n\t\tmultiple: true,\n\t\treadableName: t('contacts', 'Location'),\n\t\ticon: 'icon-location',\n\t\tdefaultjCal: {\n\t\t\t'3.0': [{}, 'FLOAT', '90.000;0.000'],\n\t\t\t'4.0': [{}, 'URI', 'geo:90.000,0.000'],\n\t\t},\n\t\tprimary: false,\n\t},\n\tcloud: {\n\t\tmultiple: true,\n\t\ticon: 'icon-federated-cloud-id',\n\t\treadableName: t('contacts', 'Federated Cloud ID'),\n\t\tforce: 'text',\n\t\tdefaultValue: {\n\t\t\tvalue: [''],\n\t\t\ttype: [defaultProfileState],\n\t\t},\n\t\toptions: [\n\t\t\t{ id: 'HOME', name: t('contacts', 'Home') },\n\t\t\t{ id: 'WORK', name: t('contacts', 'Work') },\n\t\t\t{ id: 'OTHER', name: t('contacts', 'Other') },\n\t\t],\n\t\tprimary: false,\n\t},\n\tadr: {\n\t\tmultiple: true,\n\t\treadableName: t('contacts', 'Address'),\n\t\treadableValues: [\n\t\t\tt('contacts', 'Post office box'),\n\t\t\tt('contacts', 'Extended address'),\n\t\t\tt('contacts', 'Address'),\n\t\t\tt('contacts', 'City'),\n\t\t\tt('contacts', 'State or province'),\n\t\t\tt('contacts', 'Postal code'),\n\t\t\tt('contacts', 'Country'),\n\t\t],\n\t\tdisplayOrder: [0, 2, 1, 5, 3, 4, 6],\n\t\ticon: 'icon-address',\n\t\tdefault: true,\n\t\tdefaultValue: {\n\t\t\tvalue: ['', '', '', '', '', '', ''],\n\t\t\ttype: [defaultProfileState],\n\t\t},\n\t\toptions: [\n\t\t\t{ id: 'HOME', name: t('contacts', 'Home') },\n\t\t\t{ id: 'WORK', name: t('contacts', 'Work') },\n\t\t\t{ id: 'OTHER', name: t('contacts', 'Other') },\n\t\t],\n\t\tprimary: true,\n\t},\n\tbday: {\n\t\treadableName: t('contacts', 'Birthday'),\n\t\ticon: 'icon-calendar-dark',\n\t\tforce: 'date', // most ppl prefer date for birthdays, time is usually irrelevant\n\t\tdefaultValue: {\n\t\t\tvalue: new ICAL.VCardTime(null, null, 'date').fromJSDate(new Date()),\n\t\t},\n\t\tactions: [\n\t\t\tNcActionToggleYear,\n\t\t],\n\t\tprimary: true,\n\t},\n\tbirthplace: {\n\t\treadableName: t('contacts', 'Place of birth'),\n\t\ticon: 'icon-location',\n\t\tforce: 'text',\n\t\tprimary: false,\n\t},\n\tanniversary: {\n\t\treadableName: t('contacts', 'Anniversary'),\n\t\ticon: 'icon-anniversary',\n\t\tforce: 'date', // most ppl prefer date for birthdays, time is usually irrelevant\n\t\tdefaultValue: {\n\t\t\tvalue: new ICAL.VCardTime(null, null, 'date').fromJSDate(new Date()),\n\t\t},\n\t\tprimary: false,\n\t},\n\tdeathdate: {\n\t\treadableName: t('contacts', 'Date of death'),\n\t\ticon: 'icon-death-day',\n\t\tforce: 'date', // most ppl prefer date for birthdays, time is usually irrelevant\n\t\tdefaultValue: {\n\t\t\tvalue: new ICAL.VCardTime(null, null, 'date').fromJSDate(new Date()),\n\t\t},\n\t\tprimary: false,\n\t},\n\tdeathplace: {\n\t\treadableName: t('contacts', 'Place of death'),\n\t\ticon: 'icon-location',\n\t\tforce: 'text',\n\t\tprimary: false,\n\t},\n\temail: {\n\t\tmultiple: true,\n\t\treadableName: t('contacts', 'Email'),\n\t\ticon: 'icon-mail',\n\t\tdefault: true,\n\t\tdefaultValue: {\n\t\t\tvalue: '',\n\t\t\ttype: [defaultProfileState],\n\t\t},\n\t\toptions: [\n\t\t\t{ id: 'HOME', name: t('contacts', 'Home') },\n\t\t\t{ id: 'WORK', name: t('contacts', 'Work') },\n\t\t\t{ id: 'OTHER', name: t('contacts', 'Other') },\n\t\t],\n\t\tprimary: true,\n\t},\n\timpp: {\n\t\tmultiple: true,\n\t\treadableName: t('contacts', 'Instant messaging'),\n\t\ticon: 'icon-instant-message',\n\t\tdefaultValue: {\n\t\t\tvalue: [''],\n\t\t\ttype: ['SKYPE'],\n\t\t},\n\t\toptions: [\n\t\t\t{ id: 'IRC', name: 'IRC' },\n\t\t\t{ id: 'KAKAOTALK', name: 'KakaoTalk' },\n\t\t\t{ id: 'KIK', name: 'KiK' },\n\t\t\t{ id: 'LINE', name: 'Line' },\n\t\t\t{ id: 'MATRIX', name: 'Matrix' },\n\t\t\t{ id: 'QQ', name: 'QQ' },\n\t\t\t{ id: 'SIGNAL', name: 'Signal' },\n\t\t\t{ id: 'SIP', name: 'SIP' },\n\t\t\t{ id: 'SKYPE', name: 'Skype' },\n\t\t\t{ id: 'TELEGRAM', name: 'Telegram' },\n\t\t\t{ id: 'THREEMA', name: 'Threema' },\n\t\t\t{ id: 'WECHAT', name: 'WeChat' },\n\t\t\t{ id: 'XMPP', name: 'XMPP' },\n\t\t\t{ id: 'ZOOM', name: 'Zoom' },\n\t\t],\n\t\tprimary: false,\n\t},\n\ttel: {\n\t\tmultiple: true,\n\t\treadableName: t('contacts', 'Phone'),\n\t\ticon: 'icon-phone',\n\t\tdefault: true,\n\t\tdefaultValue: {\n\t\t\tvalue: '',\n\t\t\ttype: [defaultProfileState, 'VOICE'],\n\t\t},\n\t\toptions: [\n\t\t\t{ id: 'HOME,VOICE', name: t('contacts', 'Home') },\n\t\t\t{ id: 'HOME', name: t('contacts', 'Home') },\n\t\t\t{ id: 'WORK,VOICE', name: t('contacts', 'Work') },\n\t\t\t{ id: 'WORK', name: t('contacts', 'Work') },\n\t\t\t{ id: 'CELL', name: t('contacts', 'Mobile') },\n\t\t\t{ id: 'CELL,VOICE', name: t('contacts', 'Mobile') },\n\t\t\t{ id: 'WORK,CELL', name: t('contacts', 'Work mobile') },\n\t\t\t{ id: 'HOME,CELL', name: t('contacts', 'Home mobile') },\n\t\t\t{ id: 'FAX', name: t('contacts', 'Fax') },\n\t\t\t{ id: 'HOME,FAX', name: t('contacts', 'Fax home') },\n\t\t\t{ id: 'WORK,FAX', name: t('contacts', 'Fax work') },\n\t\t\t{ id: 'PAGER', name: t('contacts', 'Pager') },\n\t\t\t{ id: 'VOICE', name: t('contacts', 'Voice') },\n\t\t\t{ id: 'CAR', name: t('contacts', 'Car') },\n\t\t\t{ id: 'WORK,PAGER', name: t('contacts', 'Work pager') },\n\t\t],\n\t\tprimary: true,\n\t},\n\t'x-managersname': {\n\t\tmultiple: false,\n\t\tforce: 'select',\n\t\t// TRANSLATORS The supervisor of an employee\n\t\treadableName: t('contacts', 'Line manager'),\n\t\ticon: 'icon-manager',\n\t\tdefault: false,\n\t\toptions({ contact, $store, selectType }) {\n\t\t\t// Only allow contacts of the same address book\n\t\t\tconst contacts = otherContacts({\n\t\t\t\t$store,\n\t\t\t\tself: contact,\n\t\t\t})\n\n\t\t\t// Reduce to an object to eliminate duplicates\n\t\t\treturn Object.values(contacts.reduce((prev, { key }) => {\n\t\t\t\tconst contact = $store.getters.getContact(key)\n\t\t\t\treturn {\n\t\t\t\t\t...prev,\n\t\t\t\t\t[contact.uid]: {\n\t\t\t\t\t\tid: contact.key,\n\t\t\t\t\t\tname: contact.displayName,\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t}, selectType ? { [selectType.value]: selectType } : {}))\n\t\t},\n\t\tprimary: true,\n\t},\n\t'x-socialprofile': {\n\t\tmultiple: true,\n\t\tforce: 'text',\n\t\ticon: 'icon-social',\n\t\treadableName: t('contacts', 'Social network'),\n\t\tdefaultValue: {\n\t\t\tvalue: '',\n\t\t\ttype: ['facebook'],\n\t\t},\n\t\toptions: [\n\t\t\t{ id: 'FACEBOOK', name: 'Facebook', placeholder: 'https://facebook.com/…' },\n\t\t\t{ id: 'GITHUB', name: 'GitHub', placeholder: 'https://github.com/…' },\n\t\t\t{ id: 'GOOGLEPLUS', name: 'Google+', placeholder: 'https://plus.google.com/…' },\n\t\t\t{ id: 'INSTAGRAM', name: 'Instagram', placeholder: 'https://instagram.com/…' },\n\t\t\t{ id: 'LINKEDIN', name: 'LinkedIn', placeholder: 'https://linkedin.com/…' },\n\t\t\t{ id: 'XING', name: 'Xing', placeholder: 'https://www.xing.com/profile/…' },\n\t\t\t{ id: 'PINTEREST', name: 'Pinterest', placeholder: 'https://pinterest.com/…' },\n\t\t\t{ id: 'QZONE', name: 'QZone', placeholder: 'https://qzone.com/…' },\n\t\t\t{ id: 'TUMBLR', name: 'Tumblr', placeholder: 'https://tumblr.com/…' },\n\t\t\t{ id: 'TWITTER', name: 'Twitter', placeholder: 'https://twitter.com/…' },\n\t\t\t{ id: 'WECHAT', name: 'WeChat', placeholder: 'https://wechat.com/…' },\n\t\t\t{ id: 'YOUTUBE', name: 'YouTube', placeholder: 'https://youtube.com/…' },\n\t\t\t{ id: 'MASTODON', name: 'Mastodon', placeholder: 'https://mastodon.social/…' },\n\t\t\t{ id: 'DIASPORA', name: 'Diaspora', placeholder: 'https://joindiaspora.com/…' },\n\t\t\t{ id: 'NEXTCLOUD', name: 'Nextcloud', placeholder: 'Link to profile page (https://nextcloud.example.com/…)' },\n\t\t\t{ id: 'OTHER', name: 'Other', placeholder: 'https://example.com/…' },\n\t\t],\n\t\tprimary: true,\n\t},\n\trelationship: {\n\t\treadableName: t('contacts', 'Relationship to you'),\n\t\tforce: 'select',\n\t\ticon: 'icon-relation-to-you',\n\t\toptions: [\n\t\t\t{ id: 'SPOUSE', name: t('contacts', 'Spouse') },\n\t\t\t{ id: 'CHILD', name: t('contacts', 'Child') },\n\t\t\t{ id: 'MOTHER', name: t('contacts', 'Mother') },\n\t\t\t{ id: 'FATHER', name: t('contacts', 'Father') },\n\t\t\t{ id: 'PARENT', name: t('contacts', 'Parent') },\n\t\t\t{ id: 'BROTHER', name: t('contacts', 'Brother') },\n\t\t\t{ id: 'SISTER', name: t('contacts', 'Sister') },\n\t\t\t{ id: 'RELATIVE', name: t('contacts', 'Relative') },\n\t\t\t{ id: 'FRIEND', name: t('contacts', 'Friend') },\n\t\t\t{ id: 'COLLEAGUE', name: t('contacts', 'Colleague') },\n\t\t\t// TRANSLATORS The supervisor of an employee\n\t\t\t{ id: 'MANAGER', name: t('contacts', 'Line manager') },\n\t\t\t{ id: 'ASSISTANT', name: t('contacts', 'Assistant') },\n\t\t],\n\t\tprimary: false,\n\t},\n\trelated: {\n\t\tmultiple: true,\n\t\treadableName: t('contacts', 'Related contacts'),\n\t\ticon: 'icon-related-contact',\n\t\tdefaultValue: {\n\t\t\tvalue: [''],\n\t\t\ttype: ['CONTACT'],\n\t\t},\n\t\toptions: [\n\t\t\t{ id: 'CONTACT', name: t('contacts', 'Contact') },\n\t\t\t{ id: 'AGENT', name: t('contacts', 'Agent') },\n\t\t\t{ id: 'EMERGENCY', name: t('contacts', 'Emergency') },\n\t\t\t{ id: 'FRIEND', name: t('contacts', 'Friend') },\n\t\t\t{ id: 'COLLEAGUE', name: t('contacts', 'Colleague') },\n\t\t\t{ id: 'COWORKER', name: t('contacts', 'Co-worker') },\n\t\t\t// TRANSLATORS The supervisor of an employee\n\t\t\t{ id: 'MANAGER', name: t('contacts', 'Line manager') },\n\t\t\t{ id: 'ASSISTANT', name: t('contacts', 'Assistant') },\n\t\t\t{ id: 'SPOUSE', name: t('contacts', 'Spouse') },\n\t\t\t{ id: 'CHILD', name: t('contacts', 'Child') },\n\t\t\t{ id: 'MOTHER', name: t('contacts', 'Mother') },\n\t\t\t{ id: 'FATHER', name: t('contacts', 'Father') },\n\t\t\t{ id: 'PARENT', name: t('contacts', 'Parent') },\n\t\t\t{ id: 'BROTHER', name: t('contacts', 'Brother') },\n\t\t\t{ id: 'SISTER', name: t('contacts', 'Sister') },\n\t\t\t{ id: 'RELATIVE', name: t('contacts', 'Relative') },\n\t\t],\n\t\tprimary: false,\n\t},\n\tgender: {\n\t\treadableName: t('contacts', 'Gender'),\n\t\tdefaultValue: {\n\t\t\t// default to Female 🙋\n\t\t\tvalue: 'F',\n\t\t},\n\t\ticon: 'icon-gender',\n\t\tforce: 'select',\n\t\toptions: [\n\t\t\t{ id: 'F', name: t('contacts', 'Female') },\n\t\t\t{ id: 'M', name: t('contacts', 'Male') },\n\t\t\t{ id: 'O', name: t('contacts', 'Other') },\n\t\t\t{ id: 'N', name: t('contacts', 'None') },\n\t\t\t{ id: 'U', name: t('contacts', 'Unknown') },\n\t\t],\n\t\tprimary: false,\n\t},\n\ttz: {\n\t\treadableName: t('contacts', 'Time zone'),\n\t\tforce: 'select',\n\t\ticon: 'icon-timezone',\n\t\toptions: zones.map((zone) => ({\n\t\t\tid: zone,\n\t\t\tname: zone,\n\t\t})),\n\t\tprimary: false,\n\t},\n\tlang: {\n\t\treadableName: t('contacts', 'Spoken languages'),\n\t\ticon: 'icon-spoken-lang',\n\t\tdefaultValue: {\n\t\t\tvalue: 'en',\n\t\t},\n\t\tmultiple: true,\n\t\tprimary: false,\n\t},\n}\n\nif (locales.length > 0) {\n\tproperties.lang.force = 'select'\n\tproperties.lang.options = locales\n\tproperties.lang.greedyMatch = function(value, options) {\n\t\t// each locale already have the base code (e.g. fr in fr_ca)\n\t\t// in the list, meaning the only use case for this is a more\n\t\t// complete language tag than the short one we have\n\t\t// value: fr-ca-xxx... will be matched with option fr\n\t\treturn options.find(({ id }) => {\n\t\t\treturn id === value.split('-')[0]\n\t\t})\n\t}\n}\n\nconst fieldOrder = [\n\t'title',\n\t'org',\n\n\t// primary fields\n\t'tel',\n\t'email',\n\t'adr',\n\t'bday',\n\t'url',\n\t'x-socialprofile',\n\t'x-managersname',\n\n\t// secondary fields\n\t'birthplace',\n\t'anniversary',\n\t'deathdate',\n\t'deathplace',\n\t'n',\n\t'nickname',\n\t'x-phonetic-first-name',\n\t'x-phonetic-last-name',\n\t'gender',\n\t'cloud',\n\t'impp',\n\t'geo',\n\t'note',\n\t'lang',\n\t'related',\n\t'relationship',\n\t'tz',\n\n\t'categories',\n\t'role',\n]\n\nexport default { properties, fieldOrder }\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport rfcProps from '../../models/rfcProps.js'\n\n// https://tools.ietf.org/html/rfc6350#section-6.2.7\n\nexport default {\n\tname: 'bad gender type',\n\trun: (contact) => {\n\t\treturn contact.vCard.hasProperty('gender')\n\t\t\t&& contact.vCard.getFirstProperty('gender').getFirstParameter('type')\n\t},\n\tfix: (contact) => {\n\t\tconst gender = contact.vCard.getFirstProperty('gender')\n\t\tconst type = gender.getFirstParameter('type')\n\t\tconst option = Object.values(rfcProps.properties.gender.options).find((opt) => opt.id === type)\n\t\tif (option) {\n\t\t\tgender.removeParameter('type')\n\t\t\tgender.setValue(option.id)\n\t\t\treturn true\n\t\t}\n\t\treturn false\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport default {\n\tname: 'duplicate types',\n\trun: (contact) => {\n\t\ttry {\n\t\t\tconst props = contact.vCard.getAllProperties()\n\t\t\t\t.map((prop) => prop.getParameter('type'))\n\t\t\t\t.filter((prop) => Array.isArray(prop))\n\t\t\tconst fixed = props.map((prop) => [...new Set(prop)])\n\t\t\tif (props.join('') !== fixed.join('')) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t} catch (error) {\n\t\t\treturn false\n\t\t}\n\t\treturn false\n\t},\n\tfix: (contact) => {\n\t\tlet results = false\n\t\ttry {\n\t\t\tconst props = contact.vCard.getAllProperties()\n\t\t\tprops.forEach((prop) => {\n\t\t\t\tconst icalString = prop.toICALString()\n\t\t\t\t// ['WORK', 'pref', 'pref'] => ['WORK', 'pref']\n\t\t\t\tconst param = prop.getParameter('type')\n\t\t\t\tconst fixed = [...new Set(param)]\n\t\t\t\tif (param\n\t\t\t\t\t&& Array.isArray(param)\n\t\t\t\t\t&& param.join('') !== fixed.join('')) {\n\t\t\t\t\tprop.setParameter('type', fixed)\n\t\t\t\t\tconsole.debug('Additional debug: duplicate types', { old: icalString, new: prop.toICALString() })\n\t\t\t\t\tresults = true\n\t\t\t\t}\n\t\t\t})\n\t\t} catch (error) {\n\t\t\tconsole.error(error)\n\t\t}\n\t\treturn results\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport ICAL from 'ical.js'\n\n// https://tools.ietf.org/html/rfc6350#section-6.7.4\n\nexport default {\n\tname: 'invalid REV',\n\tsilent: true,\n\n\trun: (contact) => {\n\t\ttry {\n\t\t\tconst hasRev = contact.vCard.hasProperty('rev')\n\t\t\treturn !hasRev\n\t\t} catch (error) {\n\t\t\treturn true\n\t\t}\n\t},\n\n\tfix: (contact) => {\n\t\ttry {\n\t\t\t// removing old invalid data\n\t\t\tcontact.vCard.removeProperty('rev')\n\n\t\t\t// creating new value\n\t\t\tconst version = contact.version\n\t\t\tif (version === '4.0') {\n\t\t\t\tcontact.vCard.addPropertyWithValue('rev', ICAL.Time.fromJSDate(new Date(), true))\n\t\t\t}\n\t\t\tif (version === '3.0') {\n\t\t\t\tcontact.vCard.addPropertyWithValue('rev', ICAL.VCardTime.fromDateAndOrTimeString(new Date().toISOString(), 'date-time'))\n\t\t\t}\n\n\t\t\treturn true\n\t\t} catch (error) {\n\t\t\tconsole.error('Error fixing invalid REV:', error)\n\t\t\treturn false\n\t\t}\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * the FN field is mandatory. If there is none we need to\n * create it based on the available data\n */\nexport default {\n\tname: 'missing FN',\n\trun: (contact) => {\n\t\treturn !contact.vCard.hasProperty('fn') // No FN\n\t\t\t|| contact.vCard.getFirstPropertyValue('fn') === '' // Empty FN\n\t\t\t|| ( // we don't want to fix newly created contacts\n\t\t\t\tcontact.dav // Existing contact\n\t\t\t\t&& contact.vCard.getFirstPropertyValue('fn')\n\t\t\t\t\t.toLowerCase() === t('contacts', 'New contact').toLowerCase() // AND Unchanged FN\n\t\t\t)\n\t},\n\tfix: (contact) => {\n\t\tif (contact.vCard.hasProperty('n')) {\n\t\t\t// Stevenson;John;Philip,Paul;Dr.;Jr.,M.D.,A.C.P.\n\t\t\t// -> John Stevenson\n\t\t\tconst n = contact.vCard.getFirstPropertyValue('n')\n\t\t\tconst fullName = n.slice(0, 2).reverse().join(' ')\n\t\t\tif (fullName && fullName.trim() !== '') {\n\t\t\t\tcontact.fullName = fullName\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn false\n\t\t}\n\t\treturn false\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport badGenderType from './badGenderType.js'\nimport duplicateTypes from './duplicateTypes.js'\nimport invalidREV from './invalidREV.js'\nimport missingFN from './missingFN.js'\n\nexport default [\n\tbadGenderType,\n\tduplicateTypes,\n\tinvalidREV,\n\tmissingFN,\n]\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport Contact from '../models/contact.js'\nimport checks from './checks/index.js'\n\n/**\n * @param contact\n */\nexport default function(contact) {\n\tlet result = false\n\tif (contact instanceof Contact) {\n\t\t// Going through every checks\n\t\tchecks.forEach((check) => {\n\t\t\ttry {\n\t\t\t\tif (check.run(contact)) {\n\t\t\t\t\t// A fix is needed, running ⏳\n\t\t\t\t\tif (!check.fix(contact)) {\n\t\t\t\t\t\t// FAILURE 🙅\n\t\t\t\t\t\tconsole.warn('The following contact needed a correction that failed:', check.name, contact)\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// SUCCESS 💪\n\t\t\t\t\t\t// Only display visual feedback if the fix is not silent\n\t\t\t\t\t\tif (!check.silent) {\n\t\t\t\t\t\t\tresult = true\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconsole.info('The following contact has been repaired:', check.name, contact)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error during the check:', check.name, contact, error)\n\t\t\t}\n\t\t})\n\t\treturn result\n\t} else {\n\t\tthrow new Error('Invalid contact provided')\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { showError } from '@nextcloud/dialogs'\nimport ICAL from 'ical.js'\nimport Contact from '../models/contact.js'\nimport validate from '../services/validate.js'\n\n/*\n * Currently ical.js does not serialize parameters with multiple values correctly. This is\n * especially problematic for the type parmeter which frequently is used with multiple values\n * (e.g. \"HOME\" and \"VOICE\"). A phone number for example shoud be serialized as\n * 'TEL;TYPE=HOME,VOICE:0815 123456' OR 'TEL;TYPE=\"HOME\",\"VOICE\":0815 123456' according to\n * https://tools.ietf.org/html/rfc2426#section-4. Unfortunately currently it is serialized as\n * 'TEL;TYPE=\"HOME,VOICE\":0815 123456', which makes the value appear as a single value\n * containing a comma instead of two separate values. By forcing all values being escaped by\n * double quotes the string serialization can be fixed.\n *\n * However there is a pull request (https://github.com/mozilla-comm/ical.js/pull/460) waiting\n * to be merged for ical.js. Until this fix is merged and released the following configuration\n * changes apply the workaround described above.\n */\nICAL.design.vcard3.param.type.multiValueSeparateDQuote = true\nICAL.design.vcard.param.type.multiValueSeparateDQuote = true\n\nfunction sortData(a, b) {\n\tconst nameA = typeof a.value === 'string'\n\t\t? a.value.toUpperCase() // ignore upper and lowercase\n\t\t: a.value.toUnixTime() // only other sorting we support is a vCardTime\n\tconst nameB = typeof b.value === 'string'\n\t\t? b.value.toUpperCase() // ignore upper and lowercase\n\t\t: b.value.toUnixTime() // only other sorting we support is a vCardTime\n\n\tconst score = nameA.localeCompare\n\t\t? nameA.localeCompare(nameB)\n\t\t: nameB - nameA\n\t// if equal, fallback to the key\n\treturn score !== 0\n\t\t? score\n\t\t: a.key.localeCompare(b.key)\n}\n\nconst state = {\n\t// Using objects for performance\n\t// https://codepen.io/skjnldsv/pen/ZmKvQo\n\tcontacts: {},\n\tsortedContacts: [],\n\torderKey: 'displayName',\n}\n\nconst mutations = {\n\n\t/**\n\t * Store raw contacts into state\n\t * Used by the first contact fetch\n\t *\n\t * @param {object} state Default state\n\t * @param {Array} contacts Contacts\n\t */\n\tappendContacts(state, contacts = []) {\n\t\tstate.contacts = contacts.reduce(function(list, contact) {\n\t\t\tif (contact instanceof Contact) {\n\t\t\t\tlist[contact.key] = contact\n\t\t\t} else {\n\t\t\t\tconsole.error('Invalid contact object', contact)\n\t\t\t}\n\t\t\treturn list\n\t\t}, state.contacts)\n\t},\n\n\t/**\n\t * Delete a contact from the global contacts list\n\t *\n\t * @param {object} state the store data\n\t * @param {Contact} contact the contact to delete\n\t */\n\tdeleteContact(state, contact) {\n\t\tif (state.contacts[contact.key] && contact instanceof Contact) {\n\t\t\tconst index = state.sortedContacts.findIndex((search) => search.key === contact.key)\n\t\t\tstate.sortedContacts.splice(index, 1)\n\t\t\tdelete state.contacts[contact.key]\n\t\t} else {\n\t\t\tconsole.error('Error while deleting the following contact', contact)\n\t\t}\n\t},\n\n\t/**\n\t * Insert new contact into sorted array\n\t *\n\t * @param {object} state the store data\n\t * @param {Contact} contact the contact to add\n\t */\n\taddContact(state, contact) {\n\t\tif (contact instanceof Contact) {\n\t\t\t// Checking contact validity 🔍🙈\n\t\t\tvalidate(contact)\n\n\t\t\tconst sortedContact = {\n\t\t\t\tkey: contact.key,\n\t\t\t\tvalue: contact[state.orderKey],\n\t\t\t}\n\n\t\t\t// Not using sort, splice has far better performances\n\t\t\t// https://jsperf.com/sort-vs-splice-in-array\n\t\t\tfor (let i = 0, len = state.sortedContacts.length; i < len; i++) {\n\t\t\t\tif (sortData(state.sortedContacts[i], sortedContact) >= 0) {\n\t\t\t\t\tstate.sortedContacts.splice(i, 0, sortedContact)\n\t\t\t\t\tbreak\n\t\t\t\t} else if (i + 1 === len) {\n\t\t\t\t\t// we reached the end insert it now\n\t\t\t\t\tstate.sortedContacts.push(sortedContact)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// sortedContact is empty, just push it\n\t\t\tif (state.sortedContacts.length === 0) {\n\t\t\t\tstate.sortedContacts.push(sortedContact)\n\t\t\t}\n\n\t\t\t// default contacts list\n\t\t\tstate.contacts[contact.key] = contact\n\t\t} else {\n\t\t\tconsole.error('Error while adding the following contact', contact)\n\t\t}\n\t},\n\n\t/**\n\t * Update a contact\n\t *\n\t * @param {object} state the store data\n\t * @param {Contact} contact the contact to update\n\t */\n\tupdateContact(state, contact) {\n\t\tif (state.contacts[contact.key] && contact instanceof Contact) {\n\t\t\t// replace contact object data\n\t\t\tstate.contacts[contact.key].updateContact(contact.jCal)\n\t\t\tconst sortedContact = state.sortedContacts.find((search) => search.key === contact.key)\n\n\t\t\t// has the sort key changed for this contact ?\n\t\t\tconst hasChanged = sortedContact.value !== contact[state.orderKey]\n\t\t\tif (hasChanged) {\n\t\t\t\t// then update the new data\n\t\t\t\tsortedContact.value = contact[state.orderKey]\n\t\t\t\t// and then we sort again\n\t\t\t\tstate.sortedContacts.sort(sortData)\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.error('Error while replacing the following contact', contact)\n\t\t}\n\t},\n\n\t/**\n\t * Update a contact addressbook\n\t *\n\t * @param {object} state the store data\n\t * @param {object} data destructuring object\n\t * @param data.contact\n\t * @param {Contact} contact the contact to update\n\t * @param {object} addressbook the addressbook to set\n\t * @param data.addressbook\n\t */\n\tupdateContactAddressbook(state, { contact, addressbook }) {\n\t\tif (state.contacts[contact.key] && contact instanceof Contact) {\n\t\t\t// replace contact object data by creating a new contact\n\t\t\tconst oldKey = contact.key\n\n\t\t\t// hijack reference\n\t\t\tconst newContact = contact\n\n\t\t\t// delete old key, cut reference\n\t\t\tdelete state.contacts[oldKey]\n\n\t\t\t// replace addressbook\n\t\t\tnewContact.addressbook = addressbook\n\n\t\t\t// set new key, re-assign reference\n\t\t\tstate.contacts[newContact.key] = newContact\n\n\t\t\t// Update sorted contacts list, replace at exact same position\n\t\t\tconst index = state.sortedContacts.findIndex((search) => search.key === oldKey)\n\t\t\tstate.sortedContacts[index].key = newContact.key\n\t\t\tstate.sortedContacts[index].value = newContact[state.orderKey]\n\t\t} else {\n\t\t\tconsole.error('Error while replacing the addressbook of following contact', contact)\n\t\t}\n\t},\n\n\t/**\n\t * Update a contact etag\n\t *\n\t * @param {object} state the store data\n\t * @param {object} data destructuring object\n\t * @param data.contact\n\t * @param {Contact} contact the contact to update\n\t * @param {string} etag the contact etag\n\t * @param data.etag\n\t */\n\tupdateContactEtag(state, { contact, etag }) {\n\t\tif (state.contacts[contact.key] && contact instanceof Contact) {\n\t\t\t// replace contact object data\n\t\t\tstate.contacts[contact.key].dav.etag = etag\n\t\t} else {\n\t\t\tconsole.error('Error while replacing the etag of following contact', contact)\n\t\t}\n\t},\n\n\t/**\n\t * Order the contacts list. Filters have terrible performances.\n\t * We do not want to run the sorting function every time.\n\t * Let's only run it on additions and create an index\n\t *\n\t * @param {object} state the store data\n\t */\n\tsortContacts(state) {\n\t\tstate.sortedContacts = Object.values(state.contacts)\n\t\t\t// exclude groups\n\t\t\t.filter((contact) => contact.kind !== 'group')\n\t\t\t.map((contact) => { return { key: contact.key, value: contact[state.orderKey] } })\n\t\t\t.sort(sortData)\n\t},\n\n\t/**\n\t * Set the order key\n\t *\n\t * @param {object} state the store data\n\t * @param {string} [orderKey] the order key to sort by\n\t */\n\tsetOrder(state, orderKey = 'displayName') {\n\t\tstate.orderKey = orderKey\n\t},\n\n\t/**\n\t * Set a contact as `in conflict` with the server data\n\t *\n\t * @param {object} state the store data\n\t * @param {object} data destructuring object\n\t * @param {Contact} data.contact the contact to update\n\t * @param {string} data.etag the etag to set\n\t */\n\tsetContactAsConflict(state, { contact, etag }) {\n\t\tif (state.contacts[contact.key] && contact instanceof Contact) {\n\t\t\tstate.contacts[contact.key].conflict = etag\n\t\t} else {\n\t\t\tconsole.error('Error while handling the following contact', contact)\n\t\t}\n\t},\n\n\t/**\n\t * Set a contact dav property\n\t *\n\t * @param {object} state the store data\n\t * @param {object} data destructuring object\n\t * @param {Contact} data.contact the contact to update\n\t * @param {object} data.dav the dav object returned by the cdav library\n\t */\n\tsetContactDav(state, { contact, dav }) {\n\t\tif (state.contacts[contact.key] && contact instanceof Contact) {\n\t\t\tcontact = state.contacts[contact.key]\n\t\t\tcontact.dav = dav\n\t\t} else {\n\t\t\tconsole.error('Error while handling the following contact', contact)\n\t\t}\n\t},\n}\n\nconst getters = {\n\tgetContacts: (state) => state.contacts,\n\tgetSortedContacts: (state) => state.sortedContacts,\n\tgetContact: (state) => (key) => state.contacts[key],\n\tgetOrderKey: (state) => state.orderKey,\n}\n\nconst actions = {\n\n\t/**\n\t * Delete a contact from the list and from the associated addressbook\n\t *\n\t * @param {object} context the store mutations\n\t * @param {object} data destructuring object\n\t * @param {Contact} data.contact the contact to delete\n\t * @param {boolean} [data.dav] trigger a dav deletion\n\t */\n\tasync deleteContact(context, { contact, dav = true }) {\n\t\t// only local delete if the contact doesn't exists on the server\n\t\tif (contact.dav && dav) {\n\t\t\tawait contact.dav.delete()\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tconsole.error(error)\n\t\t\t\t\tshowError(t('contacts', 'Unable to delete contact'))\n\t\t\t\t})\n\t\t}\n\t\tcontext.commit('deleteContact', contact)\n\t\tcontext.commit('deleteContactFromAddressbook', contact)\n\t\tcontext.commit('removeContactFromGroups', contact)\n\t},\n\n\t/**\n\t * Add a contact to the list, the associated addressbook and to the groups\n\t *\n\t * @param {object} context the store mutations\n\t * @param {Contact} contact the contact to delete\n\t */\n\tasync addContact(context, contact) {\n\t\tawait context.commit('addContact', contact)\n\t\tawait context.commit('addContactToAddressbook', contact)\n\t\tawait context.commit('extractGroupsFromContacts', [contact])\n\t},\n\n\t/**\n\t * Replace a contact by this new object\n\t *\n\t * @param {object} context the store mutations\n\t * @param {Contact} contact the contact to update\n\t * @return {Promise}\n\t */\n\tasync updateContact(context, contact) {\n\t\t// Checking contact validity 🙈\n\t\tvalidate(contact)\n\n\t\t// Update REV\n\t\tif (contact.version === '4.0') {\n\t\t\tcontact.rev = ICAL.Time.fromJSDate(new Date(), true)\n\t\t}\n\t\tif (contact.version === '3.0') {\n\t\t\tcontact.rev = ICAL.VCardTime.fromDateAndOrTimeString(new Date().toISOString(), 'date-time')\n\t\t}\n\n\t\tconst vData = contact.toStringStripQuotes()\n\n\t\t// if no dav key, contact does not exists on server\n\t\tif (!contact.dav) {\n\t\t\t// create contact\n\t\t\tconst dav = await contact.addressbook.dav.createVCard(vData)\n\t\t\tcontext.commit('setContactDav', { contact, dav })\n\t\t\treturn\n\t\t}\n\n\t\t// if contact already exists\n\t\tif (!contact.conflict) {\n\t\t\tcontact.dav.data = vData\n\t\t\ttry {\n\t\t\t\tawait contact.dav.update()\n\t\t\t\t// all clear, let's update the store\n\t\t\t\tcontext.commit('updateContact', contact)\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\n\t\t\t\t// wrong etag, we most likely have a conflict\n\t\t\t\tif (error && error?.status === 412) {\n\t\t\t\t\t// saving the new etag so that the user can manually\n\t\t\t\t\t// trigger a fetchCompleteData without any further errors\n\t\t\t\t\tcontext.commit('setContactAsConflict', { contact, etag: error.xhr.getResponseHeader('etag') })\n\t\t\t\t\tconsole.error('This contact is outdated, the server refused it', contact)\n\t\t\t\t}\n\t\t\t\tthrow (error)\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.error('This contact is outdated, refusing to push', contact)\n\t\t}\n\t},\n\n\t/**\n\t * Fetch the full vCard from the dav server\n\t *\n\t * @param {object} context the store mutations\n\t * @param {object} data destructuring object\n\t * @param {Contact} data.contact the contact to fetch\n\t * @param {string} data.etag the contact etag to override in case of conflict\n\t * @param data.forceReFetch\n\t * @return {Promise}\n\t */\n\tasync fetchFullContact(context, { contact, etag = '', forceReFetch = false }) {\n\t\tif (etag.trim() !== '') {\n\t\t\tawait context.commit('updateContactEtag', { contact, etag })\n\t\t}\n\t\treturn contact.dav.fetchCompleteData(forceReFetch)\n\t\t\t.then(() => {\n\t\t\t\tconst newContact = new Contact(contact.dav.data, contact.addressbook)\n\t\t\t\tcontext.commit('updateContact', newContact)\n\t\t\t})\n\t\t\t.catch((error) => { throw error })\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst state = {\n\tgroups: [],\n}\n\nconst mutations = {\n\t/**\n\t * Extract all the groups from the provided contacts\n\t * and add the contacts to their respective groups\n\t *\n\t * @param {object} state the store data\n\t * @param {Contact[]} contacts the contacts to add\n\t */\n\textractGroupsFromContacts(state, contacts) {\n\t\t// iterate contacts\n\t\tcontacts.forEach((contact) => {\n\t\t\tif (contact.groups) {\n\t\t\t\tcontact.groups.forEach((groupName) => {\n\t\t\t\t\tlet group = state.groups.find((search) => search.name === groupName)\n\t\t\t\t\t// nothing? create a new one\n\t\t\t\t\tif (!group) {\n\t\t\t\t\t\tstate.groups.push({\n\t\t\t\t\t\t\tname: groupName,\n\t\t\t\t\t\t\tcontacts: [],\n\t\t\t\t\t\t})\n\t\t\t\t\t\tgroup = state.groups.find((search) => search.name === groupName)\n\t\t\t\t\t}\n\t\t\t\t\tgroup.contacts.push(contact.key)\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\t},\n\n\t/**\n\t * Add contact to group and create group if not existing\n\t *\n\t * @param {object} state the store data\n\t * @param {object} data destructuring object\n\t * @param {Array} data.groupNames the names of the group\n\t * @param {Contact} data.contact the contact\n\t */\n\taddContactToGroups(state, { groupNames, contact }) {\n\t\tgroupNames.forEach((groupName) => {\n\t\t\tlet group = state.groups.find((search) => search.name === groupName)\n\t\t\t// nothing? create a new one\n\t\t\tif (!group) {\n\t\t\t\tstate.groups.push({\n\t\t\t\t\tname: groupName,\n\t\t\t\t\tcontacts: [],\n\t\t\t\t})\n\t\t\t\tgroup = state.groups.find((search) => search.name === groupName)\n\t\t\t}\n\t\t\tgroup.contacts.push(contact.key)\n\t\t})\n\t},\n\n\t/**\n\t * Remove contact from group\n\t *\n\t * @param {object} state the store data\n\t * @param {object} data destructuring object\n\t * @param {string} data.groupName the name of the group\n\t * @param {Contact} data.contact the contact\n\t */\n\tremoveContactFromGroup(state, { groupName, contact }) {\n\t\tif (!state.groups.find((search) => search.name === groupName)) {\n\t\t\treturn\n\t\t}\n\n\t\tconst contacts = state.groups.find((search) => search.name === groupName).contacts\n\t\tconst index = contacts.findIndex((search) => search === contact.key)\n\t\tif (index > -1) {\n\t\t\tcontacts.splice(index, 1)\n\t\t}\n\t},\n\n\t/**\n\t * Rename contact from group\n\t *\n\t * @param {object} state the store data\n\t * @param {object} data destructuring object\n\t * @param {string} data.oldGroupName name that gets removed\n\t * @param {string} data.newGroupName name that gets added\n\t */\n\trenameGroup(state, { oldGroupName, newGroupName }) {\n\t\tstate.groups.forEach((group) => {\n\t\t\tif (group.name === oldGroupName) {\n\t\t\t\tgroup.name = newGroupName\n\t\t\t}\n\t\t})\n\t},\n\n\t/**\n\t * Remove contact from its groups\n\t *\n\t * @param {object} state the store data\n\t * @param {Contact} contact the contact\n\t */\n\tremoveContactFromGroups(state, contact) {\n\t\tstate.groups.forEach((group) => {\n\t\t\tconst index = group.contacts.indexOf(contact.key)\n\t\t\tif (index !== -1) {\n\t\t\t\tgroup.contacts.splice(index, 1)\n\t\t\t}\n\t\t})\n\t},\n\n\t/**\n\t * Add a group\n\t *\n\t * @param {object} state the store data\n\t * @param {string} groupName the name of the group\n\t */\n\taddGroup(state, groupName) {\n\t\tstate.groups.push({\n\t\t\tname: groupName,\n\t\t\tcontacts: [],\n\t\t})\n\t},\n\n\t/**\n\t * Remove a group\n\t *\n\t * @param {object} state the store data\n\t * @param {string} groupName the name of the group\n\t */\n\tremoveGroup(state, groupName) {\n\t\tstate.groups = state.groups.filter((group) => group.name !== groupName)\n\t},\n}\n\nconst getters = {\n\tgetGroups: (state) => state.groups,\n}\n\nconst actions = {\n\n\tupdateContactGroups(context, { groupNames, contact }) {\n\t\tcontext.commit('removeContactFromGroups', contact)\n\t\tcontext.commit('addContactToGroups', { groupNames, contact })\n\t},\n\t/**\n\t * Add contact and to a group\n\t *\n\t * @param {object} context the store mutations\n\t * @param {object} data destructuring object\n\t * @param {string} data.groupName the name of the group\n\t * @param {Contact} data.contact the contact\n\t */\n\taddContactToGroup(context, { groupName, contact }) {\n\t\tcontext.commit('addContactToGroups', { groupNames: [groupName], contact })\n\t},\n\n\t/**\n\t * Add contact to multiple groups\n\t *\n\t * @param {object} context the store mutations\n\t * @param {object} data destructuring object\n\t * @param {string} data.groupNames group names\n\t * @param {Contact} data.contact the contact\n\t */\n\taddContactToGroups(context, { groupNames, contact }) {\n\t\tcontext.commit('addContactToGroups', { groupNames, contact })\n\t},\n\n\t/**\n\t * Remove contact from its groups\n\t *\n\t * @param {object} context the store mutations\n\t * @param {Contact} contact the contact\n\t */\n\tremoveContactFromGroups(context, contact) {\n\t\tcontext.commit('removeContactFromGroups', contact)\n\t},\n\n\t/**\n\t * Remove contact from group\n\t *\n\t * @param {object} context the store mutations\n\t * @param {object} data destructuring object\n\t * @param {string} data.groupName the name of the group\n\t * @param {Contact} data.contact the contact\n\t */\n\tremoveContactFromGroup(context, { groupName, contact }) {\n\t\tcontext.commit('removeContactFromGroup', { groupName, contact })\n\t},\n\n\t/**\n\t * Add a group\n\t *\n\t * @param {object} context the store mutations\n\t * @param {string} groupName the name of the group\n\t */\n\taddGroup(context, groupName) {\n\t\tif (!groupName || groupName.trim() === '') {\n\t\t\tthrow new Error('Group name cannot be empty')\n\t\t}\n\t\tcontext.commit('addGroup', groupName)\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst state = {\n\timportState: {\n\t\ttotal: 0,\n\t\taccepted: 0,\n\t\tdenied: 0,\n\t\tstage: 'default',\n\t\taddressbook: '',\n\t},\n}\n\nconst mutations = {\n\t/**\n\t * Increment the number of contacts accepted\n\t *\n\t * @param {object} state the store data\n\t */\n\tincrementAccepted(state) {\n\t\tstate.importState.accepted++\n\t},\n\n\t/**\n\t * Increment the number of contacts denied\n\t *\n\t * @param {object} state the store data\n\t */\n\tincrementDenied(state) {\n\t\tstate.importState.denied++\n\t},\n\n\t/**\n\t * Set the total number of contacts\n\t *\n\t * @param {object} state the store data\n\t * @param {string} total the total number of contacts to import\n\t */\n\tsetTotal(state, total) {\n\t\tstate.importState.total = total\n\t},\n\n\t/**\n\t * Set the address book name\n\t *\n\t * @param {object} state the store data\n\t * @param {string} addressbook the name of the address book to import into\n\t */\n\tsetAddressbook(state, addressbook) {\n\t\tstate.importState.addressbook = addressbook\n\t},\n\n\t/**\n\t * Change stage to the indicated one\n\t *\n\t * @param {object} state the store data\n\t * @param {string} stage the name of the stage ('default', 'importing', 'parsing', 'done')\n\t */\n\tchangeStage(state, stage) {\n\t\tstate.importState.stage = stage\n\t},\n\n\t/**\n\t * Reset to the default state\n\t *\n\t * @param {object} state the store data\n\t */\n\tresetState(state) {\n\t\tstate.importState.total = 0\n\t\tstate.importState.accepted = 0\n\t\tstate.importState.denied = 0\n\t},\n}\n\nconst getters = {\n\tgetImportState: (state) => state.importState,\n}\n\nconst actions = {\n\t/**\n\t * Increment the number of contacts accepted\n\t *\n\t * @param {object} context the store mutations\n\t */\n\tincrementAccepted(context) {\n\t\tcontext.commit('incrementAccepted')\n\t},\n\n\t/**\n\t * Increment the number of contacts denied\n\t *\n\t * @param {object} context the store mutations\n\t */\n\tincrementDenied(context) {\n\t\tcontext.commit('incrementDenied')\n\t},\n\n\t/**\n\t * Set the total number of contacts\n\t *\n\t * @param {object} context the store mutations\n\t * @param {string} total the total number of contacts to import\n\t */\n\tsetTotal(context, total) {\n\t\tcontext.commit('setTotal', total)\n\t},\n\n\t/**\n\t * Set the address book name\n\t *\n\t * @param {object} context the store mutations\n\t * @param {string} addressbook the name of the address book to import into\n\t */\n\tsetAddressbook(context, addressbook) {\n\t\tcontext.commit('setAddressbook', addressbook)\n\t},\n\n\t/**\n\t * Change stage to the indicated one\n\t * and reset if the parsing starts\n\t *\n\t * @param {object} context the store mutations\n\t * @param {string} stage the name of the stage ('default', 'importing', 'parsing', 'done')\n\t */\n\tchangeStage(context, stage) {\n\t\tcontext.commit('changeStage', stage)\n\t\tif (stage === 'parsing') {\n\t\t\tcontext.commit('resetState')\n\t\t}\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { Store } from 'vuex'\nimport isCirclesEnabled from '../services/isCirclesEnabled.js'\nimport addressbooks from './addressbooks.js'\nimport circles from './circles.js'\nimport contacts from './contacts.js'\nimport groups from './groups.js'\nimport importState from './importState.js'\n\nconst mutations = {}\n\nconst modules = {\n\taddressbooks,\n\tcontacts,\n\tgroups,\n\timportState,\n}\n\n// If circles is enabled let's init the store\nif (isCirclesEnabled) {\n\tmodules.circles = circles\n}\n\nexport default new Store({\n\tmodules,\n\tmutations,\n\n\t/**\n\t * the contat ical update itself on property getters\n\t * this is causing issues with the strict mode.\n\t * Since we're only getting the data for the contacts list\n\t * and considering we're initiating an independent contact\n\t * class for the details which replace itself into the\n\t * store by mutations we can ignore this and say that\n\t * the risk of losing track of changes is expandable.\n\t *\n\t * strict: process.env.NODE_ENV !== 'production'\n\t */\n})\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport sanitizeSVG from '@mattkrick/sanitize-svg'\nimport b64toBlob from 'b64-to-blob'\nimport { Buffer } from 'buffer'\nimport ICAL from 'ical.js'\nimport { v4 as uuid } from 'uuid'\nimport { shallowRef, unref } from 'vue'\nimport updateDesignSet from '../services/updateDesignSet.js'\nimport store from '../store/index.js'\n\n/**\n * Check if the given value is an empty array or an empty string\n *\n * @param {string|Array} value the value to check\n * @return {boolean}\n */\nfunction isEmpty(value) {\n\treturn (Array.isArray(value) && value.join('') === '') || (!Array.isArray(value) && value === '')\n}\n\nexport const ContactKindProperties = ['KIND', 'X-ADDRESSBOOKSERVER-KIND']\n\nexport const MinimalContactProperties = [\n\t'EMAIL', 'UID', 'TEL', 'CATEGORIES', 'FN', 'ORG', 'N', 'X-PHONETIC-FIRST-NAME', 'X-PHONETIC-LAST-NAME', 'X-MANAGERSNAME', 'TITLE', 'NOTE', 'RELATED',\n].concat(ContactKindProperties)\n\nexport default class Contact {\n\t/**\n\t * Creates an instance of Contact\n\t *\n\t * @param {string} vcard the vcard data as string with proper new lines\n\t * @param {object} addressbook the addressbook which the contat belongs to\n\t * @memberof Contact\n\t */\n\tconstructor(vcard, addressbook) {\n\t\tif (typeof vcard !== 'string' || vcard.length === 0) {\n\t\t\tthrow new Error('Invalid vCard')\n\t\t}\n\n\t\tlet jCal = ICAL.parse(vcard)\n\t\tif (jCal[0] !== 'vcard') {\n\t\t\tthrow new Error('Only one contact is allowed in the vcard data')\n\t\t}\n\n\t\tif (updateDesignSet(jCal)) {\n\t\t\tjCal = ICAL.parse(vcard)\n\t\t}\n\n\t\tthis.jCal = jCal\n\t\tthis.addressbook = addressbook\n\t\tthis.vCard = new ICAL.Component(this.jCal)\n\n\t\t// used to state a contact is not up to date with\n\t\t// the server and cannot be pushed (etag)\n\t\tthis.conflict = false\n\n\t\t// if no uid set, create one\n\t\tif (!this.vCard.hasProperty('uid')) {\n\t\t\tconsole.info('This contact did not have a proper uid. Setting a new one for ', this)\n\t\t\tthis.vCard.addPropertyWithValue('uid', uuid())\n\t\t}\n\n\t\t// if no rev set, init one\n\t\tif (!this.vCard.hasProperty('rev')) {\n\t\t\tconst version = this.vCard.getFirstPropertyValue('version')\n\t\t\tif (version === '4.0') {\n\t\t\t\tthis.vCard.addPropertyWithValue('rev', ICAL.Time.fromJSDate(new Date(), true))\n\t\t\t}\n\t\t\tif (version === '3.0') {\n\t\t\t\tthis.vCard.addPropertyWithValue('rev', ICAL.VCardTime.fromDateAndOrTimeString(new Date().toISOString(), 'date-time'))\n\t\t\t}\n\t\t}\n\t}\n\n\tget vCard() {\n\t\treturn unref(this._vCard)\n\t}\n\n\tset vCard(value) {\n\t\tthis._vCard = shallowRef(value)\n\t}\n\n\t/**\n\t * Update internal data of this contact\n\t *\n\t * @param {jCal} jCal jCal object from ICAL.js\n\t * @memberof Contact\n\t */\n\tupdateContact(jCal) {\n\t\tthis.jCal = jCal\n\t\tthis.vCard = new ICAL.Component(this.jCal)\n\t}\n\n\t/**\n\t * Update linked addressbook of this contact\n\t *\n\t * @param {object} addressbook the addressbook\n\t * @memberof Contact\n\t */\n\tupdateAddressbook(addressbook) {\n\t\tthis.addressbook = addressbook\n\t}\n\n\t/**\n\t * Ensure we're normalizing the possible arrays\n\t * into a string by taking the first element\n\t * e.g. ORG:ABC\\, Inc.; will output an array because of the semi-colon\n\t *\n\t * @param {Array|string} data the data to normalize\n\t * @return {string}\n\t * @memberof Contact\n\t */\n\tfirstIfArray(data) {\n\t\treturn Array.isArray(data) ? data[0] : data\n\t}\n\n\t/**\n\t * Return the url\n\t *\n\t * @readonly\n\t * @memberof Contact\n\t */\n\tget url() {\n\t\tif (this.dav) {\n\t\t\treturn this.dav.url\n\t\t}\n\t\treturn ''\n\t}\n\n\t/**\n\t * Return the version\n\t *\n\t * @readonly\n\t * @memberof Contact\n\t */\n\tget version() {\n\t\treturn this.vCard.getFirstPropertyValue('version')\n\t}\n\n\t/**\n\t * Set the version\n\t *\n\t * @param {string} version the version to set\n\t * @memberof Contact\n\t */\n\tset version(version) {\n\t\tthis.vCard.updatePropertyWithValue('version', version)\n\t}\n\n\t/**\n\t * Return the uid\n\t *\n\t * @readonly\n\t * @memberof Contact\n\t */\n\tget uid() {\n\t\treturn this.vCard.getFirstPropertyValue('uid')\n\t}\n\n\t/**\n\t * Set the uid\n\t *\n\t * @param {string} uid the uid to set\n\t * @memberof Contact\n\t */\n\tset uid(uid) {\n\t\tthis.vCard.updatePropertyWithValue('uid', uid)\n\t}\n\n\t/**\n\t * Return the rev\n\t *\n\t * @readonly\n\t * @memberof Contact\n\t */\n\tget rev() {\n\t\treturn this.vCard.getFirstPropertyValue('rev')\n\t}\n\n\t/**\n\t * Set the rev\n\t *\n\t * @param {string} rev the rev to set\n\t * @memberof Contact\n\t */\n\tset rev(rev) {\n\t\tthis.vCard.updatePropertyWithValue('rev', rev)\n\t}\n\n\t/**\n\t * Return the key\n\t *\n\t * @readonly\n\t * @memberof Contact\n\t */\n\tget key() {\n\t\treturn Buffer.from(this.uid + '~' + this.addressbook.id, 'utf8').toString('base64')\n\t}\n\n\t/**\n\t * Return the photo\n\t *\n\t * @readonly\n\t * @memberof Contact\n\t */\n\tget photo() {\n\t\treturn this.vCard.getFirstPropertyValue('photo')\n\t}\n\n\t/**\n\t * Set the photo\n\t *\n\t * @param {string} photo the photo to set\n\t * @memberof Contact\n\t */\n\tset photo(photo) {\n\t\tthis.vCard.updatePropertyWithValue('photo', photo)\n\t}\n\n\t/**\n\t * Return whether a photo is available\n\t *\n\t * @readonly\n\t * @memberof Contact\n\t */\n\tget hasPhoto() {\n\t\treturn this.dav && this.dav.hasphoto\n\t}\n\n\t/**\n\t * Return the photo usable url\n\t * We cannot fetch external url because of csp policies\n\t *\n\t * @memberof Contact\n\t */\n\tasync getPhotoUrl() {\n\t\tconst photo = this.vCard.getFirstProperty('photo')\n\t\tif (!photo) {\n\t\t\treturn false\n\t\t}\n\t\tconst encoding = photo.getFirstParameter('encoding')\n\t\tlet photoType = photo.getFirstParameter('type')\n\n\t\t// Always convert to a string as this might be a binary value (and not a string)\n\t\tconst photoB64 = this.photo.toString()\n\n\t\tconst isBinary = photo.type === 'binary' || encoding === 'b'\n\n\t\tlet photoB64Data = photoB64\n\t\tif (photo && photoB64.startsWith('data') && !isBinary) {\n\t\t\t// get the last part = base64\n\t\t\tphotoB64Data = photoB64.split(',').pop()\n\t\t\t// 'data:image/png;base64' => 'png'\n\t\t\tphotoType = photoB64.split(';')[0].split('/').pop()\n\t\t}\n\n\t\t// Verify if SVG is valid\n\t\tif (photoType.toLowerCase().startsWith('svg')) {\n\t\t\tconst imageSvg = atob(photoB64Data)\n\t\t\tconst cleanSvg = await sanitizeSVG(imageSvg)\n\n\t\t\tif (!cleanSvg) {\n\t\t\t\tconsole.error('Invalid SVG for the following contact. Ignoring...', this.contact, { photoB64, photoType })\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\ttry {\n\t\t\t// Create blob from url\n\t\t\tconst blob = b64toBlob(photoB64Data, `image/${photoType}`)\n\t\t\treturn URL.createObjectURL(blob)\n\t\t} catch {\n\t\t\tconsole.error('Invalid photo for the following contact. Ignoring...', this.contact, { photoB64, photoType })\n\t\t\treturn false\n\t\t}\n\t}\n\n\t/**\n\t * Return the groups\n\t *\n\t * @readonly\n\t * @memberof Contact\n\t */\n\tget groups() {\n\t\tconst groupsProp = this.vCard.getFirstProperty('categories')\n\t\tif (groupsProp) {\n\t\t\treturn groupsProp.getValues()\n\t\t\t\t.filter((group) => typeof group === 'string')\n\t\t\t\t.filter((group) => group.trim() !== '')\n\t\t}\n\t\treturn []\n\t}\n\n\t/**\n\t * Set the groups\n\t *\n\t * @param {Array} groups the groups to set\n\t * @memberof Contact\n\t */\n\tset groups(groups) {\n\t\t// delete the title if empty\n\t\tif (isEmpty(groups)) {\n\t\t\tthis.vCard.removeProperty('categories')\n\t\t\treturn\n\t\t}\n\n\t\tif (Array.isArray(groups)) {\n\t\t\tlet property = this.vCard.getFirstProperty('categories')\n\t\t\tif (!property) {\n\t\t\t\t// Init with empty group since we set everything afterwise\n\t\t\t\tproperty = this.vCard.addPropertyWithValue('categories', '')\n\t\t\t}\n\t\t\tproperty.setValues(groups)\n\t\t} else {\n\t\t\tthrow new Error('groups data is not an Array')\n\t\t}\n\t}\n\n\t/**\n\t * Return the groups\n\t *\n\t * @readonly\n\t * @memberof Contact\n\t */\n\tget kind() {\n\t\treturn this.firstIfArray(ContactKindProperties\n\t\t\t.map((s) => s.toLowerCase())\n\t\t\t.map((s) => this.vCard.getFirstPropertyValue(s))\n\t\t\t.flat()\n\t\t\t.filter((k) => k))\n\t}\n\n\t/**\n\t * Return the first email\n\t *\n\t * @readonly\n\t * @memberof Contact\n\t */\n\tget email() {\n\t\treturn this.firstIfArray(this.vCard.getFirstPropertyValue('email'))\n\t}\n\n\t/**\n\t * Return the first org\n\t *\n\t * @readonly\n\t * @memberof Contact\n\t */\n\tget org() {\n\t\treturn this.firstIfArray(this.vCard.getFirstPropertyValue('org'))\n\t}\n\n\t/**\n\t * Set the org\n\t *\n\t * @param {string} org the org data\n\t * @memberof Contact\n\t */\n\tset org(org) {\n\t\t// delete the org if empty\n\t\tif (isEmpty(org)) {\n\t\t\tthis.vCard.removeProperty('org')\n\t\t\treturn\n\t\t}\n\t\tthis.vCard.updatePropertyWithValue('org', org)\n\t}\n\n\t/**\n\t * Return the first x-managersname\n\t *\n\t * @readonly\n\t * @memberof Contact\n\t */\n\tget managersName() {\n\t\tconst prop = this.vCard.getFirstProperty('x-managersname')\n\t\tif (!prop) {\n\t\t\treturn null\n\t\t}\n\t\treturn prop.getFirstParameter('uid') ?? null\n\t}\n\n\t/**\n\t * Return the first title\n\t *\n\t * @readonly\n\t * @memberof Contact\n\t */\n\tget title() {\n\t\treturn this.firstIfArray(this.vCard.getFirstPropertyValue('title'))\n\t}\n\n\t/**\n\t * Set the title\n\t *\n\t * @param {string} title the title\n\t * @memberof Contact\n\t */\n\tset title(title) {\n\t\t// delete the title if empty\n\t\tif (isEmpty(title)) {\n\t\t\tthis.vCard.removeProperty('title')\n\t\t\treturn\n\t\t}\n\t\tthis.vCard.updatePropertyWithValue('title', title)\n\t}\n\n\t/**\n\t * Return the full name\n\t *\n\t * @readonly\n\t * @memberof Contact\n\t */\n\tget fullName() {\n\t\treturn this.vCard.getFirstPropertyValue('fn')\n\t}\n\n\t/**\n\t * Set the full name\n\t *\n\t * @param {string} name the fn data\n\t * @memberof Contact\n\t */\n\tset fullName(name) {\n\t\tthis.vCard.updatePropertyWithValue('fn', name)\n\t}\n\n\t/**\n\t * Formatted display name based on the order key\n\t *\n\t * @readonly\n\t * @memberof Contact\n\t */\n\tget displayName() {\n\t\tconst orderKey = store?.getters.getOrderKey\n\t\tconst n = this.vCard.getFirstPropertyValue('n')\n\t\tconst fn = this.vCard.getFirstPropertyValue('fn')\n\t\tconst org = this.vCard.getFirstPropertyValue('org')\n\n\t\t// if ordered by last or first name we need the N property\n\t\t// ! by checking the property we check for null AND empty string\n\t\t// ! that means we can then check for empty array and be safe not to have\n\t\t// ! 'xxxx'.join('') !== ''\n\t\tif (orderKey && n && !isEmpty(n)) {\n\t\t\tswitch (orderKey) {\n\t\t\t\tcase 'firstName':\n\t\t\t\t// Stevenson;John;Philip,Paul;Dr.;Jr.,M.D.,A.C.P.\n\t\t\t\t// -> John Stevenson\n\t\t\t\t\tif (isEmpty(n[0])) {\n\t\t\t\t\t\treturn n[1]\n\t\t\t\t\t}\n\t\t\t\t\treturn n.slice(0, 2).reverse().join(' ')\n\n\t\t\t\tcase 'lastName':\n\t\t\t\t// Stevenson;John;Philip,Paul;Dr.;Jr.,M.D.,A.C.P.\n\t\t\t\t// -> Stevenson, John\n\t\t\t\t\tif (isEmpty(n[0])) {\n\t\t\t\t\t\treturn n[1]\n\t\t\t\t\t}\n\t\t\t\t\treturn n.slice(0, 2).join(', ')\n\t\t\t}\n\t\t}\n\t\t// otherwise the FN is enough\n\t\tif (fn) {\n\t\t\treturn fn\n\t\t}\n\t\t// BUT if no FN property use the N anyway\n\t\tif (n && !isEmpty(n)) {\n\t\t\t// Stevenson;John;Philip,Paul;Dr.;Jr.,M.D.,A.C.P.\n\t\t\t// -> John Stevenson\n\t\t\tif (isEmpty(n[0])) {\n\t\t\t\treturn n[1]\n\t\t\t}\n\t\t\treturn n.slice(0, 2).reverse().join(' ')\n\t\t}\n\t\t// LAST chance, use the org ir that's the only thing we have\n\t\tif (org && !isEmpty(org)) {\n\t\t\t// org is supposed to be an array but is also used as plain string\n\t\t\treturn Array.isArray(org) ? org[0] : org\n\t\t}\n\t\treturn ''\n\t}\n\n\t/**\n\t * Return the first name if exists\n\t * Returns the displayName otherwise\n\t *\n\t * @readonly\n\t * @memberof Contact\n\t * @return {string} firstName|displayName\n\t */\n\tget firstName() {\n\t\tif (this.vCard.hasProperty('n')) {\n\t\t\t// reverse and join\n\t\t\treturn this.vCard.getFirstPropertyValue('n')[1]\n\t\t}\n\t\treturn this.displayName\n\t}\n\n\t/**\n\t * Return the last name if exists\n\t * Returns the displayName otherwise\n\t *\n\t * @readonly\n\t * @memberof Contact\n\t * @return {string} lastName|displayName\n\t */\n\tget lastName() {\n\t\tif (this.vCard.hasProperty('n')) {\n\t\t\t// reverse and join\n\t\t\treturn this.vCard.getFirstPropertyValue('n')[0]\n\t\t}\n\t\treturn this.displayName\n\t}\n\n\t/**\n\t * Return the phonetic first name if exists\n\t * Returns the first name or displayName otherwise\n\t *\n\t * @readonly\n\t * @memberof Contact\n\t * @return {string} phoneticFirstName|firstName|displayName\n\t */\n\tget phoneticFirstName() {\n\t\tif (this.vCard.hasProperty('x-phonetic-first-name')) {\n\t\t\treturn this.vCard.getFirstPropertyValue('x-phonetic-first-name')\n\t\t}\n\t\treturn this.firstName\n\t}\n\n\t/**\n\t * Return first matching link for provided type\n\t * Returns empty string otherwise\n\t *\n\t * @param {string} type of social\n\t * @readonly\n\t * @memberof Contact\n\t * @return {string} firstMatchingLink|''\n\t */\n\tsocialLink(type) {\n\t\tif (this.vCard.hasProperty('x-socialprofile')) {\n\t\t\tconst x = this.vCard.getAllProperties('x-socialprofile').filter((a) => a.jCal[1].type.toString() === type)\n\n\t\t\tif (x.length > 0) {\n\t\t\t\treturn x[0].jCal[3].toString()\n\t\t\t}\n\t\t}\n\t\treturn ''\n\t}\n\n\t/**\n\t * Return the phonetic last name if exists\n\t * Returns the displayName otherwise\n\t *\n\t * @readonly\n\t * @memberof Contact\n\t * @return {string} lastName|displayName\n\t */\n\tget phoneticLastName() {\n\t\tif (this.vCard.hasProperty('x-phonetic-last-name')) {\n\t\t\treturn this.vCard.getFirstPropertyValue('x-phonetic-last-name')\n\t\t}\n\t\treturn this.lastName\n\t}\n\n\t/**\n\t * Return all the properties as Property objects\n\t *\n\t * @readonly\n\t * @memberof Contact\n\t * @return {Property[]} http://mozilla-comm.github.io/ical.js/api/ICAL.Property.html\n\t */\n\tget properties() {\n\t\treturn this.vCard.getAllProperties()\n\t}\n\n\t/**\n\t * Return an array of formatted properties for the search\n\t *\n\t * @readonly\n\t * @memberof Contact\n\t * @return {string[]}\n\t */\n\tget searchData() {\n\t\tconst MinimalContactPropertiesLower = MinimalContactProperties.map((prop) => prop.toLowerCase())\n\t\tconst filtered = this.jCal[1]\n\t\t\t.filter((x) => MinimalContactPropertiesLower.includes(x[0].toLowerCase()))\n\t\t\t.map((x) => {\n\t\t\t\tif (x[0].toLowerCase() === 'tel') {\n\t\t\t\t\treturn this.normalizedTels(x[3])\n\t\t\t\t}\n\t\t\t\treturn x[3].toString()\n\t\t\t})\n\t\treturn filtered\n\t}\n\n\t// support numbers in weird formats for searching e.g. +49 (0) 123 456-789\n\tnormalizedTels(number) {\n\t\treturn number.replace(/[^0-9+#]/g, '')\n\t}\n\n\t/**\n\t * Add the contact to the group\n\t *\n\t * @param {string} group the group to add the contact to\n\t * @memberof Contact\n\t */\n\taddToGroup(group) {\n\t\tif (this.groups.indexOf(group) === -1) {\n\t\t\tif (this.groups.length > 0) {\n\t\t\t\tthis.vCard.getFirstProperty('categories').setValues(this.groups.concat(group))\n\t\t\t} else {\n\t\t\t\tthis.vCard.updatePropertyWithValue('categories', [group])\n\t\t\t}\n\t\t}\n\t}\n\n\ttoStringStripQuotes() {\n\t\tconst regexp = /TYPE=\"([a-zA-Z-,]+)\"/gmi\n\t\tconst card = this.vCard.toString()\n\t\treturn card.replace(regexp, 'TYPE=$1')\n\t}\n}\n",";(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n var flags = null,\n parsedParts = false,\n isNowValid = m._d && !isNaN(m._d.getTime());\n if (isNowValid) {\n flags = getParsingFlags(m);\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n isNowValid =\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n }\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {\n D: 'date',\n dates: 'date',\n date: 'date',\n d: 'day',\n days: 'day',\n day: 'day',\n e: 'weekday',\n weekdays: 'weekday',\n weekday: 'weekday',\n E: 'isoWeekday',\n isoweekdays: 'isoWeekday',\n isoweekday: 'isoWeekday',\n DDD: 'dayOfYear',\n dayofyears: 'dayOfYear',\n dayofyear: 'dayOfYear',\n h: 'hour',\n hours: 'hour',\n hour: 'hour',\n ms: 'millisecond',\n milliseconds: 'millisecond',\n millisecond: 'millisecond',\n m: 'minute',\n minutes: 'minute',\n minute: 'minute',\n M: 'month',\n months: 'month',\n month: 'month',\n Q: 'quarter',\n quarters: 'quarter',\n quarter: 'quarter',\n s: 'second',\n seconds: 'second',\n second: 'second',\n gg: 'weekYear',\n weekyears: 'weekYear',\n weekyear: 'weekYear',\n GG: 'isoWeekYear',\n isoweekyears: 'isoWeekYear',\n isoweekyear: 'isoWeekYear',\n w: 'week',\n weeks: 'week',\n week: 'week',\n W: 'isoWeek',\n isoweeks: 'isoWeek',\n isoweek: 'isoWeek',\n y: 'year',\n years: 'year',\n year: 'year',\n };\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {\n date: 9,\n day: 11,\n weekday: 11,\n isoWeekday: 11,\n dayOfYear: 4,\n hour: 13,\n millisecond: 16,\n minute: 14,\n month: 8,\n quarter: 7,\n second: 15,\n weekYear: 1,\n isoWeekYear: 1,\n week: 5,\n isoWeek: 5,\n year: 1,\n };\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n match1to2NoLeadingZero = /^[1-9]\\d?/, // 1-99\n match1to2HasZero = /^([1-9]\\d|\\d)/, // 0-99\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n if (!mom.isValid()) {\n return NaN;\n }\n\n var d = mom._d,\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();\n case 'Seconds':\n return isUTC ? d.getUTCSeconds() : d.getSeconds();\n case 'Minutes':\n return isUTC ? d.getUTCMinutes() : d.getMinutes();\n case 'Hours':\n return isUTC ? d.getUTCHours() : d.getHours();\n case 'Date':\n return isUTC ? d.getUTCDate() : d.getDate();\n case 'Day':\n return isUTC ? d.getUTCDay() : d.getDay();\n case 'Month':\n return isUTC ? d.getUTCMonth() : d.getMonth();\n case 'FullYear':\n return isUTC ? d.getUTCFullYear() : d.getFullYear();\n default:\n return NaN; // Just in case\n }\n }\n\n function set$1(mom, unit, value) {\n var d, isUTC, year, month, date;\n\n if (!mom.isValid() || isNaN(value)) {\n return;\n }\n\n d = mom._d;\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return void (isUTC\n ? d.setUTCMilliseconds(value)\n : d.setMilliseconds(value));\n case 'Seconds':\n return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));\n case 'Minutes':\n return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));\n case 'Hours':\n return void (isUTC ? d.setUTCHours(value) : d.setHours(value));\n case 'Date':\n return void (isUTC ? d.setUTCDate(value) : d.setDate(value));\n // case 'Day': // Not real\n // return void (isUTC ? d.setUTCDay(value) : d.setDay(value));\n // case 'Month': // Not used because we need to pass two variables\n // return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));\n case 'FullYear':\n break; // See below ...\n default:\n return; // Just in case\n }\n\n year = value;\n month = mom.month();\n date = mom.date();\n date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;\n void (isUTC\n ? d.setUTCFullYear(year, month, date)\n : d.setFullYear(year, month, date));\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // PARSING\n\n addRegexToken('M', match1to2, match1to2NoLeadingZero);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n var month = value,\n date = mom.date();\n\n date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));\n void (mom._isUTC\n ? mom._d.setUTCMonth(month, date)\n : mom._d.setMonth(month, date));\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n shortP,\n longP;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortP = regexEscape(this.monthsShort(mom, ''));\n longP = regexEscape(this.months(mom, ''));\n shortPieces.push(shortP);\n longPieces.push(longP);\n mixedPieces.push(longP);\n mixedPieces.push(shortP);\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // PARSING\n\n addRegexToken('w', match1to2, match1to2NoLeadingZero);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2, match1to2NoLeadingZero);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n var day = get(this, 'Day');\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2, match1to2HasZero);\n addRegexToken('h', match1to2, match1to2NoLeadingZero);\n addRegexToken('k', match1to2, match1to2NoLeadingZero);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n // Ensure name is available and function returns boolean\n return !!(name && name.match('^[^/\\\\\\\\]*$'));\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n erasName,\n erasAbbr,\n erasNarrow,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n erasName = regexEscape(eras[i].name);\n erasAbbr = regexEscape(eras[i].abbr);\n erasNarrow = regexEscape(eras[i].narrow);\n\n namePieces.push(erasName);\n abbrPieces.push(erasAbbr);\n narrowPieces.push(erasNarrow);\n mixedPieces.push(erasName);\n mixedPieces.push(erasAbbr);\n mixedPieces.push(erasNarrow);\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday() + this.localeData()._week.dow,\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // PARSING\n\n addRegexToken('D', match1to2, match1to2NoLeadingZero);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // PARSING\n\n addRegexToken('m', match1to2, match1to2HasZero);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // PARSING\n\n addRegexToken('s', match1to2, match1to2HasZero);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y'),\n valueOf$1 = asMilliseconds;\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.30.1';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n //! moment.js locale configuration\n\n hooks.defineLocale('af', {\n months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(\n '_'\n ),\n weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n meridiemParse: /vm|nm/i,\n isPM: function (input) {\n return /^nm$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'vm' : 'VM';\n } else {\n return isLower ? 'nm' : 'NM';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Vandag om] LT',\n nextDay: '[Môre om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[Gister om] LT',\n lastWeek: '[Laas] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oor %s',\n past: '%s gelede',\n s: \"'n paar sekondes\",\n ss: '%d sekondes',\n m: \"'n minuut\",\n mm: '%d minute',\n h: \"'n uur\",\n hh: '%d ure',\n d: \"'n dag\",\n dd: '%d dae',\n M: \"'n maand\",\n MM: '%d maande',\n y: \"'n jaar\",\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n ); // Thanks to Joris Röling : https://github.com/jjupiter\n },\n week: {\n dow: 1, // Maandag is die eerste dag van die week.\n doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n },\n });\n\n //! moment.js locale configuration\n\n var pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months$1 = [\n 'جانفي',\n 'فيفري',\n 'مارس',\n 'أفريل',\n 'ماي',\n 'جوان',\n 'جويلية',\n 'أوت',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n hooks.defineLocale('ar-dz', {\n months: months$1,\n monthsShort: months$1,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('ar-kw', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort:\n 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 0: '0',\n },\n pluralForm$1 = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals$1 = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize$1 = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm$1(number),\n str = plurals$1[u][pluralForm$1(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months$2 = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n hooks.defineLocale('ar-ly', {\n months: months$2,\n monthsShort: months$2,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize$1('s'),\n ss: pluralize$1('s'),\n m: pluralize$1('m'),\n mm: pluralize$1('m'),\n h: pluralize$1('h'),\n hh: pluralize$1('h'),\n d: pluralize$1('d'),\n dd: pluralize$1('d'),\n M: pluralize$1('M'),\n MM: pluralize$1('M'),\n y: pluralize$1('y'),\n yy: pluralize$1('y'),\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('ar-ma', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort:\n 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$1 = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n };\n\n hooks.defineLocale('ar-ps', {\n months: 'كانون الثاني_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_تشري الأوّل_تشرين الثاني_كانون الأوّل'.split(\n '_'\n ),\n monthsShort:\n 'ك٢_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_ت١_ت٢_ك١'.split('_'),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n preparse: function (string) {\n return string\n .replace(/[٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .split('') // reversed since negative lookbehind not supported everywhere\n .reverse()\n .join('')\n .replace(/[١٢](?![\\u062a\\u0643])/g, function (match) {\n return numberMap[match];\n })\n .split('')\n .reverse()\n .join('')\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap$1[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$2 = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap$1 = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n };\n\n hooks.defineLocale('ar-sa', {\n months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort:\n 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap$1[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap$2[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('ar-tn', {\n months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort:\n 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$3 = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap$2 = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n pluralForm$2 = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals$2 = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize$2 = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm$2(number),\n str = plurals$2[u][pluralForm$2(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months$3 = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n hooks.defineLocale('ar', {\n months: months$3,\n monthsShort: months$3,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize$2('s'),\n ss: pluralize$2('s'),\n m: pluralize$2('m'),\n mm: pluralize$2('m'),\n h: pluralize$2('h'),\n hh: pluralize$2('h'),\n d: pluralize$2('d'),\n dd: pluralize$2('d'),\n M: pluralize$2('M'),\n MM: pluralize$2('M'),\n y: pluralize$2('y'),\n yy: pluralize$2('y'),\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap$2[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap$3[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: '-inci',\n 5: '-inci',\n 8: '-inci',\n 70: '-inci',\n 80: '-inci',\n 2: '-nci',\n 7: '-nci',\n 20: '-nci',\n 50: '-nci',\n 3: '-üncü',\n 4: '-üncü',\n 100: '-üncü',\n 6: '-ncı',\n 9: '-uncu',\n 10: '-uncu',\n 30: '-uncu',\n 60: '-ıncı',\n 90: '-ıncı',\n };\n\n hooks.defineLocale('az', {\n months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(\n '_'\n ),\n monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n weekdays:\n 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(\n '_'\n ),\n weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[sabah saat] LT',\n nextWeek: '[gələn həftə] dddd [saat] LT',\n lastDay: '[dünən] LT',\n lastWeek: '[keçən həftə] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s əvvəl',\n s: 'bir neçə saniyə',\n ss: '%d saniyə',\n m: 'bir dəqiqə',\n mm: '%d dəqiqə',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir il',\n yy: '%d il',\n },\n meridiemParse: /gecə|səhər|gündüz|axşam/,\n isPM: function (input) {\n return /^(gündüz|axşam)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'gecə';\n } else if (hour < 12) {\n return 'səhər';\n } else if (hour < 17) {\n return 'gündüz';\n } else {\n return 'axşam';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n ordinal: function (number) {\n if (number === 0) {\n // special case for zero\n return number + '-ıncı';\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n dd: 'дзень_дні_дзён',\n MM: 'месяц_месяцы_месяцаў',\n yy: 'год_гады_гадоў',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвіліна' : 'хвіліну';\n } else if (key === 'h') {\n return withoutSuffix ? 'гадзіна' : 'гадзіну';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n\n hooks.defineLocale('be', {\n months: {\n format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(\n '_'\n ),\n standalone:\n 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(\n '_'\n ),\n },\n monthsShort:\n 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),\n weekdays: {\n format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(\n '_'\n ),\n standalone:\n 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(\n '_'\n ),\n isFormat: /\\[ ?[Ууў] ?(?:мінулую|наступную)? ?\\] ?dddd/,\n },\n weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., HH:mm',\n LLLL: 'dddd, D MMMM YYYY г., HH:mm',\n },\n calendar: {\n sameDay: '[Сёння ў] LT',\n nextDay: '[Заўтра ў] LT',\n lastDay: '[Учора ў] LT',\n nextWeek: function () {\n return '[У] dddd [ў] LT';\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return '[У мінулую] dddd [ў] LT';\n case 1:\n case 2:\n case 4:\n return '[У мінулы] dddd [ў] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'праз %s',\n past: '%s таму',\n s: 'некалькі секунд',\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithPlural,\n hh: relativeTimeWithPlural,\n d: 'дзень',\n dd: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночы|раніцы|дня|вечара/,\n isPM: function (input) {\n return /^(дня|вечара)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночы';\n } else if (hour < 12) {\n return 'раніцы';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечара';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return (number % 10 === 2 || number % 10 === 3) &&\n number % 100 !== 12 &&\n number % 100 !== 13\n ? number + '-і'\n : number + '-ы';\n case 'D':\n return number + '-га';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('bg', {\n months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Днес в] LT',\n nextDay: '[Утре в] LT',\n nextWeek: 'dddd [в] LT',\n lastDay: '[Вчера в] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Миналата] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Миналия] dddd [в] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'след %s',\n past: 'преди %s',\n s: 'няколко секунди',\n ss: '%d секунди',\n m: 'минута',\n mm: '%d минути',\n h: 'час',\n hh: '%d часа',\n d: 'ден',\n dd: '%d дена',\n w: 'седмица',\n ww: '%d седмици',\n M: 'месец',\n MM: '%d месеца',\n y: 'година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('bm', {\n months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(\n '_'\n ),\n monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'MMMM [tile] D [san] YYYY',\n LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n },\n calendar: {\n sameDay: '[Bi lɛrɛ] LT',\n nextDay: '[Sini lɛrɛ] LT',\n nextWeek: 'dddd [don lɛrɛ] LT',\n lastDay: '[Kunu lɛrɛ] LT',\n lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s kɔnɔ',\n past: 'a bɛ %s bɔ',\n s: 'sanga dama dama',\n ss: 'sekondi %d',\n m: 'miniti kelen',\n mm: 'miniti %d',\n h: 'lɛrɛ kelen',\n hh: 'lɛrɛ %d',\n d: 'tile kelen',\n dd: 'tile %d',\n M: 'kalo kelen',\n MM: 'kalo %d',\n y: 'san kelen',\n yy: 'san %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$4 = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০',\n },\n numberMap$3 = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n hooks.defineLocale('bn-bd', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort:\n 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap$3[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$4[match];\n });\n },\n\n meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'রাত') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ভোর') {\n return hour;\n } else if (meridiem === 'সকাল') {\n return hour;\n } else if (meridiem === 'দুপুর') {\n return hour >= 3 ? hour : hour + 12;\n } else if (meridiem === 'বিকাল') {\n return hour + 12;\n } else if (meridiem === 'সন্ধ্যা') {\n return hour + 12;\n }\n },\n\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 6) {\n return 'ভোর';\n } else if (hour < 12) {\n return 'সকাল';\n } else if (hour < 15) {\n return 'দুপুর';\n } else if (hour < 18) {\n return 'বিকাল';\n } else if (hour < 20) {\n return 'সন্ধ্যা';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$5 = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০',\n },\n numberMap$4 = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n hooks.defineLocale('bn', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort:\n 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap$4[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$5[match];\n });\n },\n meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'রাত' && hour >= 4) ||\n (meridiem === 'দুপুর' && hour < 5) ||\n meridiem === 'বিকাল'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 10) {\n return 'সকাল';\n } else if (hour < 17) {\n return 'দুপুর';\n } else if (hour < 20) {\n return 'বিকাল';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$6 = {\n 1: '༡',\n 2: '༢',\n 3: '༣',\n 4: '༤',\n 5: '༥',\n 6: '༦',\n 7: '༧',\n 8: '༨',\n 9: '༩',\n 0: '༠',\n },\n numberMap$5 = {\n '༡': '1',\n '༢': '2',\n '༣': '3',\n '༤': '4',\n '༥': '5',\n '༦': '6',\n '༧': '7',\n '༨': '8',\n '༩': '9',\n '༠': '0',\n };\n\n hooks.defineLocale('bo', {\n months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(\n '_'\n ),\n monthsShort:\n 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(\n '_'\n ),\n monthsShortRegex: /^(ཟླ་\\d{1,2})/,\n monthsParseExact: true,\n weekdays:\n 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(\n '_'\n ),\n weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(\n '_'\n ),\n weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[དི་རིང] LT',\n nextDay: '[སང་ཉིན] LT',\n nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',\n lastDay: '[ཁ་སང] LT',\n lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ལ་',\n past: '%s སྔན་ལ',\n s: 'ལམ་སང',\n ss: '%d སྐར་ཆ།',\n m: 'སྐར་མ་གཅིག',\n mm: '%d སྐར་མ',\n h: 'ཆུ་ཚོད་གཅིག',\n hh: '%d ཆུ་ཚོད',\n d: 'ཉིན་གཅིག',\n dd: '%d ཉིན་',\n M: 'ཟླ་བ་གཅིག',\n MM: '%d ཟླ་བ',\n y: 'ལོ་གཅིག',\n yy: '%d ལོ',\n },\n preparse: function (string) {\n return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n return numberMap$5[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$6[match];\n });\n },\n meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'མཚན་མོ' && hour >= 4) ||\n (meridiem === 'ཉིན་གུང' && hour < 5) ||\n meridiem === 'དགོང་དག'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'མཚན་མོ';\n } else if (hour < 10) {\n return 'ཞོགས་ཀས';\n } else if (hour < 17) {\n return 'ཉིན་གུང';\n } else if (hour < 20) {\n return 'དགོང་དག';\n } else {\n return 'མཚན་མོ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n function relativeTimeWithMutation(number, withoutSuffix, key) {\n var format = {\n mm: 'munutenn',\n MM: 'miz',\n dd: 'devezh',\n };\n return number + ' ' + mutation(format[key], number);\n }\n function specialMutationForYears(number) {\n switch (lastNumber(number)) {\n case 1:\n case 3:\n case 4:\n case 5:\n case 9:\n return number + ' bloaz';\n default:\n return number + ' vloaz';\n }\n }\n function lastNumber(number) {\n if (number > 9) {\n return lastNumber(number % 10);\n }\n return number;\n }\n function mutation(text, number) {\n if (number === 2) {\n return softMutation(text);\n }\n return text;\n }\n function softMutation(text) {\n var mutationTable = {\n m: 'v',\n b: 'v',\n d: 'z',\n };\n if (mutationTable[text.charAt(0)] === undefined) {\n return text;\n }\n return mutationTable[text.charAt(0)] + text.substring(1);\n }\n\n var monthsParse = [\n /^gen/i,\n /^c[ʼ\\']hwe/i,\n /^meu/i,\n /^ebr/i,\n /^mae/i,\n /^(mez|eve)/i,\n /^gou/i,\n /^eos/i,\n /^gwe/i,\n /^her/i,\n /^du/i,\n /^ker/i,\n ],\n monthsRegex$1 =\n /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n monthsStrictRegex =\n /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,\n monthsShortStrictRegex =\n /^(gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n fullWeekdaysParse = [\n /^sul/i,\n /^lun/i,\n /^meurzh/i,\n /^merc[ʼ\\']her/i,\n /^yaou/i,\n /^gwener/i,\n /^sadorn/i,\n ],\n shortWeekdaysParse = [\n /^Sul/i,\n /^Lun/i,\n /^Meu/i,\n /^Mer/i,\n /^Yao/i,\n /^Gwe/i,\n /^Sad/i,\n ],\n minWeekdaysParse = [\n /^Su/i,\n /^Lu/i,\n /^Me([^r]|$)/i,\n /^Mer/i,\n /^Ya/i,\n /^Gw/i,\n /^Sa/i,\n ];\n\n hooks.defineLocale('br', {\n months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(\n '_'\n ),\n monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),\n weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n weekdaysParse: minWeekdaysParse,\n fullWeekdaysParse: fullWeekdaysParse,\n shortWeekdaysParse: shortWeekdaysParse,\n minWeekdaysParse: minWeekdaysParse,\n\n monthsRegex: monthsRegex$1,\n monthsShortRegex: monthsRegex$1,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [a viz] MMMM YYYY',\n LLL: 'D [a viz] MMMM YYYY HH:mm',\n LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hiziv da] LT',\n nextDay: '[Warcʼhoazh da] LT',\n nextWeek: 'dddd [da] LT',\n lastDay: '[Decʼh da] LT',\n lastWeek: 'dddd [paset da] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'a-benn %s',\n past: '%s ʼzo',\n s: 'un nebeud segondennoù',\n ss: '%d eilenn',\n m: 'ur vunutenn',\n mm: relativeTimeWithMutation,\n h: 'un eur',\n hh: '%d eur',\n d: 'un devezh',\n dd: relativeTimeWithMutation,\n M: 'ur miz',\n MM: relativeTimeWithMutation,\n y: 'ur bloaz',\n yy: specialMutationForYears,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n ordinal: function (number) {\n var output = number === 1 ? 'añ' : 'vet';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn\n isPM: function (token) {\n return token === 'g.m.';\n },\n meridiem: function (hour, minute, isLower) {\n return hour < 12 ? 'a.m.' : 'g.m.';\n },\n });\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 'm':\n return withoutSuffix\n ? 'jedna minuta'\n : isFuture\n ? 'jednu minutu'\n : 'jedne minute';\n }\n }\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jedan sat';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n hooks.defineLocale('bs', {\n months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[prošlu] dddd [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: processRelativeTime,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('ca', {\n months: {\n standalone:\n 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(\n '_'\n ),\n format: \"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort:\n 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a les] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextDay: function () {\n return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastDay: function () {\n return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [passat a ' +\n (this.hours() !== 1 ? 'les' : 'la') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'uns segons',\n ss: '%d segons',\n m: 'un minut',\n mm: '%d minuts',\n h: 'una hora',\n hh: '%d hores',\n d: 'un dia',\n dd: '%d dies',\n M: 'un mes',\n MM: '%d mesos',\n y: 'un any',\n yy: '%d anys',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var months$4 = {\n standalone:\n 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(\n '_'\n ),\n format: 'ledna_února_března_dubna_května_června_července_srpna_září_října_listopadu_prosince'.split(\n '_'\n ),\n isFormat: /DD?[o.]?(\\[[^\\[\\]]*\\]|\\s)+MMMM/,\n },\n monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),\n monthsParse$1 = [\n /^led/i,\n /^úno/i,\n /^bře/i,\n /^dub/i,\n /^kvě/i,\n /^(čvn|červen$|června)/i,\n /^(čvc|červenec|července)/i,\n /^srp/i,\n /^zář/i,\n /^říj/i,\n /^lis/i,\n /^pro/i,\n ],\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsRegex$2 =\n /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;\n\n function plural$1(n) {\n return n > 1 && n < 5 && ~~(n / 10) !== 1;\n }\n function translate$1(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural$1(number) ? 'sekundy' : 'sekund');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural$1(number) ? 'minuty' : 'minut');\n } else {\n return result + 'minutami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural$1(number) ? 'hodiny' : 'hodin');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'den' : 'dnem';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural$1(number) ? 'dny' : 'dní');\n } else {\n return result + 'dny';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural$1(number) ? 'měsíce' : 'měsíců');\n } else {\n return result + 'měsíci';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokem';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural$1(number) ? 'roky' : 'let');\n } else {\n return result + 'lety';\n }\n }\n }\n\n hooks.defineLocale('cs', {\n months: months$4,\n monthsShort: monthsShort,\n monthsRegex: monthsRegex$2,\n monthsShortRegex: monthsRegex$2,\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsStrictRegex:\n /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,\n monthsShortStrictRegex:\n /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,\n monthsParse: monthsParse$1,\n longMonthsParse: monthsParse$1,\n shortMonthsParse: monthsParse$1,\n weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),\n weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n l: 'D. M. YYYY',\n },\n calendar: {\n sameDay: '[dnes v] LT',\n nextDay: '[zítra v] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v neděli v] LT';\n case 1:\n case 2:\n return '[v] dddd [v] LT';\n case 3:\n return '[ve středu v] LT';\n case 4:\n return '[ve čtvrtek v] LT';\n case 5:\n return '[v pátek v] LT';\n case 6:\n return '[v sobotu v] LT';\n }\n },\n lastDay: '[včera v] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulou neděli v] LT';\n case 1:\n case 2:\n return '[minulé] dddd [v] LT';\n case 3:\n return '[minulou středu v] LT';\n case 4:\n case 5:\n return '[minulý] dddd [v] LT';\n case 6:\n return '[minulou sobotu v] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'před %s',\n s: translate$1,\n ss: translate$1,\n m: translate$1,\n mm: translate$1,\n h: translate$1,\n hh: translate$1,\n d: translate$1,\n dd: translate$1,\n M: translate$1,\n MM: translate$1,\n y: translate$1,\n yy: translate$1,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('cv', {\n months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(\n '_'\n ),\n monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n weekdays:\n 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(\n '_'\n ),\n weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n },\n calendar: {\n sameDay: '[Паян] LT [сехетре]',\n nextDay: '[Ыран] LT [сехетре]',\n lastDay: '[Ӗнер] LT [сехетре]',\n nextWeek: '[Ҫитес] dddd LT [сехетре]',\n lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (output) {\n var affix = /сехет$/i.exec(output)\n ? 'рен'\n : /ҫул$/i.exec(output)\n ? 'тан'\n : 'ран';\n return output + affix;\n },\n past: '%s каялла',\n s: 'пӗр-ик ҫеккунт',\n ss: '%d ҫеккунт',\n m: 'пӗр минут',\n mm: '%d минут',\n h: 'пӗр сехет',\n hh: '%d сехет',\n d: 'пӗр кун',\n dd: '%d кун',\n M: 'пӗр уйӑх',\n MM: '%d уйӑх',\n y: 'пӗр ҫул',\n yy: '%d ҫул',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n ordinal: '%d-мӗш',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('cy', {\n months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(\n '_'\n ),\n monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(\n '_'\n ),\n weekdays:\n 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(\n '_'\n ),\n weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n weekdaysParseExact: true,\n // time formats are the same as en-gb\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Heddiw am] LT',\n nextDay: '[Yfory am] LT',\n nextWeek: 'dddd [am] LT',\n lastDay: '[Ddoe am] LT',\n lastWeek: 'dddd [diwethaf am] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'mewn %s',\n past: '%s yn ôl',\n s: 'ychydig eiliadau',\n ss: '%d eiliad',\n m: 'munud',\n mm: '%d munud',\n h: 'awr',\n hh: '%d awr',\n d: 'diwrnod',\n dd: '%d diwrnod',\n M: 'mis',\n MM: '%d mis',\n y: 'blwyddyn',\n yy: '%d flynedd',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n ordinal: function (number) {\n var b = number,\n output = '',\n lookup = [\n '',\n 'af',\n 'il',\n 'ydd',\n 'ydd',\n 'ed',\n 'ed',\n 'ed',\n 'fed',\n 'fed',\n 'fed', // 1af to 10fed\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'fed', // 11eg to 20fed\n ];\n if (b > 20) {\n if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n output = 'fed'; // not 30ain, 70ain or 90ain\n } else {\n output = 'ain';\n }\n } else if (b > 0) {\n output = lookup[b];\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('da', {\n months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'på dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[i] dddd[s kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'få sekunder',\n ss: '%d sekunder',\n m: 'et minut',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dage',\n M: 'en måned',\n MM: '%d måneder',\n y: 'et år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n function processRelativeTime$1(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n hooks.defineLocale('de-at', {\n months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime$1,\n mm: '%d Minuten',\n h: processRelativeTime$1,\n hh: '%d Stunden',\n d: processRelativeTime$1,\n dd: processRelativeTime$1,\n w: processRelativeTime$1,\n ww: '%d Wochen',\n M: processRelativeTime$1,\n MM: processRelativeTime$1,\n y: processRelativeTime$1,\n yy: processRelativeTime$1,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n function processRelativeTime$2(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n hooks.defineLocale('de-ch', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime$2,\n mm: '%d Minuten',\n h: processRelativeTime$2,\n hh: '%d Stunden',\n d: processRelativeTime$2,\n dd: processRelativeTime$2,\n w: processRelativeTime$2,\n ww: '%d Wochen',\n M: processRelativeTime$2,\n MM: processRelativeTime$2,\n y: processRelativeTime$2,\n yy: processRelativeTime$2,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n function processRelativeTime$3(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n hooks.defineLocale('de', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime$3,\n mm: '%d Minuten',\n h: processRelativeTime$3,\n hh: '%d Stunden',\n d: processRelativeTime$3,\n dd: processRelativeTime$3,\n w: processRelativeTime$3,\n ww: '%d Wochen',\n M: processRelativeTime$3,\n MM: processRelativeTime$3,\n y: processRelativeTime$3,\n yy: processRelativeTime$3,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var months$5 = [\n 'ޖެނުއަރީ',\n 'ފެބްރުއަރީ',\n 'މާރިޗު',\n 'އޭޕްރީލު',\n 'މޭ',\n 'ޖޫން',\n 'ޖުލައި',\n 'އޯގަސްޓު',\n 'ސެޕްޓެމްބަރު',\n 'އޮކްޓޯބަރު',\n 'ނޮވެމްބަރު',\n 'ޑިސެމްބަރު',\n ],\n weekdays = [\n 'އާދިއްތަ',\n 'ހޯމަ',\n 'އަންގާރަ',\n 'ބުދަ',\n 'ބުރާސްފަތި',\n 'ހުކުރު',\n 'ހޮނިހިރު',\n ];\n\n hooks.defineLocale('dv', {\n months: months$5,\n monthsShort: months$5,\n weekdays: weekdays,\n weekdaysShort: weekdays,\n weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/M/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /މކ|މފ/,\n isPM: function (input) {\n return 'މފ' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'މކ';\n } else {\n return 'މފ';\n }\n },\n calendar: {\n sameDay: '[މިއަދު] LT',\n nextDay: '[މާދަމާ] LT',\n nextWeek: 'dddd LT',\n lastDay: '[އިއްޔެ] LT',\n lastWeek: '[ފާއިތުވި] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ތެރޭގައި %s',\n past: 'ކުރިން %s',\n s: 'ސިކުންތުކޮޅެއް',\n ss: 'd% ސިކުންތު',\n m: 'މިނިޓެއް',\n mm: 'މިނިޓު %d',\n h: 'ގަޑިއިރެއް',\n hh: 'ގަޑިއިރު %d',\n d: 'ދުވަހެއް',\n dd: 'ދުވަސް %d',\n M: 'މަހެއް',\n MM: 'މަސް %d',\n y: 'އަހަރެއް',\n yy: 'އަހަރު %d',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 7, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n function isFunction$1(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n hooks.defineLocale('el', {\n monthsNominativeEl:\n 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(\n '_'\n ),\n monthsGenitiveEl:\n 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(\n '_'\n ),\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return this._monthsNominativeEl;\n } else if (\n typeof format === 'string' &&\n /D/.test(format.substring(0, format.indexOf('MMMM')))\n ) {\n // if there is a day number before 'MMMM'\n return this._monthsGenitiveEl[momentToFormat.month()];\n } else {\n return this._monthsNominativeEl[momentToFormat.month()];\n }\n },\n monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(\n '_'\n ),\n weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'μμ' : 'ΜΜ';\n } else {\n return isLower ? 'πμ' : 'ΠΜ';\n }\n },\n isPM: function (input) {\n return (input + '').toLowerCase()[0] === 'μ';\n },\n meridiemParse: /[ΠΜ]\\.?Μ?\\.?/i,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendarEl: {\n sameDay: '[Σήμερα {}] LT',\n nextDay: '[Αύριο {}] LT',\n nextWeek: 'dddd [{}] LT',\n lastDay: '[Χθες {}] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 6:\n return '[το προηγούμενο] dddd [{}] LT';\n default:\n return '[την προηγούμενη] dddd [{}] LT';\n }\n },\n sameElse: 'L',\n },\n calendar: function (key, mom) {\n var output = this._calendarEl[key],\n hours = mom && mom.hours();\n if (isFunction$1(output)) {\n output = output.apply(mom);\n }\n return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');\n },\n relativeTime: {\n future: 'σε %s',\n past: '%s πριν',\n s: 'λίγα δευτερόλεπτα',\n ss: '%d δευτερόλεπτα',\n m: 'ένα λεπτό',\n mm: '%d λεπτά',\n h: 'μία ώρα',\n hh: '%d ώρες',\n d: 'μία μέρα',\n dd: '%d μέρες',\n M: 'ένας μήνας',\n MM: '%d μήνες',\n y: 'ένας χρόνος',\n yy: '%d χρόνια',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}η/,\n ordinal: '%dη',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4st is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('en-au', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('en-ca', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'YYYY-MM-DD',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('en-gb', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('en-ie', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('en-il', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('en-in', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('en-nz', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('en-sg', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('eo', {\n months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),\n weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: '[la] D[-an de] MMMM, YYYY',\n LLL: '[la] D[-an de] MMMM, YYYY HH:mm',\n LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',\n llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',\n },\n meridiemParse: /[ap]\\.t\\.m/i,\n isPM: function (input) {\n return input.charAt(0).toLowerCase() === 'p';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'p.t.m.' : 'P.T.M.';\n } else {\n return isLower ? 'a.t.m.' : 'A.T.M.';\n }\n },\n calendar: {\n sameDay: '[Hodiaŭ je] LT',\n nextDay: '[Morgaŭ je] LT',\n nextWeek: 'dddd[n je] LT',\n lastDay: '[Hieraŭ je] LT',\n lastWeek: '[pasintan] dddd[n je] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'post %s',\n past: 'antaŭ %s',\n s: 'kelkaj sekundoj',\n ss: '%d sekundoj',\n m: 'unu minuto',\n mm: '%d minutoj',\n h: 'unu horo',\n hh: '%d horoj',\n d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo\n dd: '%d tagoj',\n M: 'unu monato',\n MM: '%d monatoj',\n y: 'unu jaro',\n yy: '%d jaroj',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}a/,\n ordinal: '%da',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort$1 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse$2 = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex$3 =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n hooks.defineLocale('es-do', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort$1[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex$3,\n monthsShortRegex: monthsRegex$3,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse$2,\n longMonthsParse: monthsParse$2,\n shortMonthsParse: monthsParse$2,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var monthsShortDot$1 =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort$2 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse$3 = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex$4 =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n hooks.defineLocale('es-mx', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot$1;\n } else if (/-MMM-/.test(format)) {\n return monthsShort$2[m.month()];\n } else {\n return monthsShortDot$1[m.month()];\n }\n },\n monthsRegex: monthsRegex$4,\n monthsShortRegex: monthsRegex$4,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse$3,\n longMonthsParse: monthsParse$3,\n shortMonthsParse: monthsParse$3,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n //! moment.js locale configuration\n\n var monthsShortDot$2 =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort$3 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse$4 = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex$5 =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n hooks.defineLocale('es-us', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot$2;\n } else if (/-MMM-/.test(format)) {\n return monthsShort$3[m.month()];\n } else {\n return monthsShortDot$2[m.month()];\n }\n },\n monthsRegex: monthsRegex$5,\n monthsShortRegex: monthsRegex$5,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse$4,\n longMonthsParse: monthsParse$4,\n shortMonthsParse: monthsParse$4,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'MM/DD/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var monthsShortDot$3 =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort$4 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse$5 = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex$6 =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n hooks.defineLocale('es', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot$3;\n } else if (/-MMM-/.test(format)) {\n return monthsShort$4[m.month()];\n } else {\n return monthsShortDot$3[m.month()];\n }\n },\n monthsRegex: monthsRegex$6,\n monthsShortRegex: monthsRegex$6,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse$5,\n longMonthsParse: monthsParse$5,\n shortMonthsParse: monthsParse$5,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n //! moment.js locale configuration\n\n function processRelativeTime$4(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n ss: [number + 'sekundi', number + 'sekundit'],\n m: ['ühe minuti', 'üks minut'],\n mm: [number + ' minuti', number + ' minutit'],\n h: ['ühe tunni', 'tund aega', 'üks tund'],\n hh: [number + ' tunni', number + ' tundi'],\n d: ['ühe päeva', 'üks päev'],\n M: ['kuu aja', 'kuu aega', 'üks kuu'],\n MM: [number + ' kuu', number + ' kuud'],\n y: ['ühe aasta', 'aasta', 'üks aasta'],\n yy: [number + ' aasta', number + ' aastat'],\n };\n if (withoutSuffix) {\n return format[key][2] ? format[key][2] : format[key][1];\n }\n return isFuture ? format[key][0] : format[key][1];\n }\n\n hooks.defineLocale('et', {\n months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(\n '_'\n ),\n monthsShort:\n 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),\n weekdays:\n 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(\n '_'\n ),\n weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Täna,] LT',\n nextDay: '[Homme,] LT',\n nextWeek: '[Järgmine] dddd LT',\n lastDay: '[Eile,] LT',\n lastWeek: '[Eelmine] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s pärast',\n past: '%s tagasi',\n s: processRelativeTime$4,\n ss: processRelativeTime$4,\n m: processRelativeTime$4,\n mm: processRelativeTime$4,\n h: processRelativeTime$4,\n hh: processRelativeTime$4,\n d: processRelativeTime$4,\n dd: '%d päeva',\n M: processRelativeTime$4,\n MM: processRelativeTime$4,\n y: processRelativeTime$4,\n yy: processRelativeTime$4,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('eu', {\n months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(\n '_'\n ),\n monthsShort:\n 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(\n '_'\n ),\n weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),\n weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY[ko] MMMM[ren] D[a]',\n LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n l: 'YYYY-M-D',\n ll: 'YYYY[ko] MMM D[a]',\n lll: 'YYYY[ko] MMM D[a] HH:mm',\n llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',\n },\n calendar: {\n sameDay: '[gaur] LT[etan]',\n nextDay: '[bihar] LT[etan]',\n nextWeek: 'dddd LT[etan]',\n lastDay: '[atzo] LT[etan]',\n lastWeek: '[aurreko] dddd LT[etan]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s barru',\n past: 'duela %s',\n s: 'segundo batzuk',\n ss: '%d segundo',\n m: 'minutu bat',\n mm: '%d minutu',\n h: 'ordu bat',\n hh: '%d ordu',\n d: 'egun bat',\n dd: '%d egun',\n M: 'hilabete bat',\n MM: '%d hilabete',\n y: 'urte bat',\n yy: '%d urte',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$7 = {\n 1: '۱',\n 2: '۲',\n 3: '۳',\n 4: '۴',\n 5: '۵',\n 6: '۶',\n 7: '۷',\n 8: '۸',\n 9: '۹',\n 0: '۰',\n },\n numberMap$6 = {\n '۱': '1',\n '۲': '2',\n '۳': '3',\n '۴': '4',\n '۵': '5',\n '۶': '6',\n '۷': '7',\n '۸': '8',\n '۹': '9',\n '۰': '0',\n };\n\n hooks.defineLocale('fa', {\n months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n monthsShort:\n 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n weekdays:\n 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysShort:\n 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /قبل از ظهر|بعد از ظهر/,\n isPM: function (input) {\n return /بعد از ظهر/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'قبل از ظهر';\n } else {\n return 'بعد از ظهر';\n }\n },\n calendar: {\n sameDay: '[امروز ساعت] LT',\n nextDay: '[فردا ساعت] LT',\n nextWeek: 'dddd [ساعت] LT',\n lastDay: '[دیروز ساعت] LT',\n lastWeek: 'dddd [پیش] [ساعت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'در %s',\n past: '%s پیش',\n s: 'چند ثانیه',\n ss: '%d ثانیه',\n m: 'یک دقیقه',\n mm: '%d دقیقه',\n h: 'یک ساعت',\n hh: '%d ساعت',\n d: 'یک روز',\n dd: '%d روز',\n M: 'یک ماه',\n MM: '%d ماه',\n y: 'یک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string\n .replace(/[۰-۹]/g, function (match) {\n return numberMap$6[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap$7[match];\n })\n .replace(/,/g, '،');\n },\n dayOfMonthOrdinalParse: /\\d{1,2}م/,\n ordinal: '%dم',\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var numbersPast =\n 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(\n ' '\n ),\n numbersFuture = [\n 'nolla',\n 'yhden',\n 'kahden',\n 'kolmen',\n 'neljän',\n 'viiden',\n 'kuuden',\n numbersPast[7],\n numbersPast[8],\n numbersPast[9],\n ];\n function translate$2(number, withoutSuffix, key, isFuture) {\n var result = '';\n switch (key) {\n case 's':\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n case 'ss':\n result = isFuture ? 'sekunnin' : 'sekuntia';\n break;\n case 'm':\n return isFuture ? 'minuutin' : 'minuutti';\n case 'mm':\n result = isFuture ? 'minuutin' : 'minuuttia';\n break;\n case 'h':\n return isFuture ? 'tunnin' : 'tunti';\n case 'hh':\n result = isFuture ? 'tunnin' : 'tuntia';\n break;\n case 'd':\n return isFuture ? 'päivän' : 'päivä';\n case 'dd':\n result = isFuture ? 'päivän' : 'päivää';\n break;\n case 'M':\n return isFuture ? 'kuukauden' : 'kuukausi';\n case 'MM':\n result = isFuture ? 'kuukauden' : 'kuukautta';\n break;\n case 'y':\n return isFuture ? 'vuoden' : 'vuosi';\n case 'yy':\n result = isFuture ? 'vuoden' : 'vuotta';\n break;\n }\n result = verbalNumber(number, isFuture) + ' ' + result;\n return result;\n }\n function verbalNumber(number, isFuture) {\n return number < 10\n ? isFuture\n ? numbersFuture[number]\n : numbersPast[number]\n : number;\n }\n\n hooks.defineLocale('fi', {\n months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(\n '_'\n ),\n monthsShort:\n 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(\n '_'\n ),\n weekdays:\n 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(\n '_'\n ),\n weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[ta] YYYY',\n LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n l: 'D.M.YYYY',\n ll: 'Do MMM YYYY',\n lll: 'Do MMM YYYY, [klo] HH.mm',\n llll: 'ddd, Do MMM YYYY, [klo] HH.mm',\n },\n calendar: {\n sameDay: '[tänään] [klo] LT',\n nextDay: '[huomenna] [klo] LT',\n nextWeek: 'dddd [klo] LT',\n lastDay: '[eilen] [klo] LT',\n lastWeek: '[viime] dddd[na] [klo] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s päästä',\n past: '%s sitten',\n s: translate$2,\n ss: translate$2,\n m: translate$2,\n mm: translate$2,\n h: translate$2,\n hh: translate$2,\n d: translate$2,\n dd: translate$2,\n M: translate$2,\n MM: translate$2,\n y: translate$2,\n yy: translate$2,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('fil', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('fo', {\n months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays:\n 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D. MMMM, YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Í dag kl.] LT',\n nextDay: '[Í morgin kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[Í gjár kl.] LT',\n lastWeek: '[síðstu] dddd [kl] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'um %s',\n past: '%s síðani',\n s: 'fá sekund',\n ss: '%d sekundir',\n m: 'ein minuttur',\n mm: '%d minuttir',\n h: 'ein tími',\n hh: '%d tímar',\n d: 'ein dagur',\n dd: '%d dagar',\n M: 'ein mánaður',\n MM: '%d mánaðir',\n y: 'eitt ár',\n yy: '%d ár',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('fr-ca', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('fr-ch', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var monthsStrictRegex$1 =\n /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsShortStrictRegex$1 =\n /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?)/i,\n monthsRegex$7 =\n /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsParse$6 = [\n /^janv/i,\n /^févr/i,\n /^mars/i,\n /^avr/i,\n /^mai/i,\n /^juin/i,\n /^juil/i,\n /^août/i,\n /^sept/i,\n /^oct/i,\n /^nov/i,\n /^déc/i,\n ];\n\n hooks.defineLocale('fr', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsRegex: monthsRegex$7,\n monthsShortRegex: monthsRegex$7,\n monthsStrictRegex: monthsStrictRegex$1,\n monthsShortStrictRegex: monthsShortStrictRegex$1,\n monthsParse: monthsParse$6,\n longMonthsParse: monthsParse$6,\n shortMonthsParse: monthsParse$6,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n w: 'une semaine',\n ww: '%d semaines',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal: function (number, period) {\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return number + (number === 1 ? 'er' : '');\n\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var monthsShortWithDots =\n 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),\n monthsShortWithoutDots =\n 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');\n\n hooks.defineLocale('fy', {\n months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsParseExact: true,\n weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(\n '_'\n ),\n weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[hjoed om] LT',\n nextDay: '[moarn om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[juster om] LT',\n lastWeek: '[ôfrûne] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oer %s',\n past: '%s lyn',\n s: 'in pear sekonden',\n ss: '%d sekonden',\n m: 'ien minút',\n mm: '%d minuten',\n h: 'ien oere',\n hh: '%d oeren',\n d: 'ien dei',\n dd: '%d dagen',\n M: 'ien moanne',\n MM: '%d moannen',\n y: 'ien jier',\n yy: '%d jierren',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var months$6 = [\n 'Eanáir',\n 'Feabhra',\n 'Márta',\n 'Aibreán',\n 'Bealtaine',\n 'Meitheamh',\n 'Iúil',\n 'Lúnasa',\n 'Meán Fómhair',\n 'Deireadh Fómhair',\n 'Samhain',\n 'Nollaig',\n ],\n monthsShort$5 = [\n 'Ean',\n 'Feabh',\n 'Márt',\n 'Aib',\n 'Beal',\n 'Meith',\n 'Iúil',\n 'Lún',\n 'M.F.',\n 'D.F.',\n 'Samh',\n 'Noll',\n ],\n weekdays$1 = [\n 'Dé Domhnaigh',\n 'Dé Luain',\n 'Dé Máirt',\n 'Dé Céadaoin',\n 'Déardaoin',\n 'Dé hAoine',\n 'Dé Sathairn',\n ],\n weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],\n weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];\n\n hooks.defineLocale('ga', {\n months: months$6,\n monthsShort: monthsShort$5,\n monthsParseExact: true,\n weekdays: weekdays$1,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Inniu ag] LT',\n nextDay: '[Amárach ag] LT',\n nextWeek: 'dddd [ag] LT',\n lastDay: '[Inné ag] LT',\n lastWeek: 'dddd [seo caite] [ag] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i %s',\n past: '%s ó shin',\n s: 'cúpla soicind',\n ss: '%d soicind',\n m: 'nóiméad',\n mm: '%d nóiméad',\n h: 'uair an chloig',\n hh: '%d uair an chloig',\n d: 'lá',\n dd: '%d lá',\n M: 'mí',\n MM: '%d míonna',\n y: 'bliain',\n yy: '%d bliain',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var months$7 = [\n 'Am Faoilleach',\n 'An Gearran',\n 'Am Màrt',\n 'An Giblean',\n 'An Cèitean',\n 'An t-Ògmhios',\n 'An t-Iuchar',\n 'An Lùnastal',\n 'An t-Sultain',\n 'An Dàmhair',\n 'An t-Samhain',\n 'An Dùbhlachd',\n ],\n monthsShort$6 = [\n 'Faoi',\n 'Gear',\n 'Màrt',\n 'Gibl',\n 'Cèit',\n 'Ògmh',\n 'Iuch',\n 'Lùn',\n 'Sult',\n 'Dàmh',\n 'Samh',\n 'Dùbh',\n ],\n weekdays$2 = [\n 'Didòmhnaich',\n 'Diluain',\n 'Dimàirt',\n 'Diciadain',\n 'Diardaoin',\n 'Dihaoine',\n 'Disathairne',\n ],\n weekdaysShort$1 = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n weekdaysMin$1 = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n hooks.defineLocale('gd', {\n months: months$7,\n monthsShort: monthsShort$6,\n monthsParseExact: true,\n weekdays: weekdays$2,\n weekdaysShort: weekdaysShort$1,\n weekdaysMin: weekdaysMin$1,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[An-diugh aig] LT',\n nextDay: '[A-màireach aig] LT',\n nextWeek: 'dddd [aig] LT',\n lastDay: '[An-dè aig] LT',\n lastWeek: 'dddd [seo chaidh] [aig] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ann an %s',\n past: 'bho chionn %s',\n s: 'beagan diogan',\n ss: '%d diogan',\n m: 'mionaid',\n mm: '%d mionaidean',\n h: 'uair',\n hh: '%d uairean',\n d: 'latha',\n dd: '%d latha',\n M: 'mìos',\n MM: '%d mìosan',\n y: 'bliadhna',\n yy: '%d bliadhna',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('gl', {\n months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(\n '_'\n ),\n monthsShort:\n 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextDay: function () {\n return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n },\n lastDay: function () {\n return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';\n },\n lastWeek: function () {\n return (\n '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (str) {\n if (str.indexOf('un') === 0) {\n return 'n' + str;\n }\n return 'en ' + str;\n },\n past: 'hai %s',\n s: 'uns segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'unha hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n function processRelativeTime$5(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],\n ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],\n m: ['एका मिणटान', 'एक मिनूट'],\n mm: [number + ' मिणटांनी', number + ' मिणटां'],\n h: ['एका वरान', 'एक वर'],\n hh: [number + ' वरांनी', number + ' वरां'],\n d: ['एका दिसान', 'एक दीस'],\n dd: [number + ' दिसांनी', number + ' दीस'],\n M: ['एका म्हयन्यान', 'एक म्हयनो'],\n MM: [number + ' म्हयन्यानी', number + ' म्हयने'],\n y: ['एका वर्सान', 'एक वर्स'],\n yy: [number + ' वर्सांनी', number + ' वर्सां'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n hooks.defineLocale('gom-deva', {\n months: {\n standalone:\n 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort:\n 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),\n weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),\n weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [वाजतां]',\n LTS: 'A h:mm:ss [वाजतां]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [वाजतां]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',\n llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',\n },\n calendar: {\n sameDay: '[आयज] LT',\n nextDay: '[फाल्यां] LT',\n nextWeek: '[फुडलो] dddd[,] LT',\n lastDay: '[काल] LT',\n lastWeek: '[फाटलो] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s आदीं',\n s: processRelativeTime$5,\n ss: processRelativeTime$5,\n m: processRelativeTime$5,\n mm: processRelativeTime$5,\n h: processRelativeTime$5,\n hh: processRelativeTime$5,\n d: processRelativeTime$5,\n dd: processRelativeTime$5,\n M: processRelativeTime$5,\n MM: processRelativeTime$5,\n y: processRelativeTime$5,\n yy: processRelativeTime$5,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(वेर)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'वेर' only applies to day of the month\n case 'D':\n return number + 'वेर';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राती') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सकाळीं') {\n return hour;\n } else if (meridiem === 'दनपारां') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'सांजे') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'राती';\n } else if (hour < 12) {\n return 'सकाळीं';\n } else if (hour < 16) {\n return 'दनपारां';\n } else if (hour < 20) {\n return 'सांजे';\n } else {\n return 'राती';\n }\n },\n });\n\n //! moment.js locale configuration\n\n function processRelativeTime$6(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['thoddea sekondamni', 'thodde sekond'],\n ss: [number + ' sekondamni', number + ' sekond'],\n m: ['eka mintan', 'ek minut'],\n mm: [number + ' mintamni', number + ' mintam'],\n h: ['eka voran', 'ek vor'],\n hh: [number + ' voramni', number + ' voram'],\n d: ['eka disan', 'ek dis'],\n dd: [number + ' disamni', number + ' dis'],\n M: ['eka mhoinean', 'ek mhoino'],\n MM: [number + ' mhoineamni', number + ' mhoine'],\n y: ['eka vorsan', 'ek voros'],\n yy: [number + ' vorsamni', number + ' vorsam'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n hooks.defineLocale('gom-latn', {\n months: {\n standalone:\n 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(\n '_'\n ),\n format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort:\n 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: \"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var\".split('_'),\n weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [vazta]',\n LTS: 'A h:mm:ss [vazta]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [vazta]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',\n llll: 'ddd, D MMM YYYY, A h:mm [vazta]',\n },\n calendar: {\n sameDay: '[Aiz] LT',\n nextDay: '[Faleam] LT',\n nextWeek: '[Fuddlo] dddd[,] LT',\n lastDay: '[Kal] LT',\n lastWeek: '[Fattlo] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s adim',\n s: processRelativeTime$6,\n ss: processRelativeTime$6,\n m: processRelativeTime$6,\n mm: processRelativeTime$6,\n h: processRelativeTime$6,\n hh: processRelativeTime$6,\n d: processRelativeTime$6,\n dd: processRelativeTime$6,\n M: processRelativeTime$6,\n MM: processRelativeTime$6,\n y: processRelativeTime$6,\n yy: processRelativeTime$6,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'er' only applies to day of the month\n case 'D':\n return number + 'er';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /rati|sokallim|donparam|sanje/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'rati') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'sokallim') {\n return hour;\n } else if (meridiem === 'donparam') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'sanje') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'rati';\n } else if (hour < 12) {\n return 'sokallim';\n } else if (hour < 16) {\n return 'donparam';\n } else if (hour < 20) {\n return 'sanje';\n } else {\n return 'rati';\n }\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$8 = {\n 1: '૧',\n 2: '૨',\n 3: '૩',\n 4: '૪',\n 5: '૫',\n 6: '૬',\n 7: '૭',\n 8: '૮',\n 9: '૯',\n 0: '૦',\n },\n numberMap$7 = {\n '૧': '1',\n '૨': '2',\n '૩': '3',\n '૪': '4',\n '૫': '5',\n '૬': '6',\n '૭': '7',\n '૮': '8',\n '૯': '9',\n '૦': '0',\n };\n\n hooks.defineLocale('gu', {\n months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(\n '_'\n ),\n monthsShort:\n 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(\n '_'\n ),\n weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm વાગ્યે',\n LTS: 'A h:mm:ss વાગ્યે',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',\n },\n calendar: {\n sameDay: '[આજ] LT',\n nextDay: '[કાલે] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ગઇકાલે] LT',\n lastWeek: '[પાછલા] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s મા',\n past: '%s પહેલા',\n s: 'અમુક પળો',\n ss: '%d સેકંડ',\n m: 'એક મિનિટ',\n mm: '%d મિનિટ',\n h: 'એક કલાક',\n hh: '%d કલાક',\n d: 'એક દિવસ',\n dd: '%d દિવસ',\n M: 'એક મહિનો',\n MM: '%d મહિનો',\n y: 'એક વર્ષ',\n yy: '%d વર્ષ',\n },\n preparse: function (string) {\n return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n return numberMap$7[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$8[match];\n });\n },\n // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'રાત') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'સવાર') {\n return hour;\n } else if (meridiem === 'બપોર') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'સાંજ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'રાત';\n } else if (hour < 10) {\n return 'સવાર';\n } else if (hour < 17) {\n return 'બપોર';\n } else if (hour < 20) {\n return 'સાંજ';\n } else {\n return 'રાત';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('he', {\n months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(\n '_'\n ),\n monthsShort:\n 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),\n weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [ב]MMMM YYYY',\n LLL: 'D [ב]MMMM YYYY HH:mm',\n LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n l: 'D/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[היום ב־]LT',\n nextDay: '[מחר ב־]LT',\n nextWeek: 'dddd [בשעה] LT',\n lastDay: '[אתמול ב־]LT',\n lastWeek: '[ביום] dddd [האחרון בשעה] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'בעוד %s',\n past: 'לפני %s',\n s: 'מספר שניות',\n ss: '%d שניות',\n m: 'דקה',\n mm: '%d דקות',\n h: 'שעה',\n hh: function (number) {\n if (number === 2) {\n return 'שעתיים';\n }\n return number + ' שעות';\n },\n d: 'יום',\n dd: function (number) {\n if (number === 2) {\n return 'יומיים';\n }\n return number + ' ימים';\n },\n M: 'חודש',\n MM: function (number) {\n if (number === 2) {\n return 'חודשיים';\n }\n return number + ' חודשים';\n },\n y: 'שנה',\n yy: function (number) {\n if (number === 2) {\n return 'שנתיים';\n } else if (number % 10 === 0 && number !== 10) {\n return number + ' שנה';\n }\n return number + ' שנים';\n },\n },\n meridiemParse:\n /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n isPM: function (input) {\n return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 5) {\n return 'לפנות בוקר';\n } else if (hour < 10) {\n return 'בבוקר';\n } else if (hour < 12) {\n return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n } else if (hour < 18) {\n return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n } else {\n return 'בערב';\n }\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$9 = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap$8 = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n },\n monthsParse$7 = [\n /^जन/i,\n /^फ़र|फर/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सितं|सित/i,\n /^अक्टू/i,\n /^नव|नवं/i,\n /^दिसं|दिस/i,\n ],\n shortMonthsParse = [\n /^जन/i,\n /^फ़र/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सित/i,\n /^अक्टू/i,\n /^नव/i,\n /^दिस/i,\n ];\n\n hooks.defineLocale('hi', {\n months: {\n format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(\n '_'\n ),\n standalone:\n 'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split(\n '_'\n ),\n },\n monthsShort:\n 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),\n weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm बजे',\n LTS: 'A h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',\n },\n\n monthsParse: monthsParse$7,\n longMonthsParse: monthsParse$7,\n shortMonthsParse: shortMonthsParse,\n\n monthsRegex:\n /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsShortRegex:\n /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsStrictRegex:\n /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,\n\n monthsShortStrictRegex:\n /^(जन\\.?|फ़र\\.?|मार्च?|अप्रै\\.?|मई?|जून?|जुल\\.?|अग\\.?|सित\\.?|अक्टू\\.?|नव\\.?|दिस\\.?)/i,\n\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s में',\n past: '%s पहले',\n s: 'कुछ ही क्षण',\n ss: '%d सेकंड',\n m: 'एक मिनट',\n mm: '%d मिनट',\n h: 'एक घंटा',\n hh: '%d घंटे',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महीने',\n MM: '%d महीने',\n y: 'एक वर्ष',\n yy: '%d वर्ष',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap$8[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$9[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सुबह') {\n return hour;\n } else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n } else if (hour < 10) {\n return 'सुबह';\n } else if (hour < 17) {\n return 'दोपहर';\n } else if (hour < 20) {\n return 'शाम';\n } else {\n return 'रात';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n function translate$3(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n hooks.defineLocale('hr', {\n months: {\n format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(\n '_'\n ),\n standalone:\n 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(\n '_'\n ),\n },\n monthsShort:\n 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM YYYY',\n LLL: 'Do MMMM YYYY H:mm',\n LLLL: 'dddd, Do MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prošlu] [nedjelju] [u] LT';\n case 3:\n return '[prošlu] [srijedu] [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate$3,\n m: translate$3,\n mm: translate$3,\n h: translate$3,\n hh: translate$3,\n d: 'dan',\n dd: translate$3,\n M: 'mjesec',\n MM: translate$3,\n y: 'godinu',\n yy: translate$3,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var weekEndings =\n 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');\n function translate$4(number, withoutSuffix, key, isFuture) {\n var num = number;\n switch (key) {\n case 's':\n return isFuture || withoutSuffix\n ? 'néhány másodperc'\n : 'néhány másodperce';\n case 'ss':\n return num + (isFuture || withoutSuffix)\n ? ' másodperc'\n : ' másodperce';\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n }\n return '';\n }\n function week(isFuture) {\n return (\n (isFuture ? '' : '[múlt] ') +\n '[' +\n weekEndings[this.day()] +\n '] LT[-kor]'\n );\n }\n\n hooks.defineLocale('hu', {\n months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY. MMMM D.',\n LLL: 'YYYY. MMMM D. H:mm',\n LLLL: 'YYYY. MMMM D., dddd H:mm',\n },\n meridiemParse: /de|du/i,\n isPM: function (input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n } else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar: {\n sameDay: '[ma] LT[-kor]',\n nextDay: '[holnap] LT[-kor]',\n nextWeek: function () {\n return week.call(this, true);\n },\n lastDay: '[tegnap] LT[-kor]',\n lastWeek: function () {\n return week.call(this, false);\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s múlva',\n past: '%s',\n s: translate$4,\n ss: translate$4,\n m: translate$4,\n mm: translate$4,\n h: translate$4,\n hh: translate$4,\n d: translate$4,\n dd: translate$4,\n M: translate$4,\n MM: translate$4,\n y: translate$4,\n yy: translate$4,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('hy-am', {\n months: {\n format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(\n '_'\n ),\n standalone:\n 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(\n '_'\n ),\n },\n monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n weekdays:\n 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(\n '_'\n ),\n weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY թ.',\n LLL: 'D MMMM YYYY թ., HH:mm',\n LLLL: 'dddd, D MMMM YYYY թ., HH:mm',\n },\n calendar: {\n sameDay: '[այսօր] LT',\n nextDay: '[վաղը] LT',\n lastDay: '[երեկ] LT',\n nextWeek: function () {\n return 'dddd [օրը ժամը] LT';\n },\n lastWeek: function () {\n return '[անցած] dddd [օրը ժամը] LT';\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s հետո',\n past: '%s առաջ',\n s: 'մի քանի վայրկյան',\n ss: '%d վայրկյան',\n m: 'րոպե',\n mm: '%d րոպե',\n h: 'ժամ',\n hh: '%d ժամ',\n d: 'օր',\n dd: '%d օր',\n M: 'ամիս',\n MM: '%d ամիս',\n y: 'տարի',\n yy: '%d տարի',\n },\n meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n isPM: function (input) {\n return /^(ցերեկվա|երեկոյան)$/.test(input);\n },\n meridiem: function (hour) {\n if (hour < 4) {\n return 'գիշերվա';\n } else if (hour < 12) {\n return 'առավոտվա';\n } else if (hour < 17) {\n return 'ցերեկվա';\n } else {\n return 'երեկոյան';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'DDD':\n case 'w':\n case 'W':\n case 'DDDo':\n if (number === 1) {\n return number + '-ին';\n }\n return number + '-րդ';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('id', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'siang';\n } else if (hours < 19) {\n return 'sore';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Besok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kemarin pukul] LT',\n lastWeek: 'dddd [lalu pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lalu',\n s: 'beberapa detik',\n ss: '%d detik',\n m: 'semenit',\n mm: '%d menit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n function plural$2(n) {\n if (n % 100 === 11) {\n return true;\n } else if (n % 10 === 1) {\n return false;\n }\n return true;\n }\n function translate$5(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nokkrar sekúndur'\n : 'nokkrum sekúndum';\n case 'ss':\n if (plural$2(number)) {\n return (\n result +\n (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')\n );\n }\n return result + 'sekúnda';\n case 'm':\n return withoutSuffix ? 'mínúta' : 'mínútu';\n case 'mm':\n if (plural$2(number)) {\n return (\n result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')\n );\n } else if (withoutSuffix) {\n return result + 'mínúta';\n }\n return result + 'mínútu';\n case 'hh':\n if (plural$2(number)) {\n return (\n result +\n (withoutSuffix || isFuture\n ? 'klukkustundir'\n : 'klukkustundum')\n );\n }\n return result + 'klukkustund';\n case 'd':\n if (withoutSuffix) {\n return 'dagur';\n }\n return isFuture ? 'dag' : 'degi';\n case 'dd':\n if (plural$2(number)) {\n if (withoutSuffix) {\n return result + 'dagar';\n }\n return result + (isFuture ? 'daga' : 'dögum');\n } else if (withoutSuffix) {\n return result + 'dagur';\n }\n return result + (isFuture ? 'dag' : 'degi');\n case 'M':\n if (withoutSuffix) {\n return 'mánuður';\n }\n return isFuture ? 'mánuð' : 'mánuði';\n case 'MM':\n if (plural$2(number)) {\n if (withoutSuffix) {\n return result + 'mánuðir';\n }\n return result + (isFuture ? 'mánuði' : 'mánuðum');\n } else if (withoutSuffix) {\n return result + 'mánuður';\n }\n return result + (isFuture ? 'mánuð' : 'mánuði');\n case 'y':\n return withoutSuffix || isFuture ? 'ár' : 'ári';\n case 'yy':\n if (plural$2(number)) {\n return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n }\n return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n }\n }\n\n hooks.defineLocale('is', {\n months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n weekdays:\n 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',\n },\n calendar: {\n sameDay: '[í dag kl.] LT',\n nextDay: '[á morgun kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[í gær kl.] LT',\n lastWeek: '[síðasta] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'eftir %s',\n past: 'fyrir %s síðan',\n s: translate$5,\n ss: translate$5,\n m: translate$5,\n mm: translate$5,\n h: 'klukkustund',\n hh: translate$5,\n d: translate$5,\n dd: translate$5,\n M: translate$5,\n MM: translate$5,\n y: translate$5,\n yy: translate$5,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('it-ch', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('it', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: function () {\n return (\n '[Oggi a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextDay: function () {\n return (\n '[Domani a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextWeek: function () {\n return (\n 'dddd [a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastDay: function () {\n return (\n '[Ieri a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return (\n '[La scorsa] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n default:\n return (\n '[Lo scorso] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'tra %s',\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n w: 'una settimana',\n ww: '%d settimane',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('ja', {\n eras: [\n {\n since: '2019-05-01',\n offset: 1,\n name: '令和',\n narrow: '㋿',\n abbr: 'R',\n },\n {\n since: '1989-01-08',\n until: '2019-04-30',\n offset: 1,\n name: '平成',\n narrow: '㍻',\n abbr: 'H',\n },\n {\n since: '1926-12-25',\n until: '1989-01-07',\n offset: 1,\n name: '昭和',\n narrow: '㍼',\n abbr: 'S',\n },\n {\n since: '1912-07-30',\n until: '1926-12-24',\n offset: 1,\n name: '大正',\n narrow: '㍽',\n abbr: 'T',\n },\n {\n since: '1873-01-01',\n until: '1912-07-29',\n offset: 6,\n name: '明治',\n narrow: '㍾',\n abbr: 'M',\n },\n {\n since: '0001-01-01',\n until: '1873-12-31',\n offset: 1,\n name: '西暦',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: '紀元前',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n eraYearOrdinalRegex: /(元|\\d+)年/,\n eraYearOrdinalParse: function (input, match) {\n return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);\n },\n months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort: '日_月_火_水_木_金_土'.split('_'),\n weekdaysMin: '日_月_火_水_木_金_土'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日 dddd HH:mm',\n l: 'YYYY/MM/DD',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日(ddd) HH:mm',\n },\n meridiemParse: /午前|午後/i,\n isPM: function (input) {\n return input === '午後';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return '午前';\n } else {\n return '午後';\n }\n },\n calendar: {\n sameDay: '[今日] LT',\n nextDay: '[明日] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[来週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n lastDay: '[昨日] LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[先週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}日/,\n ordinal: function (number, period) {\n switch (period) {\n case 'y':\n return number === 1 ? '元年' : number + '年';\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '数秒',\n ss: '%d秒',\n m: '1分',\n mm: '%d分',\n h: '1時間',\n hh: '%d時間',\n d: '1日',\n dd: '%d日',\n M: '1ヶ月',\n MM: '%dヶ月',\n y: '1年',\n yy: '%d年',\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('jv', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /enjing|siyang|sonten|ndalu/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'enjing') {\n return hour;\n } else if (meridiem === 'siyang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'enjing';\n } else if (hours < 15) {\n return 'siyang';\n } else if (hours < 19) {\n return 'sonten';\n } else {\n return 'ndalu';\n }\n },\n calendar: {\n sameDay: '[Dinten puniko pukul] LT',\n nextDay: '[Mbenjang pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kala wingi pukul] LT',\n lastWeek: 'dddd [kepengker pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'wonten ing %s',\n past: '%s ingkang kepengker',\n s: 'sawetawis detik',\n ss: '%d detik',\n m: 'setunggal menit',\n mm: '%d menit',\n h: 'setunggal jam',\n hh: '%d jam',\n d: 'sedinten',\n dd: '%d dinten',\n M: 'sewulan',\n MM: '%d wulan',\n y: 'setaun',\n yy: '%d taun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('ka', {\n months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(\n '_'\n ),\n monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n weekdays: {\n standalone:\n 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(\n '_'\n ),\n format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(\n '_'\n ),\n isFormat: /(წინა|შემდეგ)/,\n },\n weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[დღეს] LT[-ზე]',\n nextDay: '[ხვალ] LT[-ზე]',\n lastDay: '[გუშინ] LT[-ზე]',\n nextWeek: '[შემდეგ] dddd LT[-ზე]',\n lastWeek: '[წინა] dddd LT-ზე',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return s.replace(\n /(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/,\n function ($0, $1, $2) {\n return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';\n }\n );\n },\n past: function (s) {\n if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {\n return s.replace(/(ი|ე)$/, 'ის წინ');\n }\n if (/წელი/.test(s)) {\n return s.replace(/წელი$/, 'წლის წინ');\n }\n return s;\n },\n s: 'რამდენიმე წამი',\n ss: '%d წამი',\n m: 'წუთი',\n mm: '%d წუთი',\n h: 'საათი',\n hh: '%d საათი',\n d: 'დღე',\n dd: '%d დღე',\n M: 'თვე',\n MM: '%d თვე',\n y: 'წელი',\n yy: '%d წელი',\n },\n dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n ordinal: function (number) {\n if (number === 0) {\n return number;\n }\n if (number === 1) {\n return number + '-ლი';\n }\n if (\n number < 20 ||\n (number <= 100 && number % 20 === 0) ||\n number % 100 === 0\n ) {\n return 'მე-' + number;\n }\n return number + '-ე';\n },\n week: {\n dow: 1,\n doy: 7,\n },\n });\n\n //! moment.js locale configuration\n\n var suffixes$1 = {\n 0: '-ші',\n 1: '-ші',\n 2: '-ші',\n 3: '-ші',\n 4: '-ші',\n 5: '-ші',\n 6: '-шы',\n 7: '-ші',\n 8: '-ші',\n 9: '-шы',\n 10: '-шы',\n 20: '-шы',\n 30: '-шы',\n 40: '-шы',\n 50: '-ші',\n 60: '-шы',\n 70: '-ші',\n 80: '-ші',\n 90: '-шы',\n 100: '-ші',\n };\n\n hooks.defineLocale('kk', {\n months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(\n '_'\n ),\n monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(\n '_'\n ),\n weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгін сағат] LT',\n nextDay: '[Ертең сағат] LT',\n nextWeek: 'dddd [сағат] LT',\n lastDay: '[Кеше сағат] LT',\n lastWeek: '[Өткен аптаның] dddd [сағат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ішінде',\n past: '%s бұрын',\n s: 'бірнеше секунд',\n ss: '%d секунд',\n m: 'бір минут',\n mm: '%d минут',\n h: 'бір сағат',\n hh: '%d сағат',\n d: 'бір күн',\n dd: '%d күн',\n M: 'бір ай',\n MM: '%d ай',\n y: 'бір жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes$1[number] || suffixes$1[a] || suffixes$1[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$a = {\n 1: '១',\n 2: '២',\n 3: '៣',\n 4: '៤',\n 5: '៥',\n 6: '៦',\n 7: '៧',\n 8: '៨',\n 9: '៩',\n 0: '០',\n },\n numberMap$9 = {\n '១': '1',\n '២': '2',\n '៣': '3',\n '៤': '4',\n '៥': '5',\n '៦': '6',\n '៧': '7',\n '៨': '8',\n '៩': '9',\n '០': '0',\n };\n\n hooks.defineLocale('km', {\n months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n monthsShort:\n 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ព្រឹក|ល្ងាច/,\n isPM: function (input) {\n return input === 'ល្ងាច';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ព្រឹក';\n } else {\n return 'ល្ងាច';\n }\n },\n calendar: {\n sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n nextDay: '[ស្អែក ម៉ោង] LT',\n nextWeek: 'dddd [ម៉ោង] LT',\n lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sទៀត',\n past: '%sមុន',\n s: 'ប៉ុន្មានវិនាទី',\n ss: '%d វិនាទី',\n m: 'មួយនាទី',\n mm: '%d នាទី',\n h: 'មួយម៉ោង',\n hh: '%d ម៉ោង',\n d: 'មួយថ្ងៃ',\n dd: '%d ថ្ងៃ',\n M: 'មួយខែ',\n MM: '%d ខែ',\n y: 'មួយឆ្នាំ',\n yy: '%d ឆ្នាំ',\n },\n dayOfMonthOrdinalParse: /ទី\\d{1,2}/,\n ordinal: 'ទី%d',\n preparse: function (string) {\n return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n return numberMap$9[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$a[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$b = {\n 1: '೧',\n 2: '೨',\n 3: '೩',\n 4: '೪',\n 5: '೫',\n 6: '೬',\n 7: '೭',\n 8: '೮',\n 9: '೯',\n 0: '೦',\n },\n numberMap$a = {\n '೧': '1',\n '೨': '2',\n '೩': '3',\n '೪': '4',\n '೫': '5',\n '೬': '6',\n '೭': '7',\n '೮': '8',\n '೯': '9',\n '೦': '0',\n };\n\n hooks.defineLocale('kn', {\n months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(\n '_'\n ),\n monthsShort:\n 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(\n '_'\n ),\n weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[ಇಂದು] LT',\n nextDay: '[ನಾಳೆ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ನಿನ್ನೆ] LT',\n lastWeek: '[ಕೊನೆಯ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ನಂತರ',\n past: '%s ಹಿಂದೆ',\n s: 'ಕೆಲವು ಕ್ಷಣಗಳು',\n ss: '%d ಸೆಕೆಂಡುಗಳು',\n m: 'ಒಂದು ನಿಮಿಷ',\n mm: '%d ನಿಮಿಷ',\n h: 'ಒಂದು ಗಂಟೆ',\n hh: '%d ಗಂಟೆ',\n d: 'ಒಂದು ದಿನ',\n dd: '%d ದಿನ',\n M: 'ಒಂದು ತಿಂಗಳು',\n MM: '%d ತಿಂಗಳು',\n y: 'ಒಂದು ವರ್ಷ',\n yy: '%d ವರ್ಷ',\n },\n preparse: function (string) {\n return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n return numberMap$a[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$b[match];\n });\n },\n meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ರಾತ್ರಿ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n return hour;\n } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ಸಂಜೆ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ರಾತ್ರಿ';\n } else if (hour < 10) {\n return 'ಬೆಳಿಗ್ಗೆ';\n } else if (hour < 17) {\n return 'ಮಧ್ಯಾಹ್ನ';\n } else if (hour < 20) {\n return 'ಸಂಜೆ';\n } else {\n return 'ರಾತ್ರಿ';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n ordinal: function (number) {\n return number + 'ನೇ';\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('ko', {\n months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(\n '_'\n ),\n weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n weekdaysShort: '일_월_화_수_목_금_토'.split('_'),\n weekdaysMin: '일_월_화_수_목_금_토'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY년 MMMM D일',\n LLL: 'YYYY년 MMMM D일 A h:mm',\n LLLL: 'YYYY년 MMMM D일 dddd A h:mm',\n l: 'YYYY.MM.DD.',\n ll: 'YYYY년 MMMM D일',\n lll: 'YYYY년 MMMM D일 A h:mm',\n llll: 'YYYY년 MMMM D일 dddd A h:mm',\n },\n calendar: {\n sameDay: '오늘 LT',\n nextDay: '내일 LT',\n nextWeek: 'dddd LT',\n lastDay: '어제 LT',\n lastWeek: '지난주 dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s 후',\n past: '%s 전',\n s: '몇 초',\n ss: '%d초',\n m: '1분',\n mm: '%d분',\n h: '한 시간',\n hh: '%d시간',\n d: '하루',\n dd: '%d일',\n M: '한 달',\n MM: '%d달',\n y: '일 년',\n yy: '%d년',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(일|월|주)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '일';\n case 'M':\n return number + '월';\n case 'w':\n case 'W':\n return number + '주';\n default:\n return number;\n }\n },\n meridiemParse: /오전|오후/,\n isPM: function (token) {\n return token === '오후';\n },\n meridiem: function (hour, minute, isUpper) {\n return hour < 12 ? '오전' : '오후';\n },\n });\n\n //! moment.js locale configuration\n\n function processRelativeTime$7(num, withoutSuffix, key, isFuture) {\n var format = {\n s: ['çend sanîye', 'çend sanîyeyan'],\n ss: [num + ' sanîye', num + ' sanîyeyan'],\n m: ['deqîqeyek', 'deqîqeyekê'],\n mm: [num + ' deqîqe', num + ' deqîqeyan'],\n h: ['saetek', 'saetekê'],\n hh: [num + ' saet', num + ' saetan'],\n d: ['rojek', 'rojekê'],\n dd: [num + ' roj', num + ' rojan'],\n w: ['hefteyek', 'hefteyekê'],\n ww: [num + ' hefte', num + ' hefteyan'],\n M: ['mehek', 'mehekê'],\n MM: [num + ' meh', num + ' mehan'],\n y: ['salek', 'salekê'],\n yy: [num + ' sal', num + ' salan'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n // function obliqueNumSuffix(num) {\n // if(num.includes(':'))\n // num = parseInt(num.split(':')[0]);\n // else\n // num = parseInt(num);\n // return num == 0 || num % 10 == 1 ? 'ê'\n // : (num > 10 && num % 10 == 0 ? 'î' : 'an');\n // }\n function ezafeNumSuffix(num) {\n num = '' + num;\n var l = num.substring(num.length - 1),\n ll = num.length > 1 ? num.substring(num.length - 2) : '';\n if (\n !(ll == 12 || ll == 13) &&\n (l == '2' || l == '3' || ll == '50' || l == '70' || l == '80')\n )\n return 'yê';\n return 'ê';\n }\n\n hooks.defineLocale('ku-kmr', {\n // According to the spelling rules defined by the work group of Weqfa Mezopotamyayê (Mesopotamia Foundation)\n // this should be: 'Kanûna Paşîn_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Çirîya Pêşîn_Çirîya Paşîn_Kanûna Pêşîn'\n // But the names below are more well known and handy\n months: 'Rêbendan_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Cotmeh_Mijdar_Berfanbar'.split(\n '_'\n ),\n monthsShort: 'Rêb_Sib_Ada_Nîs_Gul_Hez_Tîr_Teb_Îlo_Cot_Mij_Ber'.split('_'),\n monthsParseExact: true,\n weekdays: 'Yekşem_Duşem_Sêşem_Çarşem_Pêncşem_În_Şemî'.split('_'),\n weekdaysShort: 'Yek_Du_Sê_Çar_Pên_În_Şem'.split('_'),\n weekdaysMin: 'Ye_Du_Sê_Ça_Pê_În_Şe'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'bn' : 'BN';\n } else {\n return isLower ? 'pn' : 'PN';\n }\n },\n meridiemParse: /bn|BN|pn|PN/,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[a] YYYY[an]',\n LLL: 'Do MMMM[a] YYYY[an] HH:mm',\n LLLL: 'dddd, Do MMMM[a] YYYY[an] HH:mm',\n ll: 'Do MMM[.] YYYY[an]',\n lll: 'Do MMM[.] YYYY[an] HH:mm',\n llll: 'ddd[.], Do MMM[.] YYYY[an] HH:mm',\n },\n calendar: {\n sameDay: '[Îro di saet] LT [de]',\n nextDay: '[Sibê di saet] LT [de]',\n nextWeek: 'dddd [di saet] LT [de]',\n lastDay: '[Duh di saet] LT [de]',\n lastWeek: 'dddd[a borî di saet] LT [de]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'di %s de',\n past: 'berî %s',\n s: processRelativeTime$7,\n ss: processRelativeTime$7,\n m: processRelativeTime$7,\n mm: processRelativeTime$7,\n h: processRelativeTime$7,\n hh: processRelativeTime$7,\n d: processRelativeTime$7,\n dd: processRelativeTime$7,\n w: processRelativeTime$7,\n ww: processRelativeTime$7,\n M: processRelativeTime$7,\n MM: processRelativeTime$7,\n y: processRelativeTime$7,\n yy: processRelativeTime$7,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(?:yê|ê|\\.)/,\n ordinal: function (num, period) {\n var p = period.toLowerCase();\n if (p.includes('w') || p.includes('m')) return num + '.';\n\n return num + ezafeNumSuffix(num);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$c = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap$b = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n months$8 = [\n 'کانونی دووەم',\n 'شوبات',\n 'ئازار',\n 'نیسان',\n 'ئایار',\n 'حوزەیران',\n 'تەمموز',\n 'ئاب',\n 'ئەیلوول',\n 'تشرینی یەكەم',\n 'تشرینی دووەم',\n 'كانونی یەکەم',\n ];\n\n hooks.defineLocale('ku', {\n months: months$8,\n monthsShort: months$8,\n weekdays:\n 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(\n '_'\n ),\n weekdaysShort:\n 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split('_'),\n weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ئێواره‌|به‌یانی/,\n isPM: function (input) {\n return /ئێواره‌/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'به‌یانی';\n } else {\n return 'ئێواره‌';\n }\n },\n calendar: {\n sameDay: '[ئه‌مرۆ كاتژمێر] LT',\n nextDay: '[به‌یانی كاتژمێر] LT',\n nextWeek: 'dddd [كاتژمێر] LT',\n lastDay: '[دوێنێ كاتژمێر] LT',\n lastWeek: 'dddd [كاتژمێر] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'له‌ %s',\n past: '%s',\n s: 'چه‌ند چركه‌یه‌ك',\n ss: 'چركه‌ %d',\n m: 'یه‌ك خوله‌ك',\n mm: '%d خوله‌ك',\n h: 'یه‌ك كاتژمێر',\n hh: '%d كاتژمێر',\n d: 'یه‌ك ڕۆژ',\n dd: '%d ڕۆژ',\n M: 'یه‌ك مانگ',\n MM: '%d مانگ',\n y: 'یه‌ك ساڵ',\n yy: '%d ساڵ',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap$b[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap$c[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var suffixes$2 = {\n 0: '-чү',\n 1: '-чи',\n 2: '-чи',\n 3: '-чү',\n 4: '-чү',\n 5: '-чи',\n 6: '-чы',\n 7: '-чи',\n 8: '-чи',\n 9: '-чу',\n 10: '-чу',\n 20: '-чы',\n 30: '-чу',\n 40: '-чы',\n 50: '-чү',\n 60: '-чы',\n 70: '-чи',\n 80: '-чи',\n 90: '-чу',\n 100: '-чү',\n };\n\n hooks.defineLocale('ky', {\n months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(\n '_'\n ),\n weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(\n '_'\n ),\n weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгүн саат] LT',\n nextDay: '[Эртең саат] LT',\n nextWeek: 'dddd [саат] LT',\n lastDay: '[Кечээ саат] LT',\n lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ичинде',\n past: '%s мурун',\n s: 'бирнече секунд',\n ss: '%d секунд',\n m: 'бир мүнөт',\n mm: '%d мүнөт',\n h: 'бир саат',\n hh: '%d саат',\n d: 'бир күн',\n dd: '%d күн',\n M: 'бир ай',\n MM: '%d ай',\n y: 'бир жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes$2[number] || suffixes$2[a] || suffixes$2[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n function processRelativeTime$8(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eng Minutt', 'enger Minutt'],\n h: ['eng Stonn', 'enger Stonn'],\n d: ['een Dag', 'engem Dag'],\n M: ['ee Mount', 'engem Mount'],\n y: ['ee Joer', 'engem Joer'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n function processFutureTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'a ' + string;\n }\n return 'an ' + string;\n }\n function processPastTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'viru ' + string;\n }\n return 'virun ' + string;\n }\n /**\n * Returns true if the word before the given number loses the '-n' ending.\n * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n *\n * @param number {integer}\n * @returns {boolean}\n */\n function eifelerRegelAppliesToNumber(number) {\n number = parseInt(number, 10);\n if (isNaN(number)) {\n return false;\n }\n if (number < 0) {\n // Negative Number --> always true\n return true;\n } else if (number < 10) {\n // Only 1 digit\n if (4 <= number && number <= 7) {\n return true;\n }\n return false;\n } else if (number < 100) {\n // 2 digits\n var lastDigit = number % 10,\n firstDigit = number / 10;\n if (lastDigit === 0) {\n return eifelerRegelAppliesToNumber(firstDigit);\n }\n return eifelerRegelAppliesToNumber(lastDigit);\n } else if (number < 10000) {\n // 3 or 4 digits --> recursively check first digit\n while (number >= 10) {\n number = number / 10;\n }\n return eifelerRegelAppliesToNumber(number);\n } else {\n // Anything larger than 4 digits: recursively check first n-3 digits\n number = number / 1000;\n return eifelerRegelAppliesToNumber(number);\n }\n }\n\n hooks.defineLocale('lb', {\n months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(\n '_'\n ),\n weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm [Auer]',\n LTS: 'H:mm:ss [Auer]',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm [Auer]',\n LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',\n },\n calendar: {\n sameDay: '[Haut um] LT',\n sameElse: 'L',\n nextDay: '[Muer um] LT',\n nextWeek: 'dddd [um] LT',\n lastDay: '[Gëschter um] LT',\n lastWeek: function () {\n // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n switch (this.day()) {\n case 2:\n case 4:\n return '[Leschten] dddd [um] LT';\n default:\n return '[Leschte] dddd [um] LT';\n }\n },\n },\n relativeTime: {\n future: processFutureTime,\n past: processPastTime,\n s: 'e puer Sekonnen',\n ss: '%d Sekonnen',\n m: processRelativeTime$8,\n mm: '%d Minutten',\n h: processRelativeTime$8,\n hh: '%d Stonnen',\n d: processRelativeTime$8,\n dd: '%d Deeg',\n M: processRelativeTime$8,\n MM: '%d Méint',\n y: processRelativeTime$8,\n yy: '%d Joer',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('lo', {\n months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n monthsShort:\n 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'ວັນdddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n isPM: function (input) {\n return input === 'ຕອນແລງ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ຕອນເຊົ້າ';\n } else {\n return 'ຕອນແລງ';\n }\n },\n calendar: {\n sameDay: '[ມື້ນີ້ເວລາ] LT',\n nextDay: '[ມື້ອື່ນເວລາ] LT',\n nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',\n lastDay: '[ມື້ວານນີ້ເວລາ] LT',\n lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ອີກ %s',\n past: '%sຜ່ານມາ',\n s: 'ບໍ່ເທົ່າໃດວິນາທີ',\n ss: '%d ວິນາທີ',\n m: '1 ນາທີ',\n mm: '%d ນາທີ',\n h: '1 ຊົ່ວໂມງ',\n hh: '%d ຊົ່ວໂມງ',\n d: '1 ມື້',\n dd: '%d ມື້',\n M: '1 ເດືອນ',\n MM: '%d ເດືອນ',\n y: '1 ປີ',\n yy: '%d ປີ',\n },\n dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n ordinal: function (number) {\n return 'ທີ່' + number;\n },\n });\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundė_sekundžių_sekundes',\n m: 'minutė_minutės_minutę',\n mm: 'minutės_minučių_minutes',\n h: 'valanda_valandos_valandą',\n hh: 'valandos_valandų_valandas',\n d: 'diena_dienos_dieną',\n dd: 'dienos_dienų_dienas',\n M: 'mėnuo_mėnesio_mėnesį',\n MM: 'mėnesiai_mėnesių_mėnesius',\n y: 'metai_metų_metus',\n yy: 'metai_metų_metus',\n };\n function translateSeconds(number, withoutSuffix, key, isFuture) {\n if (withoutSuffix) {\n return 'kelios sekundės';\n } else {\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n }\n }\n function translateSingular(number, withoutSuffix, key, isFuture) {\n return withoutSuffix\n ? forms(key)[0]\n : isFuture\n ? forms(key)[1]\n : forms(key)[2];\n }\n function special(number) {\n return number % 10 === 0 || (number > 10 && number < 20);\n }\n function forms(key) {\n return units[key].split('_');\n }\n function translate$6(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n if (number === 1) {\n return (\n result + translateSingular(number, withoutSuffix, key[0], isFuture)\n );\n } else if (withoutSuffix) {\n return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n } else {\n if (isFuture) {\n return result + forms(key)[1];\n } else {\n return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n }\n }\n }\n hooks.defineLocale('lt', {\n months: {\n format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(\n '_'\n ),\n standalone:\n 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(\n '_'\n ),\n isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/,\n },\n monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n weekdays: {\n format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(\n '_'\n ),\n standalone:\n 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(\n '_'\n ),\n isFormat: /dddd HH:mm/,\n },\n weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY [m.] MMMM D [d.]',\n LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n l: 'YYYY-MM-DD',\n ll: 'YYYY [m.] MMMM D [d.]',\n lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',\n },\n calendar: {\n sameDay: '[Šiandien] LT',\n nextDay: '[Rytoj] LT',\n nextWeek: 'dddd LT',\n lastDay: '[Vakar] LT',\n lastWeek: '[Praėjusį] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'po %s',\n past: 'prieš %s',\n s: translateSeconds,\n ss: translate$6,\n m: translateSingular,\n mm: translate$6,\n h: translateSingular,\n hh: translate$6,\n d: translateSingular,\n dd: translate$6,\n M: translateSingular,\n MM: translate$6,\n y: translateSingular,\n yy: translate$6,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n ordinal: function (number) {\n return number + '-oji';\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var units$1 = {\n ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),\n m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n h: 'stundas_stundām_stunda_stundas'.split('_'),\n hh: 'stundas_stundām_stunda_stundas'.split('_'),\n d: 'dienas_dienām_diena_dienas'.split('_'),\n dd: 'dienas_dienām_diena_dienas'.split('_'),\n M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n y: 'gada_gadiem_gads_gadi'.split('_'),\n yy: 'gada_gadiem_gads_gadi'.split('_'),\n };\n /**\n * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n */\n function format$1(forms, number, withoutSuffix) {\n if (withoutSuffix) {\n // E.g. \"21 minūte\", \"3 minūtes\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n } else {\n // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n }\n }\n function relativeTimeWithPlural$1(number, withoutSuffix, key) {\n return number + ' ' + format$1(units$1[key], number, withoutSuffix);\n }\n function relativeTimeWithSingular(number, withoutSuffix, key) {\n return format$1(units$1[key], number, withoutSuffix);\n }\n function relativeSeconds(number, withoutSuffix) {\n return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n }\n\n hooks.defineLocale('lv', {\n months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n weekdays:\n 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(\n '_'\n ),\n weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY.',\n LL: 'YYYY. [gada] D. MMMM',\n LLL: 'YYYY. [gada] D. MMMM, HH:mm',\n LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',\n },\n calendar: {\n sameDay: '[Šodien pulksten] LT',\n nextDay: '[Rīt pulksten] LT',\n nextWeek: 'dddd [pulksten] LT',\n lastDay: '[Vakar pulksten] LT',\n lastWeek: '[Pagājušā] dddd [pulksten] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'pēc %s',\n past: 'pirms %s',\n s: relativeSeconds,\n ss: relativeTimeWithPlural$1,\n m: relativeTimeWithSingular,\n mm: relativeTimeWithPlural$1,\n h: relativeTimeWithSingular,\n hh: relativeTimeWithPlural$1,\n d: relativeTimeWithSingular,\n dd: relativeTimeWithPlural$1,\n M: relativeTimeWithSingular,\n MM: relativeTimeWithPlural$1,\n y: relativeTimeWithSingular,\n yy: relativeTimeWithPlural$1,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekund', 'sekunda', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mjesec', 'mjeseca', 'mjeseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n hooks.defineLocale('me', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sjutra u] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedjelje] [u] LT',\n '[prošlog] [ponedjeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srijede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mjesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('mi', {\n months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(\n '_'\n ),\n monthsShort:\n 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(\n '_'\n ),\n monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [i] HH:mm',\n LLLL: 'dddd, D MMMM YYYY [i] HH:mm',\n },\n calendar: {\n sameDay: '[i teie mahana, i] LT',\n nextDay: '[apopo i] LT',\n nextWeek: 'dddd [i] LT',\n lastDay: '[inanahi i] LT',\n lastWeek: 'dddd [whakamutunga i] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i roto i %s',\n past: '%s i mua',\n s: 'te hēkona ruarua',\n ss: '%d hēkona',\n m: 'he meneti',\n mm: '%d meneti',\n h: 'te haora',\n hh: '%d haora',\n d: 'he ra',\n dd: '%d ra',\n M: 'he marama',\n MM: '%d marama',\n y: 'he tau',\n yy: '%d tau',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('mk', {\n months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Денес во] LT',\n nextDay: '[Утре во] LT',\n nextWeek: '[Во] dddd [во] LT',\n lastDay: '[Вчера во] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Изминатата] dddd [во] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Изминатиот] dddd [во] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пред %s',\n s: 'неколку секунди',\n ss: '%d секунди',\n m: 'една минута',\n mm: '%d минути',\n h: 'еден час',\n hh: '%d часа',\n d: 'еден ден',\n dd: '%d дена',\n M: 'еден месец',\n MM: '%d месеци',\n y: 'една година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('ml', {\n months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(\n '_'\n ),\n monthsShort:\n 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(\n '_'\n ),\n weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm -നു',\n LTS: 'A h:mm:ss -നു',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm -നു',\n LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',\n },\n calendar: {\n sameDay: '[ഇന്ന്] LT',\n nextDay: '[നാളെ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ഇന്നലെ] LT',\n lastWeek: '[കഴിഞ്ഞ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s കഴിഞ്ഞ്',\n past: '%s മുൻപ്',\n s: 'അൽപ നിമിഷങ്ങൾ',\n ss: '%d സെക്കൻഡ്',\n m: 'ഒരു മിനിറ്റ്',\n mm: '%d മിനിറ്റ്',\n h: 'ഒരു മണിക്കൂർ',\n hh: '%d മണിക്കൂർ',\n d: 'ഒരു ദിവസം',\n dd: '%d ദിവസം',\n M: 'ഒരു മാസം',\n MM: '%d മാസം',\n y: 'ഒരു വർഷം',\n yy: '%d വർഷം',\n },\n meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'രാത്രി' && hour >= 4) ||\n meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n meridiem === 'വൈകുന്നേരം'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'രാത്രി';\n } else if (hour < 12) {\n return 'രാവിലെ';\n } else if (hour < 17) {\n return 'ഉച്ച കഴിഞ്ഞ്';\n } else if (hour < 20) {\n return 'വൈകുന്നേരം';\n } else {\n return 'രാത്രി';\n }\n },\n });\n\n //! moment.js locale configuration\n\n function translate$7(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 's':\n return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n case 'ss':\n return number + (withoutSuffix ? ' секунд' : ' секундын');\n case 'm':\n case 'mm':\n return number + (withoutSuffix ? ' минут' : ' минутын');\n case 'h':\n case 'hh':\n return number + (withoutSuffix ? ' цаг' : ' цагийн');\n case 'd':\n case 'dd':\n return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n case 'M':\n case 'MM':\n return number + (withoutSuffix ? ' сар' : ' сарын');\n case 'y':\n case 'yy':\n return number + (withoutSuffix ? ' жил' : ' жилийн');\n default:\n return number;\n }\n }\n\n hooks.defineLocale('mn', {\n months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(\n '_'\n ),\n monthsShort:\n '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY оны MMMMын D',\n LLL: 'YYYY оны MMMMын D HH:mm',\n LLLL: 'dddd, YYYY оны MMMMын D HH:mm',\n },\n meridiemParse: /ҮӨ|ҮХ/i,\n isPM: function (input) {\n return input === 'ҮХ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ҮӨ';\n } else {\n return 'ҮХ';\n }\n },\n calendar: {\n sameDay: '[Өнөөдөр] LT',\n nextDay: '[Маргааш] LT',\n nextWeek: '[Ирэх] dddd LT',\n lastDay: '[Өчигдөр] LT',\n lastWeek: '[Өнгөрсөн] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s дараа',\n past: '%s өмнө',\n s: translate$7,\n ss: translate$7,\n m: translate$7,\n mm: translate$7,\n h: translate$7,\n hh: translate$7,\n d: translate$7,\n dd: translate$7,\n M: translate$7,\n MM: translate$7,\n y: translate$7,\n yy: translate$7,\n },\n dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + ' өдөр';\n default:\n return number;\n }\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$d = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap$c = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n function relativeTimeMr(number, withoutSuffix, string, isFuture) {\n var output = '';\n if (withoutSuffix) {\n switch (string) {\n case 's':\n output = 'काही सेकंद';\n break;\n case 'ss':\n output = '%d सेकंद';\n break;\n case 'm':\n output = 'एक मिनिट';\n break;\n case 'mm':\n output = '%d मिनिटे';\n break;\n case 'h':\n output = 'एक तास';\n break;\n case 'hh':\n output = '%d तास';\n break;\n case 'd':\n output = 'एक दिवस';\n break;\n case 'dd':\n output = '%d दिवस';\n break;\n case 'M':\n output = 'एक महिना';\n break;\n case 'MM':\n output = '%d महिने';\n break;\n case 'y':\n output = 'एक वर्ष';\n break;\n case 'yy':\n output = '%d वर्षे';\n break;\n }\n } else {\n switch (string) {\n case 's':\n output = 'काही सेकंदां';\n break;\n case 'ss':\n output = '%d सेकंदां';\n break;\n case 'm':\n output = 'एका मिनिटा';\n break;\n case 'mm':\n output = '%d मिनिटां';\n break;\n case 'h':\n output = 'एका तासा';\n break;\n case 'hh':\n output = '%d तासां';\n break;\n case 'd':\n output = 'एका दिवसा';\n break;\n case 'dd':\n output = '%d दिवसां';\n break;\n case 'M':\n output = 'एका महिन्या';\n break;\n case 'MM':\n output = '%d महिन्यां';\n break;\n case 'y':\n output = 'एका वर्षा';\n break;\n case 'yy':\n output = '%d वर्षां';\n break;\n }\n }\n return output.replace(/%d/i, number);\n }\n\n hooks.defineLocale('mr', {\n months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n monthsShort:\n 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm वाजता',\n LTS: 'A h:mm:ss वाजता',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm वाजता',\n LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[उद्या] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[काल] LT',\n lastWeek: '[मागील] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमध्ये',\n past: '%sपूर्वी',\n s: relativeTimeMr,\n ss: relativeTimeMr,\n m: relativeTimeMr,\n mm: relativeTimeMr,\n h: relativeTimeMr,\n hh: relativeTimeMr,\n d: relativeTimeMr,\n dd: relativeTimeMr,\n M: relativeTimeMr,\n MM: relativeTimeMr,\n y: relativeTimeMr,\n yy: relativeTimeMr,\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap$c[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$d[match];\n });\n },\n meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {\n return hour;\n } else if (\n meridiem === 'दुपारी' ||\n meridiem === 'सायंकाळी' ||\n meridiem === 'रात्री'\n ) {\n return hour >= 12 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour >= 0 && hour < 6) {\n return 'पहाटे';\n } else if (hour < 12) {\n return 'सकाळी';\n } else if (hour < 17) {\n return 'दुपारी';\n } else if (hour < 20) {\n return 'सायंकाळी';\n } else {\n return 'रात्री';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('ms-my', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('ms', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('mt', {\n months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n weekdays:\n 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(\n '_'\n ),\n weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Illum fil-]LT',\n nextDay: '[Għada fil-]LT',\n nextWeek: 'dddd [fil-]LT',\n lastDay: '[Il-bieraħ fil-]LT',\n lastWeek: 'dddd [li għadda] [fil-]LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'f’ %s',\n past: '%s ilu',\n s: 'ftit sekondi',\n ss: '%d sekondi',\n m: 'minuta',\n mm: '%d minuti',\n h: 'siegħa',\n hh: '%d siegħat',\n d: 'ġurnata',\n dd: '%d ġranet',\n M: 'xahar',\n MM: '%d xhur',\n y: 'sena',\n yy: '%d sni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$e = {\n 1: '၁',\n 2: '၂',\n 3: '၃',\n 4: '၄',\n 5: '၅',\n 6: '၆',\n 7: '၇',\n 8: '၈',\n 9: '၉',\n 0: '၀',\n },\n numberMap$d = {\n '၁': '1',\n '၂': '2',\n '၃': '3',\n '၄': '4',\n '၅': '5',\n '၆': '6',\n '၇': '7',\n '၈': '8',\n '၉': '9',\n '၀': '0',\n };\n\n hooks.defineLocale('my', {\n months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(\n '_'\n ),\n monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(\n '_'\n ),\n weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ယနေ.] LT [မှာ]',\n nextDay: '[မနက်ဖြန်] LT [မှာ]',\n nextWeek: 'dddd LT [မှာ]',\n lastDay: '[မနေ.က] LT [မှာ]',\n lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'လာမည့် %s မှာ',\n past: 'လွန်ခဲ့သော %s က',\n s: 'စက္ကန်.အနည်းငယ်',\n ss: '%d စက္ကန့်',\n m: 'တစ်မိနစ်',\n mm: '%d မိနစ်',\n h: 'တစ်နာရီ',\n hh: '%d နာရီ',\n d: 'တစ်ရက်',\n dd: '%d ရက်',\n M: 'တစ်လ',\n MM: '%d လ',\n y: 'တစ်နှစ်',\n yy: '%d နှစ်',\n },\n preparse: function (string) {\n return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n return numberMap$d[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$e[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('nb', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[forrige] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'noen sekunder',\n ss: '%d sekunder',\n m: 'ett minutt',\n mm: '%d minutter',\n h: 'én time',\n hh: '%d timer',\n d: 'én dag',\n dd: '%d dager',\n w: 'én uke',\n ww: '%d uker',\n M: 'én måned',\n MM: '%d måneder',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$f = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap$e = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n hooks.defineLocale('ne', {\n months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(\n '_'\n ),\n monthsShort:\n 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(\n '_'\n ),\n weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'Aको h:mm बजे',\n LTS: 'Aको h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, Aको h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap$e[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$f[match];\n });\n },\n meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राति') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'बिहान') {\n return hour;\n } else if (meridiem === 'दिउँसो') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'साँझ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 3) {\n return 'राति';\n } else if (hour < 12) {\n return 'बिहान';\n } else if (hour < 16) {\n return 'दिउँसो';\n } else if (hour < 20) {\n return 'साँझ';\n } else {\n return 'राति';\n }\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[भोलि] LT',\n nextWeek: '[आउँदो] dddd[,] LT',\n lastDay: '[हिजो] LT',\n lastWeek: '[गएको] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमा',\n past: '%s अगाडि',\n s: 'केही क्षण',\n ss: '%d सेकेण्ड',\n m: 'एक मिनेट',\n mm: '%d मिनेट',\n h: 'एक घण्टा',\n hh: '%d घण्टा',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महिना',\n MM: '%d महिना',\n y: 'एक बर्ष',\n yy: '%d बर्ष',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var monthsShortWithDots$1 =\n 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots$1 =\n 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n monthsParse$8 = [\n /^jan/i,\n /^feb/i,\n /^(maart|mrt\\.?)$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex$8 =\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n hooks.defineLocale('nl-be', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots$1;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots$1[m.month()];\n } else {\n return monthsShortWithDots$1[m.month()];\n }\n },\n\n monthsRegex: monthsRegex$8,\n monthsShortRegex: monthsRegex$8,\n monthsStrictRegex:\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex:\n /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse$8,\n longMonthsParse: monthsParse$8,\n shortMonthsParse: monthsParse$8,\n\n weekdays:\n 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var monthsShortWithDots$2 =\n 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots$2 =\n 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n monthsParse$9 = [\n /^jan/i,\n /^feb/i,\n /^(maart|mrt\\.?)$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex$9 =\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n hooks.defineLocale('nl', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots$2;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots$2[m.month()];\n } else {\n return monthsShortWithDots$2[m.month()];\n }\n },\n\n monthsRegex: monthsRegex$9,\n monthsShortRegex: monthsRegex$9,\n monthsStrictRegex:\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex:\n /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse$9,\n longMonthsParse: monthsParse$9,\n shortMonthsParse: monthsParse$9,\n\n weekdays:\n 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n w: 'één week',\n ww: '%d weken',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('nn', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),\n weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[I dag klokka] LT',\n nextDay: '[I morgon klokka] LT',\n nextWeek: 'dddd [klokka] LT',\n lastDay: '[I går klokka] LT',\n lastWeek: '[Føregåande] dddd [klokka] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s sidan',\n s: 'nokre sekund',\n ss: '%d sekund',\n m: 'eit minutt',\n mm: '%d minutt',\n h: 'ein time',\n hh: '%d timar',\n d: 'ein dag',\n dd: '%d dagar',\n w: 'ei veke',\n ww: '%d veker',\n M: 'ein månad',\n MM: '%d månader',\n y: 'eit år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('oc-lnc', {\n months: {\n standalone:\n 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(\n '_'\n ),\n format: \"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort:\n 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: '[uèi a] LT',\n nextDay: '[deman a] LT',\n nextWeek: 'dddd [a] LT',\n lastDay: '[ièr a] LT',\n lastWeek: 'dddd [passat a] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'unas segondas',\n ss: '%d segondas',\n m: 'una minuta',\n mm: '%d minutas',\n h: 'una ora',\n hh: '%d oras',\n d: 'un jorn',\n dd: '%d jorns',\n M: 'un mes',\n MM: '%d meses',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4,\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$g = {\n 1: '੧',\n 2: '੨',\n 3: '੩',\n 4: '੪',\n 5: '੫',\n 6: '੬',\n 7: '੭',\n 8: '੮',\n 9: '੯',\n 0: '੦',\n },\n numberMap$f = {\n '੧': '1',\n '੨': '2',\n '੩': '3',\n '੪': '4',\n '੫': '5',\n '੬': '6',\n '੭': '7',\n '੮': '8',\n '੯': '9',\n '੦': '0',\n };\n\n hooks.defineLocale('pa-in', {\n // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n monthsShort:\n 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(\n '_'\n ),\n weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm ਵਜੇ',\n LTS: 'A h:mm:ss ਵਜੇ',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',\n LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',\n },\n calendar: {\n sameDay: '[ਅਜ] LT',\n nextDay: '[ਕਲ] LT',\n nextWeek: '[ਅਗਲਾ] dddd, LT',\n lastDay: '[ਕਲ] LT',\n lastWeek: '[ਪਿਛਲੇ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ਵਿੱਚ',\n past: '%s ਪਿਛਲੇ',\n s: 'ਕੁਝ ਸਕਿੰਟ',\n ss: '%d ਸਕਿੰਟ',\n m: 'ਇਕ ਮਿੰਟ',\n mm: '%d ਮਿੰਟ',\n h: 'ਇੱਕ ਘੰਟਾ',\n hh: '%d ਘੰਟੇ',\n d: 'ਇੱਕ ਦਿਨ',\n dd: '%d ਦਿਨ',\n M: 'ਇੱਕ ਮਹੀਨਾ',\n MM: '%d ਮਹੀਨੇ',\n y: 'ਇੱਕ ਸਾਲ',\n yy: '%d ਸਾਲ',\n },\n preparse: function (string) {\n return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n return numberMap$f[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$g[match];\n });\n },\n // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ਰਾਤ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ਸਵੇਰ') {\n return hour;\n } else if (meridiem === 'ਦੁਪਹਿਰ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ਸ਼ਾਮ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ਰਾਤ';\n } else if (hour < 10) {\n return 'ਸਵੇਰ';\n } else if (hour < 17) {\n return 'ਦੁਪਹਿਰ';\n } else if (hour < 20) {\n return 'ਸ਼ਾਮ';\n } else {\n return 'ਰਾਤ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var monthsNominative =\n 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(\n '_'\n ),\n monthsSubjective =\n 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(\n '_'\n ),\n monthsParse$a = [\n /^sty/i,\n /^lut/i,\n /^mar/i,\n /^kwi/i,\n /^maj/i,\n /^cze/i,\n /^lip/i,\n /^sie/i,\n /^wrz/i,\n /^paź/i,\n /^lis/i,\n /^gru/i,\n ];\n function plural$3(n) {\n return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;\n }\n function translate$8(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n return result + (plural$3(number) ? 'sekundy' : 'sekund');\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutę';\n case 'mm':\n return result + (plural$3(number) ? 'minuty' : 'minut');\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinę';\n case 'hh':\n return result + (plural$3(number) ? 'godziny' : 'godzin');\n case 'ww':\n return result + (plural$3(number) ? 'tygodnie' : 'tygodni');\n case 'MM':\n return result + (plural$3(number) ? 'miesiące' : 'miesięcy');\n case 'yy':\n return result + (plural$3(number) ? 'lata' : 'lat');\n }\n }\n\n hooks.defineLocale('pl', {\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return monthsNominative;\n } else if (/D MMMM/.test(format)) {\n return monthsSubjective[momentToFormat.month()];\n } else {\n return monthsNominative[momentToFormat.month()];\n }\n },\n monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n monthsParse: monthsParse$a,\n longMonthsParse: monthsParse$a,\n shortMonthsParse: monthsParse$a,\n weekdays:\n 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),\n weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Dziś o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W niedzielę o] LT';\n\n case 2:\n return '[We wtorek o] LT';\n\n case 3:\n return '[W środę o] LT';\n\n case 6:\n return '[W sobotę o] LT';\n\n default:\n return '[W] dddd [o] LT';\n }\n },\n lastDay: '[Wczoraj o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W zeszłą niedzielę o] LT';\n case 3:\n return '[W zeszłą środę o] LT';\n case 6:\n return '[W zeszłą sobotę o] LT';\n default:\n return '[W zeszły] dddd [o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: '%s temu',\n s: 'kilka sekund',\n ss: translate$8,\n m: translate$8,\n mm: translate$8,\n h: translate$8,\n hh: translate$8,\n d: '1 dzień',\n dd: '%d dni',\n w: 'tydzień',\n ww: translate$8,\n M: 'miesiąc',\n MM: translate$8,\n y: 'rok',\n yy: translate$8,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('pt-br', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays:\n 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(\n '_'\n ),\n weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'poucos segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n invalidDate: 'Data inválida',\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('pt', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays:\n 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(\n '_'\n ),\n weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n w: 'uma semana',\n ww: '%d semanas',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n function relativeTimeWithPlural$2(number, withoutSuffix, key) {\n var format = {\n ss: 'secunde',\n mm: 'minute',\n hh: 'ore',\n dd: 'zile',\n ww: 'săptămâni',\n MM: 'luni',\n yy: 'ani',\n },\n separator = ' ';\n if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n separator = ' de ';\n }\n return number + separator + format[key];\n }\n\n hooks.defineLocale('ro', {\n months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(\n '_'\n ),\n monthsShort:\n 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[azi la] LT',\n nextDay: '[mâine la] LT',\n nextWeek: 'dddd [la] LT',\n lastDay: '[ieri la] LT',\n lastWeek: '[fosta] dddd [la] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'peste %s',\n past: '%s în urmă',\n s: 'câteva secunde',\n ss: relativeTimeWithPlural$2,\n m: 'un minut',\n mm: relativeTimeWithPlural$2,\n h: 'o oră',\n hh: relativeTimeWithPlural$2,\n d: 'o zi',\n dd: relativeTimeWithPlural$2,\n w: 'o săptămână',\n ww: relativeTimeWithPlural$2,\n M: 'o lună',\n MM: relativeTimeWithPlural$2,\n y: 'un an',\n yy: relativeTimeWithPlural$2,\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n function plural$4(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural$3(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n hh: 'час_часа_часов',\n dd: 'день_дня_дней',\n ww: 'неделя_недели_недель',\n MM: 'месяц_месяца_месяцев',\n yy: 'год_года_лет',\n };\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n } else {\n return number + ' ' + plural$4(format[key], +number);\n }\n }\n var monthsParse$b = [\n /^янв/i,\n /^фев/i,\n /^мар/i,\n /^апр/i,\n /^ма[йя]/i,\n /^июн/i,\n /^июл/i,\n /^авг/i,\n /^сен/i,\n /^окт/i,\n /^ноя/i,\n /^дек/i,\n ];\n\n // http://new.gramota.ru/spravka/rules/139-prop : § 103\n // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n hooks.defineLocale('ru', {\n months: {\n format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(\n '_'\n ),\n standalone:\n 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n },\n monthsShort: {\n // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку?\n format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n standalone:\n 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n },\n weekdays: {\n standalone:\n 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(\n '_'\n ),\n format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(\n '_'\n ),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,\n },\n weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n monthsParse: monthsParse$b,\n longMonthsParse: monthsParse$b,\n shortMonthsParse: monthsParse$b,\n\n // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n monthsRegex:\n /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // копия предыдущего\n monthsShortRegex:\n /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // полные названия с падежами\n monthsStrictRegex:\n /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n // Выражение, которое соответствует только сокращённым формам\n monthsShortStrictRegex:\n /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., H:mm',\n LLLL: 'dddd, D MMMM YYYY г., H:mm',\n },\n calendar: {\n sameDay: '[Сегодня, в] LT',\n nextDay: '[Завтра, в] LT',\n lastDay: '[Вчера, в] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В следующее] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В следующий] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В следующую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n lastWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В прошлое] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В прошлый] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В прошлую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'через %s',\n past: '%s назад',\n s: 'несколько секунд',\n ss: relativeTimeWithPlural$3,\n m: relativeTimeWithPlural$3,\n mm: relativeTimeWithPlural$3,\n h: 'час',\n hh: relativeTimeWithPlural$3,\n d: 'день',\n dd: relativeTimeWithPlural$3,\n w: 'неделя',\n ww: relativeTimeWithPlural$3,\n M: 'месяц',\n MM: relativeTimeWithPlural$3,\n y: 'год',\n yy: relativeTimeWithPlural$3,\n },\n meridiemParse: /ночи|утра|дня|вечера/i,\n isPM: function (input) {\n return /^(дня|вечера)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночи';\n } else if (hour < 12) {\n return 'утра';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечера';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return number + '-й';\n case 'D':\n return number + '-го';\n case 'w':\n case 'W':\n return number + '-я';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var months$9 = [\n 'جنوري',\n 'فيبروري',\n 'مارچ',\n 'اپريل',\n 'مئي',\n 'جون',\n 'جولاءِ',\n 'آگسٽ',\n 'سيپٽمبر',\n 'آڪٽوبر',\n 'نومبر',\n 'ڊسمبر',\n ],\n days$1 = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];\n\n hooks.defineLocale('sd', {\n months: months$9,\n monthsShort: months$9,\n weekdays: days$1,\n weekdaysShort: days$1,\n weekdaysMin: days$1,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[اڄ] LT',\n nextDay: '[سڀاڻي] LT',\n nextWeek: 'dddd [اڳين هفتي تي] LT',\n lastDay: '[ڪالهه] LT',\n lastWeek: '[گزريل هفتي] dddd [تي] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s پوء',\n past: '%s اڳ',\n s: 'چند سيڪنڊ',\n ss: '%d سيڪنڊ',\n m: 'هڪ منٽ',\n mm: '%d منٽ',\n h: 'هڪ ڪلاڪ',\n hh: '%d ڪلاڪ',\n d: 'هڪ ڏينهن',\n dd: '%d ڏينهن',\n M: 'هڪ مهينو',\n MM: '%d مهينا',\n y: 'هڪ سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('se', {\n months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(\n '_'\n ),\n monthsShort:\n 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),\n weekdays:\n 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(\n '_'\n ),\n weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'MMMM D. [b.] YYYY',\n LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',\n },\n calendar: {\n sameDay: '[otne ti] LT',\n nextDay: '[ihttin ti] LT',\n nextWeek: 'dddd [ti] LT',\n lastDay: '[ikte ti] LT',\n lastWeek: '[ovddit] dddd [ti] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s geažes',\n past: 'maŋit %s',\n s: 'moadde sekunddat',\n ss: '%d sekunddat',\n m: 'okta minuhta',\n mm: '%d minuhtat',\n h: 'okta diimmu',\n hh: '%d diimmut',\n d: 'okta beaivi',\n dd: '%d beaivvit',\n M: 'okta mánnu',\n MM: '%d mánut',\n y: 'okta jahki',\n yy: '%d jagit',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n /*jshint -W100*/\n hooks.defineLocale('si', {\n months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(\n '_'\n ),\n monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(\n '_'\n ),\n weekdays:\n 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(\n '_'\n ),\n weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'a h:mm',\n LTS: 'a h:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY MMMM D',\n LLL: 'YYYY MMMM D, a h:mm',\n LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',\n },\n calendar: {\n sameDay: '[අද] LT[ට]',\n nextDay: '[හෙට] LT[ට]',\n nextWeek: 'dddd LT[ට]',\n lastDay: '[ඊයේ] LT[ට]',\n lastWeek: '[පසුගිය] dddd LT[ට]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sකින්',\n past: '%sකට පෙර',\n s: 'තත්පර කිහිපය',\n ss: 'තත්පර %d',\n m: 'මිනිත්තුව',\n mm: 'මිනිත්තු %d',\n h: 'පැය',\n hh: 'පැය %d',\n d: 'දිනය',\n dd: 'දින %d',\n M: 'මාසය',\n MM: 'මාස %d',\n y: 'වසර',\n yy: 'වසර %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n ordinal: function (number) {\n return number + ' වැනි';\n },\n meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n isPM: function (input) {\n return input === 'ප.ව.' || input === 'පස් වරු';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'ප.ව.' : 'පස් වරු';\n } else {\n return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n }\n },\n });\n\n //! moment.js locale configuration\n\n var months$a =\n 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(\n '_'\n ),\n monthsShort$7 = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n function plural$5(n) {\n return n > 1 && n < 5;\n }\n function translate$9(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural$5(number) ? 'sekundy' : 'sekúnd');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural$5(number) ? 'minúty' : 'minút');\n } else {\n return result + 'minútami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural$5(number) ? 'hodiny' : 'hodín');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'deň' : 'dňom';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural$5(number) ? 'dni' : 'dní');\n } else {\n return result + 'dňami';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural$5(number) ? 'mesiace' : 'mesiacov');\n } else {\n return result + 'mesiacmi';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokom';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural$5(number) ? 'roky' : 'rokov');\n } else {\n return result + 'rokmi';\n }\n }\n }\n\n hooks.defineLocale('sk', {\n months: months$a,\n monthsShort: monthsShort$7,\n weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),\n weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedeľu o] LT';\n case 1:\n case 2:\n return '[v] dddd [o] LT';\n case 3:\n return '[v stredu o] LT';\n case 4:\n return '[vo štvrtok o] LT';\n case 5:\n return '[v piatok o] LT';\n case 6:\n return '[v sobotu o] LT';\n }\n },\n lastDay: '[včera o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulú nedeľu o] LT';\n case 1:\n case 2:\n return '[minulý] dddd [o] LT';\n case 3:\n return '[minulú stredu o] LT';\n case 4:\n case 5:\n return '[minulý] dddd [o] LT';\n case 6:\n return '[minulú sobotu o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pred %s',\n s: translate$9,\n ss: translate$9,\n m: translate$9,\n mm: translate$9,\n h: translate$9,\n hh: translate$9,\n d: translate$9,\n dd: translate$9,\n M: translate$9,\n MM: translate$9,\n y: translate$9,\n yy: translate$9,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n function processRelativeTime$9(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nekaj sekund'\n : 'nekaj sekundami';\n case 'ss':\n if (number === 1) {\n result += withoutSuffix ? 'sekundo' : 'sekundi';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n } else {\n result += 'sekund';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'ena minuta' : 'eno minuto';\n case 'mm':\n if (number === 1) {\n result += withoutSuffix ? 'minuta' : 'minuto';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n } else {\n result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'ena ura' : 'eno uro';\n case 'hh':\n if (number === 1) {\n result += withoutSuffix ? 'ura' : 'uro';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\n } else {\n result += withoutSuffix || isFuture ? 'ur' : 'urami';\n }\n return result;\n case 'd':\n return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n case 'dd':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n } else {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n }\n return result;\n case 'M':\n return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n case 'MM':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n } else {\n result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n }\n return result;\n case 'y':\n return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n case 'yy':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'leto' : 'letom';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\n } else {\n result += withoutSuffix || isFuture ? 'let' : 'leti';\n }\n return result;\n }\n }\n\n hooks.defineLocale('sl', {\n months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD. MM. YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danes ob] LT',\n nextDay: '[jutri ob] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v] [nedeljo] [ob] LT';\n case 3:\n return '[v] [sredo] [ob] LT';\n case 6:\n return '[v] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[v] dddd [ob] LT';\n }\n },\n lastDay: '[včeraj ob] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prejšnjo] [nedeljo] [ob] LT';\n case 3:\n return '[prejšnjo] [sredo] [ob] LT';\n case 6:\n return '[prejšnjo] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prejšnji] dddd [ob] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'čez %s',\n past: 'pred %s',\n s: processRelativeTime$9,\n ss: processRelativeTime$9,\n m: processRelativeTime$9,\n mm: processRelativeTime$9,\n h: processRelativeTime$9,\n hh: processRelativeTime$9,\n d: processRelativeTime$9,\n dd: processRelativeTime$9,\n M: processRelativeTime$9,\n MM: processRelativeTime$9,\n y: processRelativeTime$9,\n yy: processRelativeTime$9,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('sq', {\n months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(\n '_'\n ),\n monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(\n '_'\n ),\n weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /PD|MD/,\n isPM: function (input) {\n return input.charAt(0) === 'M';\n },\n meridiem: function (hours, minutes, isLower) {\n return hours < 12 ? 'PD' : 'MD';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Sot në] LT',\n nextDay: '[Nesër në] LT',\n nextWeek: 'dddd [në] LT',\n lastDay: '[Dje në] LT',\n lastWeek: 'dddd [e kaluar në] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'në %s',\n past: '%s më parë',\n s: 'disa sekonda',\n ss: '%d sekonda',\n m: 'një minutë',\n mm: '%d minuta',\n h: 'një orë',\n hh: '%d orë',\n d: 'një ditë',\n dd: '%d ditë',\n M: 'një muaj',\n MM: '%d muaj',\n y: 'një vit',\n yy: '%d vite',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var translator$1 = {\n words: {\n //Different grammatical cases\n ss: ['секунда', 'секунде', 'секунди'],\n m: ['један минут', 'једног минута'],\n mm: ['минут', 'минута', 'минута'],\n h: ['један сат', 'једног сата'],\n hh: ['сат', 'сата', 'сати'],\n d: ['један дан', 'једног дана'],\n dd: ['дан', 'дана', 'дана'],\n M: ['један месец', 'једног месеца'],\n MM: ['месец', 'месеца', 'месеци'],\n y: ['једну годину', 'једне године'],\n yy: ['годину', 'године', 'година'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n if (\n number % 10 >= 1 &&\n number % 10 <= 4 &&\n (number % 100 < 10 || number % 100 >= 20)\n ) {\n return number % 10 === 1 ? wordKey[0] : wordKey[1];\n }\n return wordKey[2];\n },\n translate: function (number, withoutSuffix, key, isFuture) {\n var wordKey = translator$1.words[key],\n word;\n\n if (key.length === 1) {\n // Nominativ\n if (key === 'y' && withoutSuffix) return 'једна година';\n return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n }\n\n word = translator$1.correctGrammaticalCase(number, wordKey);\n // Nominativ\n if (key === 'yy' && withoutSuffix && word === 'годину') {\n return number + ' година';\n }\n\n return number + ' ' + word;\n },\n };\n\n hooks.defineLocale('sr-cyrl', {\n months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(\n '_'\n ),\n monthsShort:\n 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),\n monthsParseExact: true,\n weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[данас у] LT',\n nextDay: '[сутра у] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[у] [недељу] [у] LT';\n case 3:\n return '[у] [среду] [у] LT';\n case 6:\n return '[у] [суботу] [у] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[у] dddd [у] LT';\n }\n },\n lastDay: '[јуче у] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[прошле] [недеље] [у] LT',\n '[прошлог] [понедељка] [у] LT',\n '[прошлог] [уторка] [у] LT',\n '[прошле] [среде] [у] LT',\n '[прошлог] [четвртка] [у] LT',\n '[прошлог] [петка] [у] LT',\n '[прошле] [суботе] [у] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пре %s',\n s: 'неколико секунди',\n ss: translator$1.translate,\n m: translator$1.translate,\n mm: translator$1.translate,\n h: translator$1.translate,\n hh: translator$1.translate,\n d: translator$1.translate,\n dd: translator$1.translate,\n M: translator$1.translate,\n MM: translator$1.translate,\n y: translator$1.translate,\n yy: translator$1.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var translator$2 = {\n words: {\n //Different grammatical cases\n ss: ['sekunda', 'sekunde', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n d: ['jedan dan', 'jednog dana'],\n dd: ['dan', 'dana', 'dana'],\n M: ['jedan mesec', 'jednog meseca'],\n MM: ['mesec', 'meseca', 'meseci'],\n y: ['jednu godinu', 'jedne godine'],\n yy: ['godinu', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n if (\n number % 10 >= 1 &&\n number % 10 <= 4 &&\n (number % 100 < 10 || number % 100 >= 20)\n ) {\n return number % 10 === 1 ? wordKey[0] : wordKey[1];\n }\n return wordKey[2];\n },\n translate: function (number, withoutSuffix, key, isFuture) {\n var wordKey = translator$2.words[key],\n word;\n\n if (key.length === 1) {\n // Nominativ\n if (key === 'y' && withoutSuffix) return 'jedna godina';\n return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n }\n\n word = translator$2.correctGrammaticalCase(number, wordKey);\n // Nominativ\n if (key === 'yy' && withoutSuffix && word === 'godinu') {\n return number + ' godina';\n }\n\n return number + ' ' + word;\n },\n };\n\n hooks.defineLocale('sr', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedelju] [u] LT';\n case 3:\n return '[u] [sredu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedelje] [u] LT',\n '[prošlog] [ponedeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pre %s',\n s: 'nekoliko sekundi',\n ss: translator$2.translate,\n m: translator$2.translate,\n mm: translator$2.translate,\n h: translator$2.translate,\n hh: translator$2.translate,\n d: translator$2.translate,\n dd: translator$2.translate,\n M: translator$2.translate,\n MM: translator$2.translate,\n y: translator$2.translate,\n yy: translator$2.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('ss', {\n months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split(\n '_'\n ),\n monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n weekdays:\n 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(\n '_'\n ),\n weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Namuhla nga] LT',\n nextDay: '[Kusasa nga] LT',\n nextWeek: 'dddd [nga] LT',\n lastDay: '[Itolo nga] LT',\n lastWeek: 'dddd [leliphelile] [nga] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'nga %s',\n past: 'wenteka nga %s',\n s: 'emizuzwana lomcane',\n ss: '%d mzuzwana',\n m: 'umzuzu',\n mm: '%d emizuzu',\n h: 'lihora',\n hh: '%d emahora',\n d: 'lilanga',\n dd: '%d emalanga',\n M: 'inyanga',\n MM: '%d tinyanga',\n y: 'umnyaka',\n yy: '%d iminyaka',\n },\n meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'ekuseni';\n } else if (hours < 15) {\n return 'emini';\n } else if (hours < 19) {\n return 'entsambama';\n } else {\n return 'ebusuku';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ekuseni') {\n return hour;\n } else if (meridiem === 'emini') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n if (hour === 0) {\n return 0;\n }\n return hour + 12;\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: '%d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('sv', {\n months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[Igår] LT',\n nextWeek: '[På] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: 'för %s sedan',\n s: 'några sekunder',\n ss: '%d sekunder',\n m: 'en minut',\n mm: '%d minuter',\n h: 'en timme',\n hh: '%d timmar',\n d: 'en dag',\n dd: '%d dagar',\n M: 'en månad',\n MM: '%d månader',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(\\:e|\\:a)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? ':e'\n : b === 1\n ? ':a'\n : b === 2\n ? ':a'\n : b === 3\n ? ':e'\n : ':e';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('sw', {\n months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n weekdays:\n 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(\n '_'\n ),\n weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'hh:mm A',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[leo saa] LT',\n nextDay: '[kesho saa] LT',\n nextWeek: '[wiki ijayo] dddd [saat] LT',\n lastDay: '[jana] LT',\n lastWeek: '[wiki iliyopita] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s baadaye',\n past: 'tokea %s',\n s: 'hivi punde',\n ss: 'sekunde %d',\n m: 'dakika moja',\n mm: 'dakika %d',\n h: 'saa limoja',\n hh: 'masaa %d',\n d: 'siku moja',\n dd: 'siku %d',\n M: 'mwezi mmoja',\n MM: 'miezi %d',\n y: 'mwaka mmoja',\n yy: 'miaka %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$h = {\n 1: '௧',\n 2: '௨',\n 3: '௩',\n 4: '௪',\n 5: '௫',\n 6: '௬',\n 7: '௭',\n 8: '௮',\n 9: '௯',\n 0: '௦',\n },\n numberMap$g = {\n '௧': '1',\n '௨': '2',\n '௩': '3',\n '௪': '4',\n '௫': '5',\n '௬': '6',\n '௭': '7',\n '௮': '8',\n '௯': '9',\n '௦': '0',\n };\n\n hooks.defineLocale('ta', {\n months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n monthsShort:\n 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n weekdays:\n 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(\n '_'\n ),\n weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(\n '_'\n ),\n weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, HH:mm',\n LLLL: 'dddd, D MMMM YYYY, HH:mm',\n },\n calendar: {\n sameDay: '[இன்று] LT',\n nextDay: '[நாளை] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[நேற்று] LT',\n lastWeek: '[கடந்த வாரம்] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s இல்',\n past: '%s முன்',\n s: 'ஒரு சில விநாடிகள்',\n ss: '%d விநாடிகள்',\n m: 'ஒரு நிமிடம்',\n mm: '%d நிமிடங்கள்',\n h: 'ஒரு மணி நேரம்',\n hh: '%d மணி நேரம்',\n d: 'ஒரு நாள்',\n dd: '%d நாட்கள்',\n M: 'ஒரு மாதம்',\n MM: '%d மாதங்கள்',\n y: 'ஒரு வருடம்',\n yy: '%d ஆண்டுகள்',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n ordinal: function (number) {\n return number + 'வது';\n },\n preparse: function (string) {\n return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n return numberMap$g[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$h[match];\n });\n },\n // refer http://ta.wikipedia.org/s/1er1\n meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n meridiem: function (hour, minute, isLower) {\n if (hour < 2) {\n return ' யாமம்';\n } else if (hour < 6) {\n return ' வைகறை'; // வைகறை\n } else if (hour < 10) {\n return ' காலை'; // காலை\n } else if (hour < 14) {\n return ' நண்பகல்'; // நண்பகல்\n } else if (hour < 18) {\n return ' எற்பாடு'; // எற்பாடு\n } else if (hour < 22) {\n return ' மாலை'; // மாலை\n } else {\n return ' யாமம்';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'யாமம்') {\n return hour < 2 ? hour : hour + 12;\n } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n return hour;\n } else if (meridiem === 'நண்பகல்') {\n return hour >= 10 ? hour : hour + 12;\n } else {\n return hour + 12;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('te', {\n months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(\n '_'\n ),\n monthsShort:\n 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(\n '_'\n ),\n weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[నేడు] LT',\n nextDay: '[రేపు] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[నిన్న] LT',\n lastWeek: '[గత] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s లో',\n past: '%s క్రితం',\n s: 'కొన్ని క్షణాలు',\n ss: '%d సెకన్లు',\n m: 'ఒక నిమిషం',\n mm: '%d నిమిషాలు',\n h: 'ఒక గంట',\n hh: '%d గంటలు',\n d: 'ఒక రోజు',\n dd: '%d రోజులు',\n M: 'ఒక నెల',\n MM: '%d నెలలు',\n y: 'ఒక సంవత్సరం',\n yy: '%d సంవత్సరాలు',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}వ/,\n ordinal: '%dవ',\n meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'రాత్రి') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ఉదయం') {\n return hour;\n } else if (meridiem === 'మధ్యాహ్నం') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'సాయంత్రం') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'రాత్రి';\n } else if (hour < 10) {\n return 'ఉదయం';\n } else if (hour < 17) {\n return 'మధ్యాహ్నం';\n } else if (hour < 20) {\n return 'సాయంత్రం';\n } else {\n return 'రాత్రి';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('tet', {\n months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Ohin iha] LT',\n nextDay: '[Aban iha] LT',\n nextWeek: 'dddd [iha] LT',\n lastDay: '[Horiseik iha] LT',\n lastWeek: 'dddd [semana kotuk] [iha] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'iha %s',\n past: '%s liuba',\n s: 'segundu balun',\n ss: 'segundu %d',\n m: 'minutu ida',\n mm: 'minutu %d',\n h: 'oras ida',\n hh: 'oras %d',\n d: 'loron ida',\n dd: 'loron %d',\n M: 'fulan ida',\n MM: 'fulan %d',\n y: 'tinan ida',\n yy: 'tinan %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var suffixes$3 = {\n 0: '-ум',\n 1: '-ум',\n 2: '-юм',\n 3: '-юм',\n 4: '-ум',\n 5: '-ум',\n 6: '-ум',\n 7: '-ум',\n 8: '-ум',\n 9: '-ум',\n 10: '-ум',\n 12: '-ум',\n 13: '-ум',\n 20: '-ум',\n 30: '-юм',\n 40: '-ум',\n 50: '-ум',\n 60: '-ум',\n 70: '-ум',\n 80: '-ум',\n 90: '-ум',\n 100: '-ум',\n };\n\n hooks.defineLocale('tg', {\n months: {\n format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split(\n '_'\n ),\n standalone:\n 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n },\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(\n '_'\n ),\n weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Имрӯз соати] LT',\n nextDay: '[Фардо соати] LT',\n lastDay: '[Дирӯз соати] LT',\n nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',\n lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'баъди %s',\n past: '%s пеш',\n s: 'якчанд сония',\n m: 'як дақиқа',\n mm: '%d дақиқа',\n h: 'як соат',\n hh: '%d соат',\n d: 'як рӯз',\n dd: '%d рӯз',\n M: 'як моҳ',\n MM: '%d моҳ',\n y: 'як сол',\n yy: '%d сол',\n },\n meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'шаб') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'субҳ') {\n return hour;\n } else if (meridiem === 'рӯз') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'бегоҳ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'шаб';\n } else if (hour < 11) {\n return 'субҳ';\n } else if (hour < 16) {\n return 'рӯз';\n } else if (hour < 19) {\n return 'бегоҳ';\n } else {\n return 'шаб';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes$3[number] || suffixes$3[a] || suffixes$3[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('th', {\n months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(\n '_'\n ),\n monthsShort:\n 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY เวลา H:mm',\n LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',\n },\n meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n isPM: function (input) {\n return input === 'หลังเที่ยง';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ก่อนเที่ยง';\n } else {\n return 'หลังเที่ยง';\n }\n },\n calendar: {\n sameDay: '[วันนี้ เวลา] LT',\n nextDay: '[พรุ่งนี้ เวลา] LT',\n nextWeek: 'dddd[หน้า เวลา] LT',\n lastDay: '[เมื่อวานนี้ เวลา] LT',\n lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'อีก %s',\n past: '%sที่แล้ว',\n s: 'ไม่กี่วินาที',\n ss: '%d วินาที',\n m: '1 นาที',\n mm: '%d นาที',\n h: '1 ชั่วโมง',\n hh: '%d ชั่วโมง',\n d: '1 วัน',\n dd: '%d วัน',\n w: '1 สัปดาห์',\n ww: '%d สัปดาห์',\n M: '1 เดือน',\n MM: '%d เดือน',\n y: '1 ปี',\n yy: '%d ปี',\n },\n });\n\n //! moment.js locale configuration\n\n var suffixes$4 = {\n 1: \"'inji\",\n 5: \"'inji\",\n 8: \"'inji\",\n 70: \"'inji\",\n 80: \"'inji\",\n 2: \"'nji\",\n 7: \"'nji\",\n 20: \"'nji\",\n 50: \"'nji\",\n 3: \"'ünji\",\n 4: \"'ünji\",\n 100: \"'ünji\",\n 6: \"'njy\",\n 9: \"'unjy\",\n 10: \"'unjy\",\n 30: \"'unjy\",\n 60: \"'ynjy\",\n 90: \"'ynjy\",\n };\n\n hooks.defineLocale('tk', {\n months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),\n weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(\n '_'\n ),\n weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),\n weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün sagat] LT',\n nextDay: '[ertir sagat] LT',\n nextWeek: '[indiki] dddd [sagat] LT',\n lastDay: '[düýn] LT',\n lastWeek: '[geçen] dddd [sagat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s soň',\n past: '%s öň',\n s: 'birnäçe sekunt',\n m: 'bir minut',\n mm: '%d minut',\n h: 'bir sagat',\n hh: '%d sagat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir aý',\n MM: '%d aý',\n y: 'bir ýyl',\n yy: '%d ýyl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'unjy\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes$4[a] || suffixes$4[b] || suffixes$4[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('tl-ph', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n function translateFuture(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'leS'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'waQ'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'nem'\n : time + ' pIq';\n return time;\n }\n\n function translatePast(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'Hu’'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'wen'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'ben'\n : time + ' ret';\n return time;\n }\n\n function translate$a(number, withoutSuffix, string, isFuture) {\n var numberNoun = numberAsNoun(number);\n switch (string) {\n case 'ss':\n return numberNoun + ' lup';\n case 'mm':\n return numberNoun + ' tup';\n case 'hh':\n return numberNoun + ' rep';\n case 'dd':\n return numberNoun + ' jaj';\n case 'MM':\n return numberNoun + ' jar';\n case 'yy':\n return numberNoun + ' DIS';\n }\n }\n\n function numberAsNoun(number) {\n var hundred = Math.floor((number % 1000) / 100),\n ten = Math.floor((number % 100) / 10),\n one = number % 10,\n word = '';\n if (hundred > 0) {\n word += numbersNouns[hundred] + 'vatlh';\n }\n if (ten > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';\n }\n if (one > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[one];\n }\n return word === '' ? 'pagh' : word;\n }\n\n hooks.defineLocale('tlh', {\n months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(\n '_'\n ),\n monthsShort:\n 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysShort:\n 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n weekdaysMin:\n 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[DaHjaj] LT',\n nextDay: '[wa’leS] LT',\n nextWeek: 'LLL',\n lastDay: '[wa’Hu’] LT',\n lastWeek: 'LLL',\n sameElse: 'L',\n },\n relativeTime: {\n future: translateFuture,\n past: translatePast,\n s: 'puS lup',\n ss: translate$a,\n m: 'wa’ tup',\n mm: translate$a,\n h: 'wa’ rep',\n hh: translate$a,\n d: 'wa’ jaj',\n dd: translate$a,\n M: 'wa’ jar',\n MM: translate$a,\n y: 'wa’ DIS',\n yy: translate$a,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var suffixes$5 = {\n 1: \"'inci\",\n 5: \"'inci\",\n 8: \"'inci\",\n 70: \"'inci\",\n 80: \"'inci\",\n 2: \"'nci\",\n 7: \"'nci\",\n 20: \"'nci\",\n 50: \"'nci\",\n 3: \"'üncü\",\n 4: \"'üncü\",\n 100: \"'üncü\",\n 6: \"'ncı\",\n 9: \"'uncu\",\n 10: \"'uncu\",\n 30: \"'uncu\",\n 60: \"'ıncı\",\n 90: \"'ıncı\",\n };\n\n hooks.defineLocale('tr', {\n months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(\n '_'\n ),\n monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(\n '_'\n ),\n weekdaysShort: 'Paz_Pzt_Sal_Çar_Per_Cum_Cmt'.split('_'),\n weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'öö' : 'ÖÖ';\n } else {\n return isLower ? 'ös' : 'ÖS';\n }\n },\n meridiemParse: /öö|ÖÖ|ös|ÖS/,\n isPM: function (input) {\n return input === 'ös' || input === 'ÖS';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s önce',\n s: 'birkaç saniye',\n ss: '%d saniye',\n m: 'bir dakika',\n mm: '%d dakika',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n w: 'bir hafta',\n ww: '%d hafta',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir yıl',\n yy: '%d yıl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'ıncı\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes$5[a] || suffixes$5[b] || suffixes$5[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n // This is currently too difficult (maybe even impossible) to add.\n hooks.defineLocale('tzl', {\n months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM [dallas] YYYY',\n LLL: 'D. MMMM [dallas] YYYY HH.mm',\n LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',\n },\n meridiemParse: /d\\'o|d\\'a/i,\n isPM: function (input) {\n return \"d'o\" === input.toLowerCase();\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? \"d'o\" : \"D'O\";\n } else {\n return isLower ? \"d'a\" : \"D'A\";\n }\n },\n calendar: {\n sameDay: '[oxhi à] LT',\n nextDay: '[demà à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[ieiri à] LT',\n lastWeek: '[sür el] dddd [lasteu à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'osprei %s',\n past: 'ja%s',\n s: processRelativeTime$a,\n ss: processRelativeTime$a,\n m: processRelativeTime$a,\n mm: processRelativeTime$a,\n h: processRelativeTime$a,\n hh: processRelativeTime$a,\n d: processRelativeTime$a,\n dd: processRelativeTime$a,\n M: processRelativeTime$a,\n MM: processRelativeTime$a,\n y: processRelativeTime$a,\n yy: processRelativeTime$a,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n function processRelativeTime$a(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['viensas secunds', \"'iensas secunds\"],\n ss: [number + ' secunds', '' + number + ' secunds'],\n m: [\"'n míut\", \"'iens míut\"],\n mm: [number + ' míuts', '' + number + ' míuts'],\n h: [\"'n þora\", \"'iensa þora\"],\n hh: [number + ' þoras', '' + number + ' þoras'],\n d: [\"'n ziua\", \"'iensa ziua\"],\n dd: [number + ' ziuas', '' + number + ' ziuas'],\n M: [\"'n mes\", \"'iens mes\"],\n MM: [number + ' mesen', '' + number + ' mesen'],\n y: [\"'n ar\", \"'iens ar\"],\n yy: [number + ' ars', '' + number + ' ars'],\n };\n return isFuture\n ? format[key][0]\n : withoutSuffix\n ? format[key][0]\n : format[key][1];\n }\n\n //! moment.js locale configuration\n\n hooks.defineLocale('tzm-latn', {\n months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n monthsShort:\n 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[asdkh g] LT',\n nextDay: '[aska g] LT',\n nextWeek: 'dddd [g] LT',\n lastDay: '[assant g] LT',\n lastWeek: 'dddd [g] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dadkh s yan %s',\n past: 'yan %s',\n s: 'imik',\n ss: '%d imik',\n m: 'minuḍ',\n mm: '%d minuḍ',\n h: 'saɛa',\n hh: '%d tassaɛin',\n d: 'ass',\n dd: '%d ossan',\n M: 'ayowr',\n MM: '%d iyyirn',\n y: 'asgas',\n yy: '%d isgasn',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('tzm', {\n months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n monthsShort:\n 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n nextWeek: 'dddd [ⴴ] LT',\n lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n lastWeek: 'dddd [ⴴ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n past: 'ⵢⴰⵏ %s',\n s: 'ⵉⵎⵉⴽ',\n ss: '%d ⵉⵎⵉⴽ',\n m: 'ⵎⵉⵏⵓⴺ',\n mm: '%d ⵎⵉⵏⵓⴺ',\n h: 'ⵙⴰⵄⴰ',\n hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n d: 'ⴰⵙⵙ',\n dd: '%d oⵙⵙⴰⵏ',\n M: 'ⴰⵢoⵓⵔ',\n MM: '%d ⵉⵢⵢⵉⵔⵏ',\n y: 'ⴰⵙⴳⴰⵙ',\n yy: '%d ⵉⵙⴳⴰⵙⵏ',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('ug-cn', {\n months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n monthsShort:\n 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n '_'\n ),\n weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n },\n meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n meridiem === 'يېرىم كېچە' ||\n meridiem === 'سەھەر' ||\n meridiem === 'چۈشتىن بۇرۇن'\n ) {\n return hour;\n } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n return hour + 12;\n } else {\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return 'يېرىم كېچە';\n } else if (hm < 900) {\n return 'سەھەر';\n } else if (hm < 1130) {\n return 'چۈشتىن بۇرۇن';\n } else if (hm < 1230) {\n return 'چۈش';\n } else if (hm < 1800) {\n return 'چۈشتىن كېيىن';\n } else {\n return 'كەچ';\n }\n },\n calendar: {\n sameDay: '[بۈگۈن سائەت] LT',\n nextDay: '[ئەتە سائەت] LT',\n nextWeek: '[كېلەركى] dddd [سائەت] LT',\n lastDay: '[تۆنۈگۈن] LT',\n lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s كېيىن',\n past: '%s بۇرۇن',\n s: 'نەچچە سېكونت',\n ss: '%d سېكونت',\n m: 'بىر مىنۇت',\n mm: '%d مىنۇت',\n h: 'بىر سائەت',\n hh: '%d سائەت',\n d: 'بىر كۈن',\n dd: '%d كۈن',\n M: 'بىر ئاي',\n MM: '%d ئاي',\n y: 'بىر يىل',\n yy: '%d يىل',\n },\n\n dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '-كۈنى';\n case 'w':\n case 'W':\n return number + '-ھەپتە';\n default:\n return number;\n }\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n function plural$6(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural$4(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n dd: 'день_дні_днів',\n MM: 'місяць_місяці_місяців',\n yy: 'рік_роки_років',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвилина' : 'хвилину';\n } else if (key === 'h') {\n return withoutSuffix ? 'година' : 'годину';\n } else {\n return number + ' ' + plural$6(format[key], +number);\n }\n }\n function weekdaysCaseReplace(m, format) {\n var weekdays = {\n nominative:\n 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(\n '_'\n ),\n accusative:\n 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(\n '_'\n ),\n genitive:\n 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(\n '_'\n ),\n },\n nounCase;\n\n if (m === true) {\n return weekdays['nominative']\n .slice(1, 7)\n .concat(weekdays['nominative'].slice(0, 1));\n }\n if (!m) {\n return weekdays['nominative'];\n }\n\n nounCase = /(\\[[ВвУу]\\]) ?dddd/.test(format)\n ? 'accusative'\n : /\\[?(?:минулої|наступної)? ?\\] ?dddd/.test(format)\n ? 'genitive'\n : 'nominative';\n return weekdays[nounCase][m.day()];\n }\n function processHoursFunction(str) {\n return function () {\n return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n };\n }\n\n hooks.defineLocale('uk', {\n months: {\n format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(\n '_'\n ),\n standalone:\n 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(\n '_'\n ),\n },\n monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(\n '_'\n ),\n weekdays: weekdaysCaseReplace,\n weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY р.',\n LLL: 'D MMMM YYYY р., HH:mm',\n LLLL: 'dddd, D MMMM YYYY р., HH:mm',\n },\n calendar: {\n sameDay: processHoursFunction('[Сьогодні '),\n nextDay: processHoursFunction('[Завтра '),\n lastDay: processHoursFunction('[Вчора '),\n nextWeek: processHoursFunction('[У] dddd ['),\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[Минулої] dddd [').call(this);\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[Минулого] dddd [').call(this);\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: '%s тому',\n s: 'декілька секунд',\n ss: relativeTimeWithPlural$4,\n m: relativeTimeWithPlural$4,\n mm: relativeTimeWithPlural$4,\n h: 'годину',\n hh: relativeTimeWithPlural$4,\n d: 'день',\n dd: relativeTimeWithPlural$4,\n M: 'місяць',\n MM: relativeTimeWithPlural$4,\n y: 'рік',\n yy: relativeTimeWithPlural$4,\n },\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n meridiemParse: /ночі|ранку|дня|вечора/,\n isPM: function (input) {\n return /^(дня|вечора)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночі';\n } else if (hour < 12) {\n return 'ранку';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечора';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return number + '-й';\n case 'D':\n return number + '-го';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var months$b = [\n 'جنوری',\n 'فروری',\n 'مارچ',\n 'اپریل',\n 'مئی',\n 'جون',\n 'جولائی',\n 'اگست',\n 'ستمبر',\n 'اکتوبر',\n 'نومبر',\n 'دسمبر',\n ],\n days$2 = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];\n\n hooks.defineLocale('ur', {\n months: months$b,\n monthsShort: months$b,\n weekdays: days$2,\n weekdaysShort: days$2,\n weekdaysMin: days$2,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[آج بوقت] LT',\n nextDay: '[کل بوقت] LT',\n nextWeek: 'dddd [بوقت] LT',\n lastDay: '[گذشتہ روز بوقت] LT',\n lastWeek: '[گذشتہ] dddd [بوقت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s بعد',\n past: '%s قبل',\n s: 'چند سیکنڈ',\n ss: '%d سیکنڈ',\n m: 'ایک منٹ',\n mm: '%d منٹ',\n h: 'ایک گھنٹہ',\n hh: '%d گھنٹے',\n d: 'ایک دن',\n dd: '%d دن',\n M: 'ایک ماہ',\n MM: '%d ماہ',\n y: 'ایک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('uz-latn', {\n months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n weekdays:\n 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(\n '_'\n ),\n weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Bugun soat] LT [da]',\n nextDay: '[Ertaga] LT [da]',\n nextWeek: 'dddd [kuni soat] LT [da]',\n lastDay: '[Kecha soat] LT [da]',\n lastWeek: \"[O'tgan] dddd [kuni soat] LT [da]\",\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Yaqin %s ichida',\n past: 'Bir necha %s oldin',\n s: 'soniya',\n ss: '%d soniya',\n m: 'bir daqiqa',\n mm: '%d daqiqa',\n h: 'bir soat',\n hh: '%d soat',\n d: 'bir kun',\n dd: '%d kun',\n M: 'bir oy',\n MM: '%d oy',\n y: 'bir yil',\n yy: '%d yil',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('uz', {\n months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Бугун соат] LT [да]',\n nextDay: '[Эртага] LT [да]',\n nextWeek: 'dddd [куни соат] LT [да]',\n lastDay: '[Кеча соат] LT [да]',\n lastWeek: '[Утган] dddd [куни соат] LT [да]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Якин %s ичида',\n past: 'Бир неча %s олдин',\n s: 'фурсат',\n ss: '%d фурсат',\n m: 'бир дакика',\n mm: '%d дакика',\n h: 'бир соат',\n hh: '%d соат',\n d: 'бир кун',\n dd: '%d кун',\n M: 'бир ой',\n MM: '%d ой',\n y: 'бир йил',\n yy: '%d йил',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('vi', {\n months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(\n '_'\n ),\n monthsShort:\n 'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(\n '_'\n ),\n weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /sa|ch/i,\n isPM: function (input) {\n return /^ch$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'sa' : 'SA';\n } else {\n return isLower ? 'ch' : 'CH';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [năm] YYYY',\n LLL: 'D MMMM [năm] YYYY HH:mm',\n LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\n l: 'DD/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hôm nay lúc] LT',\n nextDay: '[Ngày mai lúc] LT',\n nextWeek: 'dddd [tuần tới lúc] LT',\n lastDay: '[Hôm qua lúc] LT',\n lastWeek: 'dddd [tuần trước lúc] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s tới',\n past: '%s trước',\n s: 'vài giây',\n ss: '%d giây',\n m: 'một phút',\n mm: '%d phút',\n h: 'một giờ',\n hh: '%d giờ',\n d: 'một ngày',\n dd: '%d ngày',\n w: 'một tuần',\n ww: '%d tuần',\n M: 'một tháng',\n MM: '%d tháng',\n y: 'một năm',\n yy: '%d năm',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('x-pseudo', {\n months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(\n '_'\n ),\n monthsShort:\n 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(\n '_'\n ),\n weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[T~ódá~ý át] LT',\n nextDay: '[T~ómó~rró~w át] LT',\n nextWeek: 'dddd [át] LT',\n lastDay: '[Ý~ést~érdá~ý át] LT',\n lastWeek: '[L~ást] dddd [át] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'í~ñ %s',\n past: '%s á~gó',\n s: 'á ~féw ~sécó~ñds',\n ss: '%d s~écóñ~ds',\n m: 'á ~míñ~úté',\n mm: '%d m~íñú~tés',\n h: 'á~ñ hó~úr',\n hh: '%d h~óúrs',\n d: 'á ~dáý',\n dd: '%d d~áýs',\n M: 'á ~móñ~th',\n MM: '%d m~óñt~hs',\n y: 'á ~ýéár',\n yy: '%d ý~éárs',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('yo', {\n months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(\n '_'\n ),\n monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Ònì ni] LT',\n nextDay: '[Ọ̀la ni] LT',\n nextWeek: \"dddd [Ọsẹ̀ tón'bọ] [ni] LT\",\n lastDay: '[Àna ni] LT',\n lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ní %s',\n past: '%s kọjá',\n s: 'ìsẹjú aayá die',\n ss: 'aayá %d',\n m: 'ìsẹjú kan',\n mm: 'ìsẹjú %d',\n h: 'wákati kan',\n hh: 'wákati %d',\n d: 'ọjọ́ kan',\n dd: 'ọjọ́ %d',\n M: 'osù kan',\n MM: 'osù %d',\n y: 'ọdún kan',\n yy: 'ọdún %d',\n },\n dayOfMonthOrdinalParse: /ọjọ́\\s\\d{1,2}/,\n ordinal: 'ọjọ́ %d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('zh-cn', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日Ah点mm分',\n LLLL: 'YYYY年M月D日ddddAh点mm分',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n } else {\n // '中午'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[下]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n lastDay: '[昨天]LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[上]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '周';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s后',\n past: '%s前',\n s: '几秒',\n ss: '%d 秒',\n m: '1 分钟',\n mm: '%d 分钟',\n h: '1 小时',\n hh: '%d 小时',\n d: '1 天',\n dd: '%d 天',\n w: '1 周',\n ww: '%d 周',\n M: '1 个月',\n MM: '%d 个月',\n y: '1 年',\n yy: '%d 年',\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('zh-hk', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1200) {\n return '上午';\n } else if (hm === 1200) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: '[下]ddddLT',\n lastDay: '[昨天]LT',\n lastWeek: '[上]ddddLT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('zh-mo', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'D/M/YYYY',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s內',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('zh-tw', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n hooks.locale('en');\n\n return hooks;\n\n})));\n","import moment from \"moment/min/moment-with-locales.js\";\nimport { default as default2 } from \"moment/min/moment-with-locales.js\";\nimport { getLocale } from \"@nextcloud/l10n\";\nimport { getGettextBuilder } from \"@nextcloud/l10n/gettext\";\nconst locale = getLocale();\nconst translations = { \"ar\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"ثوانٍ\"] } } } }, \"ast\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"segundos\"] } } } }, \"az\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"saniyə\"] } } } }, \"be\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"секунды\"] } } } }, \"br\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"eilennoù\"] } } } }, \"ca\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"segons\"] } } } }, \"cs\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"sekund(y)\"] } } } }, \"cs_CZ\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"sekund(y)\"] } } } }, \"da\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"sekunder\"] } } } }, \"de\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"Sekunden\"] } } } }, \"de_DE\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"Sekunden\"] } } } }, \"el\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"δευτερόλεπτα\"] } } } }, \"en_GB\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"seconds\"] } } } }, \"eo\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"sekundoj\"] } } } }, \"es\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"segundos\"] } } } }, \"es_AR\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"segundos\"] } } } }, \"es_CL\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"segundos\"] } } } }, \"es_MX\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"segundos\"] } } } }, \"et_EE\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"sekundid\"] } } } }, \"eu\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"segundo\"] } } } }, \"fa\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"ثانیه\"] } } } }, \"fi\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"sekuntia\"] } } } }, \"fi_FI\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"sekuntia\"] } } } }, \"fr\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"secondes\"] } } } }, \"ga\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"soicindí\"] } } } }, \"gl\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"segundos\"] } } } }, \"he\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"שניות\"] } } } }, \"hr\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"sekunde\"] } } } }, \"hu\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"másodperc\"] } } } }, \"hu_HU\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"másodperc\"] } } } }, \"id\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"detik\"] } } } }, \"is\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"sekúndur\"] } } } }, \"it\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"secondi\"] } } } }, \"ja\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"秒後\"] } } } }, \"ja_JP\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"秒\"] } } } }, \"kab\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"tasinin\"] } } } }, \"ko\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"초\"] } } } }, \"lo\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"ວິນາທີ\"] } } } }, \"lt_LT\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"sek.\"] } } } }, \"lv\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"sekundes\"] } } } }, \"mk\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"секунди\"] } } } }, \"mn\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"секунд\"] } } } }, \"ms_MY\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"saat\"] } } } }, \"my\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"စက္ကန့်\"] } } } }, \"nb\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"sekunder\"] } } } }, \"nb_NO\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"sekunder\"] } } } }, \"nl\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"seconden\"] } } } }, \"oc\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"segondas\"] } } } }, \"pl\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"sekundy\"] } } } }, \"pt_BR\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"segundos\"] } } } }, \"pt_PT\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"segundos\"] } } } }, \"ro\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"secunde\"] } } } }, \"ru\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"секунды\"] } } } }, \"si\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"තත්පර\"] } } } }, \"sk\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"sekúnd\"] } } } }, \"sk_SK\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"sekundy\"] } } } }, \"sl\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"sekunde\"] } } } }, \"sq\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"sekonda\"] } } } }, \"sr\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"секунде\"] } } } }, \"sv\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"sekunder\"] } } } }, \"th_TH\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"วินาที\"] } } } }, \"tr\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"saniye\"] } } } }, \"uk\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"секунд\"] } } } }, \"uz\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"ikkinchi\"] } } } }, \"vi\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"giây\"] } } } }, \"zh_CN\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"秒\"] } } } }, \"zh_HK\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"秒\"] } } } }, \"zh_TW\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"秒\"] } } } } };\nmoment.locale(locale);\nif (locale === \"en\") {\n moment.updateLocale(moment.locale(), {\n relativeTime: { s: \"seconds\" }\n });\n}\nif (locale in translations) {\n const gt = getGettextBuilder().setLanguage(locale).addTranslation(locale, translations[locale]).build();\n moment.updateLocale(moment.locale(), {\n relativeTime: {\n s: gt.gettext(\"seconds\")\n }\n });\n}\nexport {\n default2 as default\n};\n//# sourceMappingURL=index.mjs.map\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport debounce from 'debounce'\nimport Contact from '../models/contact.js'\nimport { setPropertyAlias } from '../services/updateDesignSet.js'\n\nexport default {\n\tprops: {\n\t\t// Default property type. e.g. \"WORK,HOME\"\n\t\tselectType: {\n\t\t\ttype: [Object],\n\t\t\tdefault: () => {},\n\t\t},\n\t\t// Coming from the rfcProps Model\n\t\tpropModel: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tpropType: {\n\t\t\ttype: String,\n\t\t\tdefault: 'text',\n\t\t},\n\t\t// The current property passed as Object\n\t\tproperty: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\t// Allows us to know if we need to\n\t\t// add the property header or not\n\t\tisFirstProperty: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\t// Allows us to know if we need to\n\t\t// add an extra space at the end\n\t\tisLastProperty: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\t// Is it read-only?\n\t\tisReadOnly: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\t// The available TYPE options from the propModel\n\t\t// not used on the PropertySelect\n\t\toptions: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tlocalContact: {\n\t\t\ttype: Contact,\n\t\t\tdefault: null,\n\t\t},\n\t\tisMultiple: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tbus: {\n\t\t\ttype: Object,\n\t\t\trequired: false,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\t// INIT data when the contact change.\n\t\t\t// This is a simple copy that we can update as\n\t\t\t// many times as we can and debounce-fire the update\n\t\t\t// later\n\t\t\tlocalValue: this.value,\n\t\t\tlocalType: this.selectType,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tactions() {\n\t\t\treturn this.propModel.actions ? this.propModel.actions : []\n\t\t},\n\t\thaveAction() {\n\t\t\treturn this.actions && this.actions.length > 0\n\t\t},\n\t},\n\n\twatch: {\n\t\t/**\n\t\t * Since we're updating a local data based on the value prop,\n\t\t * we need to make sure to update the local data on contact change\n\t\t * in case the v-Node is reused.\n\t\t */\n\t\tvalue() {\n\t\t\tthis.localValue = this.value\n\t\t},\n\t\tselectType() {\n\t\t\tthis.localType = this.selectType\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Delete the property\n\t\t */\n\t\tdeleteProperty() {\n\t\t\tthis.$emit('delete')\n\t\t},\n\n\t\t/**\n\t\t * Debounce and send update event to parent\n\t\t */\n\t\tupdateValue: debounce(function(e) {\n\t\t\t// https://vuejs.org/v2/guide/components-custom-events.html#sync-Modifier\n\t\t\tthis.$emit('update:value', this.localValue)\n\t\t}, 500),\n\n\t\tupdateType: debounce(function(e) {\n\t\t\t// https://vuejs.org/v2/guide/components-custom-events.html#sync-Modifier\n\t\t\tthis.$emit('update:selectType', this.localType)\n\t\t}, 500),\n\n\t\tcreateLabel(label) {\n\t\t\tlet propGroup = this.property.name\n\t\t\tif (!this.property.name.startsWith('nextcloud')) {\n\t\t\t\tpropGroup = `nextcloud${this.getNcGroupCount() + 1}.${this.property.name}`\n\t\t\t\tthis.property.jCal[0] = propGroup\n\t\t\t}\n\t\t\tconst group = propGroup.split('.')[0]\n\t\t\tconst name = propGroup.split('.')[1]\n\n\t\t\tthis.localContact.vCard.addPropertyWithValue(`${group}.x-ablabel`, label.name)\n\n\t\t\t// force update the main design sets\n\t\t\tsetPropertyAlias(name, propGroup)\n\n\t\t\tthis.$emit('update')\n\t\t},\n\n\t\tgetNcGroupCount() {\n\t\t\tconst props = this.localContact.jCal[1]\n\t\t\t\t.map((prop) => prop[0].split('.')[0]) // itemxxx.adr => itemxxx\n\t\t\t\t.filter((name) => name.startsWith('nextcloud')) // filter nextcloudxxx.adr\n\t\t\t\t.map((prop) => parseInt(prop.split('nextcloud')[1])) // nextcloudxxx => xxx\n\t\t\treturn props.length > 0\n\t\t\t\t? Math.max.apply(null, props) // get max iteration of nextcloud grouped props\n\t\t\t\t: 0\n\t\t},\n\t},\n}\n","\n\n\n\n\n","\n\n\n\n\n","\n\n\n\n\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = assertString;\nfunction assertString(input) {\n if (input === undefined || input === null) throw new TypeError(\"Expected a string but received a \".concat(input));\n if (input.constructor.name !== 'String') throw new TypeError(\"Expected a string but received a \".concat(input.constructor.name));\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = checkHost;\nfunction isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n}\nfunction checkHost(host, matches) {\n for (var i = 0; i < matches.length; i++) {\n var match = matches[i];\n if (host === match || isRegExp(match) && match.test(host)) {\n return true;\n }\n }\n return false;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isByteLength;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n/* eslint-disable prefer-rest-params */\nfunction isByteLength(str, options) {\n (0, _assertString.default)(str);\n var min;\n var max;\n if (_typeof(options) === 'object') {\n min = options.min || 0;\n max = options.max;\n } else {\n // backwards compatibility: isByteLength(str, min [, max])\n min = arguments[1];\n max = arguments[2];\n }\n var len = encodeURI(str).split(/%..|./).length - 1;\n return len >= min && (typeof max === 'undefined' || len <= max);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = merge;\nfunction merge() {\n var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var defaults = arguments.length > 1 ? arguments[1] : undefined;\n for (var key in defaults) {\n if (typeof obj[key] === 'undefined') {\n obj[key] = defaults[key];\n }\n }\n return obj;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isFQDN;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar default_fqdn_options = {\n require_tld: true,\n allow_underscores: false,\n allow_trailing_dot: false,\n allow_numeric_tld: false,\n allow_wildcard: false,\n ignore_max_length: false\n};\nfunction isFQDN(str, options) {\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, default_fqdn_options);\n\n /* Remove the optional trailing dot before checking validity */\n if (options.allow_trailing_dot && str[str.length - 1] === '.') {\n str = str.substring(0, str.length - 1);\n }\n\n /* Remove the optional wildcard before checking validity */\n if (options.allow_wildcard === true && str.indexOf('*.') === 0) {\n str = str.substring(2);\n }\n var parts = str.split('.');\n var tld = parts[parts.length - 1];\n if (options.require_tld) {\n // disallow fqdns without tld\n if (parts.length < 2) {\n return false;\n }\n if (!options.allow_numeric_tld && !/^([a-z\\u00A1-\\u00A8\\u00AA-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]{2,}|xn[a-z0-9-]{2,})$/i.test(tld)) {\n return false;\n }\n\n // disallow spaces\n if (/\\s/.test(tld)) {\n return false;\n }\n }\n\n // reject numeric TLDs\n if (!options.allow_numeric_tld && /^\\d+$/.test(tld)) {\n return false;\n }\n return parts.every(function (part) {\n if (part.length > 63 && !options.ignore_max_length) {\n return false;\n }\n if (!/^[a-z_\\u00a1-\\uffff0-9-]+$/i.test(part)) {\n return false;\n }\n\n // disallow full-width chars\n if (/[\\uff01-\\uff5e]/.test(part)) {\n return false;\n }\n\n // disallow parts starting or ending with hyphen\n if (/^-|-$/.test(part)) {\n return false;\n }\n if (!options.allow_underscores && /_/.test(part)) {\n return false;\n }\n return true;\n });\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isIP;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n/**\n11.3. Examples\n\n The following addresses\n\n fe80::1234 (on the 1st link of the node)\n ff02::5678 (on the 5th link of the node)\n ff08::9abc (on the 10th organization of the node)\n\n would be represented as follows:\n\n fe80::1234%1\n ff02::5678%5\n ff08::9abc%10\n\n (Here we assume a natural translation from a zone index to the\n part, where the Nth zone of any scope is translated into\n \"N\".)\n\n If we use interface names as , those addresses could also be\n represented as follows:\n\n fe80::1234%ne0\n ff02::5678%pvc1.3\n ff08::9abc%interface10\n\n where the interface \"ne0\" belongs to the 1st link, \"pvc1.3\" belongs\n to the 5th link, and \"interface10\" belongs to the 10th organization.\n * * */\nvar IPv4SegmentFormat = '(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])';\nvar IPv4AddressFormat = \"(\".concat(IPv4SegmentFormat, \"[.]){3}\").concat(IPv4SegmentFormat);\nvar IPv4AddressRegExp = new RegExp(\"^\".concat(IPv4AddressFormat, \"$\"));\nvar IPv6SegmentFormat = '(?:[0-9a-fA-F]{1,4})';\nvar IPv6AddressRegExp = new RegExp('^(' + \"(?:\".concat(IPv6SegmentFormat, \":){7}(?:\").concat(IPv6SegmentFormat, \"|:)|\") + \"(?:\".concat(IPv6SegmentFormat, \":){6}(?:\").concat(IPv4AddressFormat, \"|:\").concat(IPv6SegmentFormat, \"|:)|\") + \"(?:\".concat(IPv6SegmentFormat, \":){5}(?::\").concat(IPv4AddressFormat, \"|(:\").concat(IPv6SegmentFormat, \"){1,2}|:)|\") + \"(?:\".concat(IPv6SegmentFormat, \":){4}(?:(:\").concat(IPv6SegmentFormat, \"){0,1}:\").concat(IPv4AddressFormat, \"|(:\").concat(IPv6SegmentFormat, \"){1,3}|:)|\") + \"(?:\".concat(IPv6SegmentFormat, \":){3}(?:(:\").concat(IPv6SegmentFormat, \"){0,2}:\").concat(IPv4AddressFormat, \"|(:\").concat(IPv6SegmentFormat, \"){1,4}|:)|\") + \"(?:\".concat(IPv6SegmentFormat, \":){2}(?:(:\").concat(IPv6SegmentFormat, \"){0,3}:\").concat(IPv4AddressFormat, \"|(:\").concat(IPv6SegmentFormat, \"){1,5}|:)|\") + \"(?:\".concat(IPv6SegmentFormat, \":){1}(?:(:\").concat(IPv6SegmentFormat, \"){0,4}:\").concat(IPv4AddressFormat, \"|(:\").concat(IPv6SegmentFormat, \"){1,6}|:)|\") + \"(?::((?::\".concat(IPv6SegmentFormat, \"){0,5}:\").concat(IPv4AddressFormat, \"|(?::\").concat(IPv6SegmentFormat, \"){1,7}|:))\") + ')(%[0-9a-zA-Z.]{1,})?$');\nfunction isIP(ipAddress) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n (0, _assertString.default)(ipAddress);\n\n // accessing 'arguments' for backwards compatibility: isIP(ipAddress [, version])\n // eslint-disable-next-line prefer-rest-params\n var version = (_typeof(options) === 'object' ? options.version : arguments[1]) || '';\n if (!version) {\n return isIP(ipAddress, {\n version: 4\n }) || isIP(ipAddress, {\n version: 6\n });\n }\n if (version.toString() === '4') {\n return IPv4AddressRegExp.test(ipAddress);\n }\n if (version.toString() === '6') {\n return IPv6AddressRegExp.test(ipAddress);\n }\n return false;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isEmail;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nvar _checkHost = _interopRequireDefault(require(\"./util/checkHost\"));\nvar _isByteLength = _interopRequireDefault(require(\"./isByteLength\"));\nvar _isFQDN = _interopRequireDefault(require(\"./isFQDN\"));\nvar _isIP = _interopRequireDefault(require(\"./isIP\"));\nvar _merge = _interopRequireDefault(require(\"./util/merge\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar default_email_options = {\n allow_display_name: false,\n allow_underscores: false,\n require_display_name: false,\n allow_utf8_local_part: true,\n require_tld: true,\n blacklisted_chars: '',\n ignore_max_length: false,\n host_blacklist: [],\n host_whitelist: []\n};\n\n/* eslint-disable max-len */\n/* eslint-disable no-control-regex */\nvar splitNameAddress = /^([^\\x00-\\x1F\\x7F-\\x9F\\cX]+)]/.test(display_name_without_quotes);\n if (contains_illegal) {\n // if contains illegal characters,\n // must to be enclosed in double-quotes, otherwise it's not a valid display name\n if (display_name_without_quotes === display_name) {\n return false;\n }\n\n // the quotes in display name must start with character symbol \\\n var all_start_with_back_slash = display_name_without_quotes.split('\"').length === display_name_without_quotes.split('\\\\\"').length;\n if (!all_start_with_back_slash) {\n return false;\n }\n }\n return true;\n}\nfunction isEmail(str, options) {\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, default_email_options);\n if (options.require_display_name || options.allow_display_name) {\n var display_email = str.match(splitNameAddress);\n if (display_email) {\n var display_name = display_email[1];\n\n // Remove display name and angle brackets to get email address\n // Can be done in the regex but will introduce a ReDOS (See #1597 for more info)\n str = str.replace(display_name, '').replace(/(^<|>$)/g, '');\n\n // sometimes need to trim the last space to get the display name\n // because there may be a space between display name and email address\n // eg. myname \n // the display name is `myname` instead of `myname `, so need to trim the last space\n if (display_name.endsWith(' ')) {\n display_name = display_name.slice(0, -1);\n }\n if (!validateDisplayName(display_name)) {\n return false;\n }\n } else if (options.require_display_name) {\n return false;\n }\n }\n if (!options.ignore_max_length && str.length > defaultMaxEmailLength) {\n return false;\n }\n var parts = str.split('@');\n var domain = parts.pop();\n var lower_domain = domain.toLowerCase();\n if (options.host_blacklist.length > 0 && (0, _checkHost.default)(lower_domain, options.host_blacklist)) {\n return false;\n }\n if (options.host_whitelist.length > 0 && !(0, _checkHost.default)(lower_domain, options.host_whitelist)) {\n return false;\n }\n var user = parts.join('@');\n if (options.domain_specific_validation && (lower_domain === 'gmail.com' || lower_domain === 'googlemail.com')) {\n /*\n Previously we removed dots for gmail addresses before validating.\n This was removed because it allows `multiple..dots@gmail.com`\n to be reported as valid, but it is not.\n Gmail only normalizes single dots, removing them from here is pointless,\n should be done in normalizeEmail\n */\n user = user.toLowerCase();\n\n // Removing sub-address from username before gmail validation\n var username = user.split('+')[0];\n\n // Dots are not included in gmail length restriction\n if (!(0, _isByteLength.default)(username.replace(/\\./g, ''), {\n min: 6,\n max: 30\n })) {\n return false;\n }\n var _user_parts = username.split('.');\n for (var i = 0; i < _user_parts.length; i++) {\n if (!gmailUserPart.test(_user_parts[i])) {\n return false;\n }\n }\n }\n if (options.ignore_max_length === false && (!(0, _isByteLength.default)(user, {\n max: 64\n }) || !(0, _isByteLength.default)(domain, {\n max: 254\n }))) {\n return false;\n }\n if (!(0, _isFQDN.default)(domain, {\n require_tld: options.require_tld,\n ignore_max_length: options.ignore_max_length,\n allow_underscores: options.allow_underscores\n })) {\n if (!options.allow_ip_domain) {\n return false;\n }\n if (!(0, _isIP.default)(domain)) {\n if (!domain.startsWith('[') || !domain.endsWith(']')) {\n return false;\n }\n var noBracketdomain = domain.slice(1, -1);\n if (noBracketdomain.length === 0 || !(0, _isIP.default)(noBracketdomain)) {\n return false;\n }\n }\n }\n if (options.blacklisted_chars) {\n if (user.search(new RegExp(\"[\".concat(options.blacklisted_chars, \"]+\"), 'g')) !== -1) return false;\n }\n if (user[0] === '\"' && user[user.length - 1] === '\"') {\n user = user.slice(1, user.length - 1);\n return options.allow_utf8_local_part ? quotedEmailUserUtf8.test(user) : quotedEmailUser.test(user);\n }\n var pattern = options.allow_utf8_local_part ? emailUserUtf8Part : emailUserPart;\n var user_parts = user.split('.');\n for (var _i = 0; _i < user_parts.length; _i++) {\n if (!pattern.test(user_parts[_i])) {\n return false;\n }\n }\n return true;\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\n\n","\n\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * Match a list of types against the available types\n *\n * @param selectedTypes\n * @param options\n */\nexport function matchTypes(selectedTypes: Array, options: Array<{ id: string, name: string }>) {\n\tconst items = options.map((option) => {\n\t\tlet score = 0\n\t\tconst types = option.id.split(',') // \"WORK,HOME\" => ['WORK', 'HOME']\n\n\t\tconst intersection = types.filter((value) => selectedTypes.includes(value))\n\t\tscore = score + intersection.length\n\n\t\tif (selectedTypes.length === types.length && selectedTypes.length === intersection.length) {\n\t\t\tscore++\n\t\t}\n\n\t\treturn {\n\t\t\ttype: option,\n\t\t\tscore,\n\t\t}\n\t})\n\n\treturn items\n\t\t.filter((value) => value.score > 0)\n\t\t.sort((a, b) => b.score - a.score)\n\t\t.shift()\n}\n","\n\n\n\n\n"],"file":"style-QJh_LeZW.chunk.mjs"}