{"version":3,"file":"65.c68a8f852439ea8e.js","mappings":"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","names":["DashboardService","constructor","httpClient","publicConfigService","this","getDashboardConfig","roleId","get","rpBaseUrl","params","toQueryParams","saveDashboardConfig","dashboardConfig","post","value","i0","factory","TutorialVideoModalComponent","dialogRef","config","sanitizer","publicConfig","ngOnInit","title","data","console","log","message","replace","feBaseUrl","videoLink","btnOkText","btnCancelText","setVideoURL","decline","close","accept","dismiss","link","includes","url","URL","searchParams","pathname","videoURL","bypassSecurityTrustResourceUrl","selectors","ctx","TutorialVideoModalService","dialogService","openTutorialModal","dialogSize","modalRef","open","dismissableMask","styleClass","width","Promise","resolve","reject","onClose","subscribe","res","WidgetsService","getFormWidgetData","stageId","getPeerReviewWidgetData","getAdminReviewWidgetData","getEvaluationParticipantWidgetData","getEvaluationJudgeWidgetData","getTimelineStagesData","stageIds","WidgetAdminReviewComponent","widgetsService","init","_this","loading","widgetConfig","widgetSettings","toPromise","stageName","isEliminated","isValid","currentDate","DateTime","Date","setZone","stageStartDate","isDeadlinePassed","stageEndDate","toISO","timeLeftToStart","Interval","length","timeLeftString","roundTime","days","Math","round","WidgetContent1Component","tutorialModalService","settings","openVideo","buttonUrl","WidgetContent2Component","WidgetEvaluationJudgeComponent","neededReviews","completedReviews","buttonLink","buttonText","percentage","color","calculatedArcStyle","WidgetEvaluationParticipantComponent","resultsReleased","inReview","WidgetFormComponent","invalid","formName","isSubmitted","formPercentComplete","stageType","background","calculateColor","percentageToCircularDegrees","WidgetForumsComponent","ssoService","forumsService","name","ssoUser","getCurrentSsoUser","loadingPosts","refPosts","searchForumPosts","searchTerm","sortExpresssion","isHidden","pagination","pageSize","currentPage","posts","hits","map","hit","document","extendPost","error","Object","assign","initials","createdByName","match","join","toUpperCase","category","categories","find","c","createdAt","zone","includeOffset","WidgetNewsComponent","db","FEUrl","ssoClientId","getCarrotSSOConfig","clientId","newsItemsLimit","collection","ref","where","orderBy","limit","resp","forEach","doc","newsData","isDraft","isArchived","newsItems","push","element","compiledDate","fieldData","date","toFormat","WidgetPeerReviewComponent","WidgetTimelineComponent","storage","widgetService","competitionName","retrieve","competitionTimeZoneDatabaseNameFromStorage","competitionTimeZoneDatabaseName","timelineSlides","filter","upToDateStages","firstMilestone","lastMilestone","timelineDistanceTotal","endDate","diff","toObject","seconds","milestonePositionInPercent","index","updatedStage","stage","id","slideEndDate","milestonePassed","slideMilestonePosition","slideDiffToNow","nowISO","calculatedCountdownClass","calculatedDays","trunc","calculatedCountdownText","calculatedHours","hours","firstSlideIndex","slideEndDateMinusOneHour","minus","calculatedAddToCalendarStartDate","toISODate","calculatedAddToCalendarStartTime","toISOTime","suppressSeconds","suppressMilliseconds","calculatedAddToCalendarEndDate","calculatedAddToCalendarEndTime","timelineMilestoneBarPosition","activeSlideIndex","addToCalendarClick","slide","startDate","startTime","endTime","options","timeZone","button","getElementById","atcb_action","onSlideChange","event","page","WidgetsModule","CommonModule","SharedModule","tab_r4","_r13","_r0","ctx_r12","ctx_r14","_r18","ctx_r17","ctx_r19","_MAT_INK_BAR_POSITIONER","InjectionToken","providedIn","_MAT_INK_BAR_POSITIONER_FACTORY","left","offsetLeft","offsetWidth","MatInkBar","_elementRef","_ngZone","_inkBarPositioner","_animationMode","alignToElement","show","run","onStable","pipe","take","positions","inkBar","nativeElement","style","visibility","hide","ɵfac","ANIMATION_MODULE_TYPE","ɵdir","MAT_TAB_CONTENT","MAT_TAB_LABEL","MAT_TAB","MatTabLabel","CdkPortal","templateRef","viewContainerRef","_closestTab","super","provide","useExisting","_MatTabBase","mixinDisabled","MAT_TAB_GROUP","MatTab","_viewContainerRef","_closestTabGroup","textLabel","_contentPortal","_stateChanges","Subject","position","origin","isActive","templateLabel","_templateLabel","_setTemplateLabelInput","content","ngOnChanges","changes","hasOwnProperty","next","ngOnDestroy","complete","TemplatePortal","_explicitContent","_implicitContent","ɵcmp","dirIndex","TemplateRef","_t","ngContentSelectors","matTabsAnimations","translateTab","trigger","state","transform","minHeight","transition","animate","MatTabBodyPortal","CdkPortalOutlet","componentFactoryResolver","_host","_document","_centeringSub","Subscription","_leavingSub","_beforeCentering","startWith","_isCenterPosition","_position","isCentering","hasAttached","attach","_content","_afterLeavingCenter","preserveContent","detach","unsubscribe","forwardRef","MatTabBody","DOCUMENT","_MatTabBodyBase","_dir","changeDetectorRef","_dirChangeSubscription","_translateTabComplete","_onCentering","EventEmitter","_onCentered","animationDuration","change","dir","_computePositionAnimationState","markForCheck","distinctUntilChanged","x","y","fromState","toState","emit","_positionIndex","_computePositionFromOrigin","_onTranslateTabStarted","clientHeight","_getLayoutDirection","i1","inputs","elementRef","decls","styles","MAT_TABS_CONFIG","_MatTabLabelWrapperBase","MatTabLabelWrapper","focus","getOffsetLeft","getOffsetWidth","passiveEventListenerOptions","normalizePassiveListenerOptions","passive","MatPaginatedTabHeader","_changeDetectorRef","_viewportRuler","_platform","_scrollDistance","_selectedIndexChanged","_destroyed","_showPaginationControls","_disableScrollAfter","_disableScrollBefore","_stopScrolling","_disablePagination","_selectedIndex","selectFocusedIndex","indexFocused","runOutsideAngular","fromEvent","takeUntil","_stopInterval","disablePagination","coerceBooleanProperty","selectedIndex","coerceNumberProperty","_keyManager","updateActiveItem","ngAfterViewInit","_previousPaginator","_handlePaginatorPress","_nextPaginator","ngAfterContentInit","dirChange","of","resize","realign","updatePagination","_alignInkBarToSelectedTab","FocusKeyManager","_items","withHorizontalOrientation","withHomeAndEnd","withWrap","merge","_itemsResized","then","max","min","_getMaxScrollDistance","newFocusIndex","_setTabFocus","ResizeObserver","EMPTY","switchMap","tabItems","Observable","observer","resizeObserver","item","observe","disconnect","skip","ngAfterContentChecked","_tabLabelCount","_scrollToLabel","_checkScrollingControls","_scrollDistanceChanged","_updateTabScrollPosition","_handleKeydown","hasModifierKey","keyCode","ENTER","SPACE","focusIndex","_itemSelected","onKeydown","_onContentChanges","textContent","_currentTextContent","_checkPaginationEnabled","activeItemIndex","_isValidIndex","setActiveItem","tab","toArray","disabled","tabIndex","containerEl","_tabListContainer","scrollLeft","scrollWidth","scrollDistance","translateX","_tabList","TRIDENT","EDGE","_scrollTo","_scrollHeader","direction","_handlePaginatorClick","labelIndex","selectedLabel","viewLength","labelBeforePos","labelAfterPos","_tabListInner","beforeVisiblePos","afterVisiblePos","isEnabled","selectedItem","selectedLabelWrapper","_inkBar","mouseEvent","timer","maxScrollDistance","distance","i1$1","i3","_MatTabHeaderBase","viewportRuler","ngZone","platform","animationMode","_disableRipple","disableRipple","preventDefault","MatTabHeader","_c3","_c4","_c5","_c6","_c7","$event","i4","i5","nextId","MatTabChangeEvent","_MatTabGroupMixinBase","mixinColor","mixinDisableRipple","_MatTabGroupBase","defaultConfig","_tabs","QueryList","_indexToSelect","_lastFocusedTabIndex","_tabBodyWrapperHeight","_tabsSubscription","_tabLabelSubscription","_dynamicHeight","headerPosition","_preserveContent","selectedIndexChange","focusChange","animationDone","selectedTabChange","_groupId","dynamicHeight","contentTabIndex","_animationDuration","test","_contentTabIndex","backgroundColor","_backgroundColor","classList","remove","add","indexToSelect","_clampTabIndex","isFirstRun","_createChangeEvent","wrapper","_tabBodyWrapper","_subscribeToAllTabChanges","_subscribeToTabLabels","tabs","selectedTab","i","_allTabs","reset","notifyOnChanges","destroy","realignInkBar","_tabHeader","focusTab","header","_focusChanged","_getTabLabelId","_getTabContentId","_setTabBodyWrapperHeight","tabHeight","height","offsetHeight","_removeTabBodyWrapperHeight","_handleClick","tabHeader","_getTabIndex","_tabFocusChanged","focusOrigin","MatTabGroup","_c8","_c9","i1$2","i2","i7","MatTabsModule","ɵmod","ɵinj","MatCommonModule","PortalModule","MatRippleModule","ObserversModule","A11yModule","tzlibZonesDB","Africa","Abidjan","Accra","Addis_Ababa","Algiers","Asmara","Asmera","Bamako","Bangui","Banjul","Bissau","Blantyre","Brazzaville","Bujumbura","Cairo","Casablanca","Ceuta","Conakry","Dakar","Dar_es_Salaam","Djibouti","Douala","El_Aaiun","Freetown","Gaborone","Harare","Johannesburg","Juba","Kampala","Khartoum","Kigali","Kinshasa","Lagos","Libreville","Lome","Luanda","Lubumbashi","Lusaka","Malabo","Maputo","Maseru","Mbabane","Mogadishu","Monrovia","Nairobi","Ndjamena","Niamey","Nouakchott","Ouagadougou","Sao_Tome","Timbuktu","Tripoli","Tunis","Windhoek","America","Adak","Anchorage","Anguilla","Antigua","Araguaina","Argentina","Buenos_Aires","Catamarca","ComodRivadavia","Cordoba","Jujuy","La_Rioja","Mendoza","Rio_Gallegos","Salta","San_Juan","San_Luis","Tucuman","Ushuaia","Aruba","Asuncion","Atikokan","Atka","Bahia_Banderas","Bahia","Barbados","Belem","Belize","Boa_Vista","Bogota","Boise","Cambridge_Bay","Campo_Grande","Cancun","Caracas","Cayenne","Cayman","Chicago","Chihuahua","Ciudad_Juarez","Coral_Harbour","Costa_Rica","Creston","Cuiaba","Curacao","Danmarkshavn","Dawson_Creek","Dawson","Denver","Detroit","Dominica","Edmonton","Eirunepe","El_Salvador","Ensenada","Fort_Nelson","Fort_Wayne","Fortaleza","Glace_Bay","Godthab","Goose_Bay","Grand_Turk","Grenada","Guadeloupe","Guatemala","Guayaquil","Guyana","Halifax","Havana","Hermosillo","Indiana","Indianapolis","Knox","Marengo","Petersburg","Tell_City","Vevay","Vincennes","Winamac","Inuvik","Iqaluit","Jamaica","Juneau","Kentucky","Louisville","Monticello","Knox_IN","Kralendijk","La_Paz","Lima","Los_Angeles","Lower_Princes","Maceio","Managua","Manaus","Marigot","Martinique","Matamoros","Mazatlan","Menominee","Merida","Metlakatla","Mexico_City","Miquelon","Moncton","Monterrey","Montevideo","Montreal","Montserrat","Nassau","New_York","Nipigon","Nome","Noronha","North_Dakota","Beulah","Center","New_Salem","Nuuk","Ojinaga","Panama","Pangnirtung","Paramaribo","Phoenix","Port_of_Spain","Porto_Acre","Porto_Velho","Puerto_Rico","Punta_Arenas","Rainy_River","Rankin_Inlet","Recife","Regina","Resolute","Rio_Branco","Rosario","Santa_Isabel","Santarem","Santiago","Santo_Domingo","Sao_Paulo","Scoresbysund","Shiprock","Sitka","St_Barthelemy","St_Johns","St_Kitts","St_Lucia","St_Thomas","St_Vincent","Swift_Current","Tegucigalpa","Thule","Thunder_Bay","Tijuana","Toronto","Tortola","Vancouver","Virgin","Whitehorse","Winnipeg","Yakutat","Yellowknife","Antarctica","Casey","Davis","DumontDUrville","Macquarie","Mawson","McMurdo","Palmer","Rothera","South_Pole","Syowa","Troll","Vostok","Arctic","Longyearbyen","Asia","Aden","Almaty","Amman","Anadyr","Aqtau","Aqtobe","Ashgabat","Ashkhabad","Atyrau","Baghdad","Bahrain","Baku","Bangkok","Barnaul","Beirut","Bishkek","Brunei","Calcutta","Chita","Choibalsan","Chongqing","Chungking","Colombo","Dacca","Damascus","Dhaka","Dili","Dubai","Dushanbe","Famagusta","Gaza","Harbin","Hebron","Ho_Chi_Minh","Hong_Kong","Hovd","Irkutsk","Istanbul","Jakarta","Jayapura","Jerusalem","Kabul","Kamchatka","Karachi","Kashgar","Kathmandu","Katmandu","Khandyga","Kolkata","Krasnoyarsk","Kuala_Lumpur","Kuching","Kuwait","Macao","Macau","Magadan","Makassar","Manila","Muscat","Nicosia","Novokuznetsk","Novosibirsk","Omsk","Oral","Phnom_Penh","Pontianak","Pyongyang","Qatar","Qostanay","Qyzylorda","Rangoon","Riyadh","Saigon","Sakhalin","Samarkand","Seoul","Shanghai","Singapore","Srednekolymsk","Taipei","Tashkent","Tbilisi","Tehran","Tel_Aviv","Thimbu","Thimphu","Tokyo","Tomsk","Ujung_Pandang","Ulaanbaatar","Ulan_Bator","Urumqi","Vientiane","Vladivostok","Yakutsk","Yangon","Yekaterinburg","Yerevan","Atlantic","Azores","Bermuda","Canary","Cape_Verde","Faeroe","Faroe","Jan_Mayen","Madeira","Reykjavik","South_Georgia","St_Helena","Stanley","Australia","ACT","Adelaide","Brisbane","Broken_Hill","Canberra","Currie","Darwin","Eucla","Hobart","LHI","Lindeman","Lord_Howe","Melbourne","North","NSW","Perth","Queensland","South","Sydney","Tasmania","Victoria","West","Yancowinna","Brazil","Acre","DeNoronha","East","Canada","Central","Eastern","Mountain","Newfoundland","Pacific","Saskatchewan","Yukon","CET","Chile","Continental","EasterIsland","CST6CDT","Cuba","EET","Egypt","Eire","EST","EST5EDT","Etc","GMT","GMT0","Greenwich","UCT","Universal","UTC","Zulu","Europe","Amsterdam","Andorra","Astrakhan","Athens","Belfast","Belgrade","Berlin","Bratislava","Brussels","Bucharest","Budapest","Busingen","Chisinau","Copenhagen","Dublin","Gibraltar","Guernsey","Helsinki","Isle_of_Man","Jersey","Kaliningrad","Kiev","Kirov","Kyiv","Lisbon","Ljubljana","London","Luxembourg","Madrid","Malta","Mariehamn","Minsk","Monaco","Moscow","Oslo","Paris","Podgorica","Prague","Riga","Rome","Samara","San_Marino","Sarajevo","Saratov","Simferopol","Skopje","Sofia","Stockholm","Tallinn","Tirane","Tiraspol","Ulyanovsk","Uzhgorod","Vaduz","Vatican","Vienna","Vilnius","Volgograd","Warsaw","Zagreb","Zaporozhye","Zurich","GB","Hongkong","HST","Iceland","Indian","Antananarivo","Chagos","Christmas","Cocos","Comoro","Kerguelen","Mahe","Maldives","Mauritius","Mayotte","Reunion","Iran","Israel","Japan","Kwajalein","Libya","MET","Mexico","BajaNorte","BajaSur","General","MST","MST7MDT","Navajo","NZ","Apia","Auckland","Bougainville","Chatham","Chuuk","Easter","Efate","Enderbury","Fakaofo","Fiji","Funafuti","Galapagos","Gambier","Guadalcanal","Guam","Honolulu","Johnston","Kanton","Kiritimati","Kosrae","Majuro","Marquesas","Midway","Nauru","Niue","Norfolk","Noumea","Pago_Pago","Palau","Pitcairn","Pohnpei","Ponape","Port_Moresby","Rarotonga","Saipan","Samoa","Tahiti","Tarawa","Tongatapu","Truk","Wake","Wallis","Yap","Poland","Portugal","PRC","PST8PDT","ROC","ROK","Turkey","US","Alaska","Aleutian","Arizona","Hawaii","Michigan","WET","tzlibZonesDetailsDB","tzlib_get_content","tzName","nameParts","split","tzlib_enrich_data","string","shortenerMap","key","entries","replaceAll","tzlib_get_ical_block","jsonType","tzBlock","location","tzidLine","output","JSON","stringify","tzlib_get_offset","isoDate","isoTime","dateYear","getFullYear","dateMonth","getMonth","dateDay","getDate","dateHour","getHours","timezoneData","tzBreakpoints","breakpointCount","startsWith","offset","hour","parseInt","substr","rruleParts","rruleMonth","month","day","theCase","keys","helperArrayWeekdays","numberDays","weekdayCount","getDay","weekdays","SU","MO","TU","WE","TH","FR","SA","d","occurence","actualDay","breakpointWeekday","dayIndex","tzlibZoneNames","atcbCssTemplate","default","flat","neumorphism","text","isBrowser","window","isiOS","navigator","userAgent","vendor","opera","MSStream","maxTouchPoints","isAndroid","isSafari","isMobile","isWebView","isProblematicWebView","atcbDefaultTarget","atcbOptions","atcbValidRecurrOptions","atcbInvalidSubscribeOptions","atcbiOSInvalidOptions","atcbStates","atcbWcParams","atcbWcBooleanParams","atcbWcObjectParams","atcbWcObjectArrayParams","atcbWcArrayParams","atcbIcon","apple","google","ical","msteams","ms365","outlookcom","yahoo","atcb","warning","checkmark","atcb_decorate_data","atcb_decorate_data_boolean","attr","atcb_decorate_data_timezone","tz","atcb_decorate_data_style","listStyle","isDropdown","buttonStyle","hideTextLabelList","hideTextLabelButton","buttonsList","atcb_decorate_data_options","newOptions","optionLabels","iCalGiven","appleGiven","cleanOption","optionName","toLowerCase","optionLabel","recurrence","recurrence_until","atcb_decorate_data_rrule","recurrence_simplyfied","substring","rruleObj","rule","UNTIL","recurrence_count","COUNT","recurrence_byDay","BYDAY","recurrence_byMonth","BYMONTH","recurrence_byMonthDay","BYMONTHDAY","recurrence_interval","INTERVAL","recurrence_frequency","FREQ","recurrence_weekstart","slice","sizes","atcb_decorate_sizes","size","l","m","s","sizeParts","lightMode","atcb_decorate_light_mode","matchMedia","matches","atcb_decorate_data_button_status_handling","pastDateHandling","overdue","dates","allOverdue","hidden","blockInteraction","atcb_decorate_data_extend","atcb_decorate_data_description","status","sequence","organizer","attendee","availability","onlineEvent","uid","atcb_generate_uuid","sort","a","b","timestamp","atcb_decorate_data_meta","atcb_decorate_data_dates","cleanedUpDates","atcb_date_cleanup","atcb_date_calculation","atcb_date_specials_calculation","now","created","atcb_format_datetime","updated","atcb_decorate_data_i18n","language","availableLanguages","rtl","rtlLanguages","description","descriptionHtmlFree","atcb_rewrite_html_elements","descriptionHtmlFreeICal","dateTimeData","point","tmpSplitStartDate","timeStr","Intl","DateTimeFormat","resolvedOptions","type","dateString","timeString","tmpDate","offsetEnd","getTime","setDate","currentUtcDate","toISOString","today","todayString","getUTCFullYear","getUTCMonth","getUTCDate","dateStringParts","dateParts","newDate","atcb_check_required","validationError","requiredMultiFieldFlex","every","field","atcb_validate","msgPrefix","identifier","atcb_validate_icsFile","atcb_validate_buttonStyle","customCss","atcb_secure_url","atcb_validate_subscribe","icsFile","atcb_validate_created","atcb_validate_updated","atcb_validate_options","option","atcb_validate_date_blocks","msgSuffix","atcb_validate_status","atcb_validate_availability","atcb_validate_organizer","atcb_validate_attendee","atcb_validate_uid","atcb_validate_sequence","atcb_validate_timezone","atcb_validate_datetime","atcb_validate_rrule","atcb_validate_rrule_simplyfied","icsFileStr","organizerParts","atcb_validEmail","attendeeParts","debug","warn","tzlib_get_timezones","namesArr","Array","isArray","key2","value2","key3","time","timeParts","atcb_toggle","host","action","keyboardTrigger","generatedButton","atcb_open","contains","querySelector","atcb_close","atcb_log_event","active","list","atcb_generate_dropdown_list","optionsList","createElement","role","listCount","optionItem","dataset","optionNumber","append","atcb_generate_label","hideIconList","listWrapper","setAttribute","bgOverlay","atcb_generate_bg_overlay","hideBackground","modalHost","atcb_generate_modal_host","hideBranding","atcb_create_atcbl","atcb_set_sizes","atcb_manage_body_scroll","atcb_set_fullsize","display","setTimeout","atcb_position_list","focusEl","hostEl","shadowRoot","preventScroll","blur","existingModalHost","getAttribute","allModals","querySelectorAll","nextModal","availableButtons","getElementsByTagName","newFocusEl","from","modal","body","documentElement","concat","el","parent","icon","oneOption","addEventListener","code","atcb_debounce_leading","atcb_generate_links","atcb_debounce","atcb_generate_label_content","defaultTriggerText","atcb_translate_hook","iconEl","innerHTML","textEl","darken","e","target","currentTarget","fingerMoved","atList","atcbL","cssText","innerHeight","innerWidth","atcb_create_modal","headline","buttons","subEvents","newOverlay","modalWrapper","modalCount","modalNr","parentButton","hideIconModal","modalIcon","modalHeadline","modalContent","modalsubEventsContent","modalSubEventButton","atcb_generate_date_button","label","modalButtons","modalButton","href","primary","atcb_subscribe_yahoo_modal_switch","atcb_set_fully_successful","subEvent","fullTimeInfo","startDateInfo","endDateInfo","timeZoneInfoStart","timeZoneInfoEnd","formattedTimeStart","formattedTimeEnd","timeBlocks","timeZoneInfoStringStart","timeZoneInfoStringEnd","atcb_generate_time","start","end","allday","browserTimezone","magicLocationPhrases","j","dropYearStart","dropYearEnd","formatOptionsStart","get_format_options","formatOptionsEnd","toLocaleDateString","DateLong","toLocaleString","Time","DateTimeLong","toLocaleTimeString","hoverText","cancelledInfo","recurringString","allDay","btnLeft","btnDay","btnMonth","btnRight","btnDetails","btnHeadline","btnLocation","fontWeight","btnLocationIcon","btnLocationText","alignSelf","btnDescription","btnDateTime","btnDateTimeIcon","btnDateTimeText","block","btnDateTimeTextBlock","recurSign","btnHover","hideCheckmark","btnCheck","timeZoneInfo","dropYear","hoursFormat","minute","hourCycle","year","newModalHost","hasAttribute","attachShadow","mode","delegateFocus","elem","cloneNode","atcb_set_light_mode","atcb_load_css","atcb_generate_rich_data_recurrence","formattedDate","schemaRecurrenceContent","repeatFrequency","byDayString","byDays","helperMap","byMonthString","byMonthDayString","duration","multiDateModal","linkType","atcb_generate_subscribe_links","adjustedFileUrl","atcb_subscribe_ical","atcb_subscribe_google","fileUrl","atcb_open_cal_url","encodeURIComponent","atcb_subscribe_microsoft","atcb_copy_to_clipboard","atcb_generate_ical","atcb_generate_google","urlParts","tmpDataDescription","atcb_generate_msteams","locationString","atcb_generate_microsoft","atcb_generate_yahoo","subEventButton","atcb_generate_multidate_links","theSubEvent","individualButtons","atcb_saved_hook","calName","baseUrl","basePath","newTab","filename","atcb_determine_ical_filename","filenameSuffix","iCalFileName","filenamePart","pop","givenIcsFile","bypassWebViewCheck","atcb_save_file","ics_lines","usedTimeZones","loopEnd","timeAddon","timeZoneBlock","atcb_rewrite_ical_text","dataUrl","atcb_ical_copy_note","file","save","createElementNS","rel","download","evt","MouseEvent","view","bubbles","cancelable","dispatchEvent","webkitURL","revokeObjectURL","targetCal","addTimeZoneOffset","newStartDate","newEndDate","durationMS","durationHours","floor","durationMinutes","durationString","offsetStart","formattedOffsetStart","formattedOffsetEnd","calcOffsetStart","calcOffsetEnd","setTime","getTimezoneOffset","formattedOffset","abs","datetime","includeTime","removeZ","regex","atcb_secure_content","isJSON","cleanedUp","parse","throwError","email","clear","iCalBreaks","p1","atcb_parse_url_code","input","urlText","truncate","inQuotes","blockUpwards","blockDownwards","anchorSet","originalTrigger","triggerDim","getBoundingClientRect","btnDim","btnParentDim","parentNode","viewportHeight","minWidth","listDim","sideMargin","margin","top","bottom","maxWidth","after","padding","modalObj","setProperty","crypto","getRandomValues","Uint8Array","toString","dataString","tmpInput","editable","contentEditable","readOnly","range","createRange","selectNodeContents","selection","getSelection","removeAllRanges","addRange","setSelectionRange","select","execCommand","func","timeout","args","clearTimeout","apply","undefined","parentEl","atcb_push_to_data_layer","dataLayer","eventCategory","eventAction","eventLabel","i18nStrings","en","cancel","expired","recurring","de","es","pt","fr","nl","tr","zh","ar","hi","pl","no","fi","sv","cs","ja","it","ko","vi","ro","fa","et","customLabels","atcb_translate","atcbInitialGlobalInit","atcbBtnCount","lightModeMutationObserver","template","AddToCalendarButton","HTMLElement","loaded","initialized","connectedCallback","atcb_get_pro_data","atcb_read_attributes","atcb_render_debug_msg","proKey","initButton","disconnectedCallback","atcb_cleanup","observedAttributes","attributeChangedCallback","oldValue","newValue","opacity","atcb_build_button","rootObj","inline","atcb_setup_state_management","atcb_set_global_event_listener","atcb_init_log","atcb_generate_button","buttonTriggerWrapper","buttonTrigger","hideIconButton","buttonDropdownAnchor","hideRichData","atcb_generate_rich_data","schemaEl","schemaContentMulti","parts","schemaContentFull","schemaContent","imageData","images","insertBefore","previousSibling","Error","customElements","define","val","inputVal","cleanedInput","newVal","identifierAttr","slotInput","atcbJsonInput","atcb_unset_global_event_listener","hostLightMode","cssGlobalContent","scrollBarWidth","clientWidth","innerText","head","cssContent","overrideDefaultCss","overrideDarkCss","prepend","flexWrap","justifyContent","cssFile","loadExternalCssAsynch","placeholder","onload","errorBanner","triggerElement","root","potentialExistingHost","singleDates","pro","versionOutput","licenseKey","MutationObserver","mutationsList","mutation","attributeName","attributes","atcb_global_listener_keyup","atcb_global_listener_keydown","atcb_global_listener_resize","rootModal","targetFocus","currFocusOption","activeElement","optionListCount","activeOverlay"],"sourceRoot":"webpack:///","sources":["./src/app/shared/services/dashboard.service.ts","./src/app/shared/components/modal/tutorial-video-modal/tutorial-video-modal.component.html","./src/app/shared/components/modal/tutorial-video-modal/tutorial-video-modal.component.ts","./src/app/shared/services/tutorial-video-modal.service.ts","./src/app/shared/services/widgets.service.ts","./src/app/widgets/widget-admin-review/widget-admin-review.component.html","./src/app/widgets/widget-admin-review/widget-admin-review.component.ts","./src/app/widgets/widget-content-1/widget-content-1.component.html","./src/app/widgets/widget-content-1/widget-content-1.component.ts","./src/app/widgets/widget-content-2/widget-content-2.component.html","./src/app/widgets/widget-content-2/widget-content-2.component.ts","./src/app/widgets/widget-evaluation-judge/widget-evaluation-judge.component.html","./src/app/widgets/widget-evaluation-judge/widget-evaluation-judge.component.ts","./src/app/widgets/widget-evaluation-participant/widget-evaluation-participant.component.html","./src/app/widgets/widget-evaluation-participant/widget-evaluation-participant.component.ts","./src/app/widgets/widget-form/widget-form.component.html","./src/app/widgets/widget-form/widget-form.component.ts","./src/app/widgets/widget-forums/widget-forums.component.html","./src/app/widgets/widget-forums/widget-forums.component.ts","./src/app/widgets/widget-news/widget-news.component.html","./src/app/widgets/widget-news/widget-news.component.ts","./src/app/widgets/widget-peer-review/widget-peer-review.component.html","./src/app/widgets/widget-peer-review/widget-peer-review.component.ts","./src/app/widgets/widget-timeline/widget-timeline.component.html","./src/app/widgets/widget-timeline/widget-timeline.component.ts","./src/app/widgets/widgets.module.ts","./node_modules/@angular/material/fesm2020/tabs.mjs","./node_modules/timezones-ical-library/dist/mjs/index.js","./node_modules/add-to-calendar-button/dist/module/index.js"],"sourcesContent":["import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { toQueryParams } from \"../utils/http.util\";\r\nimport { PublicConfigService } from \"./public.config.service\";\r\n\r\n@Injectable()\r\nexport class DashboardService {\r\n\r\n constructor(private httpClient: HttpClient, private publicConfigService: PublicConfigService) {\r\n\r\n }\r\n\r\n getDashboardConfig(roleId: string) {\r\n return this.httpClient.get(`${this.publicConfigService.rpBaseUrl}/api/dashboard-config`, {\r\n params: toQueryParams({roleId: roleId})\r\n });\r\n }\r\n\r\n saveDashboardConfig(roleId: string, dashboardConfig: string) {\r\n return this.httpClient.post(`${this.publicConfigService.rpBaseUrl}/api/dashboard-config`, {\r\n roleId: roleId,\r\n value: dashboardConfig\r\n });\r\n }\r\n}\r\n","
\r\n

{{ title }}

\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n\r\n
\r\n \r\n {{ btnCancelText }}\r\n \r\n \r\n {{ btnOkText }}\r\n \r\n
\r\n","import { Component, Input, OnInit } from \"@angular/core\";\r\nimport { DomSanitizer, SafeResourceUrl } from \"@angular/platform-browser\";\r\nimport { DynamicDialogConfig, DynamicDialogRef } from \"primeng/dynamicdialog\";\r\nimport { PublicConfigService } from \"src/app/shared/services/public.config.service\";\r\n\r\n@Component({\r\n selector: \"app-tutorial-video-modal\",\r\n templateUrl: \"./tutorial-video-modal.component.html\",\r\n styleUrls: [\"./tutorial-video-modal.component.scss\"],\r\n})\r\nexport class TutorialVideoModalComponent implements OnInit {\r\n @Input() title: string;\r\n @Input() message: string;\r\n @Input() videoLink: string;\r\n @Input() btnOkText: string;\r\n @Input() btnCancelText: string;\r\n\r\n videoURL: SafeResourceUrl = null;\r\n\r\n constructor(\r\n public dialogRef: DynamicDialogRef,\r\n public config: DynamicDialogConfig,\r\n private sanitizer: DomSanitizer,\r\n private publicConfig: PublicConfigService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.title = this.config.data?.title;\r\n console.log(this.config.data?.message)\r\n this.message = this.config.data?.message?.replace(\r\n /https:\\/\\/febaseurl/g,\r\n this.publicConfig.feBaseUrl\r\n );\r\n this.videoLink = this.config.data?.videoLink;\r\n this.btnOkText = this.config.data?.btnOkText;\r\n this.btnCancelText = this.config.data?.btnCancelText;\r\n this.setVideoURL();\r\n }\r\n\r\n public decline() {\r\n this.dialogRef.close(false);\r\n }\r\n\r\n public accept() {\r\n this.dialogRef.close(true);\r\n }\r\n\r\n public dismiss() {\r\n this.dialogRef.close(false);\r\n }\r\n\r\n setVideoURL() {\r\n let link = this.videoLink;\r\n if (!link) {\r\n return;\r\n }\r\n if (link.includes(\"you\")) {\r\n const url = new URL(link);\r\n const id = url?.searchParams?.get(\"v\") || url?.pathname.replace(\"/\", \"\");\r\n link = `https://www.youtube.com/embed/${id}`;\r\n this.videoURL = this.sanitizer.bypassSecurityTrustResourceUrl(link);\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { TutorialVideoModalComponent } from '../components/modal/tutorial-video-modal/tutorial-video-modal.component';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TutorialVideoModalService {\r\n\r\n constructor(private dialogService: DialogService) { }\r\n\r\n public openTutorialModal(\r\n title: string = '',\r\n message: string = '',\r\n videoLink: string = '',\r\n btnOkText: string = 'Ok',\r\n dialogSize: string = 'auto'): Promise {\r\n const modalRef = this.dialogService.open(TutorialVideoModalComponent, {\r\n dismissableMask: false,\r\n styleClass: 'dialog hidden-close-dialog',\r\n width: dialogSize,\r\n data: {\r\n title,\r\n message,\r\n videoLink,\r\n btnOkText,\r\n }\r\n });\r\n return new Promise((resolve, reject) => {\r\n modalRef.onClose.subscribe(res => resolve(res));\r\n })\r\n }\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { toQueryParams } from \"../utils/http.util\";\r\nimport { PublicConfigService } from \"./public.config.service\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class WidgetsService {\r\n\r\n constructor(private httpClient: HttpClient, private publicConfigService: PublicConfigService) {\r\n\r\n }\r\n\r\n getFormWidgetData(stageId: string) {\r\n return this.httpClient.get(`${this.publicConfigService.rpBaseUrl}/api/widget/form`, {\r\n params: toQueryParams({ stageId })\r\n });\r\n }\r\n\r\n getPeerReviewWidgetData(stageId: string) {\r\n return this.httpClient.get(`${this.publicConfigService.rpBaseUrl}/api/widget/judging/judge`, {\r\n params: toQueryParams({ stageId })\r\n });\r\n }\r\n\r\n getAdminReviewWidgetData(stageId: string) {\r\n return this.httpClient.get(`${this.publicConfigService.rpBaseUrl}/api/widget/admin-review`, {\r\n params: toQueryParams({ stageId })\r\n });\r\n }\r\n\r\n getEvaluationParticipantWidgetData(stageId: string) {\r\n return this.httpClient.get(`${this.publicConfigService.rpBaseUrl}/api/widget/judging/participant`, {\r\n params: toQueryParams({ stageId })\r\n });\r\n }\r\n\r\n getEvaluationJudgeWidgetData(stageId: string) {\r\n return this.httpClient.get(`${this.publicConfigService.rpBaseUrl}/api/widget/judging/judge`, {\r\n params: toQueryParams({ stageId })\r\n });\r\n }\r\n\r\n getTimelineStagesData(stageIds: string[]) {\r\n return this.httpClient.get(`${this.publicConfigService.rpBaseUrl}/api/widget/timeline`, {\r\n params: {\r\n stageIds: stageIds\r\n }\r\n });\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n task\r\n \r\n {{ stageName }}\r\n
\r\n
\r\n
Not connected to a stage
\r\n\r\n
0 || !isDeadlinePassed)\" class=\"custom-message\">\r\n search\r\n

All submitted applications are being reviewed for eligibility.

\r\n \r\n
\r\n\r\n
\r\n cancel\r\n

System Message

\r\n We regret to inform you that you have been eliminated from the competition at this stage.\r\n
\r\n\r\n
\r\n cancel\r\n

Your application is invalid.

\r\n Check your email for more details.\r\n
\r\n\r\n
\r\n check_circle\r\n

Congratulations! Your application is moving onto the next phase of the competition.

\r\n Check your email for more details.\r\n
\r\n \r\n
\r\n
","import { Component, Input, OnInit } from \"@angular/core\";\r\nimport { DateTime, Interval } from \"luxon\";\r\nimport { WidgetsService } from \"src/app/shared/services/widgets.service\";\r\n\r\n@Component({\r\n selector: 'widget-admin-review',\r\n templateUrl: './widget-admin-review.component.html',\r\n styleUrls: ['./widget-admin-review.component.scss']\r\n})\r\nexport class WidgetAdminReviewComponent implements OnInit {\r\n @Input() widgetConfig;\r\n\r\n stageId = null;\r\n stageName = '';\r\n timeLeftToStart = 0;\r\n timeLeftString = 'Days';\r\n isDeadlinePassed = false;\r\n isEliminated = false;\r\n isValid = null;\r\n loading = false;\r\n\r\n \r\n constructor(private widgetsService: WidgetsService) { }\r\n\r\n ngOnInit() {\r\n this.init()\r\n }\r\n\r\n async init() {\r\n this.loading = true;\r\n this.stageId = this.widgetConfig?.widgetSettings?.stageId\r\n if (!this.stageId) return\r\n const res: any = await this.widgetsService.getAdminReviewWidgetData(this.stageId).toPromise();\r\n this.stageName = res.stageName;\r\n this.isEliminated = res.isEliminated;\r\n this.isValid = res.isValid;\r\n const currentDate = DateTime.fromJSDate(new Date()).setZone('UTC');\r\n const stageStartDate = DateTime.fromISO(res.stageStartDate);\r\n this.isDeadlinePassed = res.stageEndDate < DateTime.fromJSDate(new Date()).setZone(\"UTC\").toISO();\r\n this.timeLeftToStart = Interval.fromDateTimes(currentDate, stageStartDate).length('days') || 0;\r\n if (this.timeLeftToStart < 2 && this.timeLeftToStart !== 0) {\r\n this.timeLeftString = 'Day';\r\n }\r\n if (this.timeLeftToStart < 1 && this.timeLeftToStart !== 0) {\r\n this.timeLeftToStart = Interval.fromDateTimes(currentDate, stageStartDate).length('hours') || 0;\r\n this.timeLeftString = this.timeLeftToStart < 2 ? 'Hour' : 'Hours';\r\n }\r\n if (this.timeLeftToStart < 1 && this.timeLeftToStart !== 0) {\r\n this.timeLeftToStart = Interval.fromDateTimes(currentDate, stageStartDate).length('minutes') || 0;\r\n this.timeLeftString = this.timeLeftToStart < 2 ? 'Minute' : 'Minutes';\r\n }\r\n this.loading = false;\r\n }\r\n\r\n roundTime(days: number) {\r\n return Math.round(days)\r\n }\r\n}\r\n","
\r\n
\r\n \r\n {{ settings.title }}\r\n

{{ settings.description }}

\r\n \r\n {{ settings.buttonText }}\r\n \r\n \r\n
\r\n","import { Component, Input, OnInit } from \"@angular/core\";\r\nimport { TutorialVideoModalService } from \"src/app/shared/services/tutorial-video-modal.service\";\r\n\r\n@Component({\r\n selector: \"widget-content-1\",\r\n templateUrl: \"./widget-content-1.component.html\",\r\n styleUrls: [\"./widget-content-1.component.scss\"],\r\n})\r\nexport class WidgetContent1Component implements OnInit {\r\n @Input() widgetConfig;\r\n settings: any = {};\r\n\r\n constructor(private tutorialModalService: TutorialVideoModalService) {}\r\n\r\n ngOnInit() {\r\n this.settings = this.widgetConfig.widgetSettings;\r\n }\r\n\r\n openVideo() {\r\n this.tutorialModalService.openTutorialModal(\r\n \"\",\r\n \"\",\r\n this.settings.buttonUrl,\r\n \"Close\",\r\n \"800px\"\r\n );\r\n }\r\n}\r\n","
\r\n
\r\n {{ settings.title }}\r\n {{ settings.description }}\r\n \r\n {{ settings.buttonText }}\r\n \r\n \r\n {{ settings.buttonText }}\r\n \r\n
\r\n
","import { Component, Input, OnInit } from \"@angular/core\";\r\nimport { TutorialVideoModalService } from \"src/app/shared/services/tutorial-video-modal.service\";\r\n\r\n@Component({\r\n selector: 'widget-content-2',\r\n templateUrl: './widget-content-2.component.html',\r\n styleUrls: ['./widget-content-2.component.scss']\r\n})\r\nexport class WidgetContent2Component implements OnInit {\r\n @Input() widgetConfig;\r\n settings: any = {};\r\n\r\n constructor(private tutorialModalService: TutorialVideoModalService) {}\r\n\r\n ngOnInit() {\r\n this.settings = this.widgetConfig.widgetSettings;\r\n }\r\n\r\n openVideo() {\r\n this.tutorialModalService.openTutorialModal(\r\n \"Video\",\r\n \"\",\r\n this.settings.buttonUrl,\r\n \"Close\",\r\n \"800px\"\r\n );\r\n }\r\n}\r\n","
0 && !loading\">\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n how_to_reg\r\n \r\n {{ stageName }}\r\n
\r\n
\r\n
Not connected to a stage
\r\n\r\n
0\" class=\"default-state\">\r\n \r\n {{ roundTime(timeLeftToStart) }} {{ timeLeftString }}\r\n left until {{ stageName }} begins\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n {{ completedReviews }}\r\n OUT OF {{ neededReviews }}\r\n
\r\n\r\n
\r\n\r\n
\r\n check_circle\r\n Thank you for your contribution in assessing applications. Your time, expertise, and thoughtful evaluations have made a significant impact and will help us make informed decisions.\r\n
\r\n\r\n \r\n\r\n
\r\n
","import { Component, Input, OnInit } from \"@angular/core\";\r\nimport { DateTime, Interval } from \"luxon\";\r\nimport { WidgetsService } from \"src/app/shared/services/widgets.service\";\r\n\r\n@Component({\r\n selector: 'widget-evaluation-judge',\r\n templateUrl: './widget-evaluation-judge.component.html',\r\n styleUrls: ['./widget-evaluation-judge.component.scss']\r\n})\r\nexport class WidgetEvaluationJudgeComponent implements OnInit {\r\n @Input() widgetConfig;\r\n stageId = null;\r\n stageName = '';\r\n neededReviews = 5;\r\n completedReviews = 0;\r\n timeLeftToStart = 0;\r\n timeLeftString = 'Days';\r\n\r\n buttonLink = '';\r\n buttonText = '';\r\n\r\n calculatedArcStyle = ''\r\n loading = false;\r\n\r\n isDeadlinePassed = false;\r\n\r\n \r\n constructor(private widgetsService: WidgetsService) { }\r\n\r\n ngOnInit() {\r\n this.init()\r\n }\r\n\r\n async init() {\r\n this.loading = true;\r\n this.stageId = this.widgetConfig?.widgetSettings?.stageId\r\n if (!this.stageId) return\r\n const res: any = await this.widgetsService.getEvaluationJudgeWidgetData(this.stageId).toPromise();\r\n this.stageName = res.stageName;\r\n this.neededReviews = res.neededReviews;\r\n this.completedReviews = res.completedReviews;\r\n const currentDate = DateTime.fromJSDate(new Date()).setZone('UTC');\r\n const stageStartDate = DateTime.fromISO(res.stageStartDate);\r\n this.isDeadlinePassed = res.stageEndDate < DateTime.fromJSDate(new Date()).setZone(\"UTC\").toISO();\r\n this.timeLeftToStart = Interval.fromDateTimes(currentDate, stageStartDate).length('days') || 0;\r\n\r\n if (this.timeLeftToStart < 2 && this.timeLeftToStart !== 0) {\r\n this.timeLeftString = 'Day';\r\n }\r\n if (this.timeLeftToStart < 1 && this.timeLeftToStart !== 0) {\r\n this.timeLeftToStart = Interval.fromDateTimes(currentDate, stageStartDate).length('hours') || 0;\r\n this.timeLeftString = this.timeLeftToStart < 2 ? 'Hour' : 'Hours';\r\n }\r\n if (this.timeLeftToStart < 1 && this.timeLeftToStart !== 0) {\r\n this.timeLeftToStart = Interval.fromDateTimes(currentDate, stageStartDate).length('minutes') || 0;\r\n this.timeLeftString = this.timeLeftToStart < 2 ? 'Minute' : 'Minutes';\r\n }\r\n\r\n if (this.completedReviews === this.neededReviews) {\r\n this.buttonLink = `/evaluation/${this.stageId}`;\r\n this.buttonText = 'View';\r\n } else {\r\n this.buttonLink = `/evaluation/${this.stageId}`;\r\n this.buttonText = 'Review';\r\n }\r\n\r\n const percentage = (this.completedReviews / this.neededReviews) * 100 || 0;\r\n const color = percentage === 100 ? '#32a752' : '#FFAD34';\r\n if (percentage) {\r\n this.calculatedArcStyle = `transform: rotate(${45+(percentage * 1.8)}deg); border-bottom-color: ${color}; border-right-color: ${color};`;\r\n }\r\n this.loading = false;\r\n }\r\n\r\n roundTime(days: number) {\r\n return Math.round(days)\r\n }\r\n}","
0 && !loading\">\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n groups\r\n \r\n {{ stageName }}\r\n
\r\n
\r\n
Not connected to a stage
\r\n\r\n
0\" class=\"default-state\">\r\n \r\n {{ roundTime(timeLeftToStart) }} {{ timeLeftString }}\r\n left until {{ stageName }} begins\r\n
\r\n\r\n
\r\n cancel\r\n

System Message

\r\n We regret to inform you that you have been eliminated from the competition at this stage.\r\n
\r\n\r\n
\r\n check_circle\r\n

Your results are ready!

\r\n Visit the link to see the scores and feedback provided for your application.\r\n
\r\n\r\n
\r\n search\r\n

Your application is currently being reviewed.

\r\n \r\n
\r\n\r\n \r\n\r\n
\r\n
","import { Component, Input, OnInit } from \"@angular/core\";\r\nimport { DateTime, Interval } from \"luxon\";\r\nimport { WidgetsService } from \"src/app/shared/services/widgets.service\";\r\n\r\n@Component({\r\n selector: 'widget-evaluation-participant',\r\n templateUrl: './widget-evaluation-participant.component.html',\r\n styleUrls: ['./widget-evaluation-participant.component.scss']\r\n})\r\nexport class WidgetEvaluationParticipantComponent implements OnInit {\r\n @Input() widgetConfig;\r\n\r\n stageId = null;\r\n stageName = '';\r\n timeLeftToStart = 0;\r\n timeLeftString = 'Days';\r\n isEliminated = false;\r\n resultsReleased = false;\r\n inReview = false;\r\n loading = false;\r\n\r\n constructor(private widgetsService: WidgetsService) { }\r\n\r\n ngOnInit() {\r\n this.init()\r\n }\r\n\r\n async init() {\r\n this.loading = true;\r\n this.stageId = this.widgetConfig?.widgetSettings?.stageId\r\n if (!this.stageId) return\r\n const res: any = await this.widgetsService.getEvaluationParticipantWidgetData(this.stageId).toPromise();\r\n this.stageName = res.stageName;\r\n this.isEliminated = res.isEliminated;\r\n this.resultsReleased = res.resultsReleased;\r\n const currentDate = DateTime.fromJSDate(new Date()).setZone('UTC');\r\n const stageStartDate = DateTime.fromISO(res.stageStartDate);\r\n this.timeLeftToStart = Interval.fromDateTimes(currentDate, stageStartDate).length('days') || 0;\r\n if (this.timeLeftToStart < 2 && this.timeLeftToStart !== 0) {\r\n this.timeLeftString = 'Day';\r\n }\r\n if (this.timeLeftToStart < 1 && this.timeLeftToStart !== 0) {\r\n this.timeLeftToStart = Interval.fromDateTimes(currentDate, stageStartDate).length('hours') || 0;\r\n this.timeLeftString = this.timeLeftToStart < 2 ? 'Hour' : 'Hours';\r\n }\r\n if (this.timeLeftToStart < 1 && this.timeLeftToStart !== 0) {\r\n this.timeLeftToStart = Interval.fromDateTimes(currentDate, stageStartDate).length('minutes') || 0;\r\n this.timeLeftString = this.timeLeftToStart < 2 ? 'Minute' : 'Minutes';\r\n }\r\n this.inReview = stageStartDate < currentDate;\r\n this.loading = false;\r\n }\r\n\r\n roundTime(days: number) {\r\n return Math.round(days)\r\n }\r\n}\r\n","
\r\n
\r\n \r\n assignment\r\n \r\n {{ formName }}\r\n
\r\n
\r\n\r\n
Not connected to a stage
\r\n\r\n
\r\n {{ percentage }}%\r\n
\r\n\r\n
\r\n cancel\r\n

We're sorry, but the submission deadline has passed

\r\n
\r\n\r\n
\r\n check_circle\r\n

Thank you for submitting your application!

\r\n
\r\n\r\n
\r\n \r\n {{ formName }}\r\n Unlocking soon...\r\n
\r\n\r\n \r\n \r\n
\r\n
","import { Component, Input, OnInit } from \"@angular/core\";\r\nimport { DateTime } from \"luxon\";\r\nimport { WidgetsService } from \"src/app/shared/services/widgets.service\";\r\n\r\n@Component({\r\n selector: 'widget-form',\r\n templateUrl: './widget-form.component.html',\r\n styleUrls: ['./widget-form.component.scss']\r\n})\r\nexport class WidgetFormComponent implements OnInit {\r\n @Input() widgetConfig;\r\n formName = null;\r\n stageId = null;\r\n percentage = 0;\r\n buttonText = 'Loading...';\r\n buttonLink = '';\r\n background = 'radial-gradient(closest-side, white 85%, transparent 80% 100%), conic-gradient(#FFAD34 0%, #F2F3F5 0)';\r\n isDeadlinePassed = false;\r\n isSubmitted = false;\r\n invalid = false;\r\n\r\n constructor(private widgetsService: WidgetsService) { }\r\n\r\n ngOnInit() {\r\n this.init()\r\n }\r\n\r\n async init() {\r\n this.stageId = this.widgetConfig?.widgetSettings?.stageId\r\n if (!this.stageId) return\r\n const res: any = await this.widgetsService.getFormWidgetData(this.stageId).toPromise();\r\n const currentDate = DateTime.fromJSDate(new Date()).setZone('UTC').toISO();\r\n this.invalid = res.isEliminated || currentDate < res.stageStartDate;\r\n this.formName = res.stageName;\r\n this.isSubmitted = res.isSubmitted;\r\n this.percentage = res.formPercentComplete || 0;\r\n this.isDeadlinePassed = currentDate > res.stageEndDate && !this.isSubmitted;\r\n\r\n if (res.stageType.includes('Application')) {\r\n this.buttonLink = `/application`;\r\n } else if (res.stageType.includes('Registration')) {\r\n this.buttonLink = `/registration`;\r\n } else {\r\n this.buttonLink = `/form/${res.stageId}`;\r\n }\r\n if (this.isDeadlinePassed) {\r\n this.buttonText = `View`;\r\n } else if (this.percentage === 0) {\r\n this.buttonText = `Start`;\r\n } else if (this.percentage <= 99) {\r\n this.buttonText = `Continue`;\r\n } else if (this.percentage === 100 && !this.isSubmitted) {\r\n this.buttonText = `Submit`;\r\n } else if (this.percentage === 100 && this.isSubmitted) {\r\n this.buttonText = `View`;\r\n }\r\n\r\n // radial gradient is used to make white circle with transparent edges from the inside toward the outside\r\n // conic gradient is used to make the arch, colors are rotating from left to right with a 0.8deg offset on the edge of the colored part to avoid sharp edges\r\n // the visible part of the conic gradient is the area with transparent edge from the radial gradient\r\n // the conic gradient has two colored arches, one from start to the middle and one from the middle to the end, followed by 0.8deg almost white color\r\n if (this.percentage === 0) {\r\n this.background = `radial-gradient(closest-side, #fff 85%, transparent 86% 100%), conic-gradient(${this.calculateColor(this.percentage)[0]} ${this.percentageToCircularDegrees(this.percentage)/2}deg, #F2F3F5 calc(${this.percentageToCircularDegrees(this.percentage)}deg + 0deg))`;\r\n } else {\r\n this.background = `radial-gradient(closest-side, #fff 85%, transparent 86% 100%), conic-gradient(${this.calculateColor(this.percentage)[0]} ${this.percentageToCircularDegrees(this.percentage)/2}deg, ${this.calculateColor(this.percentage)[1]} ${this.percentageToCircularDegrees(this.percentage)}deg, #F2F3F5 calc(${this.percentageToCircularDegrees(this.percentage)}deg + 0.8deg))`;\r\n }\r\n }\r\n\r\n calculateColor(percentage: number) {\r\n if (percentage >= 0 && percentage <= 24 ) return ['#fe6842', '#ff8422'];\r\n if (percentage >= 25 && percentage <= 49) return ['#ff8442', '#ffa734'];\r\n if (percentage >= 50 && percentage <= 74) return ['#ffa734', '#f6c71c'];\r\n if (percentage >= 75 && percentage < 100) return ['#85d828', '#3cc224'];\r\n if (percentage === 100) return ['#35b657', '#2fa44e'];\r\n }\r\n\r\n percentageToCircularDegrees(percentage: number) {\r\n return percentage * 3.6;\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n recent_actors\r\n \r\n Forums\r\n \r\n Show All Posts\r\n open_in_new\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
PostCategoryRepliesViews
\r\n
\r\n
\r\n push_pin\r\n {{ post.title }}\r\n
\r\n {{ post.createdByName }}, {{ post.createdAt | utcToCompTime: 'fullDateTime' }}\r\n
\r\n
\r\n
{{ post.category.name }}
\r\n
{{ post.nonHiddenCommentCount ?? 0 }}{{ post.seenCount || 0 }}
\r\n
\r\n Nothing to show here yet.\r\n
\r\n
\r\n\r\n
\r\n
","import { Component, Input, OnInit } from \"@angular/core\";\r\nimport { DateTime } from \"luxon\";\r\nimport { ForumsService } from \"src/app/forums/forums.service\";\r\nimport { SsoUser } from \"src/app/shared/model/user.model\";\r\nimport { SsoAuthService } from \"src/app/shared/services/sso-auth.service\";\r\n\r\n@Component({\r\n selector: \"widget-forums\",\r\n templateUrl: \"./widget-forums.component.html\",\r\n styleUrls: [\"./widget-forums.component.scss\"],\r\n})\r\nexport class WidgetForumsComponent implements OnInit {\r\n @Input() widgetConfig;\r\n categories = [\r\n { name: \"All Categories\", value: \"all\", color: \"\" },\r\n { name: \"FAQ\", value: \"FAQ\", color: \"#D2DBFE\" },\r\n { name: \"General\", value: \"General\", color: \"#CCECD4\" },\r\n { name: \"Help\", value: \"Help\", color: \"#E4D9FF\" },\r\n { name: \"Report a problem\", value: \"Report a problem\", color: \"#FBD1D1\" },\r\n ];\r\n posts = [];\r\n loadingPosts = false;\r\n ssoUser: SsoUser = null;\r\n\r\n constructor(\r\n private ssoService: SsoAuthService,\r\n private forumsService: ForumsService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.init();\r\n }\r\n\r\n async init() {\r\n this.ssoUser = await this.ssoService.getCurrentSsoUser();\r\n try {\r\n this.loadingPosts = true;\r\n const refPosts = await this.forumsService.searchForumPosts({\r\n searchTerm: \"\",\r\n sortExpresssion: \"createdAt:desc\",\r\n isHidden: false,\r\n pagination: {\r\n pageSize: 4,\r\n currentPage: 0,\r\n },\r\n });\r\n\r\n this.posts =\r\n refPosts.hits?.map((hit) => {\r\n const post = hit.document;\r\n this.extendPost(post);\r\n return post;\r\n }) || [];\r\n } catch (error) {\r\n // TODO\r\n console.error(error);\r\n } finally {\r\n this.loadingPosts = false;\r\n }\r\n }\r\n\r\n private extendPost(post: any) {\r\n Object.assign(post, {\r\n initials: post.createdByName\r\n .match(/(\\b\\S)?/g)\r\n .join(\"\")\r\n .toUpperCase(),\r\n category: this.categories.find((c) => c.value === post.category),\r\n createdAt: DateTime.fromSeconds(post.createdAt, {\r\n zone: \"utc\",\r\n }).toISO({ includeOffset: false }),\r\n });\r\n return post;\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n feed\r\n \r\n News\r\n \r\n launch\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
{{newsItem.data.fieldData.name}}
\r\n {{newsItem.compiledDate}}\r\n
\r\n
\r\n \r\n \r\n
\r\n","import { Component, Input, OnInit } from \"@angular/core\";\r\nimport { AngularFirestore } from \"@angular/fire/compat/firestore\";\r\nimport { filter, map } from \"rxjs/operators\";\r\nimport { PublicConfigService } from \"src/app/shared/services/public.config.service\";\r\nimport { DateTime } from \"luxon\";\r\n\r\n@Component({\r\n selector: 'widget-news',\r\n templateUrl: './widget-news.component.html',\r\n styleUrls: ['./widget-news.component.scss']\r\n})\r\nexport class WidgetNewsComponent implements OnInit {\r\n @Input() widgetConfig;\r\n\r\n clientId: string = \"\";\r\n newsItems: any[] = [];\r\n newsItemsLimit: number = 1;\r\n\r\n FEUrl: string = '';\r\n\r\n loading: boolean = true;\r\n\r\n constructor(\r\n private publicConfig: PublicConfigService,\r\n private db: AngularFirestore,\r\n ) { }\r\n\r\n async ngOnInit() {\r\n this.FEUrl = this.publicConfig.feBaseUrl;\r\n\r\n const { ssoClientId } = this.publicConfig.getCarrotSSOConfig();\r\n this.clientId = ssoClientId;\r\n\r\n this.newsItemsLimit = this.widgetConfig.widgetSettings.newsItemsLimit;\r\n\r\n const query = this.db.collection('clientAssets', ref => ref\r\n .where('clientId', '==', this.clientId)\r\n .where('assetType', '==', 'NewsItem')\r\n .orderBy('data.fieldData.date', 'desc')\r\n .limit(this.newsItemsLimit));\r\n\r\n // TODO - how many calls does this make?\r\n // optimize?\r\n const snapshot = query.get().subscribe(resp => {\r\n resp.forEach(doc => {\r\n let newsData: any = doc.data();\r\n if (!newsData.data.isDraft && !newsData.data.isArchived) {\r\n this.newsItems.push(newsData);\r\n }\r\n });\r\n\r\n // update the date of the news item to be shown in a meaningful way\r\n this.newsItems.forEach(element => {\r\n if (element.data.fieldData.date) {\r\n element.compiledDate = DateTime.fromISO(element.data.fieldData.date).toFormat('MMMM dd yyyy');\r\n } else {\r\n element.compiledDate = '';\r\n }\r\n });\r\n \r\n this.loading = false;\r\n });\r\n }\r\n}\r\n","
0 && !loading\">\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n how_to_reg\r\n \r\n {{ stageName }}\r\n
\r\n
\r\n
Not connected to a stage
\r\n\r\n
0\" class=\"default-state\">\r\n \r\n {{ roundTime(timeLeftToStart) }} {{ timeLeftString }}\r\n left until {{ stageName }} begins\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n {{ completedReviews }}\r\n OUT OF {{ neededReviews }}\r\n
\r\n\r\n
\r\n\r\n
\r\n cancel\r\n

System Message

\r\n We regret to inform you that you have been eliminated from the competition at this stage.\r\n
\r\n\r\n
\r\n check_circle\r\n

Your results are ready!

\r\n Visit the link to see the scores and feedback provided for your application.\r\n
\r\n\r\n \r\n\r\n
\r\n
","import { Component, Input, OnInit } from \"@angular/core\";\r\nimport { DateTime, Interval } from \"luxon\";\r\nimport { WidgetsService } from \"src/app/shared/services/widgets.service\";\r\n\r\n@Component({\r\n selector: 'widget-peer-review',\r\n templateUrl: './widget-peer-review.component.html',\r\n styleUrls: ['./widget-peer-review.component.scss']\r\n})\r\nexport class WidgetPeerReviewComponent implements OnInit {\r\n @Input() widgetConfig;\r\n stageId = null;\r\n stageName = '';\r\n isEliminated = false;\r\n resultsReleased = false;\r\n neededReviews = 5;\r\n completedReviews = 0;\r\n timeLeftToStart = 0;\r\n timeLeftString = 'Days';\r\n\r\n buttonLink = '';\r\n buttonText = '';\r\n\r\n calculatedArcStyle = ''\r\n loading = false;\r\n\r\n \r\n constructor(private widgetsService: WidgetsService) { }\r\n\r\n ngOnInit() {\r\n this.init()\r\n }\r\n\r\n async init() {\r\n this.loading = true;\r\n this.stageId = this.widgetConfig?.widgetSettings?.stageId\r\n if (!this.stageId) return\r\n const res: any = await this.widgetsService.getPeerReviewWidgetData(this.stageId).toPromise();\r\n this.stageName = res.stageName;\r\n this.isEliminated = res.isEliminated;\r\n this.resultsReleased = res.resultsReleased;\r\n this.neededReviews = res.neededReviews;\r\n this.completedReviews = res.completedReviews;\r\n const currentDate = DateTime.fromJSDate(new Date()).setZone('UTC');\r\n const stageStartDate = DateTime.fromISO(res.stageStartDate);\r\n this.timeLeftToStart = Interval.fromDateTimes(currentDate, stageStartDate).length('days') || 0;\r\n\r\n if (this.timeLeftToStart < 2 && this.timeLeftToStart !== 0) {\r\n this.timeLeftString = 'Day';\r\n }\r\n if (this.timeLeftToStart < 1 && this.timeLeftToStart !== 0) {\r\n this.timeLeftToStart = Interval.fromDateTimes(currentDate, stageStartDate).length('hours') || 0;\r\n this.timeLeftString = this.timeLeftToStart < 2 ? 'Hour' : 'Hours';\r\n }\r\n if (this.timeLeftToStart < 1 && this.timeLeftToStart !== 0) {\r\n this.timeLeftToStart = Interval.fromDateTimes(currentDate, stageStartDate).length('minutes') || 0;\r\n this.timeLeftString = this.timeLeftToStart < 2 ? 'Minute' : 'Minutes';\r\n }\r\n\r\n if (this.resultsReleased) {\r\n this.buttonLink = `/peer-review/${this.stageId}/results`;\r\n this.buttonText = 'Go to results';\r\n } else if (this.completedReviews === this.neededReviews) {\r\n this.buttonLink = `/peer-review/${this.stageId}`;\r\n this.buttonText = 'View';\r\n } else {\r\n this.buttonLink = `/peer-review/${this.stageId}`;\r\n this.buttonText = 'Review';\r\n }\r\n\r\n const percentage = (this.completedReviews / this.neededReviews) * 100 || 0;\r\n const color = percentage === 100 ? '#32a752' : '#FFAD34';\r\n if (percentage) {\r\n this.calculatedArcStyle = `transform: rotate(${45+(percentage * 1.8)}deg); border-bottom-color: ${color}; border-right-color: ${color};`;\r\n }\r\n this.loading = false;\r\n }\r\n\r\n roundTime(days: number) {\r\n return Math.round(days)\r\n }\r\n\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n schedule\r\n \r\n Timeline\r\n \r\n launch\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n {{ slide.calculatedCountdownText }}\r\n \r\n
\r\n
{{ slide.title }}
\r\n

{{ slide.dateLabel }}

\r\n \r\n \r\n \r\n Add to Calendar\r\n \r\n \r\n \r\n \r\n {{ slide.buttonText }}\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n","import { Component, Input, OnInit, ViewEncapsulation } from \"@angular/core\";\r\nimport { atcb_action } from \"add-to-calendar-button\";\r\nimport { DateTime } from \"luxon\";\r\nimport { DashboardWidget, WidgetTimelineSlide } from \"src/app/shared/model/dashboard-config.model\";\r\nimport { PublicConfigService } from \"src/app/shared/services/public.config.service\";\r\nimport { StorageService } from \"src/app/shared/services/storage.service\";\r\nimport { WidgetsService } from \"src/app/shared/services/widgets.service\";\r\n\r\n@Component({\r\n selector: 'widget-timeline',\r\n templateUrl: './widget-timeline.component.html',\r\n styleUrls: ['./widget-timeline.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class WidgetTimelineComponent implements OnInit {\r\n @Input() widgetConfig: DashboardWidget;\r\n\r\n loading: boolean = true;\r\n\r\n FEUrl: string;\r\n timelineSlides: WidgetTimelineSlide[] = [];\r\n\r\n nowISO: string = DateTime.fromJSDate(new Date()).setZone(\"UTC\").toISO();\r\n \r\n competitionName: string;\r\n competitionTimeZoneDatabaseName: string;\r\n\r\n firstSlideIndex: number = 0;\r\n activeSlideIndex: number = 0;\r\n timelineMilestoneBarPosition: number = 0;\r\n\r\n upToDateStages: any[] = [];\r\n \r\n constructor(\r\n private storage: StorageService,\r\n private publicConfig: PublicConfigService,\r\n private widgetService: WidgetsService\r\n ) { }\r\n\r\n async ngOnInit() {\r\n this.FEUrl = this.publicConfig.feBaseUrl;\r\n\r\n // getting competition properties used in add to calendar\r\n const competitionName = this.storage.retrieve('competitionName');\r\n if ((competitionName !== '') && (competitionName !== null)) {\r\n this.competitionName = competitionName;\r\n } else {\r\n this.competitionName = 'Carrot Platform 2.0';\r\n }\r\n const competitionTimeZoneDatabaseNameFromStorage = this.storage.retrieve('competitionTimeZoneDatabaseName');\r\n if ((competitionTimeZoneDatabaseNameFromStorage !== '') && (competitionTimeZoneDatabaseNameFromStorage !== null)) {\r\n this.competitionTimeZoneDatabaseName = competitionTimeZoneDatabaseNameFromStorage;\r\n } else {\r\n this.competitionTimeZoneDatabaseName = 'Etc/GMT';\r\n }\r\n\r\n // fix for wrong config - if timelineSlides array is missing\r\n this.timelineSlides = this.widgetConfig.widgetSettings.timelineSlides;\r\n if (!this.timelineSlides) {\r\n this.timelineSlides = [];\r\n }\r\n\r\n // pulling latest data for actual stages\r\n const stageIds = this.timelineSlides.filter(element => element.stageId !== '0').map(element => {return element.stageId});\r\n try {\r\n const resp: any = await this.widgetService.getTimelineStagesData(stageIds).toPromise();\r\n this.upToDateStages = resp.data;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n\r\n // local vars for first and last milestone and total distance between them (time, in seconds)\r\n let firstMilestone: DateTime;\r\n let lastMilestone: DateTime;\r\n let timelineDistanceTotal: number;\r\n\r\n if (this.timelineSlides.length > 0) {\r\n // if there is more than 1 slide compile the local vars\r\n firstMilestone = DateTime.fromISO(this.timelineSlides[0].endDate);\r\n lastMilestone = DateTime.fromISO(this.timelineSlides[this.timelineSlides.length - 1].endDate);\r\n timelineDistanceTotal = lastMilestone.diff(firstMilestone, 'seconds').toObject().seconds;\r\n // apply styles for first and last milestone\r\n this.timelineSlides[0].milestonePositionInPercent = 0;\r\n this.timelineSlides[this.timelineSlides.length - 1].milestonePositionInPercent = 100;\r\n };\r\n\r\n this.timelineSlides.forEach((element, index) => {\r\n // this is used to update the stages with the new data from API\r\n let updatedStage: any = null;\r\n if (element.stageId !== '0') {\r\n updatedStage = this.upToDateStages.find(stage => stage.id === element.stageId);\r\n if (updatedStage) {\r\n element.endDate = updatedStage.endDate;\r\n element.title = updatedStage.name;\r\n }\r\n }\r\n // get slide end date (and time)\r\n // it's important to map the end date coming from RP as UTC zone, otherwise the user's timezone is attached to it\r\n // as if it was in the user's timezone instead of UTC\r\n const slideEndDate = DateTime.fromISO(element.endDate, {zone: 'UTC'});\r\n\r\n // define all milestones as not passed - will be updated later (this is here to avoid repetition in the code)\r\n element.milestonePassed = false;\r\n\r\n // calculate milestone position on timeline\r\n // for all but the first and the last milestone\r\n if (index > 0 && index < this.timelineSlides.length - 1) {\r\n const slideMilestoneDistanceFromFirst = slideEndDate.diff(firstMilestone, 'seconds').toObject().seconds;\r\n const slideMilestonePosition = (slideMilestoneDistanceFromFirst / timelineDistanceTotal) * 100;\r\n element.milestonePositionInPercent = slideMilestonePosition;\r\n // below is a fix for cases of overlapping milestones\r\n if (element.milestonePositionInPercent - this.timelineSlides[index -1].milestonePositionInPercent < 5) {\r\n element.milestonePositionInPercent = element.milestonePositionInPercent + (5 - (element.milestonePositionInPercent - this.timelineSlides[index -1].milestonePositionInPercent));\r\n }\r\n }\r\n\r\n // edge case fix for the last date of the timeline when there are overlapping dates at the end\r\n if (this.timelineSlides.length > 2 && index === this.timelineSlides.length - 2) {\r\n if (this.timelineSlides[this.timelineSlides.length - 1].milestonePositionInPercent - element.milestonePositionInPercent < 5) {\r\n this.timelineSlides[this.timelineSlides.length - 1].milestonePositionInPercent = this.timelineSlides[this.timelineSlides.length - 1].milestonePositionInPercent + (5 - (this.timelineSlides[this.timelineSlides.length - 1].milestonePositionInPercent - element.milestonePositionInPercent));\r\n };\r\n };\r\n\r\n // calculate difference to current time (negative number if end date has passed)\r\n const slideDiffToNow = slideEndDate.diff(DateTime.fromISO(this.nowISO), 'seconds').toObject().seconds;\r\n if (slideDiffToNow > 864000) {\r\n // more than 10 days\r\n element.calculatedCountdownClass = 'green';\r\n const calculatedDays = Math.trunc(slideEndDate.diff(DateTime.fromISO(this.nowISO), 'days').toObject().days);\r\n element.calculatedCountdownText = `${calculatedDays} days left`;\r\n } else if (slideDiffToNow > 432000) {\r\n // between 5 and 10 days\r\n element.calculatedCountdownClass = 'orange';\r\n const calculatedDays = Math.trunc(slideEndDate.diff(DateTime.fromISO(this.nowISO), 'days').toObject().days);\r\n element.calculatedCountdownText = `${calculatedDays} days left`;\r\n } else if (slideDiffToNow > 86400) {\r\n // between 1 and 5 days\r\n element.calculatedCountdownClass = 'red';\r\n const calculatedDays = Math.trunc(slideEndDate.diff(DateTime.fromISO(this.nowISO), 'days').toObject().days);\r\n element.calculatedCountdownText = calculatedDays === 1 ? `${calculatedDays} day left` : `${calculatedDays} days left`;\r\n } else if (slideDiffToNow > 3600) {\r\n // between 1 and 24 hours\r\n element.calculatedCountdownClass = 'red';\r\n const calculatedHours = Math.trunc(slideEndDate.diff(DateTime.fromISO(this.nowISO), 'hours').toObject().hours);\r\n element.calculatedCountdownText = calculatedHours === 1 ? `${calculatedHours} hour left` : `${calculatedHours} hours left`;\r\n } else if (slideDiffToNow > 0) {\r\n // less than 1 hour\r\n element.calculatedCountdownClass = 'red';\r\n element.calculatedCountdownText = `Less than 1h left`;\r\n } else {\r\n // passed\r\n element.calculatedCountdownClass = 'hidden';\r\n element.calculatedCountdownText = `${slideDiffToNow}`;\r\n // if this slide end date has passed, update first slide index and add style for passed milestone\r\n this.firstSlideIndex++;\r\n element.milestonePassed = true;\r\n };\r\n\r\n // prepare proper values for add to calendar button\r\n // this is needed to have the deadline appear as an event with duration of one hour\r\n const slideEndDateMinusOneHour = slideEndDate.minus(3600000);\r\n element.calculatedAddToCalendarStartDate = slideEndDateMinusOneHour.toISODate();\r\n element.calculatedAddToCalendarStartTime = slideEndDateMinusOneHour.toISOTime({includeOffset: false, suppressSeconds: true, suppressMilliseconds: true});\r\n element.calculatedAddToCalendarEndDate = slideEndDate.toISODate();\r\n element.calculatedAddToCalendarEndTime = slideEndDate.toISOTime({includeOffset: false, suppressSeconds: true, suppressMilliseconds: true});\r\n });\r\n\r\n // adjusting initial position of the timeline bar\r\n if (this.timelineSlides[this.firstSlideIndex]) {\r\n this.timelineMilestoneBarPosition = this.timelineSlides[this.firstSlideIndex].milestonePositionInPercent;\r\n };\r\n // adjusting initial active milestone\r\n this.activeSlideIndex = this.firstSlideIndex;\r\n\r\n this.loading = false;\r\n };\r\n\r\n addToCalendarClick(slide: WidgetTimelineSlide) {\r\n const config: Object = {\r\n name: `${this.competitionName} ${slide.title} Deadline`,\r\n startDate: `${slide.calculatedAddToCalendarStartDate}`,\r\n startTime: `${slide.calculatedAddToCalendarStartTime}`,\r\n endDate: `${slide.calculatedAddToCalendarEndDate}`,\r\n endTime: `${slide.calculatedAddToCalendarEndTime}`,\r\n options: [\"Google\", \"Apple\", \"Microsoft365\", \"Outlook.com\", \"MicrosoftTeams\", \"Yahoo\", \"iCal\"],\r\n timeZone: `${this.competitionTimeZoneDatabaseName}`\r\n };\r\n\r\n // passed element is needed for autofocus to work after closing the add to calendar modal\r\n const button: HTMLElement = document.getElementById(`add-to-calendar-${slide.title}`);\r\n atcb_action(config, button);\r\n }\r\n\r\n onSlideChange(event: any) {\r\n this.activeSlideIndex = event.page;\r\n this.timelineMilestoneBarPosition = this.timelineSlides[this.activeSlideIndex].milestonePositionInPercent;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { WidgetFormComponent } from './widget-form/widget-form.component';\r\nimport { WidgetForumsComponent } from './widget-forums/widget-forums.component';\r\nimport { WidgetNewsComponent } from './widget-news/widget-news.component';\r\nimport { WidgetTimelineComponent } from './widget-timeline/widget-timeline.component';\r\nimport { WidgetPeerReviewComponent } from './widget-peer-review/widget-peer-review.component';\r\nimport { WidgetAdminReviewComponent } from './widget-admin-review/widget-admin-review.component';\r\nimport { WidgetEvaluationParticipantComponent } from './widget-evaluation-participant/widget-evaluation-participant.component';\r\nimport { WidgetContent1Component } from './widget-content-1/widget-content-1.component';\r\nimport { WidgetContent2Component } from './widget-content-2/widget-content-2.component';\r\nimport { WidgetEvaluationJudgeComponent } from './widget-evaluation-judge/widget-evaluation-judge.component';\r\nimport 'add-to-calendar-button';\r\n\r\n@NgModule({\r\n declarations: [\r\n WidgetFormComponent,\r\n WidgetForumsComponent,\r\n WidgetNewsComponent,\r\n WidgetTimelineComponent,\r\n WidgetPeerReviewComponent,\r\n WidgetAdminReviewComponent,\r\n WidgetEvaluationParticipantComponent,\r\n WidgetEvaluationJudgeComponent,\r\n WidgetContent1Component,\r\n WidgetContent2Component\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n ],\r\n exports: [\r\n WidgetFormComponent,\r\n WidgetForumsComponent,\r\n WidgetNewsComponent,\r\n WidgetTimelineComponent,\r\n WidgetPeerReviewComponent,\r\n WidgetAdminReviewComponent,\r\n WidgetEvaluationParticipantComponent,\r\n WidgetEvaluationJudgeComponent,\r\n WidgetContent1Component,\r\n WidgetContent2Component\r\n ]\r\n})\r\nexport class WidgetsModule {\r\n constructor() {}\r\n }\r\n","import * as i7 from '@angular/cdk/a11y';\nimport { FocusKeyManager, A11yModule } from '@angular/cdk/a11y';\nimport * as i5 from '@angular/cdk/observers';\nimport { ObserversModule } from '@angular/cdk/observers';\nimport * as i2 from '@angular/cdk/portal';\nimport { CdkPortal, TemplatePortal, CdkPortalOutlet, PortalModule } from '@angular/cdk/portal';\nimport * as i1$2 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Directive, Inject, Optional, TemplateRef, Component, ChangeDetectionStrategy, ViewEncapsulation, ContentChild, ViewChild, Input, forwardRef, EventEmitter, Output, ContentChildren, QueryList, Attribute, NgModule } from '@angular/core';\nimport * as i4 from '@angular/material/core';\nimport { mixinDisabled, mixinColor, mixinDisableRipple, mixinTabIndex, MAT_RIPPLE_GLOBAL_OPTIONS, RippleRenderer, MatCommonModule, MatRippleModule } from '@angular/material/core';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\nimport { take, startWith, distinctUntilChanged, takeUntil, switchMap, skip } from 'rxjs/operators';\nimport { Subject, Subscription, fromEvent, of, merge, EMPTY, Observable, timer } from 'rxjs';\nimport * as i1 from '@angular/cdk/bidi';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport * as i1$1 from '@angular/cdk/scrolling';\nimport * as i3 from '@angular/cdk/platform';\nimport { normalizePassiveListenerOptions } from '@angular/cdk/platform';\nimport { hasModifierKey, SPACE, ENTER } from '@angular/cdk/keycodes';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Injection token for the MatInkBar's Positioner. */\nconst _MAT_INK_BAR_POSITIONER = new InjectionToken('MatInkBarPositioner', {\n providedIn: 'root',\n factory: _MAT_INK_BAR_POSITIONER_FACTORY,\n});\n/**\n * The default positioner function for the MatInkBar.\n * @docs-private\n */\nfunction _MAT_INK_BAR_POSITIONER_FACTORY() {\n const method = (element) => ({\n left: element ? (element.offsetLeft || 0) + 'px' : '0',\n width: element ? (element.offsetWidth || 0) + 'px' : '0',\n });\n return method;\n}\n/**\n * The ink-bar is used to display and animate the line underneath the current active tab label.\n * @docs-private\n */\nclass MatInkBar {\n constructor(_elementRef, _ngZone, _inkBarPositioner, _animationMode) {\n this._elementRef = _elementRef;\n this._ngZone = _ngZone;\n this._inkBarPositioner = _inkBarPositioner;\n this._animationMode = _animationMode;\n }\n /**\n * Calculates the styles from the provided element in order to align the ink-bar to that element.\n * Shows the ink bar if previously set as hidden.\n * @param element\n */\n alignToElement(element) {\n this.show();\n // `onStable` might not run for a while if the zone has already stabilized.\n // Wrap the call in `NgZone.run` to ensure that it runs relatively soon.\n this._ngZone.run(() => {\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n const positions = this._inkBarPositioner(element);\n const inkBar = this._elementRef.nativeElement;\n inkBar.style.left = positions.left;\n inkBar.style.width = positions.width;\n });\n });\n }\n /** Shows the ink bar. */\n show() {\n this._elementRef.nativeElement.style.visibility = 'visible';\n }\n /** Hides the ink bar. */\n hide() {\n this._elementRef.nativeElement.style.visibility = 'hidden';\n }\n}\nMatInkBar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: MatInkBar, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: _MAT_INK_BAR_POSITIONER }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nMatInkBar.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: MatInkBar, selector: \"mat-ink-bar\", host: { properties: { \"class._mat-animation-noopable\": \"_animationMode === 'NoopAnimations'\" }, classAttribute: \"mat-ink-bar\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: MatInkBar, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-ink-bar',\n host: {\n 'class': 'mat-ink-bar',\n '[class._mat-animation-noopable]': `_animationMode === 'NoopAnimations'`,\n },\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [_MAT_INK_BAR_POSITIONER]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injection token that can be used to reference instances of `MatTabContent`. It serves as\n * alternative token to the actual `MatTabContent` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst MAT_TAB_CONTENT = new InjectionToken('MatTabContent');\n/** Decorates the `ng-template` tags and reads out the template from it. */\nclass MatTabContent {\n constructor(/** Content for the tab. */ template) {\n this.template = template;\n }\n}\nMatTabContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: MatTabContent, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nMatTabContent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: MatTabContent, selector: \"[matTabContent]\", providers: [{ provide: MAT_TAB_CONTENT, useExisting: MatTabContent }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: MatTabContent, decorators: [{\n type: Directive,\n args: [{\n selector: '[matTabContent]',\n providers: [{ provide: MAT_TAB_CONTENT, useExisting: MatTabContent }],\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injection token that can be used to reference instances of `MatTabLabel`. It serves as\n * alternative token to the actual `MatTabLabel` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst MAT_TAB_LABEL = new InjectionToken('MatTabLabel');\n/**\n * Used to provide a tab label to a tab without causing a circular dependency.\n * @docs-private\n */\nconst MAT_TAB = new InjectionToken('MAT_TAB');\n/** Used to flag tab labels for use with the portal directive */\nclass MatTabLabel extends CdkPortal {\n constructor(templateRef, viewContainerRef, _closestTab) {\n super(templateRef, viewContainerRef);\n this._closestTab = _closestTab;\n }\n}\nMatTabLabel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: MatTabLabel, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: MAT_TAB, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nMatTabLabel.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: MatTabLabel, selector: \"[mat-tab-label], [matTabLabel]\", providers: [{ provide: MAT_TAB_LABEL, useExisting: MatTabLabel }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: MatTabLabel, decorators: [{\n type: Directive,\n args: [{\n selector: '[mat-tab-label], [matTabLabel]',\n providers: [{ provide: MAT_TAB_LABEL, useExisting: MatTabLabel }],\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_TAB]\n }, {\n type: Optional\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Boilerplate for applying mixins to MatTab.\n/** @docs-private */\nconst _MatTabBase = mixinDisabled(class {\n});\n/**\n * Used to provide a tab group to a tab without causing a circular dependency.\n * @docs-private\n */\nconst MAT_TAB_GROUP = new InjectionToken('MAT_TAB_GROUP');\nclass MatTab extends _MatTabBase {\n constructor(_viewContainerRef, _closestTabGroup) {\n super();\n this._viewContainerRef = _viewContainerRef;\n this._closestTabGroup = _closestTabGroup;\n /** Plain text label for the tab, used when there is no template label. */\n this.textLabel = '';\n /** Portal that will be the hosted content of the tab */\n this._contentPortal = null;\n /** Emits whenever the internal state of the tab changes. */\n this._stateChanges = new Subject();\n /**\n * The relatively indexed position where 0 represents the center, negative is left, and positive\n * represents the right.\n */\n this.position = null;\n /**\n * The initial relatively index origin of the tab if it was created and selected after there\n * was already a selected tab. Provides context of what position the tab should originate from.\n */\n this.origin = null;\n /**\n * Whether the tab is currently active.\n */\n this.isActive = false;\n }\n /** Content for the tab label given by ``. */\n get templateLabel() {\n return this._templateLabel;\n }\n set templateLabel(value) {\n this._setTemplateLabelInput(value);\n }\n /** @docs-private */\n get content() {\n return this._contentPortal;\n }\n ngOnChanges(changes) {\n if (changes.hasOwnProperty('textLabel') || changes.hasOwnProperty('disabled')) {\n this._stateChanges.next();\n }\n }\n ngOnDestroy() {\n this._stateChanges.complete();\n }\n ngOnInit() {\n this._contentPortal = new TemplatePortal(this._explicitContent || this._implicitContent, this._viewContainerRef);\n }\n /**\n * This has been extracted to a util because of TS 4 and VE.\n * View Engine doesn't support property rename inheritance.\n * TS 4.0 doesn't allow properties to override accessors or vice-versa.\n * @docs-private\n */\n _setTemplateLabelInput(value) {\n // Only update the label if the query managed to find one. This works around an issue where a\n // user may have manually set `templateLabel` during creation mode, which would then get\n // clobbered by `undefined` when the query resolves. Also note that we check that the closest\n // tab matches the current one so that we don't pick up labels from nested tabs.\n if (value && value._closestTab === this) {\n this._templateLabel = value;\n }\n }\n}\nMatTab.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: MatTab, deps: [{ token: i0.ViewContainerRef }, { token: MAT_TAB_GROUP, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMatTab.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.0.1\", type: MatTab, selector: \"mat-tab\", inputs: { disabled: \"disabled\", textLabel: [\"label\", \"textLabel\"], ariaLabel: [\"aria-label\", \"ariaLabel\"], ariaLabelledby: [\"aria-labelledby\", \"ariaLabelledby\"], labelClass: \"labelClass\", bodyClass: \"bodyClass\" }, providers: [{ provide: MAT_TAB, useExisting: MatTab }], queries: [{ propertyName: \"templateLabel\", first: true, predicate: MAT_TAB_LABEL, descendants: true }, { propertyName: \"_explicitContent\", first: true, predicate: MAT_TAB_CONTENT, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: \"_implicitContent\", first: true, predicate: TemplateRef, descendants: true, static: true }], exportAs: [\"matTab\"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: \"\\n\\n\", changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: MatTab, decorators: [{\n type: Component,\n args: [{ selector: 'mat-tab', inputs: ['disabled'], changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, exportAs: 'matTab', providers: [{ provide: MAT_TAB, useExisting: MatTab }], template: \"\\n\\n\" }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_TAB_GROUP]\n }, {\n type: Optional\n }] }]; }, propDecorators: { templateLabel: [{\n type: ContentChild,\n args: [MAT_TAB_LABEL]\n }], _explicitContent: [{\n type: ContentChild,\n args: [MAT_TAB_CONTENT, { read: TemplateRef, static: true }]\n }], _implicitContent: [{\n type: ViewChild,\n args: [TemplateRef, { static: true }]\n }], textLabel: [{\n type: Input,\n args: ['label']\n }], ariaLabel: [{\n type: Input,\n args: ['aria-label']\n }], ariaLabelledby: [{\n type: Input,\n args: ['aria-labelledby']\n }], labelClass: [{\n type: Input\n }], bodyClass: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Animations used by the Material tabs.\n * @docs-private\n */\nconst matTabsAnimations = {\n /** Animation translates a tab along the X axis. */\n translateTab: trigger('translateTab', [\n // Transitions to `none` instead of 0, because some browsers might blur the content.\n state('center, void, left-origin-center, right-origin-center', style({ transform: 'none' })),\n // If the tab is either on the left or right, we additionally add a `min-height` of 1px\n // in order to ensure that the element has a height before its state changes. This is\n // necessary because Chrome does seem to skip the transition in RTL mode if the element does\n // not have a static height and is not rendered. See related issue: #9465\n state('left', style({\n transform: 'translate3d(-100%, 0, 0)',\n minHeight: '1px',\n // Normally this is redundant since we detach the content from the DOM, but if the user\n // opted into keeping the content in the DOM, we have to hide it so it isn't focusable.\n visibility: 'hidden',\n })),\n state('right', style({\n transform: 'translate3d(100%, 0, 0)',\n minHeight: '1px',\n visibility: 'hidden',\n })),\n transition('* => left, * => right, left => center, right => center', animate('{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)')),\n transition('void => left-origin-center', [\n style({ transform: 'translate3d(-100%, 0, 0)', visibility: 'hidden' }),\n animate('{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)'),\n ]),\n transition('void => right-origin-center', [\n style({ transform: 'translate3d(100%, 0, 0)', visibility: 'hidden' }),\n animate('{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)'),\n ]),\n ]),\n};\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * The portal host directive for the contents of the tab.\n * @docs-private\n */\nclass MatTabBodyPortal extends CdkPortalOutlet {\n constructor(componentFactoryResolver, viewContainerRef, _host, _document) {\n super(componentFactoryResolver, viewContainerRef, _document);\n this._host = _host;\n /** Subscription to events for when the tab body begins centering. */\n this._centeringSub = Subscription.EMPTY;\n /** Subscription to events for when the tab body finishes leaving from center position. */\n this._leavingSub = Subscription.EMPTY;\n }\n /** Set initial visibility or set up subscription for changing visibility. */\n ngOnInit() {\n super.ngOnInit();\n this._centeringSub = this._host._beforeCentering\n .pipe(startWith(this._host._isCenterPosition(this._host._position)))\n .subscribe((isCentering) => {\n if (isCentering && !this.hasAttached()) {\n this.attach(this._host._content);\n }\n });\n this._leavingSub = this._host._afterLeavingCenter.subscribe(() => {\n if (!this._host.preserveContent) {\n this.detach();\n }\n });\n }\n /** Clean up centering subscription. */\n ngOnDestroy() {\n super.ngOnDestroy();\n this._centeringSub.unsubscribe();\n this._leavingSub.unsubscribe();\n }\n}\nMatTabBodyPortal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: MatTabBodyPortal, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.ViewContainerRef }, { token: forwardRef(() => MatTabBody) }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive });\nMatTabBodyPortal.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: MatTabBodyPortal, selector: \"[matTabBodyHost]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: MatTabBodyPortal, decorators: [{\n type: Directive,\n args: [{\n selector: '[matTabBodyHost]',\n }]\n }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i0.ViewContainerRef }, { type: MatTabBody, decorators: [{\n type: Inject,\n args: [forwardRef(() => MatTabBody)]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n/**\n * Base class with all of the `MatTabBody` functionality.\n * @docs-private\n */\nclass _MatTabBodyBase {\n constructor(_elementRef, _dir, changeDetectorRef) {\n this._elementRef = _elementRef;\n this._dir = _dir;\n /** Subscription to the directionality change observable. */\n this._dirChangeSubscription = Subscription.EMPTY;\n /** Emits when an animation on the tab is complete. */\n this._translateTabComplete = new Subject();\n /** Event emitted when the tab begins to animate towards the center as the active tab. */\n this._onCentering = new EventEmitter();\n /** Event emitted before the centering of the tab begins. */\n this._beforeCentering = new EventEmitter();\n /** Event emitted before the centering of the tab begins. */\n this._afterLeavingCenter = new EventEmitter();\n /** Event emitted when the tab completes its animation towards the center. */\n this._onCentered = new EventEmitter(true);\n // Note that the default value will always be overwritten by `MatTabBody`, but we need one\n // anyway to prevent the animations module from throwing an error if the body is used on its own.\n /** Duration for the tab's animation. */\n this.animationDuration = '500ms';\n /** Whether the tab's content should be kept in the DOM while it's off-screen. */\n this.preserveContent = false;\n if (_dir) {\n this._dirChangeSubscription = _dir.change.subscribe((dir) => {\n this._computePositionAnimationState(dir);\n changeDetectorRef.markForCheck();\n });\n }\n // Ensure that we get unique animation events, because the `.done` callback can get\n // invoked twice in some browsers. See https://github.com/angular/angular/issues/24084.\n this._translateTabComplete\n .pipe(distinctUntilChanged((x, y) => {\n return x.fromState === y.fromState && x.toState === y.toState;\n }))\n .subscribe(event => {\n // If the transition to the center is complete, emit an event.\n if (this._isCenterPosition(event.toState) && this._isCenterPosition(this._position)) {\n this._onCentered.emit();\n }\n if (this._isCenterPosition(event.fromState) && !this._isCenterPosition(this._position)) {\n this._afterLeavingCenter.emit();\n }\n });\n }\n /** The shifted index position of the tab body, where zero represents the active center tab. */\n set position(position) {\n this._positionIndex = position;\n this._computePositionAnimationState();\n }\n /**\n * After initialized, check if the content is centered and has an origin. If so, set the\n * special position states that transition the tab from the left or right before centering.\n */\n ngOnInit() {\n if (this._position == 'center' && this.origin != null) {\n this._position = this._computePositionFromOrigin(this.origin);\n }\n }\n ngOnDestroy() {\n this._dirChangeSubscription.unsubscribe();\n this._translateTabComplete.complete();\n }\n _onTranslateTabStarted(event) {\n const isCentering = this._isCenterPosition(event.toState);\n this._beforeCentering.emit(isCentering);\n if (isCentering) {\n this._onCentering.emit(this._elementRef.nativeElement.clientHeight);\n }\n }\n /** The text direction of the containing app. */\n _getLayoutDirection() {\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n }\n /** Whether the provided position state is considered center, regardless of origin. */\n _isCenterPosition(position) {\n return (position == 'center' || position == 'left-origin-center' || position == 'right-origin-center');\n }\n /** Computes the position state that will be used for the tab-body animation trigger. */\n _computePositionAnimationState(dir = this._getLayoutDirection()) {\n if (this._positionIndex < 0) {\n this._position = dir == 'ltr' ? 'left' : 'right';\n }\n else if (this._positionIndex > 0) {\n this._position = dir == 'ltr' ? 'right' : 'left';\n }\n else {\n this._position = 'center';\n }\n }\n /**\n * Computes the position state based on the specified origin position. This is used if the\n * tab is becoming visible immediately after creation.\n */\n _computePositionFromOrigin(origin) {\n const dir = this._getLayoutDirection();\n if ((dir == 'ltr' && origin <= 0) || (dir == 'rtl' && origin > 0)) {\n return 'left-origin-center';\n }\n return 'right-origin-center';\n }\n}\n_MatTabBodyBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: _MatTabBodyBase, deps: [{ token: i0.ElementRef }, { token: i1.Directionality, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });\n_MatTabBodyBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: _MatTabBodyBase, inputs: { _content: [\"content\", \"_content\"], origin: \"origin\", animationDuration: \"animationDuration\", preserveContent: \"preserveContent\", position: \"position\" }, outputs: { _onCentering: \"_onCentering\", _beforeCentering: \"_beforeCentering\", _afterLeavingCenter: \"_afterLeavingCenter\", _onCentered: \"_onCentered\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: _MatTabBodyBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.Directionality, decorators: [{\n type: Optional\n }] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { _onCentering: [{\n type: Output\n }], _beforeCentering: [{\n type: Output\n }], _afterLeavingCenter: [{\n type: Output\n }], _onCentered: [{\n type: Output\n }], _content: [{\n type: Input,\n args: ['content']\n }], origin: [{\n type: Input\n }], animationDuration: [{\n type: Input\n }], preserveContent: [{\n type: Input\n }], position: [{\n type: Input\n }] } });\n/**\n * Wrapper for the contents of a tab.\n * @docs-private\n */\nclass MatTabBody extends _MatTabBodyBase {\n constructor(elementRef, dir, changeDetectorRef) {\n super(elementRef, dir, changeDetectorRef);\n }\n}\nMatTabBody.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: MatTabBody, deps: [{ token: i0.ElementRef }, { token: i1.Directionality, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nMatTabBody.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.0.1\", type: MatTabBody, selector: \"mat-tab-body\", host: { classAttribute: \"mat-tab-body\" }, viewQueries: [{ propertyName: \"_portalHost\", first: true, predicate: CdkPortalOutlet, descendants: true }], usesInheritance: true, ngImport: i0, template: \"
\\n \\n
\\n\", styles: [\".mat-tab-body-content{height:100%;overflow:auto}.mat-tab-group-dynamic-height .mat-tab-body-content{overflow:hidden}.mat-tab-body-content[style*=\\\"visibility: hidden\\\"]{display:none}\"], dependencies: [{ kind: \"directive\", type: MatTabBodyPortal, selector: \"[matTabBodyHost]\" }], animations: [matTabsAnimations.translateTab], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: MatTabBody, decorators: [{\n type: Component,\n args: [{ selector: 'mat-tab-body', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Default, animations: [matTabsAnimations.translateTab], host: {\n 'class': 'mat-tab-body',\n }, template: \"
\\n \\n
\\n\", styles: [\".mat-tab-body-content{height:100%;overflow:auto}.mat-tab-group-dynamic-height .mat-tab-body-content{overflow:hidden}.mat-tab-body-content[style*=\\\"visibility: hidden\\\"]{display:none}\"] }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.Directionality, decorators: [{\n type: Optional\n }] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { _portalHost: [{\n type: ViewChild,\n args: [CdkPortalOutlet]\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Injection token that can be used to provide the default options the tabs module. */\nconst MAT_TABS_CONFIG = new InjectionToken('MAT_TABS_CONFIG');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Boilerplate for applying mixins to MatTabLabelWrapper.\n/** @docs-private */\nconst _MatTabLabelWrapperBase = mixinDisabled(class {\n});\n/**\n * Used in the `mat-tab-group` view to display tab labels.\n * @docs-private\n */\nclass MatTabLabelWrapper extends _MatTabLabelWrapperBase {\n constructor(elementRef) {\n super();\n this.elementRef = elementRef;\n }\n /** Sets focus on the wrapper element */\n focus() {\n this.elementRef.nativeElement.focus();\n }\n getOffsetLeft() {\n return this.elementRef.nativeElement.offsetLeft;\n }\n getOffsetWidth() {\n return this.elementRef.nativeElement.offsetWidth;\n }\n}\nMatTabLabelWrapper.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: MatTabLabelWrapper, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nMatTabLabelWrapper.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: MatTabLabelWrapper, selector: \"[matTabLabelWrapper]\", inputs: { disabled: \"disabled\" }, host: { properties: { \"class.mat-tab-disabled\": \"disabled\", \"attr.aria-disabled\": \"!!disabled\" } }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: MatTabLabelWrapper, decorators: [{\n type: Directive,\n args: [{\n selector: '[matTabLabelWrapper]',\n inputs: ['disabled'],\n host: {\n '[class.mat-tab-disabled]': 'disabled',\n '[attr.aria-disabled]': '!!disabled',\n },\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Config used to bind passive event listeners */\nconst passiveEventListenerOptions = normalizePassiveListenerOptions({\n passive: true,\n});\n/**\n * The distance in pixels that will be overshot when scrolling a tab label into view. This helps\n * provide a small affordance to the label next to it.\n */\nconst EXAGGERATED_OVERSCROLL = 60;\n/**\n * Amount of milliseconds to wait before starting to scroll the header automatically.\n * Set a little conservatively in order to handle fake events dispatched on touch devices.\n */\nconst HEADER_SCROLL_DELAY = 650;\n/**\n * Interval in milliseconds at which to scroll the header\n * while the user is holding their pointer.\n */\nconst HEADER_SCROLL_INTERVAL = 100;\n/**\n * Base class for a tab header that supported pagination.\n * @docs-private\n */\nclass MatPaginatedTabHeader {\n constructor(_elementRef, _changeDetectorRef, _viewportRuler, _dir, _ngZone, _platform, _animationMode) {\n this._elementRef = _elementRef;\n this._changeDetectorRef = _changeDetectorRef;\n this._viewportRuler = _viewportRuler;\n this._dir = _dir;\n this._ngZone = _ngZone;\n this._platform = _platform;\n this._animationMode = _animationMode;\n /** The distance in pixels that the tab labels should be translated to the left. */\n this._scrollDistance = 0;\n /** Whether the header should scroll to the selected index after the view has been checked. */\n this._selectedIndexChanged = false;\n /** Emits when the component is destroyed. */\n this._destroyed = new Subject();\n /** Whether the controls for pagination should be displayed */\n this._showPaginationControls = false;\n /** Whether the tab list can be scrolled more towards the end of the tab label list. */\n this._disableScrollAfter = true;\n /** Whether the tab list can be scrolled more towards the beginning of the tab label list. */\n this._disableScrollBefore = true;\n /** Stream that will stop the automated scrolling. */\n this._stopScrolling = new Subject();\n this._disablePagination = false;\n this._selectedIndex = 0;\n /** Event emitted when the option is selected. */\n this.selectFocusedIndex = new EventEmitter();\n /** Event emitted when a label is focused. */\n this.indexFocused = new EventEmitter();\n // Bind the `mouseleave` event on the outside since it doesn't change anything in the view.\n _ngZone.runOutsideAngular(() => {\n fromEvent(_elementRef.nativeElement, 'mouseleave')\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => {\n this._stopInterval();\n });\n });\n }\n /**\n * Whether pagination should be disabled. This can be used to avoid unnecessary\n * layout recalculations if it's known that pagination won't be required.\n */\n get disablePagination() {\n return this._disablePagination;\n }\n set disablePagination(value) {\n this._disablePagination = coerceBooleanProperty(value);\n }\n /** The index of the active tab. */\n get selectedIndex() {\n return this._selectedIndex;\n }\n set selectedIndex(value) {\n value = coerceNumberProperty(value);\n if (this._selectedIndex != value) {\n this._selectedIndexChanged = true;\n this._selectedIndex = value;\n if (this._keyManager) {\n this._keyManager.updateActiveItem(value);\n }\n }\n }\n ngAfterViewInit() {\n // We need to handle these events manually, because we want to bind passive event listeners.\n fromEvent(this._previousPaginator.nativeElement, 'touchstart', passiveEventListenerOptions)\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => {\n this._handlePaginatorPress('before');\n });\n fromEvent(this._nextPaginator.nativeElement, 'touchstart', passiveEventListenerOptions)\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => {\n this._handlePaginatorPress('after');\n });\n }\n ngAfterContentInit() {\n const dirChange = this._dir ? this._dir.change : of('ltr');\n const resize = this._viewportRuler.change(150);\n const realign = () => {\n this.updatePagination();\n this._alignInkBarToSelectedTab();\n };\n this._keyManager = new FocusKeyManager(this._items)\n .withHorizontalOrientation(this._getLayoutDirection())\n .withHomeAndEnd()\n .withWrap();\n this._keyManager.updateActiveItem(this._selectedIndex);\n // Defer the first call in order to allow for slower browsers to lay out the elements.\n // This helps in cases where the user lands directly on a page with paginated tabs.\n // Note that we use `onStable` instead of `requestAnimationFrame`, because the latter\n // can hold up tests that are in a background tab.\n this._ngZone.onStable.pipe(take(1)).subscribe(realign);\n // On dir change or window resize, realign the ink bar and update the orientation of\n // the key manager if the direction has changed.\n merge(dirChange, resize, this._items.changes, this._itemsResized())\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => {\n // We need to defer this to give the browser some time to recalculate\n // the element dimensions. The call has to be wrapped in `NgZone.run`,\n // because the viewport change handler runs outside of Angular.\n this._ngZone.run(() => {\n Promise.resolve().then(() => {\n // Clamp the scroll distance, because it can change with the number of tabs.\n this._scrollDistance = Math.max(0, Math.min(this._getMaxScrollDistance(), this._scrollDistance));\n realign();\n });\n });\n this._keyManager.withHorizontalOrientation(this._getLayoutDirection());\n });\n // If there is a change in the focus key manager we need to emit the `indexFocused`\n // event in order to provide a public event that notifies about focus changes. Also we realign\n // the tabs container by scrolling the new focused tab into the visible section.\n this._keyManager.change.pipe(takeUntil(this._destroyed)).subscribe(newFocusIndex => {\n this.indexFocused.emit(newFocusIndex);\n this._setTabFocus(newFocusIndex);\n });\n }\n /** Sends any changes that could affect the layout of the items. */\n _itemsResized() {\n if (typeof ResizeObserver !== 'function') {\n return EMPTY;\n }\n return this._items.changes.pipe(startWith(this._items), switchMap((tabItems) => new Observable((observer) => this._ngZone.runOutsideAngular(() => {\n const resizeObserver = new ResizeObserver(() => {\n observer.next();\n });\n tabItems.forEach(item => {\n resizeObserver.observe(item.elementRef.nativeElement);\n });\n return () => {\n resizeObserver.disconnect();\n };\n }))), \n // Skip the first emit since the resize observer emits when an item\n // is observed for new items when the tab is already inserted\n skip(1));\n }\n ngAfterContentChecked() {\n // If the number of tab labels have changed, check if scrolling should be enabled\n if (this._tabLabelCount != this._items.length) {\n this.updatePagination();\n this._tabLabelCount = this._items.length;\n this._changeDetectorRef.markForCheck();\n }\n // If the selected index has changed, scroll to the label and check if the scrolling controls\n // should be disabled.\n if (this._selectedIndexChanged) {\n this._scrollToLabel(this._selectedIndex);\n this._checkScrollingControls();\n this._alignInkBarToSelectedTab();\n this._selectedIndexChanged = false;\n this._changeDetectorRef.markForCheck();\n }\n // If the scroll distance has been changed (tab selected, focused, scroll controls activated),\n // then translate the header to reflect this.\n if (this._scrollDistanceChanged) {\n this._updateTabScrollPosition();\n this._scrollDistanceChanged = false;\n this._changeDetectorRef.markForCheck();\n }\n }\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n this._stopScrolling.complete();\n }\n /** Handles keyboard events on the header. */\n _handleKeydown(event) {\n // We don't handle any key bindings with a modifier key.\n if (hasModifierKey(event)) {\n return;\n }\n switch (event.keyCode) {\n case ENTER:\n case SPACE:\n if (this.focusIndex !== this.selectedIndex) {\n this.selectFocusedIndex.emit(this.focusIndex);\n this._itemSelected(event);\n }\n break;\n default:\n this._keyManager.onKeydown(event);\n }\n }\n /**\n * Callback for when the MutationObserver detects that the content has changed.\n */\n _onContentChanges() {\n const textContent = this._elementRef.nativeElement.textContent;\n // We need to diff the text content of the header, because the MutationObserver callback\n // will fire even if the text content didn't change which is inefficient and is prone\n // to infinite loops if a poorly constructed expression is passed in (see #14249).\n if (textContent !== this._currentTextContent) {\n this._currentTextContent = textContent || '';\n // The content observer runs outside the `NgZone` by default, which\n // means that we need to bring the callback back in ourselves.\n this._ngZone.run(() => {\n this.updatePagination();\n this._alignInkBarToSelectedTab();\n this._changeDetectorRef.markForCheck();\n });\n }\n }\n /**\n * Updates the view whether pagination should be enabled or not.\n *\n * WARNING: Calling this method can be very costly in terms of performance. It should be called\n * as infrequently as possible from outside of the Tabs component as it causes a reflow of the\n * page.\n */\n updatePagination() {\n this._checkPaginationEnabled();\n this._checkScrollingControls();\n this._updateTabScrollPosition();\n }\n /** Tracks which element has focus; used for keyboard navigation */\n get focusIndex() {\n return this._keyManager ? this._keyManager.activeItemIndex : 0;\n }\n /** When the focus index is set, we must manually send focus to the correct label */\n set focusIndex(value) {\n if (!this._isValidIndex(value) || this.focusIndex === value || !this._keyManager) {\n return;\n }\n this._keyManager.setActiveItem(value);\n }\n /**\n * Determines if an index is valid. If the tabs are not ready yet, we assume that the user is\n * providing a valid index and return true.\n */\n _isValidIndex(index) {\n if (!this._items) {\n return true;\n }\n const tab = this._items ? this._items.toArray()[index] : null;\n return !!tab && !tab.disabled;\n }\n /**\n * Sets focus on the HTML element for the label wrapper and scrolls it into the view if\n * scrolling is enabled.\n */\n _setTabFocus(tabIndex) {\n if (this._showPaginationControls) {\n this._scrollToLabel(tabIndex);\n }\n if (this._items && this._items.length) {\n this._items.toArray()[tabIndex].focus();\n // Do not let the browser manage scrolling to focus the element, this will be handled\n // by using translation. In LTR, the scroll left should be 0. In RTL, the scroll width\n // should be the full width minus the offset width.\n const containerEl = this._tabListContainer.nativeElement;\n const dir = this._getLayoutDirection();\n if (dir == 'ltr') {\n containerEl.scrollLeft = 0;\n }\n else {\n containerEl.scrollLeft = containerEl.scrollWidth - containerEl.offsetWidth;\n }\n }\n }\n /** The layout direction of the containing app. */\n _getLayoutDirection() {\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n }\n /** Performs the CSS transformation on the tab list that will cause the list to scroll. */\n _updateTabScrollPosition() {\n if (this.disablePagination) {\n return;\n }\n const scrollDistance = this.scrollDistance;\n const translateX = this._getLayoutDirection() === 'ltr' ? -scrollDistance : scrollDistance;\n // Don't use `translate3d` here because we don't want to create a new layer. A new layer\n // seems to cause flickering and overflow in Internet Explorer. For example, the ink bar\n // and ripples will exceed the boundaries of the visible tab bar.\n // See: https://github.com/angular/components/issues/10276\n // We round the `transform` here, because transforms with sub-pixel precision cause some\n // browsers to blur the content of the element.\n this._tabList.nativeElement.style.transform = `translateX(${Math.round(translateX)}px)`;\n // Setting the `transform` on IE will change the scroll offset of the parent, causing the\n // position to be thrown off in some cases. We have to reset it ourselves to ensure that\n // it doesn't get thrown off. Note that we scope it only to IE and Edge, because messing\n // with the scroll position throws off Chrome 71+ in RTL mode (see #14689).\n if (this._platform.TRIDENT || this._platform.EDGE) {\n this._tabListContainer.nativeElement.scrollLeft = 0;\n }\n }\n /** Sets the distance in pixels that the tab header should be transformed in the X-axis. */\n get scrollDistance() {\n return this._scrollDistance;\n }\n set scrollDistance(value) {\n this._scrollTo(value);\n }\n /**\n * Moves the tab list in the 'before' or 'after' direction (towards the beginning of the list or\n * the end of the list, respectively). The distance to scroll is computed to be a third of the\n * length of the tab list view window.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n _scrollHeader(direction) {\n const viewLength = this._tabListContainer.nativeElement.offsetWidth;\n // Move the scroll distance one-third the length of the tab list's viewport.\n const scrollAmount = ((direction == 'before' ? -1 : 1) * viewLength) / 3;\n return this._scrollTo(this._scrollDistance + scrollAmount);\n }\n /** Handles click events on the pagination arrows. */\n _handlePaginatorClick(direction) {\n this._stopInterval();\n this._scrollHeader(direction);\n }\n /**\n * Moves the tab list such that the desired tab label (marked by index) is moved into view.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n _scrollToLabel(labelIndex) {\n if (this.disablePagination) {\n return;\n }\n const selectedLabel = this._items ? this._items.toArray()[labelIndex] : null;\n if (!selectedLabel) {\n return;\n }\n // The view length is the visible width of the tab labels.\n const viewLength = this._tabListContainer.nativeElement.offsetWidth;\n const { offsetLeft, offsetWidth } = selectedLabel.elementRef.nativeElement;\n let labelBeforePos, labelAfterPos;\n if (this._getLayoutDirection() == 'ltr') {\n labelBeforePos = offsetLeft;\n labelAfterPos = labelBeforePos + offsetWidth;\n }\n else {\n labelAfterPos = this._tabListInner.nativeElement.offsetWidth - offsetLeft;\n labelBeforePos = labelAfterPos - offsetWidth;\n }\n const beforeVisiblePos = this.scrollDistance;\n const afterVisiblePos = this.scrollDistance + viewLength;\n if (labelBeforePos < beforeVisiblePos) {\n // Scroll header to move label to the before direction\n this.scrollDistance -= beforeVisiblePos - labelBeforePos + EXAGGERATED_OVERSCROLL;\n }\n else if (labelAfterPos > afterVisiblePos) {\n // Scroll header to move label to the after direction\n this.scrollDistance += labelAfterPos - afterVisiblePos + EXAGGERATED_OVERSCROLL;\n }\n }\n /**\n * Evaluate whether the pagination controls should be displayed. If the scroll width of the\n * tab list is wider than the size of the header container, then the pagination controls should\n * be shown.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n _checkPaginationEnabled() {\n if (this.disablePagination) {\n this._showPaginationControls = false;\n }\n else {\n const isEnabled = this._tabListInner.nativeElement.scrollWidth > this._elementRef.nativeElement.offsetWidth;\n if (!isEnabled) {\n this.scrollDistance = 0;\n }\n if (isEnabled !== this._showPaginationControls) {\n this._changeDetectorRef.markForCheck();\n }\n this._showPaginationControls = isEnabled;\n }\n }\n /**\n * Evaluate whether the before and after controls should be enabled or disabled.\n * If the header is at the beginning of the list (scroll distance is equal to 0) then disable the\n * before button. If the header is at the end of the list (scroll distance is equal to the\n * maximum distance we can scroll), then disable the after button.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n _checkScrollingControls() {\n if (this.disablePagination) {\n this._disableScrollAfter = this._disableScrollBefore = true;\n }\n else {\n // Check if the pagination arrows should be activated.\n this._disableScrollBefore = this.scrollDistance == 0;\n this._disableScrollAfter = this.scrollDistance == this._getMaxScrollDistance();\n this._changeDetectorRef.markForCheck();\n }\n }\n /**\n * Determines what is the maximum length in pixels that can be set for the scroll distance. This\n * is equal to the difference in width between the tab list container and tab header container.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n _getMaxScrollDistance() {\n const lengthOfTabList = this._tabListInner.nativeElement.scrollWidth;\n const viewLength = this._tabListContainer.nativeElement.offsetWidth;\n return lengthOfTabList - viewLength || 0;\n }\n /** Tells the ink-bar to align itself to the current label wrapper */\n _alignInkBarToSelectedTab() {\n const selectedItem = this._items && this._items.length ? this._items.toArray()[this.selectedIndex] : null;\n const selectedLabelWrapper = selectedItem ? selectedItem.elementRef.nativeElement : null;\n if (selectedLabelWrapper) {\n this._inkBar.alignToElement(selectedLabelWrapper);\n }\n else {\n this._inkBar.hide();\n }\n }\n /** Stops the currently-running paginator interval. */\n _stopInterval() {\n this._stopScrolling.next();\n }\n /**\n * Handles the user pressing down on one of the paginators.\n * Starts scrolling the header after a certain amount of time.\n * @param direction In which direction the paginator should be scrolled.\n */\n _handlePaginatorPress(direction, mouseEvent) {\n // Don't start auto scrolling for right mouse button clicks. Note that we shouldn't have to\n // null check the `button`, but we do it so we don't break tests that use fake events.\n if (mouseEvent && mouseEvent.button != null && mouseEvent.button !== 0) {\n return;\n }\n // Avoid overlapping timers.\n this._stopInterval();\n // Start a timer after the delay and keep firing based on the interval.\n timer(HEADER_SCROLL_DELAY, HEADER_SCROLL_INTERVAL)\n // Keep the timer going until something tells it to stop or the component is destroyed.\n .pipe(takeUntil(merge(this._stopScrolling, this._destroyed)))\n .subscribe(() => {\n const { maxScrollDistance, distance } = this._scrollHeader(direction);\n // Stop the timer if we've reached the start or the end.\n if (distance === 0 || distance >= maxScrollDistance) {\n this._stopInterval();\n }\n });\n }\n /**\n * Scrolls the header to a given position.\n * @param position Position to which to scroll.\n * @returns Information on the current scroll distance and the maximum.\n */\n _scrollTo(position) {\n if (this.disablePagination) {\n return { maxScrollDistance: 0, distance: 0 };\n }\n const maxScrollDistance = this._getMaxScrollDistance();\n this._scrollDistance = Math.max(0, Math.min(maxScrollDistance, position));\n // Mark that the scroll distance has changed so that after the view is checked, the CSS\n // transformation can move the header.\n this._scrollDistanceChanged = true;\n this._checkScrollingControls();\n return { maxScrollDistance, distance: this._scrollDistance };\n }\n}\nMatPaginatedTabHeader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: MatPaginatedTabHeader, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1$1.ViewportRuler }, { token: i1.Directionality, optional: true }, { token: i0.NgZone }, { token: i3.Platform }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nMatPaginatedTabHeader.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: MatPaginatedTabHeader, inputs: { disablePagination: \"disablePagination\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: MatPaginatedTabHeader, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1$1.ViewportRuler }, { type: i1.Directionality, decorators: [{\n type: Optional\n }] }, { type: i0.NgZone }, { type: i3.Platform }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }]; }, propDecorators: { disablePagination: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Base class with all of the `MatTabHeader` functionality.\n * @docs-private\n */\nclass _MatTabHeaderBase extends MatPaginatedTabHeader {\n constructor(elementRef, changeDetectorRef, viewportRuler, dir, ngZone, platform, animationMode) {\n super(elementRef, changeDetectorRef, viewportRuler, dir, ngZone, platform, animationMode);\n this._disableRipple = false;\n }\n /** Whether the ripple effect is disabled or not. */\n get disableRipple() {\n return this._disableRipple;\n }\n set disableRipple(value) {\n this._disableRipple = coerceBooleanProperty(value);\n }\n _itemSelected(event) {\n event.preventDefault();\n }\n}\n_MatTabHeaderBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: _MatTabHeaderBase, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1$1.ViewportRuler }, { token: i1.Directionality, optional: true }, { token: i0.NgZone }, { token: i3.Platform }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\n_MatTabHeaderBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: _MatTabHeaderBase, inputs: { disableRipple: \"disableRipple\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: _MatTabHeaderBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1$1.ViewportRuler }, { type: i1.Directionality, decorators: [{\n type: Optional\n }] }, { type: i0.NgZone }, { type: i3.Platform }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }]; }, propDecorators: { disableRipple: [{\n type: Input\n }] } });\n/**\n * The header of the tab group which displays a list of all the tabs in the tab group. Includes\n * an ink bar that follows the currently selected tab. When the tabs list's width exceeds the\n * width of the header container, then arrows will be displayed to allow the user to scroll\n * left and right across the header.\n * @docs-private\n */\nclass MatTabHeader extends _MatTabHeaderBase {\n constructor(elementRef, changeDetectorRef, viewportRuler, dir, ngZone, platform, animationMode) {\n super(elementRef, changeDetectorRef, viewportRuler, dir, ngZone, platform, animationMode);\n }\n}\nMatTabHeader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: MatTabHeader, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1$1.ViewportRuler }, { token: i1.Directionality, optional: true }, { token: i0.NgZone }, { token: i3.Platform }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMatTabHeader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.0.1\", type: MatTabHeader, selector: \"mat-tab-header\", inputs: { selectedIndex: \"selectedIndex\" }, outputs: { selectFocusedIndex: \"selectFocusedIndex\", indexFocused: \"indexFocused\" }, host: { properties: { \"class.mat-tab-header-pagination-controls-enabled\": \"_showPaginationControls\", \"class.mat-tab-header-rtl\": \"_getLayoutDirection() == 'rtl'\" }, classAttribute: \"mat-tab-header\" }, queries: [{ propertyName: \"_items\", predicate: MatTabLabelWrapper }], viewQueries: [{ propertyName: \"_inkBar\", first: true, predicate: MatInkBar, descendants: true, static: true }, { propertyName: \"_tabListContainer\", first: true, predicate: [\"tabListContainer\"], descendants: true, static: true }, { propertyName: \"_tabList\", first: true, predicate: [\"tabList\"], descendants: true, static: true }, { propertyName: \"_tabListInner\", first: true, predicate: [\"tabListInner\"], descendants: true, static: true }, { propertyName: \"_nextPaginator\", first: true, predicate: [\"nextPaginator\"], descendants: true }, { propertyName: \"_previousPaginator\", first: true, predicate: [\"previousPaginator\"], descendants: true }], usesInheritance: true, ngImport: i0, template: \"\\n\\n
\\n \\n
\\n \\n
\\n \\n
\\n\\n\\n\\n\", styles: [\".mat-tab-header{display:flex;overflow:hidden;position:relative;flex-shrink:0}.mat-tab-header-pagination{-webkit-user-select:none;user-select:none;position:relative;display:none;justify-content:center;align-items:center;min-width:32px;cursor:pointer;z-index:2;-webkit-tap-highlight-color:rgba(0,0,0,0);touch-action:none;box-sizing:content-box;background:none;border:none;outline:0;padding:0}.mat-tab-header-pagination::-moz-focus-inner{border:0}.mat-tab-header-pagination-controls-enabled .mat-tab-header-pagination{display:flex}.mat-tab-header-pagination-before,.mat-tab-header-rtl .mat-tab-header-pagination-after{padding-left:4px}.mat-tab-header-pagination-before .mat-tab-header-pagination-chevron,.mat-tab-header-rtl .mat-tab-header-pagination-after .mat-tab-header-pagination-chevron{transform:rotate(-135deg)}.mat-tab-header-rtl .mat-tab-header-pagination-before,.mat-tab-header-pagination-after{padding-right:4px}.mat-tab-header-rtl .mat-tab-header-pagination-before .mat-tab-header-pagination-chevron,.mat-tab-header-pagination-after .mat-tab-header-pagination-chevron{transform:rotate(45deg)}.mat-tab-header-pagination-chevron{border-style:solid;border-width:2px 2px 0 0;height:8px;width:8px}.mat-tab-header-pagination-disabled{box-shadow:none;cursor:default}.mat-tab-list{flex-grow:1;position:relative;transition:transform 500ms cubic-bezier(0.35, 0, 0.25, 1)}.mat-ink-bar{position:absolute;bottom:0;height:2px;transition:500ms cubic-bezier(0.35, 0, 0.25, 1)}.mat-ink-bar._mat-animation-noopable{transition:none !important;animation:none !important}.mat-tab-group-inverted-header .mat-ink-bar{bottom:auto;top:0}.cdk-high-contrast-active .mat-ink-bar{outline:solid 2px;height:0}.mat-tab-labels{display:flex}[mat-align-tabs=center]>.mat-tab-header .mat-tab-labels{justify-content:center}[mat-align-tabs=end]>.mat-tab-header .mat-tab-labels{justify-content:flex-end}.mat-tab-label-container{display:flex;flex-grow:1;overflow:hidden;z-index:1}.mat-tab-list._mat-animation-noopable{transition:none !important;animation:none !important}.mat-tab-label{height:48px;padding:0 24px;cursor:pointer;box-sizing:border-box;opacity:.6;min-width:160px;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;position:relative}.mat-tab-label:focus{outline:none}.mat-tab-label:focus:not(.mat-tab-disabled){opacity:1}.mat-tab-label.mat-tab-disabled{cursor:default}.cdk-high-contrast-active .mat-tab-label.mat-tab-disabled{opacity:.5}.mat-tab-label .mat-tab-label-content{display:inline-flex;justify-content:center;align-items:center;white-space:nowrap}.cdk-high-contrast-active .mat-tab-label{opacity:1}.mat-tab-label::before{margin:5px}@media(max-width: 599px){.mat-tab-label{min-width:72px}}\"], dependencies: [{ kind: \"directive\", type: i4.MatRipple, selector: \"[mat-ripple], [matRipple]\", inputs: [\"matRippleColor\", \"matRippleUnbounded\", \"matRippleCentered\", \"matRippleRadius\", \"matRippleAnimation\", \"matRippleDisabled\", \"matRippleTrigger\"], exportAs: [\"matRipple\"] }, { kind: \"directive\", type: i5.CdkObserveContent, selector: \"[cdkObserveContent]\", inputs: [\"cdkObserveContentDisabled\", \"debounce\"], outputs: [\"cdkObserveContent\"], exportAs: [\"cdkObserveContent\"] }, { kind: \"directive\", type: MatInkBar, selector: \"mat-ink-bar\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: MatTabHeader, decorators: [{\n type: Component,\n args: [{ selector: 'mat-tab-header', inputs: ['selectedIndex'], outputs: ['selectFocusedIndex', 'indexFocused'], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Default, host: {\n 'class': 'mat-tab-header',\n '[class.mat-tab-header-pagination-controls-enabled]': '_showPaginationControls',\n '[class.mat-tab-header-rtl]': \"_getLayoutDirection() == 'rtl'\",\n }, template: \"\\n\\n
\\n \\n
\\n \\n
\\n \\n
\\n\\n\\n\\n\", styles: [\".mat-tab-header{display:flex;overflow:hidden;position:relative;flex-shrink:0}.mat-tab-header-pagination{-webkit-user-select:none;user-select:none;position:relative;display:none;justify-content:center;align-items:center;min-width:32px;cursor:pointer;z-index:2;-webkit-tap-highlight-color:rgba(0,0,0,0);touch-action:none;box-sizing:content-box;background:none;border:none;outline:0;padding:0}.mat-tab-header-pagination::-moz-focus-inner{border:0}.mat-tab-header-pagination-controls-enabled .mat-tab-header-pagination{display:flex}.mat-tab-header-pagination-before,.mat-tab-header-rtl .mat-tab-header-pagination-after{padding-left:4px}.mat-tab-header-pagination-before .mat-tab-header-pagination-chevron,.mat-tab-header-rtl .mat-tab-header-pagination-after .mat-tab-header-pagination-chevron{transform:rotate(-135deg)}.mat-tab-header-rtl .mat-tab-header-pagination-before,.mat-tab-header-pagination-after{padding-right:4px}.mat-tab-header-rtl .mat-tab-header-pagination-before .mat-tab-header-pagination-chevron,.mat-tab-header-pagination-after .mat-tab-header-pagination-chevron{transform:rotate(45deg)}.mat-tab-header-pagination-chevron{border-style:solid;border-width:2px 2px 0 0;height:8px;width:8px}.mat-tab-header-pagination-disabled{box-shadow:none;cursor:default}.mat-tab-list{flex-grow:1;position:relative;transition:transform 500ms cubic-bezier(0.35, 0, 0.25, 1)}.mat-ink-bar{position:absolute;bottom:0;height:2px;transition:500ms cubic-bezier(0.35, 0, 0.25, 1)}.mat-ink-bar._mat-animation-noopable{transition:none !important;animation:none !important}.mat-tab-group-inverted-header .mat-ink-bar{bottom:auto;top:0}.cdk-high-contrast-active .mat-ink-bar{outline:solid 2px;height:0}.mat-tab-labels{display:flex}[mat-align-tabs=center]>.mat-tab-header .mat-tab-labels{justify-content:center}[mat-align-tabs=end]>.mat-tab-header .mat-tab-labels{justify-content:flex-end}.mat-tab-label-container{display:flex;flex-grow:1;overflow:hidden;z-index:1}.mat-tab-list._mat-animation-noopable{transition:none !important;animation:none !important}.mat-tab-label{height:48px;padding:0 24px;cursor:pointer;box-sizing:border-box;opacity:.6;min-width:160px;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;position:relative}.mat-tab-label:focus{outline:none}.mat-tab-label:focus:not(.mat-tab-disabled){opacity:1}.mat-tab-label.mat-tab-disabled{cursor:default}.cdk-high-contrast-active .mat-tab-label.mat-tab-disabled{opacity:.5}.mat-tab-label .mat-tab-label-content{display:inline-flex;justify-content:center;align-items:center;white-space:nowrap}.cdk-high-contrast-active .mat-tab-label{opacity:1}.mat-tab-label::before{margin:5px}@media(max-width: 599px){.mat-tab-label{min-width:72px}}\"] }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1$1.ViewportRuler }, { type: i1.Directionality, decorators: [{\n type: Optional\n }] }, { type: i0.NgZone }, { type: i3.Platform }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }]; }, propDecorators: { _items: [{\n type: ContentChildren,\n args: [MatTabLabelWrapper, { descendants: false }]\n }], _inkBar: [{\n type: ViewChild,\n args: [MatInkBar, { static: true }]\n }], _tabListContainer: [{\n type: ViewChild,\n args: ['tabListContainer', { static: true }]\n }], _tabList: [{\n type: ViewChild,\n args: ['tabList', { static: true }]\n }], _tabListInner: [{\n type: ViewChild,\n args: ['tabListInner', { static: true }]\n }], _nextPaginator: [{\n type: ViewChild,\n args: ['nextPaginator']\n }], _previousPaginator: [{\n type: ViewChild,\n args: ['previousPaginator']\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Used to generate unique ID's for each tab component */\nlet nextId = 0;\n/** A simple change event emitted on focus or selection changes. */\nclass MatTabChangeEvent {\n}\n// Boilerplate for applying mixins to MatTabGroup.\n/** @docs-private */\nconst _MatTabGroupMixinBase = mixinColor(mixinDisableRipple(class {\n constructor(_elementRef) {\n this._elementRef = _elementRef;\n }\n}), 'primary');\n/**\n * Base class with all of the `MatTabGroupBase` functionality.\n * @docs-private\n */\nclass _MatTabGroupBase extends _MatTabGroupMixinBase {\n constructor(elementRef, _changeDetectorRef, defaultConfig, _animationMode) {\n super(elementRef);\n this._changeDetectorRef = _changeDetectorRef;\n this._animationMode = _animationMode;\n /** All of the tabs that belong to the group. */\n this._tabs = new QueryList();\n /** The tab index that should be selected after the content has been checked. */\n this._indexToSelect = 0;\n /** Index of the tab that was focused last. */\n this._lastFocusedTabIndex = null;\n /** Snapshot of the height of the tab body wrapper before another tab is activated. */\n this._tabBodyWrapperHeight = 0;\n /** Subscription to tabs being added/removed. */\n this._tabsSubscription = Subscription.EMPTY;\n /** Subscription to changes in the tab labels. */\n this._tabLabelSubscription = Subscription.EMPTY;\n this._dynamicHeight = false;\n this._selectedIndex = null;\n /** Position of the tab header. */\n this.headerPosition = 'above';\n this._disablePagination = false;\n this._preserveContent = false;\n /** Output to enable support for two-way binding on `[(selectedIndex)]` */\n this.selectedIndexChange = new EventEmitter();\n /** Event emitted when focus has changed within a tab group. */\n this.focusChange = new EventEmitter();\n /** Event emitted when the body animation has completed */\n this.animationDone = new EventEmitter();\n /** Event emitted when the tab selection has changed. */\n this.selectedTabChange = new EventEmitter(true);\n this._groupId = nextId++;\n this.animationDuration =\n defaultConfig && defaultConfig.animationDuration ? defaultConfig.animationDuration : '500ms';\n this.disablePagination =\n defaultConfig && defaultConfig.disablePagination != null\n ? defaultConfig.disablePagination\n : false;\n this.dynamicHeight =\n defaultConfig && defaultConfig.dynamicHeight != null ? defaultConfig.dynamicHeight : false;\n this.contentTabIndex = defaultConfig?.contentTabIndex ?? null;\n this.preserveContent = !!defaultConfig?.preserveContent;\n }\n /** Whether the tab group should grow to the size of the active tab. */\n get dynamicHeight() {\n return this._dynamicHeight;\n }\n set dynamicHeight(value) {\n this._dynamicHeight = coerceBooleanProperty(value);\n }\n /** The index of the active tab. */\n get selectedIndex() {\n return this._selectedIndex;\n }\n set selectedIndex(value) {\n this._indexToSelect = coerceNumberProperty(value, null);\n }\n /** Duration for the tab animation. Will be normalized to milliseconds if no units are set. */\n get animationDuration() {\n return this._animationDuration;\n }\n set animationDuration(value) {\n this._animationDuration = /^\\d+$/.test(value + '') ? value + 'ms' : value;\n }\n /**\n * `tabindex` to be set on the inner element that wraps the tab content. Can be used for improved\n * accessibility when the tab does not have focusable elements or if it has scrollable content.\n * The `tabindex` will be removed automatically for inactive tabs.\n * Read more at https://www.w3.org/TR/wai-aria-practices/examples/tabs/tabs-2/tabs.html\n */\n get contentTabIndex() {\n return this._contentTabIndex;\n }\n set contentTabIndex(value) {\n this._contentTabIndex = coerceNumberProperty(value, null);\n }\n /**\n * Whether pagination should be disabled. This can be used to avoid unnecessary\n * layout recalculations if it's known that pagination won't be required.\n */\n get disablePagination() {\n return this._disablePagination;\n }\n set disablePagination(value) {\n this._disablePagination = coerceBooleanProperty(value);\n }\n /**\n * By default tabs remove their content from the DOM while it's off-screen.\n * Setting this to `true` will keep it in the DOM which will prevent elements\n * like iframes and videos from reloading next time it comes back into the view.\n */\n get preserveContent() {\n return this._preserveContent;\n }\n set preserveContent(value) {\n this._preserveContent = coerceBooleanProperty(value);\n }\n /** Background color of the tab group. */\n get backgroundColor() {\n return this._backgroundColor;\n }\n set backgroundColor(value) {\n const nativeElement = this._elementRef.nativeElement;\n nativeElement.classList.remove(`mat-background-${this.backgroundColor}`);\n if (value) {\n nativeElement.classList.add(`mat-background-${value}`);\n }\n this._backgroundColor = value;\n }\n /**\n * After the content is checked, this component knows what tabs have been defined\n * and what the selected index should be. This is where we can know exactly what position\n * each tab should be in according to the new selected index, and additionally we know how\n * a new selected tab should transition in (from the left or right).\n */\n ngAfterContentChecked() {\n // Don't clamp the `indexToSelect` immediately in the setter because it can happen that\n // the amount of tabs changes before the actual change detection runs.\n const indexToSelect = (this._indexToSelect = this._clampTabIndex(this._indexToSelect));\n // If there is a change in selected index, emit a change event. Should not trigger if\n // the selected index has not yet been initialized.\n if (this._selectedIndex != indexToSelect) {\n const isFirstRun = this._selectedIndex == null;\n if (!isFirstRun) {\n this.selectedTabChange.emit(this._createChangeEvent(indexToSelect));\n // Preserve the height so page doesn't scroll up during tab change.\n // Fixes https://stackblitz.com/edit/mat-tabs-scroll-page-top-on-tab-change\n const wrapper = this._tabBodyWrapper.nativeElement;\n wrapper.style.minHeight = wrapper.clientHeight + 'px';\n }\n // Changing these values after change detection has run\n // since the checked content may contain references to them.\n Promise.resolve().then(() => {\n this._tabs.forEach((tab, index) => (tab.isActive = index === indexToSelect));\n if (!isFirstRun) {\n this.selectedIndexChange.emit(indexToSelect);\n // Clear the min-height, this was needed during tab change to avoid\n // unnecessary scrolling.\n this._tabBodyWrapper.nativeElement.style.minHeight = '';\n }\n });\n }\n // Setup the position for each tab and optionally setup an origin on the next selected tab.\n this._tabs.forEach((tab, index) => {\n tab.position = index - indexToSelect;\n // If there is already a selected tab, then set up an origin for the next selected tab\n // if it doesn't have one already.\n if (this._selectedIndex != null && tab.position == 0 && !tab.origin) {\n tab.origin = indexToSelect - this._selectedIndex;\n }\n });\n if (this._selectedIndex !== indexToSelect) {\n this._selectedIndex = indexToSelect;\n this._lastFocusedTabIndex = null;\n this._changeDetectorRef.markForCheck();\n }\n }\n ngAfterContentInit() {\n this._subscribeToAllTabChanges();\n this._subscribeToTabLabels();\n // Subscribe to changes in the amount of tabs, in order to be\n // able to re-render the content as new tabs are added or removed.\n this._tabsSubscription = this._tabs.changes.subscribe(() => {\n const indexToSelect = this._clampTabIndex(this._indexToSelect);\n // Maintain the previously-selected tab if a new tab is added or removed and there is no\n // explicit change that selects a different tab.\n if (indexToSelect === this._selectedIndex) {\n const tabs = this._tabs.toArray();\n let selectedTab;\n for (let i = 0; i < tabs.length; i++) {\n if (tabs[i].isActive) {\n // Assign both to the `_indexToSelect` and `_selectedIndex` so we don't fire a changed\n // event, otherwise the consumer may end up in an infinite loop in some edge cases like\n // adding a tab within the `selectedIndexChange` event.\n this._indexToSelect = this._selectedIndex = i;\n this._lastFocusedTabIndex = null;\n selectedTab = tabs[i];\n break;\n }\n }\n // If we haven't found an active tab and a tab exists at the selected index, it means\n // that the active tab was swapped out. Since this won't be picked up by the rendering\n // loop in `ngAfterContentChecked`, we need to sync it up manually.\n if (!selectedTab && tabs[indexToSelect]) {\n Promise.resolve().then(() => {\n tabs[indexToSelect].isActive = true;\n this.selectedTabChange.emit(this._createChangeEvent(indexToSelect));\n });\n }\n }\n this._changeDetectorRef.markForCheck();\n });\n }\n /** Listens to changes in all of the tabs. */\n _subscribeToAllTabChanges() {\n // Since we use a query with `descendants: true` to pick up the tabs, we may end up catching\n // some that are inside of nested tab groups. We filter them out manually by checking that\n // the closest group to the tab is the current one.\n this._allTabs.changes.pipe(startWith(this._allTabs)).subscribe((tabs) => {\n this._tabs.reset(tabs.filter(tab => {\n return tab._closestTabGroup === this || !tab._closestTabGroup;\n }));\n this._tabs.notifyOnChanges();\n });\n }\n ngOnDestroy() {\n this._tabs.destroy();\n this._tabsSubscription.unsubscribe();\n this._tabLabelSubscription.unsubscribe();\n }\n /** Re-aligns the ink bar to the selected tab element. */\n realignInkBar() {\n if (this._tabHeader) {\n this._tabHeader._alignInkBarToSelectedTab();\n }\n }\n /**\n * Recalculates the tab group's pagination dimensions.\n *\n * WARNING: Calling this method can be very costly in terms of performance. It should be called\n * as infrequently as possible from outside of the Tabs component as it causes a reflow of the\n * page.\n */\n updatePagination() {\n if (this._tabHeader) {\n this._tabHeader.updatePagination();\n }\n }\n /**\n * Sets focus to a particular tab.\n * @param index Index of the tab to be focused.\n */\n focusTab(index) {\n const header = this._tabHeader;\n if (header) {\n header.focusIndex = index;\n }\n }\n _focusChanged(index) {\n this._lastFocusedTabIndex = index;\n this.focusChange.emit(this._createChangeEvent(index));\n }\n _createChangeEvent(index) {\n const event = new MatTabChangeEvent();\n event.index = index;\n if (this._tabs && this._tabs.length) {\n event.tab = this._tabs.toArray()[index];\n }\n return event;\n }\n /**\n * Subscribes to changes in the tab labels. This is needed, because the @Input for the label is\n * on the MatTab component, whereas the data binding is inside the MatTabGroup. In order for the\n * binding to be updated, we need to subscribe to changes in it and trigger change detection\n * manually.\n */\n _subscribeToTabLabels() {\n if (this._tabLabelSubscription) {\n this._tabLabelSubscription.unsubscribe();\n }\n this._tabLabelSubscription = merge(...this._tabs.map(tab => tab._stateChanges)).subscribe(() => this._changeDetectorRef.markForCheck());\n }\n /** Clamps the given index to the bounds of 0 and the tabs length. */\n _clampTabIndex(index) {\n // Note the `|| 0`, which ensures that values like NaN can't get through\n // and which would otherwise throw the component into an infinite loop\n // (since Math.max(NaN, 0) === NaN).\n return Math.min(this._tabs.length - 1, Math.max(index || 0, 0));\n }\n /** Returns a unique id for each tab label element */\n _getTabLabelId(i) {\n return `mat-tab-label-${this._groupId}-${i}`;\n }\n /** Returns a unique id for each tab content element */\n _getTabContentId(i) {\n return `mat-tab-content-${this._groupId}-${i}`;\n }\n /**\n * Sets the height of the body wrapper to the height of the activating tab if dynamic\n * height property is true.\n */\n _setTabBodyWrapperHeight(tabHeight) {\n if (!this._dynamicHeight || !this._tabBodyWrapperHeight) {\n return;\n }\n const wrapper = this._tabBodyWrapper.nativeElement;\n wrapper.style.height = this._tabBodyWrapperHeight + 'px';\n // This conditional forces the browser to paint the height so that\n // the animation to the new height can have an origin.\n if (this._tabBodyWrapper.nativeElement.offsetHeight) {\n wrapper.style.height = tabHeight + 'px';\n }\n }\n /** Removes the height of the tab body wrapper. */\n _removeTabBodyWrapperHeight() {\n const wrapper = this._tabBodyWrapper.nativeElement;\n this._tabBodyWrapperHeight = wrapper.clientHeight;\n wrapper.style.height = '';\n this.animationDone.emit();\n }\n /** Handle click events, setting new selected index if appropriate. */\n _handleClick(tab, tabHeader, index) {\n if (!tab.disabled) {\n this.selectedIndex = tabHeader.focusIndex = index;\n }\n }\n /** Retrieves the tabindex for the tab. */\n _getTabIndex(tab, index) {\n if (tab.disabled) {\n return null;\n }\n const targetIndex = this._lastFocusedTabIndex ?? this.selectedIndex;\n return index === targetIndex ? 0 : -1;\n }\n /** Callback for when the focused state of a tab has changed. */\n _tabFocusChanged(focusOrigin, index) {\n // Mouse/touch focus happens during the `mousedown`/`touchstart` phase which\n // can cause the tab to be moved out from under the pointer, interrupting the\n // click sequence (see #21898). We don't need to scroll the tab into view for\n // such cases anyway, because it will be done when the tab becomes selected.\n if (focusOrigin && focusOrigin !== 'mouse' && focusOrigin !== 'touch') {\n this._tabHeader.focusIndex = index;\n }\n }\n}\n_MatTabGroupBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: _MatTabGroupBase, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: MAT_TABS_CONFIG, optional: true }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\n_MatTabGroupBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: _MatTabGroupBase, inputs: { dynamicHeight: \"dynamicHeight\", selectedIndex: \"selectedIndex\", headerPosition: \"headerPosition\", animationDuration: \"animationDuration\", contentTabIndex: \"contentTabIndex\", disablePagination: \"disablePagination\", preserveContent: \"preserveContent\", backgroundColor: \"backgroundColor\" }, outputs: { selectedIndexChange: \"selectedIndexChange\", focusChange: \"focusChange\", animationDone: \"animationDone\", selectedTabChange: \"selectedTabChange\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: _MatTabGroupBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_TABS_CONFIG]\n }, {\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }]; }, propDecorators: { dynamicHeight: [{\n type: Input\n }], selectedIndex: [{\n type: Input\n }], headerPosition: [{\n type: Input\n }], animationDuration: [{\n type: Input\n }], contentTabIndex: [{\n type: Input\n }], disablePagination: [{\n type: Input\n }], preserveContent: [{\n type: Input\n }], backgroundColor: [{\n type: Input\n }], selectedIndexChange: [{\n type: Output\n }], focusChange: [{\n type: Output\n }], animationDone: [{\n type: Output\n }], selectedTabChange: [{\n type: Output\n }] } });\n/**\n * Material design tab-group component. Supports basic tab pairs (label + content) and includes\n * animated ink-bar, keyboard navigation, and screen reader.\n * See: https://material.io/design/components/tabs.html\n */\nclass MatTabGroup extends _MatTabGroupBase {\n constructor(elementRef, changeDetectorRef, defaultConfig, animationMode) {\n super(elementRef, changeDetectorRef, defaultConfig, animationMode);\n }\n}\nMatTabGroup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: MatTabGroup, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: MAT_TABS_CONFIG, optional: true }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMatTabGroup.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.0.1\", type: MatTabGroup, selector: \"mat-tab-group\", inputs: { color: \"color\", disableRipple: \"disableRipple\" }, host: { properties: { \"class.mat-tab-group-dynamic-height\": \"dynamicHeight\", \"class.mat-tab-group-inverted-header\": \"headerPosition === \\\"below\\\"\" }, classAttribute: \"mat-tab-group\" }, providers: [\n {\n provide: MAT_TAB_GROUP,\n useExisting: MatTabGroup,\n },\n ], queries: [{ propertyName: \"_allTabs\", predicate: MatTab, descendants: true }], viewQueries: [{ propertyName: \"_tabBodyWrapper\", first: true, predicate: [\"tabBodyWrapper\"], descendants: true }, { propertyName: \"_tabHeader\", first: true, predicate: [\"tabHeader\"], descendants: true }], exportAs: [\"matTabGroup\"], usesInheritance: true, ngImport: i0, template: \"\\n
\\n\\n\\n
\\n \\n \\n \\n \\n\\n \\n {{tab.textLabel}}\\n
\\n
\\n
\\n\\n\\n \\n \\n\\n\", styles: [\".mat-tab-group{display:flex;flex-direction:column;max-width:100%}.mat-tab-group.mat-tab-group-inverted-header{flex-direction:column-reverse}.mat-tab-label{height:48px;padding:0 24px;cursor:pointer;box-sizing:border-box;opacity:.6;min-width:160px;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;position:relative}.mat-tab-label:focus{outline:none}.mat-tab-label:focus:not(.mat-tab-disabled){opacity:1}.mat-tab-label.mat-tab-disabled{cursor:default}.cdk-high-contrast-active .mat-tab-label.mat-tab-disabled{opacity:.5}.mat-tab-label .mat-tab-label-content{display:inline-flex;justify-content:center;align-items:center;white-space:nowrap}.cdk-high-contrast-active .mat-tab-label{opacity:1}@media(max-width: 599px){.mat-tab-label{padding:0 12px}}@media(max-width: 959px){.mat-tab-label{padding:0 12px}}.mat-tab-group[mat-stretch-tabs]>.mat-tab-header .mat-tab-label{flex-basis:0;flex-grow:1}.mat-tab-body-wrapper{position:relative;overflow:hidden;display:flex;transition:height 500ms cubic-bezier(0.35, 0, 0.25, 1)}.mat-tab-body-wrapper._mat-animation-noopable{transition:none !important;animation:none !important}.mat-tab-body{top:0;left:0;right:0;bottom:0;position:absolute;display:block;overflow:hidden;outline:0;flex-basis:100%}.mat-tab-body.mat-tab-body-active{position:relative;overflow-x:hidden;overflow-y:auto;z-index:1;flex-grow:1}.mat-tab-group.mat-tab-group-dynamic-height .mat-tab-body.mat-tab-body-active{overflow-y:hidden}\"], dependencies: [{ kind: \"directive\", type: i1$2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1$2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i1$2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i2.CdkPortalOutlet, selector: \"[cdkPortalOutlet]\", inputs: [\"cdkPortalOutlet\"], outputs: [\"attached\"], exportAs: [\"cdkPortalOutlet\"] }, { kind: \"directive\", type: i4.MatRipple, selector: \"[mat-ripple], [matRipple]\", inputs: [\"matRippleColor\", \"matRippleUnbounded\", \"matRippleCentered\", \"matRippleRadius\", \"matRippleAnimation\", \"matRippleDisabled\", \"matRippleTrigger\"], exportAs: [\"matRipple\"] }, { kind: \"directive\", type: i7.CdkMonitorFocus, selector: \"[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]\", outputs: [\"cdkFocusChange\"] }, { kind: \"directive\", type: MatTabLabelWrapper, selector: \"[matTabLabelWrapper]\", inputs: [\"disabled\"] }, { kind: \"component\", type: MatTabBody, selector: \"mat-tab-body\" }, { kind: \"component\", type: MatTabHeader, selector: \"mat-tab-header\", inputs: [\"selectedIndex\"], outputs: [\"selectFocusedIndex\", \"indexFocused\"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: MatTabGroup, decorators: [{\n type: Component,\n args: [{ selector: 'mat-tab-group', exportAs: 'matTabGroup', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Default, inputs: ['color', 'disableRipple'], providers: [\n {\n provide: MAT_TAB_GROUP,\n useExisting: MatTabGroup,\n },\n ], host: {\n 'class': 'mat-tab-group',\n '[class.mat-tab-group-dynamic-height]': 'dynamicHeight',\n '[class.mat-tab-group-inverted-header]': 'headerPosition === \"below\"',\n }, template: \"\\n
\\n\\n\\n
\\n \\n \\n \\n \\n\\n \\n {{tab.textLabel}}\\n
\\n
\\n
\\n\\n\\n \\n \\n\\n\", styles: [\".mat-tab-group{display:flex;flex-direction:column;max-width:100%}.mat-tab-group.mat-tab-group-inverted-header{flex-direction:column-reverse}.mat-tab-label{height:48px;padding:0 24px;cursor:pointer;box-sizing:border-box;opacity:.6;min-width:160px;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;position:relative}.mat-tab-label:focus{outline:none}.mat-tab-label:focus:not(.mat-tab-disabled){opacity:1}.mat-tab-label.mat-tab-disabled{cursor:default}.cdk-high-contrast-active .mat-tab-label.mat-tab-disabled{opacity:.5}.mat-tab-label .mat-tab-label-content{display:inline-flex;justify-content:center;align-items:center;white-space:nowrap}.cdk-high-contrast-active .mat-tab-label{opacity:1}@media(max-width: 599px){.mat-tab-label{padding:0 12px}}@media(max-width: 959px){.mat-tab-label{padding:0 12px}}.mat-tab-group[mat-stretch-tabs]>.mat-tab-header .mat-tab-label{flex-basis:0;flex-grow:1}.mat-tab-body-wrapper{position:relative;overflow:hidden;display:flex;transition:height 500ms cubic-bezier(0.35, 0, 0.25, 1)}.mat-tab-body-wrapper._mat-animation-noopable{transition:none !important;animation:none !important}.mat-tab-body{top:0;left:0;right:0;bottom:0;position:absolute;display:block;overflow:hidden;outline:0;flex-basis:100%}.mat-tab-body.mat-tab-body-active{position:relative;overflow-x:hidden;overflow-y:auto;z-index:1;flex-grow:1}.mat-tab-group.mat-tab-group-dynamic-height .mat-tab-body.mat-tab-body-active{overflow-y:hidden}\"] }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_TABS_CONFIG]\n }, {\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }]; }, propDecorators: { _allTabs: [{\n type: ContentChildren,\n args: [MatTab, { descendants: true }]\n }], _tabBodyWrapper: [{\n type: ViewChild,\n args: ['tabBodyWrapper']\n }], _tabHeader: [{\n type: ViewChild,\n args: ['tabHeader']\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Increasing integer for generating unique ids for tab nav components.\nlet nextUniqueId = 0;\n/**\n * Base class with all of the `MatTabNav` functionality.\n * @docs-private\n */\nclass _MatTabNavBase extends MatPaginatedTabHeader {\n constructor(elementRef, dir, ngZone, changeDetectorRef, viewportRuler, platform, animationMode) {\n super(elementRef, changeDetectorRef, viewportRuler, dir, ngZone, platform, animationMode);\n this._disableRipple = false;\n /** Theme color of the nav bar. */\n this.color = 'primary';\n }\n /** Background color of the tab nav. */\n get backgroundColor() {\n return this._backgroundColor;\n }\n set backgroundColor(value) {\n const classList = this._elementRef.nativeElement.classList;\n classList.remove(`mat-background-${this.backgroundColor}`);\n if (value) {\n classList.add(`mat-background-${value}`);\n }\n this._backgroundColor = value;\n }\n /** Whether the ripple effect is disabled or not. */\n get disableRipple() {\n return this._disableRipple;\n }\n set disableRipple(value) {\n this._disableRipple = coerceBooleanProperty(value);\n }\n _itemSelected() {\n // noop\n }\n ngAfterContentInit() {\n // We need this to run before the `changes` subscription in parent to ensure that the\n // selectedIndex is up-to-date by the time the super class starts looking for it.\n this._items.changes.pipe(startWith(null), takeUntil(this._destroyed)).subscribe(() => {\n this.updateActiveLink();\n });\n super.ngAfterContentInit();\n }\n /** Notifies the component that the active link has been changed. */\n updateActiveLink() {\n if (!this._items) {\n return;\n }\n const items = this._items.toArray();\n for (let i = 0; i < items.length; i++) {\n if (items[i].active) {\n this.selectedIndex = i;\n this._changeDetectorRef.markForCheck();\n if (this.tabPanel) {\n this.tabPanel._activeTabId = items[i].id;\n }\n return;\n }\n }\n // The ink bar should hide itself if no items are active.\n this.selectedIndex = -1;\n this._inkBar.hide();\n }\n _getRole() {\n return this.tabPanel ? 'tablist' : this._elementRef.nativeElement.getAttribute('role');\n }\n}\n_MatTabNavBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: _MatTabNavBase, deps: [{ token: i0.ElementRef }, { token: i1.Directionality, optional: true }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i1$1.ViewportRuler }, { token: i3.Platform }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\n_MatTabNavBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: _MatTabNavBase, inputs: { backgroundColor: \"backgroundColor\", disableRipple: \"disableRipple\", color: \"color\", tabPanel: \"tabPanel\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: _MatTabNavBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.Directionality, decorators: [{\n type: Optional\n }] }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i1$1.ViewportRuler }, { type: i3.Platform }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }]; }, propDecorators: { backgroundColor: [{\n type: Input\n }], disableRipple: [{\n type: Input\n }], color: [{\n type: Input\n }], tabPanel: [{\n type: Input\n }] } });\n/**\n * Navigation component matching the styles of the tab group header.\n * Provides anchored navigation with animated ink bar.\n */\nclass MatTabNav extends _MatTabNavBase {\n constructor(elementRef, dir, ngZone, changeDetectorRef, viewportRuler, platform, animationMode) {\n super(elementRef, dir, ngZone, changeDetectorRef, viewportRuler, platform, animationMode);\n }\n}\nMatTabNav.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: MatTabNav, deps: [{ token: i0.ElementRef }, { token: i1.Directionality, optional: true }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i1$1.ViewportRuler }, { token: i3.Platform }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMatTabNav.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.0.1\", type: MatTabNav, selector: \"[mat-tab-nav-bar]\", inputs: { color: \"color\" }, host: { properties: { \"attr.role\": \"_getRole()\", \"class.mat-tab-header-pagination-controls-enabled\": \"_showPaginationControls\", \"class.mat-tab-header-rtl\": \"_getLayoutDirection() == 'rtl'\", \"class.mat-primary\": \"color !== \\\"warn\\\" && color !== \\\"accent\\\"\", \"class.mat-accent\": \"color === \\\"accent\\\"\", \"class.mat-warn\": \"color === \\\"warn\\\"\" }, classAttribute: \"mat-tab-nav-bar mat-tab-header\" }, queries: [{ propertyName: \"_items\", predicate: i0.forwardRef(function () { return MatTabLink; }), descendants: true }], viewQueries: [{ propertyName: \"_inkBar\", first: true, predicate: MatInkBar, descendants: true, static: true }, { propertyName: \"_tabListContainer\", first: true, predicate: [\"tabListContainer\"], descendants: true, static: true }, { propertyName: \"_tabList\", first: true, predicate: [\"tabList\"], descendants: true, static: true }, { propertyName: \"_tabListInner\", first: true, predicate: [\"tabListInner\"], descendants: true, static: true }, { propertyName: \"_nextPaginator\", first: true, predicate: [\"nextPaginator\"], descendants: true }, { propertyName: \"_previousPaginator\", first: true, predicate: [\"previousPaginator\"], descendants: true }], exportAs: [\"matTabNavBar\", \"matTabNav\"], usesInheritance: true, ngImport: i0, template: \"\\n\\n\\n\\n\\n\\n\", styles: [\".mat-tab-header{display:flex;overflow:hidden;position:relative;flex-shrink:0}.mat-tab-header-pagination{-webkit-user-select:none;user-select:none;position:relative;display:none;justify-content:center;align-items:center;min-width:32px;cursor:pointer;z-index:2;-webkit-tap-highlight-color:rgba(0,0,0,0);touch-action:none;box-sizing:content-box;background:none;border:none;outline:0;padding:0}.mat-tab-header-pagination::-moz-focus-inner{border:0}.mat-tab-header-pagination-controls-enabled .mat-tab-header-pagination{display:flex}.mat-tab-header-pagination-before,.mat-tab-header-rtl .mat-tab-header-pagination-after{padding-left:4px}.mat-tab-header-pagination-before .mat-tab-header-pagination-chevron,.mat-tab-header-rtl .mat-tab-header-pagination-after .mat-tab-header-pagination-chevron{transform:rotate(-135deg)}.mat-tab-header-rtl .mat-tab-header-pagination-before,.mat-tab-header-pagination-after{padding-right:4px}.mat-tab-header-rtl .mat-tab-header-pagination-before .mat-tab-header-pagination-chevron,.mat-tab-header-pagination-after .mat-tab-header-pagination-chevron{transform:rotate(45deg)}.mat-tab-header-pagination-chevron{border-style:solid;border-width:2px 2px 0 0;height:8px;width:8px}.mat-tab-header-pagination-disabled{box-shadow:none;cursor:default}.mat-tab-list{flex-grow:1;position:relative;transition:transform 500ms cubic-bezier(0.35, 0, 0.25, 1)}.mat-tab-links{display:flex}[mat-align-tabs=center]>.mat-tab-link-container .mat-tab-links{justify-content:center}[mat-align-tabs=end]>.mat-tab-link-container .mat-tab-links{justify-content:flex-end}.mat-ink-bar{position:absolute;bottom:0;height:2px;transition:500ms cubic-bezier(0.35, 0, 0.25, 1)}.mat-ink-bar._mat-animation-noopable{transition:none !important;animation:none !important}.mat-tab-group-inverted-header .mat-ink-bar{bottom:auto;top:0}.cdk-high-contrast-active .mat-ink-bar{outline:solid 2px;height:0}.mat-tab-link-container{display:flex;flex-grow:1;overflow:hidden;z-index:1}.mat-tab-link{height:48px;padding:0 24px;cursor:pointer;box-sizing:border-box;opacity:.6;min-width:160px;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;vertical-align:top;text-decoration:none;position:relative;overflow:hidden;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-tab-link:focus{outline:none}.mat-tab-link:focus:not(.mat-tab-disabled){opacity:1}.mat-tab-link.mat-tab-disabled{cursor:default}.cdk-high-contrast-active .mat-tab-link.mat-tab-disabled{opacity:.5}.mat-tab-link .mat-tab-label-content{display:inline-flex;justify-content:center;align-items:center;white-space:nowrap}.cdk-high-contrast-active .mat-tab-link{opacity:1}[mat-stretch-tabs] .mat-tab-link{flex-basis:0;flex-grow:1}.mat-tab-link.mat-tab-disabled{pointer-events:none}.mat-tab-link::before{margin:5px}@media(max-width: 599px){.mat-tab-link{min-width:72px}}\"], dependencies: [{ kind: \"directive\", type: i4.MatRipple, selector: \"[mat-ripple], [matRipple]\", inputs: [\"matRippleColor\", \"matRippleUnbounded\", \"matRippleCentered\", \"matRippleRadius\", \"matRippleAnimation\", \"matRippleDisabled\", \"matRippleTrigger\"], exportAs: [\"matRipple\"] }, { kind: \"directive\", type: i5.CdkObserveContent, selector: \"[cdkObserveContent]\", inputs: [\"cdkObserveContentDisabled\", \"debounce\"], outputs: [\"cdkObserveContent\"], exportAs: [\"cdkObserveContent\"] }, { kind: \"directive\", type: MatInkBar, selector: \"mat-ink-bar\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: MatTabNav, decorators: [{\n type: Component,\n args: [{ selector: '[mat-tab-nav-bar]', exportAs: 'matTabNavBar, matTabNav', inputs: ['color'], host: {\n '[attr.role]': '_getRole()',\n 'class': 'mat-tab-nav-bar mat-tab-header',\n '[class.mat-tab-header-pagination-controls-enabled]': '_showPaginationControls',\n '[class.mat-tab-header-rtl]': \"_getLayoutDirection() == 'rtl'\",\n '[class.mat-primary]': 'color !== \"warn\" && color !== \"accent\"',\n '[class.mat-accent]': 'color === \"accent\"',\n '[class.mat-warn]': 'color === \"warn\"',\n }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Default, template: \"\\n\\n\\n\\n\\n\\n\", styles: [\".mat-tab-header{display:flex;overflow:hidden;position:relative;flex-shrink:0}.mat-tab-header-pagination{-webkit-user-select:none;user-select:none;position:relative;display:none;justify-content:center;align-items:center;min-width:32px;cursor:pointer;z-index:2;-webkit-tap-highlight-color:rgba(0,0,0,0);touch-action:none;box-sizing:content-box;background:none;border:none;outline:0;padding:0}.mat-tab-header-pagination::-moz-focus-inner{border:0}.mat-tab-header-pagination-controls-enabled .mat-tab-header-pagination{display:flex}.mat-tab-header-pagination-before,.mat-tab-header-rtl .mat-tab-header-pagination-after{padding-left:4px}.mat-tab-header-pagination-before .mat-tab-header-pagination-chevron,.mat-tab-header-rtl .mat-tab-header-pagination-after .mat-tab-header-pagination-chevron{transform:rotate(-135deg)}.mat-tab-header-rtl .mat-tab-header-pagination-before,.mat-tab-header-pagination-after{padding-right:4px}.mat-tab-header-rtl .mat-tab-header-pagination-before .mat-tab-header-pagination-chevron,.mat-tab-header-pagination-after .mat-tab-header-pagination-chevron{transform:rotate(45deg)}.mat-tab-header-pagination-chevron{border-style:solid;border-width:2px 2px 0 0;height:8px;width:8px}.mat-tab-header-pagination-disabled{box-shadow:none;cursor:default}.mat-tab-list{flex-grow:1;position:relative;transition:transform 500ms cubic-bezier(0.35, 0, 0.25, 1)}.mat-tab-links{display:flex}[mat-align-tabs=center]>.mat-tab-link-container .mat-tab-links{justify-content:center}[mat-align-tabs=end]>.mat-tab-link-container .mat-tab-links{justify-content:flex-end}.mat-ink-bar{position:absolute;bottom:0;height:2px;transition:500ms cubic-bezier(0.35, 0, 0.25, 1)}.mat-ink-bar._mat-animation-noopable{transition:none !important;animation:none !important}.mat-tab-group-inverted-header .mat-ink-bar{bottom:auto;top:0}.cdk-high-contrast-active .mat-ink-bar{outline:solid 2px;height:0}.mat-tab-link-container{display:flex;flex-grow:1;overflow:hidden;z-index:1}.mat-tab-link{height:48px;padding:0 24px;cursor:pointer;box-sizing:border-box;opacity:.6;min-width:160px;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;vertical-align:top;text-decoration:none;position:relative;overflow:hidden;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-tab-link:focus{outline:none}.mat-tab-link:focus:not(.mat-tab-disabled){opacity:1}.mat-tab-link.mat-tab-disabled{cursor:default}.cdk-high-contrast-active .mat-tab-link.mat-tab-disabled{opacity:.5}.mat-tab-link .mat-tab-label-content{display:inline-flex;justify-content:center;align-items:center;white-space:nowrap}.cdk-high-contrast-active .mat-tab-link{opacity:1}[mat-stretch-tabs] .mat-tab-link{flex-basis:0;flex-grow:1}.mat-tab-link.mat-tab-disabled{pointer-events:none}.mat-tab-link::before{margin:5px}@media(max-width: 599px){.mat-tab-link{min-width:72px}}\"] }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.Directionality, decorators: [{\n type: Optional\n }] }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i1$1.ViewportRuler }, { type: i3.Platform }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }]; }, propDecorators: { _items: [{\n type: ContentChildren,\n args: [forwardRef(() => MatTabLink), { descendants: true }]\n }], _inkBar: [{\n type: ViewChild,\n args: [MatInkBar, { static: true }]\n }], _tabListContainer: [{\n type: ViewChild,\n args: ['tabListContainer', { static: true }]\n }], _tabList: [{\n type: ViewChild,\n args: ['tabList', { static: true }]\n }], _tabListInner: [{\n type: ViewChild,\n args: ['tabListInner', { static: true }]\n }], _nextPaginator: [{\n type: ViewChild,\n args: ['nextPaginator']\n }], _previousPaginator: [{\n type: ViewChild,\n args: ['previousPaginator']\n }] } });\n// Boilerplate for applying mixins to MatTabLink.\nconst _MatTabLinkMixinBase = mixinTabIndex(mixinDisableRipple(mixinDisabled(class {\n})));\n/** Base class with all of the `MatTabLink` functionality. */\nclass _MatTabLinkBase extends _MatTabLinkMixinBase {\n constructor(_tabNavBar, \n /** @docs-private */ elementRef, globalRippleOptions, tabIndex, _focusMonitor, animationMode) {\n super();\n this._tabNavBar = _tabNavBar;\n this.elementRef = elementRef;\n this._focusMonitor = _focusMonitor;\n /** Whether the tab link is active or not. */\n this._isActive = false;\n /** Unique id for the tab. */\n this.id = `mat-tab-link-${nextUniqueId++}`;\n this.rippleConfig = globalRippleOptions || {};\n this.tabIndex = parseInt(tabIndex) || 0;\n if (animationMode === 'NoopAnimations') {\n this.rippleConfig.animation = { enterDuration: 0, exitDuration: 0 };\n }\n }\n /** Whether the link is active. */\n get active() {\n return this._isActive;\n }\n set active(value) {\n const newValue = coerceBooleanProperty(value);\n if (newValue !== this._isActive) {\n this._isActive = newValue;\n this._tabNavBar.updateActiveLink();\n }\n }\n /**\n * Whether ripples are disabled on interaction.\n * @docs-private\n */\n get rippleDisabled() {\n return (this.disabled ||\n this.disableRipple ||\n this._tabNavBar.disableRipple ||\n !!this.rippleConfig.disabled);\n }\n /** Focuses the tab link. */\n focus() {\n this.elementRef.nativeElement.focus();\n }\n ngAfterViewInit() {\n this._focusMonitor.monitor(this.elementRef);\n }\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this.elementRef);\n }\n _handleFocus() {\n // Since we allow navigation through tabbing in the nav bar, we\n // have to update the focused index whenever the link receives focus.\n this._tabNavBar.focusIndex = this._tabNavBar._items.toArray().indexOf(this);\n }\n _handleKeydown(event) {\n if (this._tabNavBar.tabPanel && event.keyCode === SPACE) {\n this.elementRef.nativeElement.click();\n }\n }\n _getAriaControls() {\n return this._tabNavBar.tabPanel\n ? this._tabNavBar.tabPanel?.id\n : this.elementRef.nativeElement.getAttribute('aria-controls');\n }\n _getAriaSelected() {\n if (this._tabNavBar.tabPanel) {\n return this.active ? 'true' : 'false';\n }\n else {\n return this.elementRef.nativeElement.getAttribute('aria-selected');\n }\n }\n _getAriaCurrent() {\n return this.active && !this._tabNavBar.tabPanel ? 'page' : null;\n }\n _getRole() {\n return this._tabNavBar.tabPanel ? 'tab' : this.elementRef.nativeElement.getAttribute('role');\n }\n _getTabIndex() {\n if (this._tabNavBar.tabPanel) {\n return this._isActive && !this.disabled ? 0 : -1;\n }\n else {\n return this.tabIndex;\n }\n }\n}\n_MatTabLinkBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: _MatTabLinkBase, deps: [{ token: _MatTabNavBase }, { token: i0.ElementRef }, { token: MAT_RIPPLE_GLOBAL_OPTIONS, optional: true }, { token: 'tabindex', attribute: true }, { token: i7.FocusMonitor }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\n_MatTabLinkBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: _MatTabLinkBase, inputs: { active: \"active\", id: \"id\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: _MatTabLinkBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: _MatTabNavBase }, { type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_RIPPLE_GLOBAL_OPTIONS]\n }] }, { type: undefined, decorators: [{\n type: Attribute,\n args: ['tabindex']\n }] }, { type: i7.FocusMonitor }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }]; }, propDecorators: { active: [{\n type: Input\n }], id: [{\n type: Input\n }] } });\n/**\n * Link inside of a `mat-tab-nav-bar`.\n */\nclass MatTabLink extends _MatTabLinkBase {\n constructor(tabNavBar, elementRef, ngZone, platform, globalRippleOptions, tabIndex, focusMonitor, animationMode) {\n super(tabNavBar, elementRef, globalRippleOptions, tabIndex, focusMonitor, animationMode);\n this._tabLinkRipple = new RippleRenderer(this, ngZone, elementRef, platform);\n this._tabLinkRipple.setupTriggerEvents(elementRef.nativeElement);\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n this._tabLinkRipple._removeTriggerEvents();\n }\n}\nMatTabLink.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: MatTabLink, deps: [{ token: MatTabNav }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i3.Platform }, { token: MAT_RIPPLE_GLOBAL_OPTIONS, optional: true }, { token: 'tabindex', attribute: true }, { token: i7.FocusMonitor }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nMatTabLink.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: MatTabLink, selector: \"[mat-tab-link], [matTabLink]\", inputs: { disabled: \"disabled\", disableRipple: \"disableRipple\", tabIndex: \"tabIndex\" }, host: { listeners: { \"focus\": \"_handleFocus()\", \"keydown\": \"_handleKeydown($event)\" }, properties: { \"attr.aria-controls\": \"_getAriaControls()\", \"attr.aria-current\": \"_getAriaCurrent()\", \"attr.aria-disabled\": \"disabled\", \"attr.aria-selected\": \"_getAriaSelected()\", \"attr.id\": \"id\", \"attr.tabIndex\": \"_getTabIndex()\", \"attr.role\": \"_getRole()\", \"class.mat-tab-disabled\": \"disabled\", \"class.mat-tab-label-active\": \"active\" }, classAttribute: \"mat-tab-link mat-focus-indicator\" }, exportAs: [\"matTabLink\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: MatTabLink, decorators: [{\n type: Directive,\n args: [{\n selector: '[mat-tab-link], [matTabLink]',\n exportAs: 'matTabLink',\n inputs: ['disabled', 'disableRipple', 'tabIndex'],\n host: {\n 'class': 'mat-tab-link mat-focus-indicator',\n '[attr.aria-controls]': '_getAriaControls()',\n '[attr.aria-current]': '_getAriaCurrent()',\n '[attr.aria-disabled]': 'disabled',\n '[attr.aria-selected]': '_getAriaSelected()',\n '[attr.id]': 'id',\n '[attr.tabIndex]': '_getTabIndex()',\n '[attr.role]': '_getRole()',\n '[class.mat-tab-disabled]': 'disabled',\n '[class.mat-tab-label-active]': 'active',\n '(focus)': '_handleFocus()',\n '(keydown)': '_handleKeydown($event)',\n },\n }]\n }], ctorParameters: function () { return [{ type: MatTabNav }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i3.Platform }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_RIPPLE_GLOBAL_OPTIONS]\n }] }, { type: undefined, decorators: [{\n type: Attribute,\n args: ['tabindex']\n }] }, { type: i7.FocusMonitor }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }]; } });\n/**\n * Tab panel component associated with MatTabNav.\n */\nclass MatTabNavPanel {\n constructor() {\n /** Unique id for the tab panel. */\n this.id = `mat-tab-nav-panel-${nextUniqueId++}`;\n }\n}\nMatTabNavPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: MatTabNavPanel, deps: [], target: i0.ɵɵFactoryTarget.Component });\nMatTabNavPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.0.1\", type: MatTabNavPanel, selector: \"mat-tab-nav-panel\", inputs: { id: \"id\" }, host: { attributes: { \"role\": \"tabpanel\" }, properties: { \"attr.aria-labelledby\": \"_activeTabId\", \"attr.id\": \"id\" }, classAttribute: \"mat-tab-nav-panel\" }, exportAs: [\"matTabNavPanel\"], ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: MatTabNavPanel, decorators: [{\n type: Component,\n args: [{\n selector: 'mat-tab-nav-panel',\n exportAs: 'matTabNavPanel',\n template: '',\n host: {\n '[attr.aria-labelledby]': '_activeTabId',\n '[attr.id]': 'id',\n 'class': 'mat-tab-nav-panel',\n 'role': 'tabpanel',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n }]\n }], propDecorators: { id: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatTabsModule {\n}\nMatTabsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: MatTabsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatTabsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.0.1\", ngImport: i0, type: MatTabsModule, declarations: [MatTabGroup,\n MatTabLabel,\n MatTab,\n MatInkBar,\n MatTabLabelWrapper,\n MatTabNav,\n MatTabNavPanel,\n MatTabLink,\n MatTabBody,\n MatTabBodyPortal,\n MatTabHeader,\n MatTabContent], imports: [CommonModule,\n MatCommonModule,\n PortalModule,\n MatRippleModule,\n ObserversModule,\n A11yModule], exports: [MatCommonModule,\n MatTabGroup,\n MatTabLabel,\n MatTab,\n MatTabNav,\n MatTabNavPanel,\n MatTabLink,\n MatTabContent] });\nMatTabsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: MatTabsModule, imports: [CommonModule,\n MatCommonModule,\n PortalModule,\n MatRippleModule,\n ObserversModule,\n A11yModule, MatCommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: MatTabsModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n CommonModule,\n MatCommonModule,\n PortalModule,\n MatRippleModule,\n ObserversModule,\n A11yModule,\n ],\n // Don't export all components because some are only to be used internally.\n exports: [\n MatCommonModule,\n MatTabGroup,\n MatTabLabel,\n MatTab,\n MatTabNav,\n MatTabNavPanel,\n MatTabLink,\n MatTabContent,\n ],\n declarations: [\n MatTabGroup,\n MatTabLabel,\n MatTab,\n MatInkBar,\n MatTabLabelWrapper,\n MatTabNav,\n MatTabNavPanel,\n MatTabLink,\n MatTabBody,\n MatTabBodyPortal,\n MatTabHeader,\n MatTabContent,\n ],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_TAB, MAT_TABS_CONFIG, MAT_TAB_GROUP, MatInkBar, MatTab, MatTabBody, MatTabBodyPortal, MatTabChangeEvent, MatTabContent, MatTabGroup, MatTabHeader, MatTabLabel, MatTabLabelWrapper, MatTabLink, MatTabNav, MatTabNavPanel, MatTabsModule, _MAT_INK_BAR_POSITIONER, _MatTabBodyBase, _MatTabGroupBase, _MatTabHeaderBase, _MatTabLinkBase, _MatTabNavBase, matTabsAnimations };\n","/*!\n * @preserve\n *\n * ++++++++++++++++++++++++++++++++++++++\n * Add to Calendar TimeZones iCal Library\n * ++++++++++++++++++++++++++++++++++++++\n *\n * Version: 1.7.1\n * Creator: Jens Kuerschner (https://jenskuerschner.de)\n * Project: https://github.com/add2cal/timezones-ical-library\n * License: Apache-2.0\n *\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst tzlibVersion = '1.7.1';\nconst tzlibZonesDB = {\n Africa: {\n Abidjan: ['', 0],\n Accra: ['Africa/Abidjan', 0],\n Addis_Ababa: ['Africa/Nairobi', 1],\n Algiers: ['', 2],\n Asmara: ['Africa/Nairobi', 1],\n Asmera: ['Africa/Nairobi', 1],\n Bamako: ['Africa/Abidjan', 0],\n Bangui: ['Africa/Lagos', 3],\n Banjul: ['Africa/Abidjan', 0],\n Bissau: ['', 0],\n Blantyre: ['Africa/Maputo', 4],\n Brazzaville: ['Africa/Lagos', 3],\n Bujumbura: ['Africa/Maputo', 4],\n Cairo: ['', 5],\n Casablanca: ['', 6],\n Ceuta: ['', 7],\n Conakry: ['Africa/Abidjan', 0],\n Dakar: ['Africa/Abidjan', 0],\n Dar_es_Salaam: ['Africa/Nairobi', 1],\n Djibouti: ['Africa/Nairobi', 1],\n Douala: ['Africa/Lagos', 3],\n El_Aaiun: ['', 6],\n Freetown: ['Africa/Abidjan', 0],\n Gaborone: ['Africa/Maputo', 4],\n Harare: ['Africa/Maputo', 4],\n Johannesburg: ['', 8],\n Juba: ['', 4],\n Kampala: ['Africa/Nairobi', 1],\n Khartoum: ['', 4],\n Kigali: ['Africa/Maputo', 4],\n Kinshasa: ['Africa/Lagos', 3],\n Lagos: ['', 3],\n Libreville: ['Africa/Lagos', 3],\n Lome: ['Africa/Abidjan', 0],\n Luanda: ['Africa/Lagos', 3],\n Lubumbashi: ['Africa/Maputo', 4],\n Lusaka: ['Africa/Maputo', 4],\n Malabo: ['Africa/Lagos', 3],\n Maputo: ['', 4],\n Maseru: ['Africa/Johannesburg', 8],\n Mbabane: ['Africa/Johannesburg', 8],\n Mogadishu: ['Africa/Nairobi', 1],\n Monrovia: ['', 0],\n Nairobi: ['', 1],\n Ndjamena: ['', 3],\n Niamey: ['Africa/Lagos', 3],\n Nouakchott: ['Africa/Abidjan', 0],\n Ouagadougou: ['Africa/Abidjan', 0],\n 'Porto-Novo': ['Africa/Lagos', 3],\n Sao_Tome: ['', 0],\n Timbuktu: ['Africa/Abidjan', 0],\n Tripoli: ['', 9],\n Tunis: ['', 2],\n Windhoek: ['', 4],\n },\n America: {\n Adak: ['', 10],\n Anchorage: ['', 11],\n Anguilla: ['America/Puerto_Rico', 12],\n Antigua: ['America/Puerto_Rico', 12],\n Araguaina: ['', 13],\n Argentina: {\n Buenos_Aires: ['', 13],\n Catamarca: ['', 13],\n ComodRivadavia: ['America/Argentina/Catamarca', 13],\n Cordoba: ['', 13],\n Jujuy: ['', 13],\n La_Rioja: ['', 13],\n Mendoza: ['', 13],\n Rio_Gallegos: ['', 13],\n Salta: ['', 13],\n San_Juan: ['', 13],\n San_Luis: ['', 13],\n Tucuman: ['', 13],\n Ushuaia: ['', 13],\n },\n Aruba: ['America/Puerto_Rico', 12],\n Asuncion: ['', 14],\n Atikokan: ['America/Panama', 15],\n Atka: ['America/Adak', 10],\n Bahia_Banderas: ['', 16],\n Bahia: ['', 13],\n Barbados: ['', 12],\n Belem: ['', 13],\n Belize: ['', 16],\n 'Blanc-Sablon': ['America/Puerto_Rico', 12],\n Boa_Vista: ['', 17],\n Bogota: ['', 18],\n Boise: ['', 19],\n Buenos_Aires: ['America/Argentina/Buenos_Aires', 13],\n Cambridge_Bay: ['', 19],\n Campo_Grande: ['', 17],\n Cancun: ['', 15],\n Caracas: ['', 17],\n Catamarca: ['America/Argentina/Catamarca', 13],\n Cayenne: ['', 13],\n Cayman: ['America/Panama', 15],\n Chicago: ['', 20],\n Chihuahua: ['', 16],\n Ciudad_Juarez: ['', 19],\n Coral_Harbour: ['America/Panama', 15],\n Cordoba: ['America/Argentina/Cordoba', 13],\n Costa_Rica: ['', 16],\n Creston: ['America/Phoenix', 21],\n Cuiaba: ['', 17],\n Curacao: ['America/Puerto_Rico', 12],\n Danmarkshavn: ['', 0],\n Dawson_Creek: ['', 21],\n Dawson: ['', 21],\n Denver: ['', 19],\n Detroit: ['', 22],\n Dominica: ['America/Puerto_Rico', 12],\n Edmonton: ['', 19],\n Eirunepe: ['', 18],\n El_Salvador: ['', 16],\n Ensenada: ['America/Tijuana', 23],\n Fort_Nelson: ['', 21],\n Fort_Wayne: ['America/Indiana/Indianapolis', 22],\n Fortaleza: ['', 13],\n Glace_Bay: ['', 24],\n Godthab: ['America/Nuuk', 25],\n Goose_Bay: ['', 26],\n Grand_Turk: ['', 27],\n Grenada: ['America/Puerto_Rico', 12],\n Guadeloupe: ['America/Puerto_Rico', 12],\n Guatemala: ['', 16],\n Guayaquil: ['', 18],\n Guyana: ['', 17],\n Halifax: ['', 24],\n Havana: ['', 28],\n Hermosillo: ['', 21],\n Indiana: {\n Indianapolis: ['', 22],\n Knox: ['', 20],\n Marengo: ['', 22],\n Petersburg: ['', 22],\n Tell_City: ['', 20],\n Vevay: ['', 22],\n Vincennes: ['', 22],\n Winamac: ['', 27],\n },\n Indianapolis: ['America/Indiana/Indianapolis', 22],\n Inuvik: ['', 19],\n Iqaluit: ['', 22],\n Jamaica: ['', 15],\n Jujuy: ['America/Argentina/Jujuy', 13],\n Juneau: ['', 11],\n Kentucky: { Louisville: ['', 22], Monticello: ['', 22] },\n Knox_IN: ['America/Indiana/Knox', 20],\n Kralendijk: ['America/Puerto_Rico', 12],\n La_Paz: ['', 17],\n Lima: ['', 18],\n Los_Angeles: ['', 23],\n Louisville: ['America/Kentucky/Louisville', 22],\n Lower_Princes: ['America/Puerto_Rico', 12],\n Maceio: ['', 13],\n Managua: ['', 16],\n Manaus: ['', 17],\n Marigot: ['America/Puerto_Rico', 12],\n Martinique: ['', 12],\n Matamoros: ['', 20],\n Mazatlan: ['', 21],\n Mendoza: ['America/Argentina/Mendoza', 13],\n Menominee: ['', 20],\n Merida: ['', 16],\n Metlakatla: ['', 11],\n Mexico_City: ['', 16],\n Miquelon: ['', 29],\n Moncton: ['', 24],\n Monterrey: ['', 16],\n Montevideo: ['', 13],\n Montreal: ['America/Toronto', 22],\n Montserrat: ['America/Puerto_Rico', 12],\n Nassau: ['America/Toronto', 22],\n New_York: ['', 22],\n Nipigon: ['America/Toronto', 22],\n Nome: ['', 11],\n Noronha: ['', 30],\n North_Dakota: { Beulah: ['', 20], Center: ['', 20], New_Salem: ['', 20] },\n Nuuk: ['', 25],\n Ojinaga: ['', 20],\n Panama: ['', 15],\n Pangnirtung: ['America/Iqaluit', 22],\n Paramaribo: ['', 13],\n Phoenix: ['', 21],\n Port_of_Spain: ['America/Puerto_Rico', 12],\n 'Port-au-Prince': ['', 22],\n Porto_Acre: ['America/Rio_Branco', 18],\n Porto_Velho: ['', 17],\n Puerto_Rico: ['', 12],\n Punta_Arenas: ['', 13],\n Rainy_River: ['America/Winnipeg', 20],\n Rankin_Inlet: ['', 20],\n Recife: ['', 13],\n Regina: ['', 16],\n Resolute: ['', 31],\n Rio_Branco: ['', 18],\n Rosario: ['America/Argentina/Cordoba', 13],\n Santa_Isabel: ['America/Tijuana', 23],\n Santarem: ['', 13],\n Santiago: ['', 32],\n Santo_Domingo: ['', 12],\n Sao_Paulo: ['', 13],\n Scoresbysund: ['', 33],\n Shiprock: ['America/Denver', 19],\n Sitka: ['', 11],\n St_Barthelemy: ['America/Puerto_Rico', 12],\n St_Johns: ['', 34],\n St_Kitts: ['America/Puerto_Rico', 12],\n St_Lucia: ['America/Puerto_Rico', 12],\n St_Thomas: ['America/Puerto_Rico', 12],\n St_Vincent: ['America/Puerto_Rico', 12],\n Swift_Current: ['', 16],\n Tegucigalpa: ['', 16],\n Thule: ['', 35],\n Thunder_Bay: ['America/Toronto', 22],\n Tijuana: ['', 23],\n Toronto: ['', 22],\n Tortola: ['America/Puerto_Rico', 12],\n Vancouver: ['', 23],\n Virgin: ['America/Puerto_Rico', 12],\n Whitehorse: ['', 21],\n Winnipeg: ['', 20],\n Yakutat: ['', 11],\n Yellowknife: ['America/Edmonton', 19],\n },\n Antarctica: {\n Casey: ['', 36],\n Davis: ['', 37],\n DumontDUrville: ['Pacific/Port_Moresby', 38],\n Macquarie: ['', 39],\n Mawson: ['', 40],\n McMurdo: ['Pacific/Auckland', 41],\n Palmer: ['', 13],\n Rothera: ['', 42],\n South_Pole: ['Pacific/Auckland', 41],\n Syowa: ['Asia/Riyadh', 43],\n Troll: ['', 44],\n Vostok: ['Asia/Urumqi', 45],\n },\n Arctic: { Longyearbyen: ['Europe/Berlin', 46] },\n Asia: {\n Aden: ['Asia/Riyadh', 43],\n Almaty: ['', 45],\n Amman: ['', 43],\n Anadyr: ['', 47],\n Aqtau: ['', 40],\n Aqtobe: ['', 40],\n Ashgabat: ['', 40],\n Ashkhabad: ['Asia/Ashgabat', 40],\n Atyrau: ['', 40],\n Baghdad: ['', 43],\n Bahrain: ['Asia/Qatar', 43],\n Baku: ['', 48],\n Bangkok: ['', 37],\n Barnaul: ['', 49],\n Beirut: ['', 50],\n Bishkek: ['', 45],\n Brunei: ['Asia/Kuching', 51],\n Calcutta: ['Asia/Kolkata', 52],\n Chita: ['', 53],\n Choibalsan: ['', 51],\n Chongqing: ['Asia/Shanghai', 54],\n Chungking: ['Asia/Shanghai', 54],\n Colombo: ['', 55],\n Dacca: ['Asia/Dhaka', 45],\n Damascus: ['', 43],\n Dhaka: ['', 45],\n Dili: ['', 56],\n Dubai: ['', 48],\n Dushanbe: ['', 40],\n Famagusta: ['', 57],\n Gaza: ['', 58],\n Harbin: ['Asia/Shanghai', 54],\n Hebron: ['', 58],\n Ho_Chi_Minh: ['', 37],\n Hong_Kong: ['', 59],\n Hovd: ['', 37],\n Irkutsk: ['', 60],\n Istanbul: ['Europe/Istanbul', 61],\n Jakarta: ['', 62],\n Jayapura: ['', 63],\n Jerusalem: ['', 64],\n Kabul: ['', 65],\n Kamchatka: ['', 47],\n Karachi: ['', 66],\n Kashgar: ['Asia/Urumqi', 45],\n Kathmandu: ['', 67],\n Katmandu: ['Asia/Kathmandu', 67],\n Khandyga: ['', 53],\n Kolkata: ['', 52],\n Krasnoyarsk: ['', 49],\n Kuala_Lumpur: ['Asia/Singapore', 51],\n Kuching: ['', 51],\n Kuwait: ['Asia/Riyadh', 43],\n Macao: ['Asia/Macau', 54],\n Macau: ['', 54],\n Magadan: ['', 68],\n Makassar: ['', 69],\n Manila: ['', 70],\n Muscat: ['Asia/Dubai', 48],\n Nicosia: ['', 71],\n Novokuznetsk: ['', 49],\n Novosibirsk: ['', 49],\n Omsk: ['', 72],\n Oral: ['', 40],\n Phnom_Penh: ['Asia/Bangkok', 37],\n Pontianak: ['', 62],\n Pyongyang: ['', 73],\n Qatar: ['', 43],\n Qostanay: ['', 45],\n Qyzylorda: ['', 40],\n Rangoon: ['Asia/Yangon', 74],\n Riyadh: ['', 43],\n Saigon: ['Asia/Ho_Chi_Minh', 37],\n Sakhalin: ['', 68],\n Samarkand: ['', 40],\n Seoul: ['', 73],\n Shanghai: ['', 54],\n Singapore: ['', 51],\n Srednekolymsk: ['', 68],\n Taipei: ['', 54],\n Tashkent: ['', 40],\n Tbilisi: ['', 48],\n Tehran: ['', 75],\n Tel_Aviv: ['Asia/Jerusalem', 64],\n Thimbu: ['Asia/Thimphu', 45],\n Thimphu: ['', 45],\n Tokyo: ['', 76],\n Tomsk: ['', 49],\n Ujung_Pandang: ['Asia/Makassar', 69],\n Ulaanbaatar: ['', 51],\n Ulan_Bator: ['Asia/Ulaanbaatar', 51],\n Urumqi: ['', 45],\n 'Ust-Nera': ['', 77],\n Vientiane: ['Asia/Bangkok', 37],\n Vladivostok: ['', 77],\n Yakutsk: ['', 53],\n Yangon: ['', 74],\n Yekaterinburg: ['', 78],\n Yerevan: ['', 48],\n },\n Atlantic: {\n Azores: ['', 79],\n Bermuda: ['', 24],\n Canary: ['', 80],\n Cape_Verde: ['', 81],\n Faeroe: ['Atlantic/Faroe', 82],\n Faroe: ['', 82],\n Jan_Mayen: ['Europe/Berlin', 46],\n Madeira: ['', 80],\n Reykjavik: ['Africa/Abidjan', 0],\n South_Georgia: ['', 30],\n St_Helena: ['Africa/Abidjan', 0],\n Stanley: ['', 13],\n },\n Australia: {\n ACT: ['Australia/Sydney', 39],\n Adelaide: ['', 83],\n Brisbane: ['', 84],\n Broken_Hill: ['', 83],\n Canberra: ['Australia/Sydney', 39],\n Currie: ['Australia/Hobart', 85],\n Darwin: ['', 86],\n Eucla: ['', 87],\n Hobart: ['', 85],\n LHI: ['Australia/Lord_Howe', 88],\n Lindeman: ['', 84],\n Lord_Howe: ['', 88],\n Melbourne: ['', 39],\n North: ['Australia/Darwin', 86],\n NSW: ['Australia/Sydney', 39],\n Perth: ['', 89],\n Queensland: ['Australia/Brisbane', 84],\n South: ['Australia/Adelaide', 83],\n Sydney: ['', 39],\n Tasmania: ['Australia/Hobart', 85],\n Victoria: ['Australia/Melbourne', 39],\n West: ['Australia/Perth', 89],\n Yancowinna: ['Australia/Broken_Hill', 83],\n },\n Brazil: {\n Acre: ['America/Rio_Branco', 18],\n DeNoronha: ['America/Noronha', 30],\n East: ['America/Sao_Paulo', 13],\n West: ['America/Manaus', 17],\n },\n Canada: {\n Atlantic: ['America/Halifax', 24],\n Central: ['America/Winnipeg', 20],\n Eastern: ['America/Toronto', 22],\n Mountain: ['America/Edmonton', 19],\n Newfoundland: ['America/St_Johns', 34],\n Pacific: ['America/Vancouver', 23],\n Saskatchewan: ['America/Regina', 16],\n Yukon: ['America/Whitehorse', 21],\n },\n CET: ['', 46],\n Chile: { Continental: ['America/Santiago', 32], EasterIsland: ['Pacific/Easter', 90] },\n CST6CDT: ['', 20],\n Cuba: ['America/Havana', 28],\n EET: ['', 57],\n Egypt: ['Africa/Cairo', 5],\n Eire: ['Europe/Dublin', 91],\n EST: ['', 15],\n EST5EDT: ['', 22],\n Etc: {\n 'GMT-0': ['Etc/GMT', 92],\n 'GMT-1': ['', 93],\n 'GMT-10': ['', 77],\n 'GMT-11': ['', 68],\n 'GMT-12': ['', 47],\n 'GMT-13': ['', 94],\n 'GMT-14': ['', 95],\n 'GMT-2': ['', 96],\n 'GMT-3': ['', 61],\n 'GMT-4': ['', 97],\n 'GMT-5': ['', 78],\n 'GMT-6': ['', 72],\n 'GMT-7': ['', 49],\n 'GMT-8': ['', 60],\n 'GMT-9': ['', 53],\n GMT: ['', 92],\n 'GMT+0': ['Etc/GMT', 92],\n 'GMT+1': ['', 98],\n 'GMT+10': ['', 99],\n 'GMT+11': ['', 100],\n 'GMT+12': ['', 101],\n 'GMT+2': ['', 30],\n 'GMT+3': ['', 13],\n 'GMT+4': ['', 17],\n 'GMT+5': ['', 18],\n 'GMT+6': ['', 102],\n 'GMT+7': ['', 103],\n 'GMT+8': ['', 104],\n 'GMT+9': ['', 105],\n GMT0: ['Etc/GMT', 92],\n Greenwich: ['Etc/GMT', 92],\n UCT: ['Etc/UTC', 106],\n Universal: ['Etc/UTC', 106],\n UTC: ['', 106],\n Zulu: ['Etc/UTC', 106],\n },\n Europe: {\n Amsterdam: ['Europe/Brussels', 46],\n Andorra: ['', 46],\n Astrakhan: ['', 97],\n Athens: ['', 57],\n Belfast: ['Europe/London', 107],\n Belgrade: ['', 7],\n Berlin: ['', 46],\n Bratislava: ['Europe/Prague', 46],\n Brussels: ['', 46],\n Bucharest: ['', 108],\n Budapest: ['', 46],\n Busingen: ['Europe/Zurich', 7],\n Chisinau: ['', 109],\n Copenhagen: ['Europe/Berlin', 46],\n Dublin: ['', 91],\n Gibraltar: ['', 46],\n Guernsey: ['Europe/London', 107],\n Helsinki: ['', 57],\n Isle_of_Man: ['Europe/London', 107],\n Istanbul: ['', 61],\n Jersey: ['Europe/London', 107],\n Kaliningrad: ['', 110],\n Kiev: ['Europe/Kyiv', 111],\n Kirov: ['', 112],\n Kyiv: ['', 111],\n Lisbon: ['', 113],\n Ljubljana: ['Europe/Belgrade', 7],\n London: ['', 107],\n Luxembourg: ['Europe/Brussels', 46],\n Madrid: ['', 7],\n Malta: ['', 46],\n Mariehamn: ['Europe/Helsinki', 57],\n Minsk: ['', 43],\n Monaco: ['Europe/Paris', 46],\n Moscow: ['', 112],\n Nicosia: ['Asia/Nicosia', 71],\n Oslo: ['Europe/Berlin', 46],\n Paris: ['', 46],\n Podgorica: ['Europe/Belgrade', 7],\n Prague: ['', 46],\n Riga: ['', 57],\n Rome: ['', 46],\n Samara: ['', 97],\n San_Marino: ['Europe/Rome', 46],\n Sarajevo: ['Europe/Belgrade', 7],\n Saratov: ['', 97],\n Simferopol: ['', 112],\n Skopje: ['Europe/Belgrade', 7],\n Sofia: ['', 57],\n Stockholm: ['Europe/Berlin', 46],\n Tallinn: ['', 57],\n Tirane: ['', 46],\n Tiraspol: ['Europe/Chisinau', 109],\n Ulyanovsk: ['', 97],\n Uzhgorod: ['Europe/Kyiv', 111],\n Vaduz: ['Europe/Zurich', 7],\n Vatican: ['Europe/Rome', 46],\n Vienna: ['', 46],\n Vilnius: ['', 57],\n Volgograd: ['', 112],\n Warsaw: ['', 46],\n Zagreb: ['Europe/Belgrade', 7],\n Zaporozhye: ['Europe/Kyiv', 111],\n Zurich: ['', 7],\n },\n 'GB-Eire': ['Europe/London', 107],\n GB: ['Europe/London', 107],\n 'GMT-0': ['Etc/GMT', 92],\n GMT: ['Etc/GMT', 92],\n 'GMT+0': ['Etc/GMT', 92],\n GMT0: ['Etc/GMT', 92],\n Greenwich: ['Etc/GMT', 92],\n Hongkong: ['Asia/Hong_Kong', 59],\n HST: ['', 114],\n Iceland: ['Africa/Abidjan', 0],\n Indian: {\n Antananarivo: ['Africa/Nairobi', 1],\n Chagos: ['', 45],\n Christmas: ['Asia/Bangkok', 37],\n Cocos: ['Asia/Yangon', 74],\n Comoro: ['Africa/Nairobi', 1],\n Kerguelen: ['Indian/Maldives', 40],\n Mahe: ['Asia/Dubai', 48],\n Maldives: ['', 40],\n Mauritius: ['', 48],\n Mayotte: ['Africa/Nairobi', 1],\n Reunion: ['Asia/Dubai', 48],\n },\n Iran: ['Asia/Tehran', 75],\n Israel: ['Asia/Jerusalem', 64],\n Jamaica: ['America/Jamaica', 15],\n Japan: ['Asia/Tokyo', 76],\n Kwajalein: ['Pacific/Kwajalein', 115],\n Libya: ['Africa/Tripoli', 9],\n MET: ['', 116],\n Mexico: {\n BajaNorte: ['America/Tijuana', 23],\n BajaSur: ['America/Mazatlan', 21],\n General: ['America/Mexico_City', 16],\n },\n MST: ['', 21],\n MST7MDT: ['', 19],\n Navajo: ['America/Denver', 19],\n 'NZ-CHAT': ['Pacific/Chatham', 117],\n NZ: ['Pacific/Auckland', 41],\n Pacific: {\n Apia: ['', 118],\n Auckland: ['', 41],\n Bougainville: ['', 36],\n Chatham: ['', 117],\n Chuuk: ['Pacific/Port_Moresby', 38],\n Easter: ['', 90],\n Efate: ['', 36],\n Enderbury: ['Pacific/Kanton', 118],\n Fakaofo: ['', 118],\n Fiji: ['', 115],\n Funafuti: ['Pacific/Tarawa', 115],\n Galapagos: ['', 102],\n Gambier: ['', 119],\n Guadalcanal: ['', 36],\n Guam: ['', 120],\n Honolulu: ['', 114],\n Johnston: ['Pacific/Honolulu', 114],\n Kanton: ['', 118],\n Kiritimati: ['', 121],\n Kosrae: ['', 36],\n Kwajalein: ['', 115],\n Majuro: ['Pacific/Tarawa', 115],\n Marquesas: ['', 122],\n Midway: ['Pacific/Pago_Pago', 123],\n Nauru: ['', 115],\n Niue: ['', 124],\n Norfolk: ['', 125],\n Noumea: ['', 36],\n Pago_Pago: ['', 123],\n Palau: ['', 56],\n Pitcairn: ['', 126],\n Pohnpei: ['Pacific/Guadalcanal', 36],\n Ponape: ['Pacific/Guadalcanal', 36],\n Port_Moresby: ['', 38],\n Rarotonga: ['', 127],\n Saipan: ['Pacific/Guam', 120],\n Samoa: ['Pacific/Pago_Pago', 123],\n Tahiti: ['', 127],\n Tarawa: ['', 115],\n Tongatapu: ['', 118],\n Truk: ['Pacific/Port_Moresby', 38],\n Wake: ['Pacific/Tarawa', 115],\n Wallis: ['Pacific/Tarawa', 115],\n Yap: ['Pacific/Port_Moresby', 38],\n },\n Poland: ['Europe/Warsaw', 46],\n Portugal: ['Europe/Lisbon', 113],\n PRC: ['Asia/Shanghai', 54],\n PST8PDT: ['', 23],\n ROC: ['Asia/Taipei', 54],\n ROK: ['Asia/Seoul', 73],\n Singapore: ['Asia/Singapore', 51],\n Turkey: ['Europe/Istanbul', 61],\n UCT: ['Etc/UTC', 106],\n Universal: ['Etc/UTC', 106],\n US: {\n Alaska: ['America/Anchorage', 11],\n Aleutian: ['America/Adak', 10],\n Arizona: ['America/Phoenix', 21],\n Central: ['America/Chicago', 20],\n 'East-Indiana': ['America/Indiana/Indianapolis', 22],\n Eastern: ['America/New_York', 22],\n Hawaii: ['Pacific/Honolulu', 114],\n 'Indiana-Starke': ['America/Indiana/Knox', 20],\n Michigan: ['America/Detroit', 22],\n Mountain: ['America/Denver', 19],\n Pacific: ['America/Los_Angeles', 23],\n Samoa: ['Pacific/Pago_Pago', 123],\n },\n UTC: ['Etc/UTC', 106],\n 'W-SU': ['Europe/Moscow', 112],\n WET: ['', 82],\n Zulu: ['Etc/UTC', 106],\n};\nconst tzlibZonesDetailsDB = [\n '20230517T170335ZGMT+0000+000019700101T000000',\n '20230517T170335ZEAT+0300+030019700101T000000',\n '20230517T170335ZCET+0100+010019700101T000000',\n '20230517T170335ZWAT+0100+010019700101T000000',\n '20230517T170335ZCAT+0200+020019700101T000000',\n '20230517T170335ZEEST+0200+030019700424T000000FREQ=YEARLY;BYMONTH=4;BYDAY=-1FREET+0300+020019701030T000000FREQ=YEARLY;BYMONTH=10;BYDAY=-1FR',\n '20230517T170335Z+01+0100+010019700101T000000',\n '20230517T170336ZCEST+0100+020019700329T020000FREQ=YEARLY;BYMONTH=3;BYDAY=-1SUCET+0200+010019701025T030000FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU',\n '20230517T170335ZSAST+0200+020019700101T000000',\n '20230517T170335ZEET+0200+020019700101T000000',\n '20230517T170336ZHDT-1000-090019700308T020000FREQ=YEARLY;BYMONTH=3;BYDAY=2SUHST-0900-100019701101T020000FREQ=YEARLY;BYMONTH=11;BYDAY=1SU',\n '20230517T170336ZAKDT-0900-080019700308T020000FREQ=YEARLY;BYMONTH=3;BYDAY=2SUAKST-0800-090019701101T020000FREQ=YEARLY;BYMONTH=11;BYDAY=1SU',\n '20230517T170336ZAST-0400-040019700101T000000',\n '20230517T170336Z-03-0300-030019700101T000000',\n '20230517T170336Z-03-0400-030019701004T000000FREQ=YEARLY;BYMONTH=10;BYDAY=1SU-04-0300-040019700322T000000FREQ=YEARLY;BYMONTH=3;BYDAY=4SU',\n '20230517T170336ZEST-0500-050019700101T000000',\n '20230517T170336ZCST-0600-060019700101T000000',\n '20230517T170336Z-04-0400-040019700101T000000',\n '20230517T170336Z-05-0500-050019700101T000000',\n '20230517T170336ZMDT-0700-060019700308T020000FREQ=YEARLY;BYMONTH=3;BYDAY=2SUMST-0600-070019701101T020000FREQ=YEARLY;BYMONTH=11;BYDAY=1SU',\n '20230517T170336ZCDT-0600-050019700308T020000FREQ=YEARLY;BYMONTH=3;BYDAY=2SUCST-0500-060019701101T020000FREQ=YEARLY;BYMONTH=11;BYDAY=1SU',\n '20230517T170336ZMST-0700-070019700101T000000',\n '20230517T170336ZEDT-0500-040019700308T020000FREQ=YEARLY;BYMONTH=3;BYDAY=2SUEST-0400-050019701101T020000FREQ=YEARLY;BYMONTH=11;BYDAY=1SU',\n '20230517T170336ZPDT-0800-070019700308T020000FREQ=YEARLY;BYMONTH=3;BYDAY=2SUPST-0700-080019701101T020000FREQ=YEARLY;BYMONTH=11;BYDAY=1SU',\n '20230517T170336ZADT-0400-030019700308T020000FREQ=YEARLY;BYMONTH=3;BYDAY=2SUAST-0300-040019701101T020000FREQ=YEARLY;BYMONTH=11;BYDAY=1SU',\n '20230517T170335Z-01-0200-010019700328T230000FREQ=YEARLY;BYMONTH=3;BYDAY=-1SA-02-0100-020019701025T000000FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU',\n '20230517T170336ZAST-0300-040019701101T020000FREQ=YEARLY;BYMONTH=11;BYDAY=1SUADT-0400-030019700308T020000FREQ=YEARLY;BYMONTH=3;BYDAY=2SU',\n '20230517T170336ZEST-0400-050019701101T020000FREQ=YEARLY;BYMONTH=11;BYDAY=1SUEDT-0500-040019700308T020000FREQ=YEARLY;BYMONTH=3;BYDAY=2SU',\n '20230517T170336ZCST-0400-050019701101T010000FREQ=YEARLY;BYMONTH=11;BYDAY=1SUCDT-0500-040019700308T000000FREQ=YEARLY;BYMONTH=3;BYDAY=2SU',\n '20230517T170336Z-02-0300-020019700308T020000FREQ=YEARLY;BYMONTH=3;BYDAY=2SU-03-0200-030019701101T020000FREQ=YEARLY;BYMONTH=11;BYDAY=1SU',\n '20230517T170336Z-02-0200-020019700101T000000',\n '20230517T170336ZCST-0500-060019701101T020000FREQ=YEARLY;BYMONTH=11;BYDAY=1SUCDT-0600-050019700308T020000FREQ=YEARLY;BYMONTH=3;BYDAY=2SU',\n '20230517T170336Z-04-0300-040019700405T000000FREQ=YEARLY;BYMONTH=4;BYDAY=1SU-03-0400-030019700906T000000FREQ=YEARLY;BYMONTH=9;BYDAY=1SU',\n '20230517T170335Z+00-0100+000019700329T000000FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU-01+0000-010019701025T010000FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU',\n '20230517T170336ZNST-0230-033019701101T020000FREQ=YEARLY;BYMONTH=11;BYDAY=1SUNDT-0330-023019700308T020000FREQ=YEARLY;BYMONTH=3;BYDAY=2SU',\n '20230517T170335ZADT-0400-030019700308T020000FREQ=YEARLY;BYMONTH=3;BYDAY=2SUAST-0300-040019701101T020000FREQ=YEARLY;BYMONTH=11;BYDAY=1SU',\n '20230517T170335Z+11+1100+110019700101T000000',\n '20230517T170335Z+07+0700+070019700101T000000',\n '20230517T170335Z+10+1000+100019700101T000000',\n '20230517T170335ZAEST+1100+100019700405T030000FREQ=YEARLY;BYMONTH=4;BYDAY=1SUAEDT+1000+110019701004T020000FREQ=YEARLY;BYMONTH=10;BYDAY=1SU',\n '20230517T170335Z+05+0500+050019700101T000000',\n '20230517T170335ZNZDT+1200+130019700927T020000FREQ=YEARLY;BYMONTH=9;BYDAY=-1SUNZST+1300+120019700405T030000FREQ=YEARLY;BYMONTH=4;BYDAY=1SU',\n '20230517T170335Z-03-0300-030019700101T000000',\n '20230517T170335Z+03+0300+030019700101T000000',\n '20230517T170335Z+02+0000+020019700329T010000FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU+00+0200+000019701025T030000FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU',\n '20230517T170335Z+06+0600+060019700101T000000',\n '20230517T170335ZCEST+0100+020019700329T020000FREQ=YEARLY;BYMONTH=3;BYDAY=-1SUCET+0200+010019701025T030000FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU',\n '20230517T170336Z+12+1200+120019700101T000000',\n '20230517T170335Z+04+0400+040019700101T000000',\n '20230517T170336Z+07+0700+070019700101T000000',\n '20230517T170335ZEEST+0200+030019700329T000000FREQ=YEARLY;BYMONTH=3;BYDAY=-1SUEET+0300+020019701025T000000FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU',\n '20230517T170335Z+08+0800+080019700101T000000',\n '20230517T170335ZIST+0530+053019700101T000000',\n '20230517T170336Z+09+0900+090019700101T000000',\n '20230517T170335ZCST+0800+080019700101T000000',\n '20230517T170335Z+0530+0530+053019700101T000000',\n '20230517T170335Z+09+0900+090019700101T000000',\n '20230517T170335ZEEST+0200+030019700329T030000FREQ=YEARLY;BYMONTH=3;BYDAY=-1SUEET+0300+020019701025T040000FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU',\n '20230517T170335ZEET+0300+020019701024T020000FREQ=YEARLY;BYMONTH=10;BYDAY=-1SAEEST+0200+030019700328T020000FREQ=YEARLY;BYMONTH=3;BYDAY=-1SA',\n '20230517T170335ZHKT+0800+080019700101T000000',\n '20230517T170336Z+08+0800+080019700101T000000',\n '20230517T170336Z+03+0300+030019700101T000000',\n '20230517T170335ZWIB+0700+070019700101T000000',\n '20230517T170335ZWIT+0900+090019700101T000000',\n '20230517T170335ZIDT+0200+030019700327T020000FREQ=YEARLY;BYMONTH=3;BYDAY=-1FRIST+0300+020019701025T020000FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU',\n '20230517T170335Z+0430+0430+043019700101T000000',\n '20230517T170335ZPKT+0500+050019700101T000000',\n '20230517T170335Z+0545+0545+054519700101T000000',\n '20230517T170336Z+11+1100+110019700101T000000',\n '20230517T170335ZWITA+0800+080019700101T000000',\n '20230517T170335ZPST+0800+080019700101T000000',\n '20230517T170335ZEET+0300+020019701025T040000FREQ=YEARLY;BYMONTH=10;BYDAY=-1SUEEST+0200+030019700329T030000FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU',\n '20230517T170336Z+06+0600+060019700101T000000',\n '20230517T170335ZKST+0900+090019700101T000000',\n '20230517T170335Z+0630+0630+063019700101T000000',\n '20230517T170335Z+0330+0330+033019700101T000000',\n '20230517T170335ZJST+0900+090019700101T000000',\n '20230517T170336Z+10+1000+100019700101T000000',\n '20230517T170336Z+05+0500+050019700101T000000',\n '20230517T170336Z+00-0100+000019700329T000000FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU-01+0000-010019701025T010000FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU',\n '20230517T170336ZWEST+0000+010019700329T010000FREQ=YEARLY;BYMONTH=3;BYDAY=-1SUWET+0100+000019701025T020000FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU',\n '20230517T170335Z-01-0100-010019700101T000000',\n '20230517T170335ZWEST+0000+010019700329T010000FREQ=YEARLY;BYMONTH=3;BYDAY=-1SUWET+0100+000019701025T020000FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU',\n '20230517T170335ZACST+1030+093019700405T030000FREQ=YEARLY;BYMONTH=4;BYDAY=1SUACDT+0930+103019701004T020000FREQ=YEARLY;BYMONTH=10;BYDAY=1SU',\n '20230517T170335ZAEST+1000+100019700101T000000',\n '20230517T170335ZAEDT+1000+110019701004T020000FREQ=YEARLY;BYMONTH=10;BYDAY=1SUAEST+1100+100019700405T030000FREQ=YEARLY;BYMONTH=4;BYDAY=1SU',\n '20230517T170335ZACST+0930+093019700101T000000',\n '20230517T170335Z+0845+0845+084519700101T000000',\n '20230517T170335Z+1030+1100+103019700405T020000FREQ=YEARLY;BYMONTH=4;BYDAY=1SU+11+1030+110019701004T020000FREQ=YEARLY;BYMONTH=10;BYDAY=1SU',\n '20230517T170335ZAWST+0800+080019700101T000000',\n '20230517T170336Z-06-0500-060019700404T220000FREQ=YEARLY;BYMONTH=4;BYDAY=1SA-05-0600-050019700905T220000FREQ=YEARLY;BYMONTH=9;BYDAY=1SA',\n '20230517T170335ZIST+0000+010019700329T010000FREQ=YEARLY;BYMONTH=3;BYDAY=-1SUGMT+0100+000019701025T020000FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU',\n '20230517T170336ZGMT+0000+000019700101T000000',\n '20230517T170336Z+01+0100+010019700101T000000',\n '20230517T170336Z+13+1300+130019700101T000000',\n '20230517T170336Z+14+1400+140019700101T000000',\n '20230517T170336Z+02+0200+020019700101T000000',\n '20230517T170336Z+04+0400+040019700101T000000',\n '20230517T170336Z-01-0100-010019700101T000000',\n '20230517T170336Z-10-1000-100019700101T000000',\n '20230517T170336Z-11-1100-110019700101T000000',\n '20230517T170336Z-12-1200-120019700101T000000',\n '20230517T170336Z-06-0600-060019700101T000000',\n '20230517T170336Z-07-0700-070019700101T000000',\n '20230517T170336Z-08-0800-080019700101T000000',\n '20230517T170336Z-09-0900-090019700101T000000',\n '20230517T170336ZUTC+0000+000019700101T000000',\n '20230517T170335ZBST+0000+010019700329T010000FREQ=YEARLY;BYMONTH=3;BYDAY=-1SUGMT+0100+000019701025T020000FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU',\n '20230517T170336ZEEST+0200+030019700329T030000FREQ=YEARLY;BYMONTH=3;BYDAY=-1SUEET+0300+020019701025T040000FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU',\n '20230517T170335ZEEST+0200+030019700329T020000FREQ=YEARLY;BYMONTH=3;BYDAY=-1SUEET+0300+020019701025T030000FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU',\n '20230517T170336ZEET+0200+020019700101T000000',\n '20230517T170336ZEET+0300+020019701025T040000FREQ=YEARLY;BYMONTH=10;BYDAY=-1SUEEST+0200+030019700329T030000FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU',\n '20230517T170336ZMSK+0300+030019700101T000000',\n '20230517T170336ZWET+0100+000019701025T020000FREQ=YEARLY;BYMONTH=10;BYDAY=-1SUWEST+0000+010019700329T010000FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU',\n '20230517T170336ZHST-1000-100019700101T000000',\n '20230517T170335Z+12+1200+120019700101T000000',\n '20230517T170335ZMEST+0100+020019700329T020000FREQ=YEARLY;BYMONTH=3;BYDAY=-1SUMET+0200+010019701025T030000FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU',\n '20230517T170335Z+1345+1245+134519700927T024500FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU+1245+1345+124519700405T034500FREQ=YEARLY;BYMONTH=4;BYDAY=1SU',\n '20230517T170335Z+13+1300+130019700101T000000',\n '20230517T170335Z-09-0900-090019700101T000000',\n '20230517T170335ZChST+1000+100019700101T000000',\n '20230517T170335Z+14+1400+140019700101T000000',\n '20230517T170335Z-0930-0930-093019700101T000000',\n '20230517T170335ZSST-1100-110019700101T000000',\n '20230517T170335Z-11-1100-110019700101T000000',\n '20230517T170335Z+12+1100+120019701004T020000FREQ=YEARLY;BYMONTH=10;BYDAY=1SU+11+1200+110019700405T030000FREQ=YEARLY;BYMONTH=4;BYDAY=1SU',\n '20230517T170335Z-08-0800-080019700101T000000',\n '20230517T170335Z-10-1000-100019700101T000000',\n];\nfunction tzlib_get_content(tzName) {\n const nameParts = tzName.split('/');\n if (\n (nameParts.length === 3 &&\n (!tzlibZonesDB[`${nameParts[0]}`] ||\n !tzlibZonesDB[`${nameParts[0]}`][`${nameParts[1]}`] ||\n !tzlibZonesDB[`${nameParts[0]}`][`${nameParts[1]}`][`${nameParts[2]}`])) ||\n (nameParts.length === 2 &&\n (!tzlibZonesDB[`${nameParts[0]}`] || !tzlibZonesDB[`${nameParts[0]}`][`${nameParts[1]}`])) ||\n (nameParts.length === 1 && !tzlibZonesDB[`${nameParts[0]}`])\n ) {\n console.error('Given timezone not valid.');\n return '';\n }\n if (nameParts.length === 3) {\n return [\n tzlibZonesDB[`${nameParts[0]}`][`${nameParts[1]}`][`${nameParts[2]}`][0],\n tzlib_enrich_data(\n tzlibZonesDetailsDB[tzlibZonesDB[`${nameParts[0]}`][`${nameParts[1]}`][`${nameParts[2]}`][1]],\n ),\n ];\n }\n if (nameParts.length === 2) {\n return [\n tzlibZonesDB[`${nameParts[0]}`][`${nameParts[1]}`][0],\n tzlib_enrich_data(tzlibZonesDetailsDB[tzlibZonesDB[`${nameParts[0]}`][`${nameParts[1]}`][1]]),\n ];\n }\n return [\n tzlibZonesDB[`${nameParts[0]}`][0],\n tzlib_enrich_data(tzlibZonesDetailsDB[tzlibZonesDB[`${nameParts[0]}`][1]]),\n ];\n}\nfunction tzlib_enrich_data(string) {\n const shortenerMap = {\n '
': '',\n 'TZNAME:': '',\n 'TZOFFSETFROM:': '',\n 'TZOFFSETTO:': '',\n 'DTSTART:': '',\n 'RRULE:': '',\n 'BEGIN:DAYLIGHT': '',\n 'END:DAYLIGHT': '',\n 'BEGIN:STANDARD': '',\n 'END:STANDARD': '',\n };\n for (const [key, value] of Object.entries(shortenerMap)) {\n string = string.replaceAll(value, key);\n }\n return string;\n}\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction tzlib_get_ical_block(tzName, jsonType = false) {\n const tzBlock = tzlib_get_content(tzName);\n if (tzBlock[1] == null || tzBlock[1] == '') {\n return '';\n }\n const location = (function () {\n if (tzBlock[0] == '') {\n return tzName;\n } else {\n return tzBlock[0];\n }\n })();\n const tzidLine = 'TZID=' + location;\n const output = [\n 'BEGIN:VTIMEZONE\\r\\nTZID:' +\n location +\n '\\r\\nX-LIC-LOCATION:' +\n location +\n '\\r\\nLAST-MODIFIED:' +\n tzBlock[1].replace(/[^\\w_\\-:,;=+/
]/g, '').replace(/
/g, '\\r\\n') +\n 'END:VTIMEZONE',\n tzidLine,\n ];\n if (jsonType) {\n return JSON.stringify(output);\n }\n return output;\n}\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction tzlib_get_offset(tzName, isoDate, isoTime) {\n const tzBlock = tzlib_get_content(tzName);\n if (tzBlock[1] == null || tzBlock[1] == '') {\n return '';\n }\n if (!isoDate.match(/^\\d{4}-\\d{2}-\\d{2}$/)) {\n console.error('offset calculation failed: date misspelled [-> YYYY-MM-DD]');\n return '';\n }\n if (!isoTime.match(/^\\d{2}:\\d{2}$/)) {\n console.error('offset calculation failed: time misspelled [-> hh:mm]');\n return '';\n }\n if (!tzBlock[1].match(/BEGIN:DAYLIGHT/i)) {\n return tzBlock[1].match(/TZOFFSETTO:([+|-]\\d{4})/i)[1];\n }\n const dateString = isoDate + 'T' + isoTime + ':00';\n const date = new Date(dateString);\n const dateYear = date.getFullYear();\n const dateMonth = date.getMonth() + 1;\n const dateDay = date.getDate();\n const dateHour = date.getHours();\n const timezoneData = tzBlock[1].replace(/[^\\w_\\-:,;=+/
]/g, '').split('
');\n const tzBreakpoints = { 1: {}, 2: {} };\n let breakpointCount = 0;\n for (let i = 0; i < timezoneData.length; i++) {\n if (timezoneData[`${i}`].startsWith('TZOFFSETTO')) {\n breakpointCount++;\n tzBreakpoints[`${breakpointCount}`].offset = timezoneData[`${i}`].split(':')[1];\n }\n if (timezoneData[`${i}`].startsWith('DTSTART')) {\n tzBreakpoints[`${breakpointCount}`].hour = parseInt(timezoneData[`${i}`].substr(17, 2));\n }\n if (timezoneData[`${i}`].startsWith('RRULE')) {\n let rruleParts = timezoneData[`${i}`].split(';');\n let rruleMonth = parseInt(rruleParts[1].split('=')[1]);\n tzBreakpoints[`${breakpointCount}`].month = parseInt(rruleMonth);\n tzBreakpoints[`${breakpointCount}`].day = rruleParts[2].split('=')[1];\n }\n }\n if (tzBreakpoints[1].month > tzBreakpoints[2].month) {\n [tzBreakpoints[1], tzBreakpoints[2]] = [tzBreakpoints[2], tzBreakpoints[1]];\n }\n if (dateMonth != tzBreakpoints[1].month && dateMonth != tzBreakpoints[2].month) {\n if (dateMonth < tzBreakpoints[1].month || dateMonth > tzBreakpoints[2].month) {\n return tzBreakpoints[2].offset;\n } else {\n return tzBreakpoints[1].offset;\n }\n }\n const theCase = (function () {\n return Object.keys(tzBreakpoints).find((key) => tzBreakpoints[`${key}`].month == dateMonth);\n })();\n const helperArrayWeekdays = ['SU', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA'];\n const numberDays = new Date(dateYear, dateMonth, 0).getDate();\n let weekdayCount = new Date(dateYear, dateMonth - 1, 1).getDay();\n const weekdays = { SU: {}, MO: {}, TU: {}, WE: {}, TH: {}, FR: {}, SA: {} };\n for (let d = 1; d <= numberDays; d++) {\n const occurence = Object.keys(weekdays[helperArrayWeekdays[`${weekdayCount}`]]).length + 1;\n weekdays[helperArrayWeekdays[`${weekdayCount}`]][`${occurence}`] = d;\n weekdayCount++;\n if (weekdayCount == 7) {\n weekdayCount = 0;\n }\n }\n const actualDay = (function () {\n if (tzBreakpoints[`${theCase}`].day[0] == '-') {\n const breakpointWeekday = tzBreakpoints[`${theCase}`].day.substr(2, 2);\n const dayIndex =\n Object.keys(weekdays[`${breakpointWeekday}`]).length +\n 1 -\n parseInt(tzBreakpoints[`${theCase}`].day[1]);\n return weekdays[`${breakpointWeekday}`][`${dayIndex}`];\n } else {\n const breakpointWeekday = tzBreakpoints[`${theCase}`].day.substr(1, 2);\n return weekdays[`${breakpointWeekday}`][tzBreakpoints[`${theCase}`].day[0]];\n }\n })();\n if (dateDay > actualDay || (dateDay == actualDay && dateHour >= tzBreakpoints[`${theCase}`].hour)) {\n return tzBreakpoints[`${theCase}`].offset;\n }\n const fallbackCase = (function () {\n if (theCase == 1) {\n return 2;\n } else {\n return 1;\n }\n })();\n return tzBreakpoints[`${fallbackCase}`].offset;\n}\nlet tzlibZoneNames = [];\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction tzlib_get_timezones(jsonType = false) {\n if (tzlibZoneNames.length == 0) {\n tzlibZoneNames = (function () {\n let namesArr = [];\n for (const [key, value] of Object.entries(tzlibZonesDB)) {\n if (typeof value === 'object' && !Array.isArray(value)) {\n for (const [key2, value2] of Object.entries(value)) {\n if (typeof value2 === 'object' && !Array.isArray(value2)) {\n for (const [key3] of Object.entries(value2)) {\n namesArr.push(key + '/' + key2 + '/' + key3);\n }\n } else {\n namesArr.push(key + '/' + key2);\n }\n }\n } else {\n namesArr.push(key);\n }\n }\n return namesArr;\n })();\n }\n if (jsonType) {\n return JSON.stringify(tzlibZoneNames);\n }\n return tzlibZoneNames;\n}\nexport { tzlib_get_ical_block, tzlib_get_offset, tzlib_get_timezones };\n","import { tzlib_get_ical_block, tzlib_get_offset, tzlib_get_timezones } from 'timezones-ical-library';\n/*!\n * @preserve\n *\n * ++++++++++++++++++++++\n * Add to Calendar Button\n * ++++++++++++++++++++++\n *\n * Version: 2.3.2\n * Creator: Jens Kuerschner (https://jenskuerschner.de)\n * Project: https://github.com/add2cal/add-to-calendar-button\n * License: Elastic License 2.0 (ELv2) (https://github.com/add2cal/add-to-calendar-button/blob/main/LICENSE.txt)\n * Note: DO NOT REMOVE THE COPYRIGHT NOTICE ABOVE!\n *\n */\nconst atcbVersion = '2.3.2';\nconst atcbCssTemplate = {\r\"default\": \":host{width:fit-content;--base-font-size-l:16px;--base-font-size-m:16px;--base-font-size-s:16px;--font:arial,helvetica,sans-serif;--keyboard-focus:#1e90ff;--btn-background:#f5f5f5;--btn-background-hover:#fff;--btn-border:#d2d2d2;--btn-text:#333;--btn-text-hover:#000;--btn-shadow:rgba(0 0 0 / 20%) 2px 5px 18px -1px,rgba(0 0 0 / 15%) 2px 2px 10px -3px;--btn-shadow-hover:rgba(0 0 0 / 35%) 2px 5px 18px -1px,rgba(0 0 0 / 30%) 2px 2px 10px -3px;--btn-shadow-active:rgba(0 0 0 / 50%) 2px 5px 18px -1px,rgba(0 0 0 / 45%) 2px 2px 10px -3px;--list-background:#f5f5f5;--list-background-hover:#fff;--list-text:#333;--list-text-hover:#000;--list-close-background:#e5e5e5;--list-close-text:#777;--list-shadow:rgba(0 0 0 / 20%) 2px 5px 18px -1px,rgba(0 0 0 / 40%) 2px 2px 10px -3px;--list-shadow-modal:rgba(0 0 0 / 60%) 3px 6px 40px -5px,rgba(0 0 0 / 60%) 3px 3px 15px -4px;--modal-text:#000;--modal-background:#f5f5f5;--modal-btn-bar:#c6c8cd;--modal-btn-background:#f5f5f5;--modal-btn-secondary-background:#e2e1e6;--modal-btn-background-hover:#fff;--modal-btn-text:#2e2e2e;--modal-btn-text-hover:#161616;--modal-btn-secondary-text:#666567;--modal-shadow:drop-shadow(5px 8px 30px rgba(0 0 0 / 70%));--modal-shadow-btn:rgba(0 0 0 / 10%) 2px 3px 10px -3px,rgba(0 0 0 / 25%) 1px 1px 8px -4px;--modal-shadow-btn-hover:rgba(0 0 0 / 35%) 3px 5px 15px -2px,rgba(0 0 0 / 20%) 2px 4px 25px -6px;--date-btn-text:#1d1d1e;--date-btn-text-secondary:#3a3a3f;--date-btn-cal-day-text:#fff;--date-btn-cal-month-text:#d3d2d7;--date-btn-cal-background:#313132;--date-btn-background:#eae9ed;--date-btn-background-hover:#fff;--date-btn-shadow:rgba(0 0 0 / 40%) 1px 3px 15px -4px,rgba(0 0 0 / 20%) 1px 1px 8px -4px;--date-btn-shadow-hover:rgba(0 0 0 / 40%) 4px 6px 18px -1px,rgba(0 0 0 / 35%) 4px 5px 25px -2px;--checkmark-background:radial-gradient(circle,#fff 0,rgba(255 255 255 / 80%) 40%,rgba(255 255 255 / 0%) 70%);--overlay-background:rgba(20 20 20 / 25%);--overlay-cursor:url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23777' width='16' height='16' viewBox='0 0 122.878 122.88'%3E%3Cpath d='M1.426 8.313a4.87 4.87 0 0 1 0-6.886 4.87 4.87 0 0 1 6.886 0l53.127 53.127 53.127-53.127a4.87 4.87 0 0 1 6.887 0 4.87 4.87 0 0 1 0 6.886L68.324 61.439l53.128 53.128a4.87 4.87 0 0 1-6.887 6.886L61.438 68.326 8.312 121.453a4.87 4.87 0 0 1-6.886 0 4.87 4.87 0 0 1 0-6.886l53.127-53.128L1.426 8.313h0z'/%3E%3C/svg%3E\\\") 16 16,crosshair;--icon-ms365-color:#ea3e23;--icon-yahoo-color:#5f01d1;--icon-filter:none}:host(.atcb-dark){--btn-background:#2e2e2e;--btn-background-hover:#373737;--btn-border:#4d4d4d;--btn-text:#dedede;--btn-text-hover:#f1f1f1;--btn-shadow:rgba(255 255 255 / 5%) -12px -5px 20px -8px,rgba(255 255 255 / 6%) -7px -5px 15px -3px,rgba(0 0 0 / 50%) 2px 5px 18px -1px,rgba(0 0 0 / 40%) 3px 3px 20px -3px;--btn-shadow-hover:rgba(255 255 255 / 6%) -12px -5px 23px -8px,rgba(255 255 255 / 7%) -7px -5px 18px -3px,rgba(0 0 0 / 60%) 2px 5px 19px -1px,rgba(0 0 0 / 50%) 3px 3px 22px -3px;--btn-shadow-active:rgba(255 255 255 / 7%) -12px -5px 23px -8px,rgba(255 255 255 / 8%) -7px -5px 18px -3px,rgba(0 0 0 / 70%) 2px 5px 19px -1px,rgba(0 0 0 / 60%) 3px 3px 22px -3px;--list-background:#2e2e2e;--list-background-hover:#373737;--list-text:#dedede;--list-text-hover:#f1f1f1;--list-close-background:#282828;--list-shadow:rgba(255 255 255 / 5%) -12px -5px 20px -8px,rgba(255 255 255 / 6%) -7px -5px 15px -3px,rgba(0 0 0 / 50%) 2px 5px 18px -1px,rgba(0 0 0 / 40%) 3px 3px 20px -3px;--list-shadow-modal:rgba(255 255 255 / 8%) -12px -5px 30px -8px,rgba(255 255 255 / 8%) -7px -5px 15px -3px,rgba(0 0 0 / 60%) 4px 6px 50px -4px,rgba(0 0 0 / 90%) 8px 12px 40px -2px;--modal-text:#f1f1f1;--modal-background:#242424;--modal-btn-bar:#38383a;--modal-btn-background:#181819;--modal-btn-secondary-background:#2e2d30;--modal-btn-background-hover:#434246;--modal-btn-text:#dbdbdb;--modal-btn-text-hover:#fff;--modal-btn-secondary-text:#b8b8b8;--modal-shadow:drop-shadow(5px 8px 30px rgba(0 0 0 / 90%));--modal-shadow-btn:rgba(255 255 255 / 5%) -2px -2px 10px,rgba(0 0 0 / 30%) 1px 2px 8px -1px;--date-btn-text:#ebebf0;--date-btn-text-secondary:#b5b5bd;--date-btn-cal-day-text:#101010;--date-btn-cal-month-text:#3e3e3f;--date-btn-cal-background:#c7c7cd;--date-btn-background:#363636;--date-btn-background-hover:#474747;--date-btn-shadow:rgba(255 255 255 / 10%) -8px -6px 20px,rgba(0 0 0 / 50%) 1px 3px 25px -8px,rgba(0 0 0 / 50%) 1px 1px 10px -3px;--checkmark-background:radial-gradient(circle,rgba(0 0 0 / 50%) 0,rgba(0 0 0 / 30%) 40%,rgba(0 0 0 / 0%) 70%);--overlay-background:rgba(20 20 20 / 60%);--icon-ms365-color:#ea3e23;--icon-yahoo-color:#bebebe;--icon-filter:grayscale(.2)}.atcb-button-wrapper,.atcb-list,.atcb-modal-box{font-size:var(--base-font-size-l)}@media (width <= 991px){.atcb-button-wrapper,.atcb-list,.atcb-modal-box{font-size:var(--base-font-size-m)}}@media (width <= 575px){.atcb-button-wrapper,.atcb-list,.atcb-modal-box{font-size:var(--base-font-size-s)}}.atcb-button-wrapper{display:block;padding:5px;position:relative}.atcb-button{align-items:center;background-color:var(--btn-background);border:1px solid var(--btn-border);border-radius:6px;box-shadow:var(--btn-shadow);color:var(--btn-text);cursor:pointer;display:flex;font-family:var(--font);font-size:1em;font-weight:600;justify-content:center;line-height:1.5em;margin:.13em;max-width:350px;min-width:10em;padding:.65em 1em;position:relative;text-align:center;touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;width:auto;z-index:1}.atcb-button.atcb-no-text,.atcb-button:disabled{min-width:0}.atcb-rtl .atcb-button{direction:rtl;text-align:right}.atcb-button:focus-visible{outline:2px solid var(--keyboard-focus)}.atcb-button:not([disabled]):focus,.atcb-button:not([disabled]):hover{background-color:var(--btn-background-hover);box-shadow:var(--btn-shadow-hover);color:var(--btn-text-hover)}.atcb-button.atcb-active:not(.atcb-modal-style,.atcb-dropoverlay){z-index:15000000}.atcb-button.atcb-active:not(.atcb-modal-style,.atcb-dropoverlay),.atcb-button.atcb-single:not([disabled]):focus,.atcb-button.atcb-single:not([disabled]):hover{background-color:var(--btn-background-hover);box-shadow:var(--btn-shadow-active);color:var(--btn-text-hover);margin:0;padding:.78em 1.13em}.atcb-button.atcb-active.atcb-dropoverlay{z-index:14000090}.atcb-icon{height:1em;margin-bottom:.3em;margin-right:.8em;flex-grow:0;flex-shrink:0}.atcb-rtl .atcb-icon{margin-right:0;margin-left:.8em}.atcb-no-text .atcb-icon{margin-right:0;margin-left:0}.atcb-icon svg{height:100%;fill:currentcolor;width:auto}.atcb-text{overflow-wrap:anywhere}.atcb-button:disabled .atcb-text{letter-spacing:.1em}.atcb-dropdown-anchor{bottom:4px;height:1px;width:100%;opacity:0;position:absolute}.atcb-list-wrapper{box-sizing:border-box;padding:0 4px;position:absolute;z-index:14000090}.atcb-list-wrapper.atcb-dropoverlay{z-index:15000000;max-width:max-content}.atcb-list{border-radius:0 0 6px 6px;box-sizing:border-box;box-shadow:var(--list-shadow);color:var(--list-text);display:block;font-family:var(--font);min-width:100%;position:relative;user-select:none;-webkit-user-select:none;width:fit-content}.atcb-list-item{align-items:center;background-color:var(--list-background);box-sizing:border-box;cursor:pointer;display:flex;font-size:1em;line-height:1.75em;padding:.8em;text-align:left;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.atcb-rtl .atcb-list-item{direction:rtl;text-align:right}.atcb-list-item:hover{background-color:var(--list-background-hover);color:var(--list-text-hover)}.atcb-list-item:focus-visible{background-color:var(--list-background-hover);color:var(--keyboard-focus);font-weight:600;outline:0}.atcb-list-item:last-child{border-radius:0 0 6px 6px}.atcb-dropup .atcb-list-item:last-child{border-radius:0;padding-bottom:1.25em}.atcb-dropoverlay .atcb-list .atcb-list-item:first-child,.atcb-dropup .atcb-list,.atcb-dropup .atcb-list-item:first-child,.atcb-list.atcb-modal .atcb-list-item:first-child{border-radius:6px 6px 0 0}.atcb-dropoverlay .atcb-list .atcb-list-item:only-child,.atcb-list.atcb-modal .atcb-list-item:only-child{border-radius:6px}.atcb-list.atcb-generated-button:not(.atcb-modal) .atcb-list-item:first-child{padding-top:1.25em}.atcb-dropoverlay .atcb-list.atcb-generated-button:not(.atcb-modal) .atcb-list-item:first-child,.atcb-dropup .atcb-list.atcb-generated-button:not(.atcb-modal) .atcb-list-item:first-child{padding-top:.8em}.atcb-dropoverlay .atcb-list,.atcb-list.atcb-modal{border-radius:6px}.atcb-list.atcb-modal{box-shadow:var(--list-shadow-modal)}.atcb-list-item .atcb-icon{margin-bottom:.5em;margin-right:.6em;width:1.125em}.atcb-rtl .atcb-list-item .atcb-icon{margin-right:0;margin-left:.6em}.atcb-no-text .atcb-list-item .atcb-icon{margin:0 auto}.atcb-list-item-close{background-color:var(--list-close-background)}.atcb-list-item.atcb-list-item-close:not(:focus-visible){color:var(--list-close-text)}.atcb-list-item-close svg{fill:currentcolor}.atcb-modal{display:block;margin:auto;min-width:250px;width:auto;position:relative;z-index:14000090}.atcb-modal-box{filter:var(--modal-shadow);color:var(--modal-text);cursor:default;box-sizing:border-box;font-family:var(--font);line-height:1.5em;text-align:left;user-select:none;-webkit-user-select:none;touch-action:manipulation;width:100%;margin-bottom:20px;max-width:32em;-webkit-tap-highlight-color:transparent}.atcb-modal-box.atcb-rtl{text-align:right;direction:rtl;padding:1.25em 1em 1.25em 2em}.atcb-modal-icon{height:2.5em;width:2.5em;border-radius:100%;background-color:var(--modal-background);padding:1.75em;margin:auto}.atcb-modal-icon svg{height:auto;fill:currentcolor;width:100%}.atcb-modal-headline{background-color:var(--modal-background);border-radius:6px 6px 0 0;font-size:1.3em;font-weight:600;line-height:1.5em;padding:1.8em 2em 1.3em;text-transform:uppercase;text-align:center}.atcb-modal-icon+.atcb-modal-headline{margin-top:-2.6em;padding-top:2.6em}.atcb-modal-content{background-color:var(--modal-background);font-size:1em;padding:.3em 2.5em 2.25em}@media (width <= 575px){.atcb-modal-headline{padding:1.8em 1em 1em}.atcb-modal-content{padding:.3em 1em 2em}}.atcb-modal-buttons{background-color:var(--modal-btn-bar);border-radius:0 0 6px 6px;box-sizing:border-box;padding:.8em 1em;text-align:center;width:100%;display:flex;justify-content:center;flex-flow:row-reverse wrap;align-items:center}a.atcb-modal-btn,button.atcb-modal-btn{background-color:var(--modal-btn-secondary-background);border:0;border-radius:6px;box-shadow:var(--modal-shadow-btn);color:var(--modal-btn-secondary-text);cursor:pointer;display:inline-block;font-family:var(--font);font-size:.9em;font-weight:600;line-height:1.5em;margin:.625em;padding:.625em 1.25em;position:relative;text-align:center;text-decoration:none;touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;text-transform:uppercase}a.atcb-modal-btn.atcb-modal-btn-primary,button.atcb-modal-btn.atcb-modal-btn-primary{background-color:var(--modal-btn-background);color:var(--modal-btn-text)}a.atcb-modal-btn:hover,button.atcb-modal-btn:hover{background-color:var(--modal-btn-background-hover);box-shadow:var(--modal-shadow-btn-hover);color:var(--modal-btn-text-hover);text-decoration:none}a.atcb-modal-btn:focus-visible,button.atcb-modal-btn:focus-visible{background-color:var(--modal-btn-background-hover);outline:2px solid var(--keyboard-focus)}.atcb-subevent-btn{display:flex;align-items:flex-start;cursor:pointer;font-family:var(--font);font-size:1em;box-shadow:var(--date-btn-shadow);background-color:var(--date-btn-background);border:0;border-radius:6px;padding:0;margin:0;touch-action:manipulation;position:relative;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}.atcb-subevent-btn:hover{align-items:center}.atcb-subevent-btn:focus,.atcb-subevent-btn:hover{background-color:var(--date-btn-background-hover);box-shadow:var(--date-btn-shadow-hover)}.atcb-subevent-btn:focus-visible{outline:2px solid var(--keyboard-focus)}.atcb-subevent-btn+.atcb-subevent-btn{margin-top:30px}.atcb-date-btn-left{border-radius:4px 0 0 4px;align-self:stretch;background-color:var(--date-btn-cal-background);color:var(--date-btn-background-hover);padding:.7em .8em .8em;width:2.7em;align-items:center;display:flex;flex-direction:column}.atcb-rtl .atcb-date-btn-left{border-radius:0 4px 4px 0}.atcb-subevent-btn:hover .atcb-date-btn-left{opacity:.8}.atcb-date-btn-day{color:var(--date-btn-cal-day-text);font-weight:300;font-size:2em;word-break:keep-all;padding-bottom:.1em}.atcb-initialized[lang=ja] .atcb-date-btn-day,.atcb-initialized[lang=ko] .atcb-date-btn-day,.atcb-initialized[lang=zh] .atcb-date-btn-day{font-size:1.3em}.atcb-date-btn-month{color:var(--date-btn-cal-month-text);font-weight:600;font-size:1em}.atcb-date-btn-right{position:relative;color:var(--date-btn-text);min-width:12.5em;overflow-wrap:anywhere}.atcb-date-btn-details{opacity:1;padding:.7em .8em;text-align:left}.atcb-rtl .atcb-date-btn-details{text-align:right}.atcb-date-btn-hover{position:absolute;top:0;left:0;width:100%;opacity:0;height:100%;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:1em;padding:.3em;box-sizing:border-box}.atcb-subevent-btn:hover .atcb-date-btn-details{opacity:0}.atcb-subevent-btn:hover .atcb-date-btn-hover{opacity:1}.atcb-date-btn-headline{font-weight:600;font-size:.9em;margin-bottom:.5em;overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.atcb-date-btn-content{display:flex;align-items:flex-start;font-size:.8em;color:var(--date-btn-text-secondary)}.atcb-date-btn-content-location{overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;word-break:break-all}.atcb-date-btn-content-icon{display:inline-block;height:.8em;width:1.3em;flex:0 0 1.3em}.atcb-rtl .atcb-date-btn-content-icon{margin-right:0;margin-left:.5em}.atcb-initialized[lang=ja] .atcb-date-btn-content:not(.atcb-date-btn-content-location) .atcb-date-btn-content-icon,.atcb-initialized[lang=ko] .atcb-date-btn-content:not(.atcb-date-btn-content-location) .atcb-date-btn-content-icon,.atcb-initialized[lang=zh] .atcb-date-btn-content:not(.atcb-date-btn-content-location) .atcb-date-btn-content-icon{margin-top:.15em}.atcb-date-btn-content-icon svg{height:100%;fill:currentcolor;width:auto}.atcb-date-btn-content+.atcb-date-btn-content{margin-top:.3em}.atcb-date-btn-content-text span:not(.atcb-icon-ical){padding-right:.3em;display:inline-block}.atcb-checkmark{display:none}.atcb-saved .atcb-checkmark{box-sizing:content-box;color:var(--btn-text);display:block;position:absolute;top:-.9em;right:-.3em;padding:.5em;background:var(--checkmark-background);border-radius:100%;height:1.5em}.atcb-button.atcb-active:not(.atcb-modal-style,.atcb-dropoverlay) .atcb-checkmark,.atcb-button.atcb-single:focus .atcb-checkmark,.atcb-button.atcb-single:hover .atcb-checkmark{top:-.77em;right:-.17em}.atcb-checkmark svg{height:100%;fill:currentcolor;width:auto}#atcb-bgoverlay{backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);background-color:var(--overlay-background);border:0;box-sizing:border-box;display:flex;height:calc(100vh + 100px);inset-inline:0;left:0;right:0;top:0;min-height:100%;min-width:100%;overflow-y:auto;padding:20px 20px 130px;position:fixed;width:100vw;z-index:14000000}#atcb-bgoverlay:not(dialog){animation:atcb-bgoverlay-animate .2s ease 0s 1 normal forwards;opacity:0}#atcb-bgoverlay.atcb-no-bg{animation:none;backdrop-filter:none;-webkit-backdrop-filter:none;opacity:1;background-color:transparent}@keyframes atcb-bgoverlay-animate{0%{opacity:0}100%{opacity:1}}#atcb-bgoverlay.atcb-click:hover{cursor:var(--overlay-cursor)}.atcb-icon .atcb-icon-apple svg{fill:currentcolor}.atcb-icon .atcb-icon-ical svg{fill:currentcolor}.atcb-icon .atcb-icon-ms365 svg{fill:var(--icon-ms365-color)}.atcb-icon .atcb-icon-yahoo svg{fill:var(--icon-yahoo-color)}.atcb-icon .atcb-icon-google svg,.atcb-icon .atcb-icon-msteams svg,.atcb-icon .atcb-icon-outlookcom svg{filter:var(--icon-filter)}\",\r\"3d\": \":host{width:fit-content;--base-font-size-l:16px;--base-font-size-m:16px;--base-font-size-s:16px;--font:arial,helvetica,sans-serif;--keyboard-focus:#1e90ff;--btn-background:#f5f5f5;--btn-background-hover:#fff;--btn-border:#d2d2d2;--btn-text:#333;--btn-text-hover:#000;--btn-shadow:rgba(0 0 0 / 20%) 2px 5px 18px -1px,rgba(0 0 0 / 15%) 2px 2px 10px -3px;--btn-shadow-hover:rgba(0 0 0 / 35%) 2px 5px 18px -1px,rgba(0 0 0 / 30%) 2px 2px 10px -3px;--btn-shadow-active:rgba(0 0 0 / 50%) 2px 10px 20px -2px,rgba(0 0 0 / 45%) 2px 4px 12px -3px;--btn-shadow-active-up:rgba(0 0 0 / 40%) 2px -8px 15px -2px,rgba(0 0 0 / 50%) 2px 4px 12px -3px;--list-background:#f5f5f5;--list-background-hover:#fff;--list-text:#333;--list-text-hover:#000;--list-close-background:#e5e5e5;--list-close-text:#777;--list-shadow:rgba(0 0 0 / 20%) 2px 5px 18px -1px,rgba(0 0 0 / 40%) 2px 2px 10px -3px;--list-shadow-modal:rgba(0 0 0 / 60%) 3px 6px 40px -5px,rgba(0 0 0 / 60%) 3px 3px 15px -4px;--modal-text:#000;--modal-background:#f5f5f5;--modal-btn-bar:#c6c8cd;--modal-btn-background:#f5f5f5;--modal-btn-secondary-background:#e2e1e6;--modal-btn-background-hover:#fff;--modal-btn-text:#2e2e2e;--modal-btn-text-hover:#161616;--modal-btn-secondary-text:#666567;--modal-shadow:drop-shadow(5px 8px 30px rgba(0 0 0 / 70%));--modal-shadow-btn:rgba(0 0 0 / 10%) 2px 3px 10px -3px,rgba(0 0 0 / 25%) 1px 1px 8px -4px;--modal-shadow-btn-hover:rgba(0 0 0 / 35%) 3px 5px 15px -2px,rgba(0 0 0 / 20%) 2px 4px 25px -6px;--date-btn-text:#1d1d1e;--date-btn-text-secondary:#3a3a3f;--date-btn-cal-day-text:#fff;--date-btn-cal-month-text:#d3d2d7;--date-btn-cal-background:#313132;--date-btn-background:#eae9ed;--date-btn-background-hover:#fff;--date-btn-shadow:rgba(0 0 0 / 40%) 1px 3px 15px -4px,rgba(0 0 0 / 20%) 1px 1px 8px -4px;--date-btn-shadow-hover:rgba(0 0 0 / 40%) 4px 6px 18px -1px,rgba(0 0 0 / 35%) 4px 5px 25px -2px;--checkmark-background:radial-gradient(circle,#fff 0,rgba(255 255 255 / 80%) 40%,rgba(255 255 255 / 0%) 70%);--overlay-background:rgba(20 20 20 / 25%);--overlay-cursor:url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23777' width='16' height='16' viewBox='0 0 122.878 122.88'%3E%3Cpath d='M1.426 8.313a4.87 4.87 0 0 1 0-6.886 4.87 4.87 0 0 1 6.886 0l53.127 53.127 53.127-53.127a4.87 4.87 0 0 1 6.887 0 4.87 4.87 0 0 1 0 6.886L68.324 61.439l53.128 53.128a4.87 4.87 0 0 1-6.887 6.886L61.438 68.326 8.312 121.453a4.87 4.87 0 0 1-6.886 0 4.87 4.87 0 0 1 0-6.886l53.127-53.128L1.426 8.313h0z'/%3E%3C/svg%3E\\\") 16 16,crosshair;--icon-ms365-color:#ea3e23;--icon-yahoo-color:#5f01d1;--icon-filter:none}:host(.atcb-dark){--btn-background:#2e2e2e;--btn-background-hover:#373737;--btn-border:#4d4d4d;--btn-text:#dedede;--btn-text-hover:#f1f1f1;--btn-shadow:rgba(255 255 255 / 5%) -12px -5px 20px -8px,rgba(255 255 255 / 6%) -7px -5px 15px -3px,rgba(0 0 0 / 50%) 2px 5px 18px -1px,rgba(0 0 0 / 40%) 3px 3px 20px -3px;--btn-shadow-hover:rgba(255 255 255 / 6%) -12px -5px 23px -8px,rgba(255 255 255 / 7%) -7px -5px 18px -3px,rgba(0 0 0 / 60%) 2px 5px 19px -1px,rgba(0 0 0 / 50%) 3px 3px 22px -3px;--btn-shadow-active:rgba(255 255 255 / 7%) -12px -5px 23px -8px,rgba(255 255 255 / 8%) -7px -5px 18px -3px,rgba(0 0 0 / 70%) 2px 10px 20px -1px,rgba(0 0 0 / 60%) 3px 5px 25px -3px;--btn-shadow-active-up:rgba(255 255 255 / 7%) -12px 5px 23px -8px,rgba(255 255 255 / 8%) -7px 5px 18px -3px,rgba(0 0 0 / 60%) 2px -8px 15px -1px,rgba(0 0 0 / 60%) 3px 5px 25px -3px;--list-background:#2e2e2e;--list-background-hover:#373737;--list-text:#dedede;--list-text-hover:#f1f1f1;--list-close-background:#282828;--list-shadow:rgba(255 255 255 / 5%) -12px -5px 20px -8px,rgba(255 255 255 / 6%) -7px -5px 15px -3px,rgba(0 0 0 / 50%) 2px 5px 18px -1px,rgba(0 0 0 / 40%) 3px 3px 20px -3px;--list-shadow-modal:rgba(255 255 255 / 8%) -12px -5px 30px -8px,rgba(255 255 255 / 8%) -7px -5px 15px -3px,rgba(0 0 0 / 60%) 4px 6px 50px -4px,rgba(0 0 0 / 90%) 8px 12px 40px -2px;--modal-text:#f1f1f1;--modal-background:#242424;--modal-btn-bar:#38383a;--modal-btn-background:#181819;--modal-btn-secondary-background:#2e2d30;--modal-btn-background-hover:#434246;--modal-btn-text:#dbdbdb;--modal-btn-text-hover:#fff;--modal-btn-secondary-text:#b8b8b8;--modal-shadow:drop-shadow(5px 8px 30px rgba(0 0 0 / 90%));--modal-shadow-btn:rgba(255 255 255 / 5%) -2px -2px 10px,rgba(0 0 0 / 30%) 1px 2px 8px -1px;--date-btn-text:#ebebf0;--date-btn-text-secondary:#b5b5bd;--date-btn-cal-day-text:#101010;--date-btn-cal-month-text:#3e3e3f;--date-btn-cal-background:#c7c7cd;--date-btn-background:#363636;--date-btn-background-hover:#474747;--date-btn-shadow:rgba(255 255 255 / 10%) -8px -6px 20px,rgba(0 0 0 / 50%) 1px 3px 25px -8px,rgba(0 0 0 / 50%) 1px 1px 10px -3px;--checkmark-background:radial-gradient(circle,rgba(0 0 0 / 50%) 0,rgba(0 0 0 / 30%) 40%,rgba(0 0 0 / 0%) 70%);--overlay-background:rgba(20 20 20 / 60%);--icon-ms365-color:#ea3e23;--icon-yahoo-color:#bebebe;--icon-filter:grayscale(.2)}.atcb-button-wrapper,.atcb-list,.atcb-modal-box{font-size:var(--base-font-size-l)}@media (width <= 991px){.atcb-button-wrapper,.atcb-list,.atcb-modal-box{font-size:var(--base-font-size-m)}}@media (width <= 575px){.atcb-button-wrapper,.atcb-list,.atcb-modal-box{font-size:var(--base-font-size-s)}}.atcb-button-wrapper{display:block;padding:5px;position:relative}.atcb-button{align-items:center;background-color:var(--btn-background);border:1px solid var(--btn-border);border-radius:6px;box-shadow:var(--btn-shadow);color:var(--btn-text);cursor:pointer;display:flex;font-family:var(--font);font-size:1em;font-weight:600;justify-content:center;line-height:1.5em;margin:0;max-width:350px;min-width:10em;padding:.65em 1em;position:relative;text-align:center;touch-action:manipulation;transform:translate3d(0,0,-12px);user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;width:auto;z-index:1}.atcb-button.atcb-no-text,.atcb-button:disabled{min-width:0}.atcb-rtl .atcb-button{direction:rtl;text-align:right}.atcb-button:focus-visible{outline:2px solid var(--keyboard-focus)}.atcb-button:not([disabled]):focus,.atcb-button:not([disabled]):hover{background-color:var(--btn-background-hover);box-shadow:var(--btn-shadow-hover);color:var(--btn-text-hover)}.atcb-button.atcb-active:not(.atcb-modal-style,.atcb-dropoverlay){background-color:var(--btn-background-hover);z-index:15000000}.atcb-button.atcb-single:not([disabled]):focus,.atcb-button.atcb-single:not([disabled]):hover{background-color:var(--btn-background-hover);box-shadow:var(--btn-shadow-active);color:var(--btn-text-hover);margin:-.13em;padding:.78em 1.13em}.atcb-button.atcb-active:not(.atcb-modal-style,.atcb-dropup,.atcb-dropoverlay){box-shadow:var(--btn-shadow-active);transform:perspective(100px) rotateX(12deg) translate3d(0,0,2px);transition:transform .1s linear}.atcb-button.atcb-active.atcb-dropup:not(.atcb-modal-style,.atcb-dropoverlay){box-shadow:var(--btn-shadow-active-up);transform:perspective(100px) rotateX(348deg) translate3d(0,0,2px);transition:transform .1s linear}.atcb-button.atcb-active.atcb-dropoverlay{transform:translate3d(0,0,0);z-index:14000090}.atcb-icon{height:1em;margin-bottom:.3em;margin-right:.8em;flex-grow:0;flex-shrink:0}.atcb-rtl .atcb-icon{margin-right:0;margin-left:.8em}.atcb-no-text .atcb-icon{margin-right:0;margin-left:0}.atcb-icon svg{height:100%;fill:currentcolor;width:auto}.atcb-text{overflow-wrap:anywhere}.atcb-button:disabled .atcb-text{letter-spacing:.1em}.atcb-dropdown-anchor{bottom:6px;height:1px;width:100%;opacity:0;position:absolute}.atcb-list-wrapper{box-sizing:border-box;padding:0 4px;position:absolute;transform:translate3d(0,0,0);z-index:14000090}.atcb-list{background-color:var(--list-background);border-radius:0 0 6px 6px;box-sizing:border-box;box-shadow:var(--list-shadow);color:var(--list-text);display:block;font-family:var(--font);min-width:100%;position:relative;user-select:none;-webkit-user-select:none;width:fit-content}.atcb-list-wrapper.atcb-dropdown:not(.atcb-dropup,.atcb-dropoverlay){animation:atcb-list-slide-down .4s ease 50ms 1 normal both;opacity:0}.atcb-list-wrapper.atcb-dropup:not(.atcb-dropoverlay){animation:atcb-list-slide-up .4s ease 50ms 1 normal both;opacity:0}.atcb-list-wrapper.atcb-dropoverlay{transform:translate3d(0,0,2px);z-index:15000000;animation:atcb-list-slide-center .3s ease 0s 1 normal both;opacity:0}@keyframes atcb-list-slide-down{0%{opacity:0;transform:rotateX(70deg);transform-origin:top}100%{opacity:1;transform:rotateX(0);transform-origin:top}}@keyframes atcb-list-slide-up{0%{opacity:0;transform:rotateX(70deg);transform-origin:bottom}100%{opacity:1;transform:rotateX(0);transform-origin:bottom}}@keyframes atcb-list-slide-center{0%{opacity:0;transform:scaleY(1)}1%{opacity:1;transform:scaleY(0)}100%{opacity:1;transform:scaleY(1)}}.atcb-list-item{align-items:center;background-color:var(--list-background);box-sizing:border-box;cursor:pointer;display:flex;font-size:1em;line-height:1.75em;padding:.8em;text-align:left;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.atcb-rtl .atcb-list-item{direction:rtl;text-align:right}.atcb-list-item:hover{background-color:var(--list-background-hover);color:var(--list-text-hover)}.atcb-list-item:focus-visible{background-color:var(--list-background-hover);color:var(--keyboard-focus);font-weight:600;outline:0}.atcb-list-item:last-child{border-radius:0 0 6px 6px}.atcb-dropup .atcb-list-item:last-child{border-radius:0;padding-bottom:1.5em}.atcb-dropoverlay .atcb-list .atcb-list-item:first-child,.atcb-dropup .atcb-list,.atcb-dropup .atcb-list-item:first-child,.atcb-list.atcb-modal .atcb-list-item:first-child{border-radius:6px 6px 0 0}.atcb-dropoverlay .atcb-list .atcb-list-item:only-child,.atcb-list.atcb-modal .atcb-list-item:only-child{border-radius:6px}.atcb-list.atcb-generated-button:not(.atcb-modal) .atcb-list-item:first-child{padding-top:1.5em}.atcb-dropoverlay .atcb-list.atcb-generated-button:not(.atcb-modal) .atcb-list-item:first-child,.atcb-dropup .atcb-list.atcb-generated-button:not(.atcb-modal) .atcb-list-item:first-child{padding-top:.8em}.atcb-dropoverlay .atcb-list,.atcb-list.atcb-modal{border-radius:6px}.atcb-list.atcb-modal{box-shadow:var(--list-shadow-modal)}.atcb-list-item .atcb-icon{margin-bottom:.5em;margin-right:.6em;width:1.125em}.atcb-rtl .atcb-list-item .atcb-icon{margin-right:0;margin-left:.6em}.atcb-no-text .atcb-list-item .atcb-icon{margin:0 auto}.atcb-list-item-close{background-color:var(--list-close-background)}.atcb-list-item.atcb-list-item-close:not(:focus-visible){color:var(--list-close-text)}.atcb-list-item-close svg{fill:currentcolor}.atcb-modal{display:block;margin:auto;min-width:250px;width:auto;position:relative;z-index:14000090}.atcb-modal-box{filter:var(--modal-shadow);color:var(--modal-text);cursor:default;box-sizing:border-box;font-family:var(--font);line-height:1.5em;text-align:left;user-select:none;-webkit-user-select:none;touch-action:manipulation;width:100%;margin-bottom:20px;max-width:32em;-webkit-tap-highlight-color:transparent}.atcb-modal-box.atcb-rtl{text-align:right;direction:rtl;padding:1.25em 1em 1.25em 2em}.atcb-modal-icon{height:2.5em;width:2.5em;border-radius:100%;background-color:var(--modal-background);padding:1.75em;margin:auto}.atcb-modal-icon svg{height:auto;fill:currentcolor;width:100%}.atcb-modal-headline{background-color:var(--modal-background);border-radius:6px 6px 0 0;font-size:1.3em;font-weight:600;line-height:1.5em;padding:1.8em 2em 1.3em;text-transform:uppercase;text-align:center}.atcb-modal-icon+.atcb-modal-headline{margin-top:-2.6em;padding-top:2.6em}.atcb-modal-content{background-color:var(--modal-background);font-size:1em;padding:.3em 2.5em 2.25em}@media (width <= 575px){.atcb-modal-headline{padding:1.8em 1em 1em}.atcb-modal-content{padding:.3em 1em 2em}}.atcb-modal-buttons{background-color:var(--modal-btn-bar);border-radius:0 0 6px 6px;box-sizing:border-box;padding:.8em 1em;text-align:center;width:100%;display:flex;justify-content:center;flex-flow:row-reverse wrap;align-items:center}a.atcb-modal-btn,button.atcb-modal-btn{background-color:var(--modal-btn-secondary-background);border:0;border-radius:6px;box-shadow:var(--modal-shadow-btn);color:var(--modal-btn-secondary-text);cursor:pointer;display:inline-block;font-family:var(--font);font-size:.9em;font-weight:600;line-height:1.5em;margin:.625em;padding:.625em 1.25em;position:relative;text-align:center;text-decoration:none;touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;text-transform:uppercase}a.atcb-modal-btn.atcb-modal-btn-primary,button.atcb-modal-btn.atcb-modal-btn-primary{background-color:var(--modal-btn-background);color:var(--modal-btn-text)}a.atcb-modal-btn:hover,button.atcb-modal-btn:hover{background-color:var(--modal-btn-background-hover);box-shadow:var(--modal-shadow-btn-hover);color:var(--modal-btn-text-hover);text-decoration:none}a.atcb-modal-btn:focus-visible,button.atcb-modal-btn:focus-visible{background-color:var(--modal-btn-background-hover);outline:2px solid var(--keyboard-focus)}.atcb-subevent-btn{display:flex;align-items:flex-start;cursor:pointer;font-family:var(--font);font-size:1em;box-shadow:var(--date-btn-shadow);background-color:var(--date-btn-background);border:0;border-radius:6px;padding:0;margin:0;touch-action:manipulation;position:relative;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}.atcb-subevent-btn:hover{align-items:center}.atcb-subevent-btn:focus,.atcb-subevent-btn:hover{background-color:var(--date-btn-background-hover);box-shadow:var(--date-btn-shadow-hover)}.atcb-subevent-btn:focus-visible{outline:2px solid var(--keyboard-focus)}.atcb-subevent-btn+.atcb-subevent-btn{margin-top:30px}.atcb-date-btn-left{border-radius:4px 0 0 4px;align-self:stretch;background-color:var(--date-btn-cal-background);color:var(--date-btn-background-hover);padding:.7em .8em .8em;width:2.7em;align-items:center;display:flex;flex-direction:column}.atcb-rtl .atcb-date-btn-left{border-radius:0 4px 4px 0}.atcb-subevent-btn:hover .atcb-date-btn-left{opacity:.8}.atcb-date-btn-day{color:var(--date-btn-cal-day-text);font-weight:300;font-size:2em;word-break:keep-all;padding-bottom:.1em}.atcb-initialized[lang=ja] .atcb-date-btn-day,.atcb-initialized[lang=ko] .atcb-date-btn-day,.atcb-initialized[lang=zh] .atcb-date-btn-day{font-size:1.3em}.atcb-date-btn-month{color:var(--date-btn-cal-month-text);font-weight:600;font-size:1em}.atcb-date-btn-right{position:relative;color:var(--date-btn-text);min-width:12.5em;overflow-wrap:anywhere}.atcb-date-btn-details{opacity:1;padding:.7em .8em;text-align:left}.atcb-rtl .atcb-date-btn-details{text-align:right}.atcb-date-btn-hover{position:absolute;top:0;left:0;width:100%;opacity:0;height:100%;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:1em;padding:.3em;box-sizing:border-box}.atcb-subevent-btn:hover .atcb-date-btn-details{opacity:0}.atcb-subevent-btn:hover .atcb-date-btn-hover{opacity:1}.atcb-date-btn-headline{font-weight:600;font-size:.9em;margin-bottom:.5em;overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.atcb-date-btn-content{display:flex;align-items:flex-start;font-size:.8em;color:var(--date-btn-text-secondary)}.atcb-date-btn-content-location{overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;word-break:break-all}.atcb-date-btn-content-icon{display:inline-block;height:.8em;width:1.3em;flex:0 0 1.3em}.atcb-rtl .atcb-date-btn-content-icon{margin-right:0;margin-left:.5em}.atcb-initialized[lang=ja] .atcb-date-btn-content:not(.atcb-date-btn-content-location) .atcb-date-btn-content-icon,.atcb-initialized[lang=ko] .atcb-date-btn-content:not(.atcb-date-btn-content-location) .atcb-date-btn-content-icon,.atcb-initialized[lang=zh] .atcb-date-btn-content:not(.atcb-date-btn-content-location) .atcb-date-btn-content-icon{margin-top:.15em}.atcb-date-btn-content-icon svg{height:100%;fill:currentcolor;width:auto}.atcb-date-btn-content+.atcb-date-btn-content{margin-top:.3em}.atcb-date-btn-content-text span:not(.atcb-icon-ical){padding-right:.3em;display:inline-block}.atcb-checkmark{display:none}.atcb-saved .atcb-checkmark{box-sizing:content-box;color:var(--btn-text);display:block;position:absolute;top:-.9em;right:-.3em;padding:.5em;background:var(--checkmark-background);border-radius:100%;height:1.5em}.atcb-checkmark svg{height:100%;fill:currentcolor;width:auto}#atcb-bgoverlay{backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);background-color:var(--overlay-background);border:0;box-sizing:border-box;display:flex;height:calc(100vh + 100px);inset-inline:0;left:0;right:0;top:0;min-height:100%;min-width:100%;overflow-y:auto;padding:20px 20px 130px;position:fixed;width:100vw;z-index:14000000}#atcb-bgoverlay:not(dialog){animation:atcb-bgoverlay-animate .2s ease 0s 1 normal forwards;opacity:0}#atcb-bgoverlay.atcb-no-bg{animation:none;backdrop-filter:none;-webkit-backdrop-filter:none;opacity:1;background-color:transparent}@keyframes atcb-bgoverlay-animate{0%{opacity:0}100%{opacity:1}}#atcb-bgoverlay.atcb-click:hover{cursor:var(--overlay-cursor)}.atcb-icon .atcb-icon-apple svg{fill:currentcolor}.atcb-icon .atcb-icon-ical svg{fill:currentcolor}.atcb-icon .atcb-icon-ms365 svg{fill:var(--icon-ms365-color)}.atcb-icon .atcb-icon-yahoo svg{fill:var(--icon-yahoo-color)}.atcb-icon .atcb-icon-google svg,.atcb-icon .atcb-icon-msteams svg,.atcb-icon .atcb-icon-outlookcom svg{filter:var(--icon-filter)}\",\r\"flat\": \":host{width:fit-content;--base-font-size-l:16px;--base-font-size-m:16px;--base-font-size-s:16px;--font:arial,helvetica,sans-serif;--keyboard-focus:#1e90ff;--btn-background:#f5f5f5;--btn-background-hover:#fff;--btn-border:#545454;--btn-shadow:#333;--btn-text:#333;--btn-text-hover:#000;--list-background:#f5f5f5;--list-background-hover:#fff;--list-border:#545454;--list-text:#333;--list-text-hover:#000;--list-close-background:#545454;--list-close-text:#b0b0b0;--list-close-text-hover:#777;--modal-text:#000;--modal-background:#f5f5f5;--modal-btn-bar:#bababa;--modal-btn-background:#f5f5f5;--modal-btn-secondary-background:#e2e1e6;--modal-btn-background-hover:#fff;--modal-btn-text:#2e2e2e;--modal-btn-text-hover:#161616;--modal-btn-secondary-text:#676767;--date-btn-text:#1d1d1e;--date-btn-text-secondary:#414141;--date-btn-cal-day-text:#fff;--date-btn-cal-month-text:#d3d2d7;--date-btn-cal-background:#313132;--date-btn-background:#eae9ed;--date-btn-background-hover:#fff;--checkmark-background:radial-gradient(circle,#fff 0,rgba(255 255 255 / 80%) 40%,rgba(255 255 255 / 0%) 70%);--overlay-background:rgba(20 20 20 / 40%);--overlay-cursor:url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23777' width='16' height='16' viewBox='0 0 122.878 122.88'%3E%3Cpath d='M1.426 8.313a4.87 4.87 0 0 1 0-6.886 4.87 4.87 0 0 1 6.886 0l53.127 53.127 53.127-53.127a4.87 4.87 0 0 1 6.887 0 4.87 4.87 0 0 1 0 6.886L68.324 61.439l53.128 53.128a4.87 4.87 0 0 1-6.887 6.886L61.438 68.326 8.312 121.453a4.87 4.87 0 0 1-6.886 0 4.87 4.87 0 0 1 0-6.886l53.127-53.128L1.426 8.313h0z'/%3E%3C/svg%3E\\\") 16 16,crosshair;--icon-ms365-color:#ea3e23;--icon-yahoo-color:#5f01d1;--icon-filter:none}:host(.atcb-dark){--btn-background:#222;--btn-background-hover:#373737;--btn-border:#515151;--btn-shadow:#000;--btn-text:#dedede;--btn-text-hover:#f1f1f1;--list-background:#222;--list-background-hover:#373737;--list-border:#515151;--list-text:#dedede;--list-text-hover:#f1f1f1;--list-close-background:#111;--list-close-text:#777;--list-close-text-hover:#f1f1f1;--modal-text:#f1f1f1;--modal-background:#242424;--modal-btn-bar:#313131;--modal-btn-background:#181819;--modal-btn-secondary-background:#2e2d30;--modal-btn-background-hover:#434246;--modal-btn-text:#dbdbdb;--modal-btn-text-hover:#fff;--modal-btn-secondary-text:#b8b8b8;--date-btn-text:#ebebf0;--date-btn-text-secondary:#b5b5bd;--date-btn-cal-day-text:#101010;--date-btn-cal-month-text:#414141;--date-btn-cal-background:#c7c7cd;--date-btn-background:#2d2d2d;--date-btn-background-hover:#474747;--checkmark-background:radial-gradient(circle,rgba(0 0 0 / 50%) 0,rgba(0 0 0 / 30%) 40%,rgba(0 0 0 / 0%) 70%);--overlay-background:rgba(20 20 20 / 75%);--icon-ms365-color:#ea3e23;--icon-yahoo-color:#bebebe;--icon-filter:grayscale(0.2)}.atcb-button-wrapper,.atcb-list,.atcb-modal-box{font-size:var(--base-font-size-l)}@media (width <= 991px){.atcb-button-wrapper,.atcb-list,.atcb-modal-box{font-size:var(--base-font-size-m)}}@media (width <= 575px){.atcb-button-wrapper,.atcb-list,.atcb-modal-box{font-size:var(--base-font-size-s)}}.atcb-button-wrapper{display:block;padding:5px;position:relative}.atcb-button{align-items:center;background-color:var(--btn-background);border:.2em solid var(--btn-border);color:var(--btn-text);cursor:pointer;display:flex;font-family:var(--font);font-size:1em;font-weight:600;justify-content:center;line-height:1.5em;margin:0;max-width:350px;min-width:10em;padding:.8em 1.2em;top:0;left:0;box-shadow:0 0 0 0 var(--btn-shadow);position:relative;text-align:center;touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;width:auto;z-index:1}.atcb-button.atcb-no-text,.atcb-button:disabled{min-width:0}.atcb-button.atcb-click:not([disabled]){top:-3px;left:-3px;box-shadow:3px 3px 0 0 var(--btn-shadow)}.atcb-rtl .atcb-button{direction:rtl;text-align:right}.atcb-button:focus-visible{outline:2px solid var(--keyboard-focus)}.atcb-button:not([disabled]):focus,.atcb-button:not([disabled]):hover{background-color:var(--btn-background-hover);top:0;left:0;box-shadow:0 0 0 0 var(--btn-shadow);color:var(--btn-text-hover)}.atcb-button.atcb-active:not(.atcb-modal-style,.atcb-dropoverlay){z-index:15000000}.atcb-button.atcb-active:not(.atcb-modal-style,.atcb-dropoverlay),.atcb-button.atcb-single:not([disabled]):focus,.atcb-button.atcb-single:not([disabled]):hover{background-color:var(--btn-background-hover);top:-5px;left:-5px;box-shadow:5px 5px 0 0 var(--btn-shadow);color:var(--btn-text-hover)}.atcb-button.atcb-active.atcb-dropoverlay{z-index:14000090}.atcb-icon{height:1em;margin-right:1em;line-height:1em;flex-grow:0;flex-shrink:0}.atcb-rtl .atcb-icon{margin-right:0;margin-left:1em}.atcb-no-text .atcb-icon{margin-right:0;margin-left:0}.atcb-icon svg{height:100%;fill:currentcolor;width:auto}.atcb-icon-trigger svg{display:none}.atcb-button .atcb-icon-trigger::after{content:\\\"+\\\";font-size:1.5em}.atcb-text{overflow-wrap:anywhere}.atcb-button:disabled .atcb-text{letter-spacing:.1em}.atcb-dropdown-anchor{bottom:0;height:0;width:100%;opacity:0;position:absolute}.atcb-list-wrapper{box-sizing:border-box;padding:0 2px 0 6px;position:absolute;z-index:16000090}.atcb-list-wrapper:not(.atcb-dropup,.atcb-dropoverlay){animation:list-entrance-bottom .2s ease 0s 1 normal forwards}.atcb-list-wrapper.atcb-dropup{animation:list-entrance-top .2s ease 0s 1 normal forwards}.atcb-list-wrapper.atcb-dropoverlay{z-index:15000000}@keyframes list-entrance-bottom{0%{opacity:0;transform:translateY(150px)}100%{opacity:1;transform:translateY(0)}}@keyframes list-entrance-top{0%{opacity:0;transform:translateY(-150px)}100%{opacity:1;transform:translateY(0)}}.atcb-list{background:var(--list-close-background);box-sizing:border-box;border:.15em solid var(--list-border);color:var(--list-text);display:block;font-family:var(--font);min-width:100%;position:relative;user-select:none;-webkit-user-select:none;width:fit-content}.atcb-list-item{align-items:center;background-color:var(--list-background);box-sizing:border-box;cursor:pointer;display:flex;font-size:1em;line-height:1.75em;padding:.8em;text-align:left;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.atcb-rtl .atcb-list-item{direction:rtl;text-align:right}.atcb-list-item:hover{background-color:var(--list-background-hover);color:var(--list-text-hover)}.atcb-list-item:focus-visible{background-color:var(--list-background-hover);color:var(--keyboard-focus);font-weight:600;outline:0}.atcb-dropup .atcb-list-item:last-child{border-bottom-width:0}.atcb-list.atcb-generated-button:not(.atcb-modal) .atcb-list-item:first-child{border-top-width:0}.atcb-dropoverlay .atcb-list.atcb-generated-button:not(.atcb-modal) .atcb-list-item:first-child,.atcb-dropup .atcb-list.atcb-generated-button:not(.atcb-modal) .atcb-list-item:first-child{border-top-width:.15em}.atcb-list-item .atcb-icon{margin-bottom:.1em;margin-right:.6em;width:1.125em}.atcb-rtl .atcb-list-item .atcb-icon{margin-right:0;margin-left:.6em}.atcb-no-text .atcb-list-item .atcb-icon{margin:0 auto}.atcb-list-item-close{background-color:var(--list-close-background)}.atcb-list-item.atcb-list-item-close:not(:focus-visible){color:var(--list-close-text)}.atcb-list-item.atcb-list-item-close:hover{color:var(--list-close-text-hover)}.atcb-list-item-close svg{fill:currentcolor}.atcb-modal{display:block;margin:auto;min-width:250px;width:auto;position:relative;z-index:14000090}.atcb-modal-box{border:.15em solid var(--btn-border);background-color:var(--modal-background);color:var(--modal-text);cursor:default;box-sizing:border-box;font-family:var(--font);line-height:1.5em;text-align:left;user-select:none;-webkit-user-select:none;touch-action:manipulation;width:100%;margin-bottom:20px;max-width:32em;-webkit-tap-highlight-color:transparent}.atcb-modal-box.atcb-rtl{text-align:right;direction:rtl;padding:1.25em 1em 1.25em 2em}.atcb-modal-icon{height:2.5em;width:2.5em;padding:1.75em;margin:auto}.atcb-modal-icon svg{height:auto;fill:currentcolor;width:100%}.atcb-modal-headline{font-size:1.3em;font-weight:600;line-height:1.5em;padding:1.8em 2em 1.3em;text-transform:uppercase;text-align:center}.atcb-modal-icon+.atcb-modal-headline{padding-top:0}.atcb-modal-content{padding:.3em 2.5em 2.25em;font-size:1em}@media (width <= 575px){.atcb-modal-headline{padding:1.8em 1em 1em}.atcb-modal-content{padding:.3em 1em 2em}}.atcb-modal-buttons{background-color:var(--modal-btn-bar);box-sizing:border-box;padding:.8em 1em;text-align:center;width:100%;display:flex;justify-content:center;flex-flow:row-reverse wrap;align-items:center}a.atcb-modal-btn,button.atcb-modal-btn{border:.2em solid var(--btn-border);background-color:var(--modal-btn-secondary-background);color:var(--modal-btn-secondary-text);cursor:pointer;display:inline-block;font-family:var(--font);font-size:.9em;font-weight:600;line-height:1.5em;margin:.625em;padding:.625em 1.25em;position:relative;text-align:center;text-decoration:none;touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;text-transform:uppercase;top:0;left:0;box-shadow:0 0 0 0 var(--btn-shadow)}a.atcb-modal-btn.atcb-modal-btn-primary,button.atcb-modal-btn.atcb-modal-btn-primary{background-color:var(--modal-btn-background);color:var(--modal-btn-text)}a.atcb-modal-btn:hover,button.atcb-modal-btn:hover{background-color:var(--modal-btn-background-hover);color:var(--modal-btn-text-hover);text-decoration:none;top:-3px;left:-3px;box-shadow:3px 3px 0 0 var(--btn-shadow)}a.atcb-modal-btn:focus-visible,button.atcb-modal-btn:focus-visible{background-color:var(--modal-btn-background-hover);outline:2px solid var(--keyboard-focus)}.atcb-subevent-btn{border:.15em solid var(--btn-border);display:flex;align-items:flex-start;cursor:pointer;font-family:var(--font);font-size:1em;background-color:var(--date-btn-background);padding:0;margin:0;touch-action:manipulation;position:relative;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;top:0;left:0;box-shadow:0 0 0 0 var(--btn-shadow)}.atcb-subevent-btn:hover{align-items:center;top:-3px;left:-3px;box-shadow:3px 3px 0 0 var(--btn-shadow)}.atcb-subevent-btn:focus,.atcb-subevent-btn:hover{background-color:var(--date-btn-background-hover)}.atcb-subevent-btn:focus-visible{outline:2px solid var(--keyboard-focus)}.atcb-subevent-btn+.atcb-subevent-btn{margin-top:30px}.atcb-date-btn-left{align-self:stretch;background-color:var(--date-btn-cal-background);color:var(--date-btn-background-hover);padding:.7em .8em .8em;width:2.7em;align-items:center;display:flex;flex-direction:column}.atcb-subevent-btn:hover .atcb-date-btn-left{opacity:.8}.atcb-date-btn-day{color:var(--date-btn-cal-day-text);font-weight:300;font-size:2em;word-break:keep-all;padding-bottom:.1em}.atcb-initialized[lang=ja] .atcb-date-btn-day,.atcb-initialized[lang=ko] .atcb-date-btn-day,.atcb-initialized[lang=zh] .atcb-date-btn-day{font-size:1.3em}.atcb-date-btn-month{color:var(--date-btn-cal-month-text);font-weight:600;font-size:1em}.atcb-date-btn-right{position:relative;color:var(--date-btn-text);min-width:12.5em;overflow-wrap:anywhere}.atcb-date-btn-details{opacity:1;padding:.7em .8em;text-align:left}.atcb-rtl .atcb-date-btn-details{text-align:right}.atcb-date-btn-hover{position:absolute;top:0;left:0;width:100%;opacity:0;height:100%;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:1em;padding:.3em;box-sizing:border-box}.atcb-subevent-btn:hover .atcb-date-btn-details{opacity:0}.atcb-subevent-btn:hover .atcb-date-btn-hover{opacity:1}.atcb-date-btn-headline{font-weight:600;font-size:.9em;margin-bottom:.5em;overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.atcb-date-btn-content{display:flex;align-items:flex-start;font-size:.8em;color:var(--date-btn-text-secondary)}.atcb-date-btn-content-location{overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;word-break:break-all}.atcb-date-btn-content-icon{display:inline-block;height:.8em;width:1.3em;flex:0 0 1.3em}.atcb-rtl .atcb-date-btn-content-icon{margin-right:0;margin-left:.5em}.atcb-initialized[lang=ja] .atcb-date-btn-content:not(.atcb-date-btn-content-location) .atcb-date-btn-content-icon,.atcb-initialized[lang=ko] .atcb-date-btn-content:not(.atcb-date-btn-content-location) .atcb-date-btn-content-icon,.atcb-initialized[lang=zh] .atcb-date-btn-content:not(.atcb-date-btn-content-location) .atcb-date-btn-content-icon{margin-top:.15em}.atcb-date-btn-content-icon svg{height:100%;fill:currentcolor;width:auto}.atcb-date-btn-content+.atcb-date-btn-content{margin-top:.3em}.atcb-date-btn-content-text span:not(.atcb-icon-ical){padding-right:.3em;display:inline-block}.atcb-checkmark{display:none}.atcb-saved .atcb-checkmark{box-sizing:content-box;color:var(--btn-text);display:block;position:absolute;top:-.9em;right:-.3em;padding:.5em;background:var(--checkmark-background);border-radius:100%;height:1.5em}.atcb-checkmark svg{height:100%;fill:currentcolor;width:auto}#atcb-bgoverlay{backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);background-color:var(--overlay-background);border:0;box-sizing:border-box;display:flex;height:calc(100vh + 100px);inset-inline:0;left:0;right:0;top:0;min-height:100%;min-width:100%;overflow-y:auto;padding:20px 20px 130px;position:fixed;width:100vw;z-index:14000000}#atcb-bgoverlay:not(dialog){animation:atcb-bgoverlay-animate .2s ease 0s 1 normal forwards;opacity:0}#atcb-bgoverlay.atcb-no-bg{animation:none;backdrop-filter:none;-webkit-backdrop-filter:none;opacity:1;background-color:transparent}@keyframes atcb-bgoverlay-animate{0%{opacity:0}100%{opacity:1}}#atcb-bgoverlay.atcb-click:hover{cursor:var(--overlay-cursor)}.atcb-icon .atcb-icon-apple svg{fill:currentcolor}.atcb-icon .atcb-icon-ical svg{fill:currentcolor}.atcb-icon .atcb-icon-ms365 svg{fill:var(--icon-ms365-color)}.atcb-icon .atcb-icon-yahoo svg{fill:var(--icon-yahoo-color)}.atcb-icon .atcb-icon-google svg,.atcb-icon .atcb-icon-msteams svg,.atcb-icon .atcb-icon-outlookcom svg{filter:var(--icon-filter)}\",\r\"round\": \":host{width:fit-content;--base-font-size-l:16px;--base-font-size-m:16px;--base-font-size-s:16px;--font:arial,helvetica,sans-serif;--keyboard-focus:#1e90ff;--btn-background:#f5f5f5;--btn-background-hover:#fff;--btn-border:#d2d2d2;--btn-text:#333;--btn-text-hover:#000;--btn-shadow:rgba(0 0 0 / 20%) 2px 5px 18px -1px,rgba(0 0 0 / 15%) 2px 2px 10px -3px;--btn-shadow-hover:rgba(0 0 0 / 35%) 2px 5px 18px -1px,rgba(0 0 0 / 30%) 2px 2px 10px -3px;--btn-shadow-active:rgba(0 0 0 / 50%) 2px 5px 18px -1px,rgba(0 0 0 / 45%) 2px 2px 10px -3px;--list-background:#f5f5f5;--list-background-hover:#fff;--list-text:#333;--list-text-hover:#000;--list-close-background:#e5e5e5;--list-close-text:#777;--list-shadow:rgba(0 0 0 / 20%) 2px 5px 18px -1px,rgba(0 0 0 / 40%) 2px 2px 10px -3px;--list-shadow-modal:rgba(0 0 0 / 60%) 3px 6px 40px -5px,rgba(0 0 0 / 60%) 3px 3px 15px -4px;--modal-text:#000;--modal-background:#f5f5f5;--modal-btn-bar:#c6c8cd;--modal-btn-background:#f5f5f5;--modal-btn-secondary-background:#e2e1e6;--modal-btn-background-hover:#fff;--modal-btn-text:#2e2e2e;--modal-btn-text-hover:#161616;--modal-btn-secondary-text:#666567;--modal-shadow:drop-shadow(5px 8px 30px rgba(0 0 0 / 70%));--modal-shadow-btn:rgba(0 0 0 / 10%) 2px 3px 10px -3px,rgba(0 0 0 / 25%) 1px 1px 8px -4px;--modal-shadow-btn-hover:rgba(0 0 0 / 35%) 3px 5px 15px -2px,rgba(0 0 0 / 20%) 2px 4px 25px -6px;--date-btn-text:#1d1d1e;--date-btn-text-secondary:#3a3a3f;--date-btn-cal-day-text:#fff;--date-btn-cal-month-text:#d3d2d7;--date-btn-cal-background:#313132;--date-btn-background:#eae9ed;--date-btn-background-hover:#fff;--date-btn-shadow:rgba(0 0 0 / 40%) 1px 3px 15px -4px,rgba(0 0 0 / 20%) 1px 1px 8px -4px;--date-btn-shadow-hover:rgba(0 0 0 / 40%) 4px 6px 18px -1px,rgba(0 0 0 / 35%) 4px 5px 25px -2px;--checkmark-background:radial-gradient(circle,#fff 0,rgba(255 255 255 / 80%) 40%,rgba(255 255 255 / 0%) 70%);--overlay-background:rgba(20 20 20 / 25%);--overlay-cursor:url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23777' width='16' height='16' viewBox='0 0 122.878 122.88'%3E%3Cpath d='M1.426 8.313a4.87 4.87 0 0 1 0-6.886 4.87 4.87 0 0 1 6.886 0l53.127 53.127 53.127-53.127a4.87 4.87 0 0 1 6.887 0 4.87 4.87 0 0 1 0 6.886L68.324 61.439l53.128 53.128a4.87 4.87 0 0 1-6.887 6.886L61.438 68.326 8.312 121.453a4.87 4.87 0 0 1-6.886 0 4.87 4.87 0 0 1 0-6.886l53.127-53.128L1.426 8.313h0z'/%3E%3C/svg%3E\\\") 16 16,crosshair;--icon-ms365-color:#ea3e23;--icon-yahoo-color:#5f01d1;--icon-filter:none}:host(.atcb-dark){--btn-background:#2e2e2e;--btn-background-hover:#373737;--btn-border:#4d4d4d;--btn-text:#dedede;--btn-text-hover:#f1f1f1;--btn-shadow:rgba(255 255 255 / 5%) -12px -5px 20px -8px,rgba(255 255 255 / 6%) -7px -5px 15px -3px,rgba(0 0 0 / 50%) 2px 5px 18px -1px,rgba(0 0 0 / 40%) 3px 3px 20px -3px;--btn-shadow-hover:rgba(255 255 255 / 6%) -12px -5px 23px -8px,rgba(255 255 255 / 7%) -7px -5px 18px -3px,rgba(0 0 0 / 60%) 2px 5px 19px -1px,rgba(0 0 0 / 50%) 3px 3px 22px -3px;--btn-shadow-active:rgba(255 255 255 / 7%) -12px -5px 23px -8px,rgba(255 255 255 / 8%) -7px -5px 18px -3px,rgba(0 0 0 / 70%) 2px 5px 19px -1px,rgba(0 0 0 / 60%) 3px 3px 22px -3px;--list-background:#2e2e2e;--list-background-hover:#373737;--list-text:#dedede;--list-text-hover:#f1f1f1;--list-close-background:#282828;--list-shadow:rgba(255 255 255 / 5%) -12px -5px 20px -8px,rgba(255 255 255 / 6%) -7px -5px 15px -3px,rgba(0 0 0 / 50%) 2px 5px 18px -1px,rgba(0 0 0 / 40%) 3px 3px 20px -3px;--list-shadow-modal:rgba(255 255 255 / 8%) -12px -5px 30px -8px,rgba(255 255 255 / 8%) -7px -5px 15px -3px,rgba(0 0 0 / 60%) 4px 6px 50px -4px,rgba(0 0 0 / 90%) 8px 12px 40px -2px;--modal-text:#f1f1f1;--modal-background:#242424;--modal-btn-bar:#38383a;--modal-btn-background:#181819;--modal-btn-secondary-background:#2e2d30;--modal-btn-background-hover:#434246;--modal-btn-text:#dbdbdb;--modal-btn-text-hover:#fff;--modal-btn-secondary-text:#b8b8b8;--modal-shadow:drop-shadow(5px 8px 30px rgba(0 0 0 / 90%));--modal-shadow-btn:rgba(255 255 255 / 5%) -2px -2px 10px,rgba(0 0 0 / 30%) 1px 2px 8px -1px;--date-btn-text:#ebebf0;--date-btn-text-secondary:#b5b5bd;--date-btn-cal-day-text:#101010;--date-btn-cal-month-text:#3e3e3f;--date-btn-cal-background:#c7c7cd;--date-btn-background:#363636;--date-btn-background-hover:#474747;--date-btn-shadow:rgba(255 255 255 / 10%) -8px -6px 20px,rgba(0 0 0 / 50%) 1px 3px 25px -8px,rgba(0 0 0 / 50%) 1px 1px 10px -3px;--checkmark-background:radial-gradient(circle,rgba(0 0 0 / 50%) 0,rgba(0 0 0 / 30%) 40%,rgba(0 0 0 / 0%) 70%);--overlay-background:rgba(20 20 20 / 60%);--icon-ms365-color:#ea3e23;--icon-yahoo-color:#bebebe;--icon-filter:grayscale(.2)}.atcb-button-wrapper,.atcb-list,.atcb-modal-box{font-size:var(--base-font-size-l)}@media (width <= 991px){.atcb-button-wrapper,.atcb-list,.atcb-modal-box{font-size:var(--base-font-size-m)}}@media (width <= 575px){.atcb-button-wrapper,.atcb-list,.atcb-modal-box{font-size:var(--base-font-size-s)}}.atcb-button-wrapper{display:block;padding:5px;position:relative}.atcb-button{align-items:center;background-color:var(--btn-background);border:1px solid var(--btn-border);border-radius:500px;box-shadow:var(--btn-shadow);color:var(--btn-text);cursor:pointer;display:flex;font-family:var(--font);font-size:1em;font-weight:600;justify-content:center;line-height:1.5em;margin:.13em;max-width:350px;min-width:10em;padding:.65em 1.3em;position:relative;text-align:center;touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;width:auto;z-index:1}.atcb-button.atcb-no-text{min-width:0;border-radius:100%;display:flex;align-content:center;justify-content:center;align-items:center;height:3em;width:3em;padding:0}.atcb-button:disabled{min-width:0}.atcb-rtl .atcb-button{direction:rtl;text-align:right}.atcb-button:focus-visible{outline:2px solid var(--keyboard-focus)}.atcb-button:not([disabled]):focus,.atcb-button:not([disabled]):hover{background-color:var(--btn-background-hover);box-shadow:var(--btn-shadow-hover);color:var(--btn-text-hover);margin:0;padding:.78em 1.43em}.atcb-button.atcb-no-text:focus,.atcb-button.atcb-no-text:hover{height:3.26em;width:3.26em;padding:0}.atcb-button.atcb-active:not(.atcb-modal-style,.atcb-dropoverlay){z-index:15000000}.atcb-button.atcb-active:not(.atcb-modal-style,.atcb-dropoverlay,.atcb-no-text),.atcb-button.atcb-single:not(.atcb-no-text,[disabled]):focus,.atcb-button.atcb-single:not(.atcb-no-text,[disabled]):hover{background-color:var(--btn-background-hover);box-shadow:var(--btn-shadow-active);color:var(--btn-text-hover);margin:0;padding:.78em 1.43em}.atcb-button.atcb-active.atcb-no-text:not(.atcb-modal-style,.atcb-dropoverlay),.atcb-button.atcb-single.atcb-no-text:not([disabled]):focus,.atcb-button.atcb-single.atcb-no-text:not([disabled]):hover{background-color:var(--btn-background-hover);box-shadow:var(--btn-shadow-active);color:var(--btn-text-hover);margin:0;padding:.93em 1.43em}.atcb-button.atcb-dropup::after,.atcb-button:not(.atcb-modal-style,.atcb-dropoverlay,.atcb-dropup,.atcb-no-text)::before{content:\\\"\\\";width:0;height:0;position:absolute;left:0;right:0;margin:0 auto;transition:border-width .1s linear .1s}.atcb-button:not(.atcb-modal-style,.atcb-dropoverlay,.atcb-dropup,.atcb-no-text)::before{top:100%;border:0 solid transparent;border-bottom:none;border-top-color:var(--btn-background-hover)}.atcb-button.atcb-dropup::after{bottom:100%;border:0 solid transparent;border-top:none;border-bottom-color:var(--btn-background-hover)}.atcb-button.atcb-active.atcb-dropup::after,.atcb-button.atcb-active:not(.atcb-modal-style,.atcb-dropoverlay,.atcb-dropup,.atcb-no-text)::before{border-width:.35em}.atcb-button.atcb-active.atcb-dropoverlay{z-index:14000090}.atcb-icon{height:1em;margin-bottom:.3em;margin-right:.8em;flex-grow:0;flex-shrink:0}.atcb-rtl .atcb-icon{margin-right:0;margin-left:.8em}.atcb-no-text .atcb-icon{margin-right:0;margin-left:0}.atcb-icon svg{height:100%;fill:currentcolor;width:auto}.atcb-text{overflow-wrap:anywhere}.atcb-button:disabled .atcb-text{letter-spacing:.1em}.atcb-dropdown-anchor{bottom:-15px;height:0;width:100%;opacity:0;position:absolute}.atcb-list-wrapper{box-sizing:border-box;position:absolute;z-index:14000090;min-width:12.5em;width:auto}.atcb-list-wrapper:not(.atcb-dropup,.atcb-dropoverlay){animation:list-entrance-bottom .2s ease 0s 1 normal forwards}.atcb-list-wrapper.atcb-dropup{animation:list-entrance-top .2s ease 0s 1 normal forwards}.atcb-list-wrapper.atcb-dropoverlay{animation:list-entrance-center .2s ease 0s 1 normal forwards;z-index:15000000}@keyframes list-entrance-bottom{0%{opacity:0;transform:translateY(250px)}100%{opacity:1;transform:translateY(0)}}@keyframes list-entrance-top{0%{opacity:0;transform:translateY(-250px)}100%{opacity:1;transform:translateY(0)}}@keyframes list-entrance-center{0%{opacity:0;transform:scaleY(1)}1%{opacity:1;transform:scaleY(0)}100%{opacity:1;transform:scaleY(1)}}.atcb-list{border-radius:11px;box-sizing:border-box;box-shadow:var(--list-shadow);color:var(--list-text);display:block;font-family:var(--font);min-width:100%;position:relative;user-select:none;-webkit-user-select:none;width:fit-content}.atcb-list-item{align-items:center;background-color:var(--list-background);box-sizing:border-box;cursor:pointer;display:flex;font-size:1em;line-height:1.75em;padding:.8em;text-align:left;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.atcb-rtl .atcb-list-item{direction:rtl;text-align:right}.atcb-list-item:hover{background-color:var(--list-background-hover);color:var(--list-text-hover)}.atcb-list-item:focus-visible{background-color:var(--list-background-hover);color:var(--keyboard-focus);font-weight:600;outline:0}.atcb-list-item:last-child{border-radius:0 0 11px 11px}.atcb-list-item:first-child{border-radius:11px 11px 0 0}.atcb-list-item:only-child{border-radius:11px}.atcb-list.atcb-modal{box-shadow:var(--list-shadow-modal)}.atcb-list-item .atcb-icon{margin-bottom:.5em;margin-right:.6em;width:1.125em}.atcb-rtl .atcb-list-item .atcb-icon{margin-right:0;margin-left:.6em}.atcb-no-text .atcb-list-item .atcb-icon{margin:0 auto}.atcb-list-item-close{background-color:var(--list-close-background)}.atcb-list-item.atcb-list-item-close:not(:focus-visible){color:var(--list-close-text)}.atcb-list-item-close svg{fill:currentcolor}.atcb-modal{display:block;margin:auto;min-width:250px;width:auto;position:relative;z-index:14000090}.atcb-modal-box{filter:var(--modal-shadow);color:var(--modal-text);cursor:default;box-sizing:border-box;font-family:var(--font);line-height:1.5em;text-align:left;user-select:none;-webkit-user-select:none;touch-action:manipulation;width:100%;margin-bottom:20px;max-width:32em;-webkit-tap-highlight-color:transparent}.atcb-modal-box.atcb-rtl{text-align:right;direction:rtl;padding:1.25em 1em 1.25em 2em}.atcb-modal-icon{height:2.5em;width:2.5em;border-radius:100%;background-color:var(--modal-background);padding:1.75em;margin:auto}.atcb-modal-icon svg{height:auto;fill:currentcolor;width:100%}.atcb-modal-headline{background-color:var(--modal-background);border-radius:9px 9px 0 0;font-size:1.3em;font-weight:600;line-height:1.5em;padding:1.8em 2em 1.3em;text-transform:uppercase;text-align:center}.atcb-modal-icon+.atcb-modal-headline{margin-top:-2.6em;padding-top:2.6em}.atcb-modal-content{background-color:var(--modal-background);font-size:1em;padding:.3em 2.5em 2.25em}@media (width <= 575px){.atcb-modal-headline{padding:1.8em 1em 1em}.atcb-modal-content{padding:.3em 1em 2em}}.atcb-modal-buttons{background-color:var(--modal-btn-bar);border-radius:0 0 9px 9px;box-sizing:border-box;padding:.8em 1em;text-align:center;width:100%;display:flex;justify-content:center;flex-flow:row-reverse wrap;align-items:center}a.atcb-modal-btn,button.atcb-modal-btn{background-color:var(--modal-btn-secondary-background);border:0;border-radius:500px;box-shadow:var(--modal-shadow-btn);color:var(--modal-btn-secondary-text);cursor:pointer;display:inline-block;font-family:var(--font);font-size:.9em;font-weight:600;line-height:1.5em;margin:.625em;padding:.625em 1.25em;position:relative;text-align:center;text-decoration:none;touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;text-transform:uppercase}a.atcb-modal-btn.atcb-modal-btn-primary,button.atcb-modal-btn.atcb-modal-btn-primary{background-color:var(--modal-btn-background);color:var(--modal-btn-text)}a.atcb-modal-btn:hover,button.atcb-modal-btn:hover{background-color:var(--modal-btn-background-hover);box-shadow:var(--modal-shadow-btn-hover);color:var(--modal-btn-text-hover);text-decoration:none}a.atcb-modal-btn:focus-visible,button.atcb-modal-btn:focus-visible{background-color:var(--modal-btn-background-hover);outline:2px solid var(--keyboard-focus)}.atcb-subevent-btn{display:flex;align-items:flex-start;cursor:pointer;font-family:var(--font);font-size:1em;box-shadow:var(--date-btn-shadow);background-color:var(--date-btn-background);border:0;border-radius:6px;padding:0;margin:0;touch-action:manipulation;position:relative;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}.atcb-subevent-btn:hover{align-items:center}.atcb-subevent-btn:focus,.atcb-subevent-btn:hover{background-color:var(--date-btn-background-hover);box-shadow:var(--date-btn-shadow-hover)}.atcb-subevent-btn:focus-visible{outline:2px solid var(--keyboard-focus)}.atcb-subevent-btn+.atcb-subevent-btn{margin-top:30px}.atcb-date-btn-left{border-radius:4px 0 0 4px;align-self:stretch;background-color:var(--date-btn-cal-background);color:var(--date-btn-background-hover);padding:.7em .8em .8em;width:2.7em;align-items:center;display:flex;flex-direction:column}.atcb-rtl .atcb-date-btn-left{border-radius:0 4px 4px 0}.atcb-subevent-btn:hover .atcb-date-btn-left{opacity:.8}.atcb-date-btn-day{color:var(--date-btn-cal-day-text);font-weight:300;font-size:2em;word-break:keep-all;padding-bottom:.1em}.atcb-initialized[lang=ja] .atcb-date-btn-day,.atcb-initialized[lang=ko] .atcb-date-btn-day,.atcb-initialized[lang=zh] .atcb-date-btn-day{font-size:1.3em}.atcb-date-btn-month{color:var(--date-btn-cal-month-text);font-weight:600;font-size:1em}.atcb-date-btn-right{position:relative;color:var(--date-btn-text);min-width:12.5em;overflow-wrap:anywhere}.atcb-date-btn-details{opacity:1;padding:.7em .8em;text-align:left}.atcb-rtl .atcb-date-btn-details{text-align:right}.atcb-date-btn-hover{position:absolute;top:0;left:0;width:100%;opacity:0;height:100%;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:1em;padding:.3em;box-sizing:border-box}.atcb-subevent-btn:hover .atcb-date-btn-details{opacity:0}.atcb-subevent-btn:hover .atcb-date-btn-hover{opacity:1}.atcb-date-btn-headline{font-weight:600;font-size:.9em;margin-bottom:.5em;overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.atcb-date-btn-content{display:flex;align-items:flex-start;font-size:.8em;color:var(--date-btn-text-secondary)}.atcb-date-btn-content-location{overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;word-break:break-all}.atcb-date-btn-content-icon{display:inline-block;height:.8em;width:1.3em;flex:0 0 1.3em}.atcb-rtl .atcb-date-btn-content-icon{margin-right:0;margin-left:.5em}.atcb-initialized[lang=ja] .atcb-date-btn-content:not(.atcb-date-btn-content-location) .atcb-date-btn-content-icon,.atcb-initialized[lang=ko] .atcb-date-btn-content:not(.atcb-date-btn-content-location) .atcb-date-btn-content-icon,.atcb-initialized[lang=zh] .atcb-date-btn-content:not(.atcb-date-btn-content-location) .atcb-date-btn-content-icon{margin-top:.15em}.atcb-date-btn-content-icon svg{height:100%;fill:currentcolor;width:auto}.atcb-date-btn-content+.atcb-date-btn-content{margin-top:.3em}.atcb-date-btn-content-text span:not(.atcb-icon-ical){padding-right:.3em;display:inline-block}.atcb-checkmark{display:none}.atcb-saved .atcb-checkmark{box-sizing:content-box;color:var(--btn-text);display:block;position:absolute;top:-.9em;right:-.3em;padding:.5em;background:var(--checkmark-background);border-radius:100%;height:1.5em}.atcb-button.atcb-active:not(.atcb-modal-style,.atcb-dropoverlay) .atcb-checkmark,.atcb-button:focus .atcb-checkmark,.atcb-button:hover .atcb-checkmark{top:-.77em;right:-.17em}.atcb-checkmark svg{height:100%;fill:currentcolor;width:auto}#atcb-bgoverlay{backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);background-color:var(--overlay-background);border:0;box-sizing:border-box;display:flex;height:calc(100vh + 100px);inset-inline:0;left:0;right:0;top:0;min-height:100%;min-width:100%;overflow-y:auto;padding:20px 20px 130px;position:fixed;width:100vw;z-index:14000000}#atcb-bgoverlay:not(dialog){animation:atcb-bgoverlay-animate .2s ease 0s 1 normal forwards;opacity:0}#atcb-bgoverlay.atcb-no-bg{animation:none;backdrop-filter:none;-webkit-backdrop-filter:none;opacity:1;background-color:transparent}@keyframes atcb-bgoverlay-animate{0%{opacity:0}100%{opacity:1}}#atcb-bgoverlay.atcb-click:hover{cursor:var(--overlay-cursor)}.atcb-icon .atcb-icon-apple svg{fill:currentcolor}.atcb-icon .atcb-icon-ical svg{fill:currentcolor}.atcb-icon .atcb-icon-ms365 svg{fill:var(--icon-ms365-color)}.atcb-icon .atcb-icon-yahoo svg{fill:var(--icon-yahoo-color)}.atcb-icon .atcb-icon-google svg,.atcb-icon .atcb-icon-msteams svg,.atcb-icon .atcb-icon-outlookcom svg{filter:var(--icon-filter)}\",\r\"neumorphism\": \":host{width:fit-content;--base-font-size-l:16px;--base-font-size-m:16px;--base-font-size-s:16px;--font:arial,helvetica,sans-serif;--keyboard-focus:#1e90ff;--btn-background:#f5f5f5;--btn-background-hover:#fff;--btn-text:#444;--btn-text-hover:#111;--btn-shadow:rgba(40 40 40 / 30%) 0.3em 0.3em 0.6em,rgba(255 255 255 / 60%) -0.2em -0.2em 0.4em;--btn-shadow-hover:rgba(40 40 40 / 50%) 0.4em 0.4em 0.8em,rgba(255 255 255 / 90%) -0.3em -0.3em 0.6em;--btn-shadow-active:inset rgba(40 40 40 / 40%) 0.15em 0.15em 0.3em,inset rgba(255 255 255 / 90%) -0.2em -0.2em 0.5em;--list-background:#f5f5f5;--list-background-hover:#fff;--list-text:#444;--list-text-hover:#111;--list-close-background:#e5e5e5;--list-close-text:#777;--list-shadow:rgba(40 40 40 / 30%) 0.4em 0.4em 0.8em,rgba(255 255 255 / 90%) -0.4em -0.4em 0.9em;--modal-text:#111;--modal-background:#f5f5f5;--modal-btn-bar:#c6c8cd;--modal-btn-background:#f5f5f5;--modal-btn-secondary-background:#e2e1e6;--modal-btn-background-hover:#fff;--modal-btn-text:#2e2e2e;--modal-btn-text-hover:#222;--modal-btn-secondary-text:#666567;--modal-shadow:drop-shadow(5px 8px 30px rgba(0 0 0 / 70%));--modal-shadow-btn:rgba(40 40 40 / 15%) 0.2em 0.2em 0.4em,rgba(255 255 255 / 30%) -0.1em -0.1em 0.3em;--modal-shadow-btn-hover:rgba(40 40 40 / 40%) 0.4em 0.4em 0.7em,rgba(255 255 255 / 70%) -0.2em -0.2em 0.5em;--date-btn-text:#1d1d1e;--date-btn-text-secondary:#3a3a3f;--date-btn-cal-day-text:#fff;--date-btn-cal-month-text:#d3d2d7;--date-btn-cal-background:#313132;--date-btn-background:#e3e5ea;--date-btn-background-hover:#fff;--date-btn-shadow:rgba(40 40 40 / 40%) 0.2em 0.2em 0.8em,rgba(255 255 255 / 80%) -0.2em -0.2em 0.4em;--date-btn-shadow-hover:rgba(40 40 40 / 50%) 0.3em 0.4em 1em,rgba(255 255 255) -0.3em -0.3em 0.7em;--checkmark-background:radial-gradient(circle, #fff 0, rgba(255 255 255 / 80%) 40%, rgba(255 255 255 / 0%) 70%);--overlay-background:#dcdcdc;--overlay-cursor:url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23777' width='16' height='16' viewBox='0 0 122.878 122.88'%3E%3Cpath d='M1.426 8.313a4.87 4.87 0 0 1 0-6.886 4.87 4.87 0 0 1 6.886 0l53.127 53.127 53.127-53.127a4.87 4.87 0 0 1 6.887 0 4.87 4.87 0 0 1 0 6.886L68.324 61.439l53.128 53.128a4.87 4.87 0 0 1-6.887 6.886L61.438 68.326 8.312 121.453a4.87 4.87 0 0 1-6.886 0 4.87 4.87 0 0 1 0-6.886l53.127-53.128L1.426 8.313h0z'/%3E%3C/svg%3E\\\") 16 16,crosshair;--icon-ms365-color:#ea3e23;--icon-yahoo-color:#5f01d1;--icon-filter:none}:host(.atcb-dark){--btn-background:#2e2e2e;--btn-background-hover:#373737;--btn-text:#dedede;--btn-text-hover:#f1f1f1;--btn-shadow:rgba(0 0 0 / 70%) 0.3em 0.3em 0.6em,rgba(230 230 230 / 15%) -0.1em -0.1em 0.5em;--btn-shadow-hover:rgba(0 0 0 / 80%) 0.4em 0.4em 0.9em,rgba(230 230 230 / 15%) -0.2em -0.2em 0.5em;--btn-shadow-active:inset rgba(0 0 0 / 80%) 0.15em 0.15em 0.25em,inset rgba(230 230 230 / 15%) -0.2em -0.2em 0.6em;--list-background:#2e2e2e;--list-background-hover:#373737;--list-text:#dedede;--list-text-hover:#f1f1f1;--list-close-background:#282828;--list-shadow:rgba(0 0 0) 0.3em 0.3em 1em,rgba(230 230 230 / 15%) -0.1em -0.1em 0.8em;--modal-text:#f1f1f1;--modal-background:#242424;--modal-btn-bar:#38383a;--modal-btn-background:#181819;--modal-btn-secondary-background:#2e2d30;--modal-btn-background-hover:#434246;--modal-btn-text:#dbdbdb;--modal-btn-text-hover:#fff;--modal-btn-secondary-text:#b8b8b8;--modal-shadow:drop-shadow(5px 8px 35px rgba(0 0 0 / 90%));--modal-shadow-btn:rgba(0 0 0 / 60%) 0.2em 0.2em 0.6em,rgba(230 230 230 / 15%) -0.1em -0.1em 0.4em;--modal-shadow-btn-hover:rgba(0 0 0 / 80%) 0.3em 0.3em 0.8em,rgba(230 230 230 / 15%) -0.1em -0.1em 0.6em;--date-btn-text:#ebebf0;--date-btn-text-secondary:#b5b5bd;--date-btn-cal-day-text:#101010;--date-btn-cal-month-text:#3e3e3f;--date-btn-cal-background:#c7c7cd;--date-btn-background:#363636;--date-btn-background-hover:#474747;--date-btn-shadow:rgba(0 0 0 / 70%) 0.2em 0.2em 0.8em,rgba(230 230 230 / 15%) -0.1em -0.1em 0.5em;--date-btn-shadow-hover:rgba(0 0 0) 0.3em 0.4em 1em,rgba(230 230 230 / 15%) -0.2em -0.2em 0.8em;--checkmark-background:radial-gradient(circle, rgba(0 0 0 / 50%) 0, rgba(0 0 0 / 30%) 40%, rgba(0 0 0 / 0%) 70%);--overlay-background:#141414;--icon-ms365-color:#ea3e23;--icon-yahoo-color:#bebebe;--icon-filter:grayscale(0.2)}.atcb-button-wrapper,.atcb-list,.atcb-modal-box{font-size:var(--base-font-size-l)}@media (width <= 991px){.atcb-button-wrapper,.atcb-list,.atcb-modal-box{font-size:var(--base-font-size-m)}}@media (width <= 575px){.atcb-button-wrapper,.atcb-list,.atcb-modal-box{font-size:var(--base-font-size-s)}}.atcb-button-wrapper{display:block;padding:5px;position:relative}.atcb-button{align-items:center;background-color:var(--btn-background);border:0;border-radius:15px;box-shadow:var(--btn-shadow);color:var(--btn-text);cursor:pointer;display:flex;font-family:var(--font);font-size:1em;font-weight:600;justify-content:center;line-height:1.5em;margin:0;max-width:350px;min-width:10em;padding:1em 1.2em;position:relative;text-align:center;touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;width:auto;transition:box-shadow .1s ease-in-out;z-index:1}.atcb-button.atcb-no-text{min-width:0;border-radius:100%;display:flex;align-content:center;justify-content:center;align-items:center;height:3em;width:3em;padding:0}.atcb-button:disabled{min-width:0}.atcb-rtl .atcb-button{direction:rtl;text-align:right}.atcb-button:focus-visible{outline:2px solid var(--keyboard-focus)}.atcb-button:not([disabled]):focus,.atcb-button:not([disabled]):hover{background-color:var(--btn-background-hover);box-shadow:var(--btn-shadow-hover);color:var(--btn-text-hover)}.atcb-button.atcb-active:not(.atcb-modal-style,.atcb-dropoverlay){z-index:15000000}.atcb-button.atcb-active:not(.atcb-modal-style,.atcb-dropoverlay),.atcb-button.atcb-single:not([disabled]):focus,.atcb-button.atcb-single:not([disabled]):hover{background-color:var(--btn-background-hover);box-shadow:var(--btn-shadow-active);color:var(--btn-text-hover)}.atcb-button.atcb-active.atcb-dropoverlay{z-index:14000090}.atcb-icon{height:1em;margin-bottom:.3em;margin-right:.8em;flex-grow:0;flex-shrink:0}.atcb-rtl .atcb-icon{margin-right:0;margin-left:.8em}.atcb-no-text .atcb-icon{margin-right:0;margin-left:0}.atcb-icon svg{height:100%;fill:currentcolor;width:auto}.atcb-text{overflow-wrap:anywhere}.atcb-button:disabled .atcb-text{letter-spacing:.1em}.atcb-dropdown-anchor{bottom:-30px;height:0;width:100%;opacity:0;position:absolute}.atcb-list-wrapper{box-sizing:border-box;position:absolute;min-width:12.5em;width:auto;animation:list-entrance .6s ease 0s 1 normal forwards;z-index:15000000}@keyframes list-entrance{0%{opacity:0}100%{opacity:1}}.atcb-list{border-radius:11px;box-sizing:border-box;box-shadow:var(--list-shadow);color:var(--list-text);display:block;font-family:var(--font);min-width:100%;position:relative;user-select:none;-webkit-user-select:none;width:fit-content}.atcb-list-item{box-shadow:none;align-items:center;background-color:var(--list-background);box-sizing:border-box;cursor:pointer;display:flex;font-size:1em;line-height:1.75em;padding:1em;text-align:left;touch-action:manipulation;-webkit-tap-highlight-color:transparent;transition:box-shadow .1s ease-in-out,padding .1s ease-in-out,margin .1s ease-in-out}.atcb-rtl .atcb-list-item{direction:rtl;text-align:right}.atcb-list-item:hover{box-shadow:var(--btn-shadow);background-color:var(--list-background-hover);color:var(--list-text-hover);padding:1.2em;margin:-.2em;position:relative;z-index:15000010}.atcb-list-item:focus-visible{box-shadow:var(--btn-shadow);background-color:var(--list-background-hover);color:var(--keyboard-focus);padding:1.2em;margin:-.2em;position:relative;z-index:15000010;font-weight:600;outline:0}.atcb-list-item:last-child{border-radius:0 0 11px 11px}.atcb-list-item:first-child{border-radius:11px 11px 0 0}.atcb-list-item:only-child{border-radius:11px}.atcb-list-item .atcb-icon{margin-bottom:.5em;margin-right:.6em;width:1.125em}.atcb-rtl .atcb-list-item .atcb-icon{margin-right:0;margin-left:.6em}.atcb-no-text .atcb-list-item .atcb-icon{margin:0 auto}.atcb-list-item-close{background-color:var(--list-close-background)}.atcb-list-item.atcb-list-item-close:not(:focus-visible){color:var(--list-close-text)}.atcb-list-item-close svg{fill:currentcolor}.atcb-modal{display:block;margin:auto;min-width:250px;width:auto;position:relative;z-index:14000090}.atcb-modal-box{animation:list-entrance .6s ease 0s 1 normal forwards;filter:var(--modal-shadow);color:var(--modal-text);cursor:default;box-sizing:border-box;font-family:var(--font);line-height:1.5em;text-align:left;user-select:none;-webkit-user-select:none;touch-action:manipulation;width:100%;margin-bottom:20px;max-width:32em;-webkit-tap-highlight-color:transparent}.atcb-modal-box.atcb-rtl{text-align:right;direction:rtl;padding:1.25em 1em 1.25em 2em}.atcb-modal-icon{height:2.5em;width:2.5em;border-radius:100%;background-color:var(--modal-background);padding:1.75em;margin:auto}.atcb-modal-icon svg{height:auto;fill:currentcolor;width:100%}.atcb-modal-headline{background-color:var(--modal-background);border-radius:9px 9px 0 0;font-size:1.3em;font-weight:600;line-height:1.5em;padding:1.8em 2em 1.3em;text-transform:uppercase;text-align:center}.atcb-modal-icon+.atcb-modal-headline{margin-top:-2.6em;padding-top:2.6em}.atcb-modal-content{background-color:var(--modal-background);font-size:1em;padding:.3em 2.5em 2.25em}@media (width <= 575px){.atcb-modal-headline{padding:1.8em 1em 1em}.atcb-modal-content{padding:.3em 1em 2em}}.atcb-modal-buttons{background-color:var(--modal-btn-bar);border-radius:0 0 9px 9px;box-sizing:border-box;padding:.8em 1em;text-align:center;width:100%;display:flex;justify-content:center;flex-flow:row-reverse wrap;align-items:center}a.atcb-modal-btn,button.atcb-modal-btn{background-color:var(--modal-btn-secondary-background);border:0;border-radius:13px;box-shadow:var(--modal-shadow-btn);color:var(--modal-btn-secondary-text);cursor:pointer;display:inline-block;font-family:var(--font);font-size:.9em;font-weight:600;line-height:1.5em;margin:.625em;padding:.625em 1.25em;position:relative;text-align:center;text-decoration:none;touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;text-transform:uppercase}a.atcb-modal-btn.atcb-modal-btn-primary,button.atcb-modal-btn.atcb-modal-btn-primary{background-color:var(--modal-btn-background);color:var(--modal-btn-text)}a.atcb-modal-btn:hover,button.atcb-modal-btn:hover{background-color:var(--modal-btn-background-hover);box-shadow:var(--modal-shadow-btn-hover);color:var(--modal-btn-text-hover);text-decoration:none}a.atcb-modal-btn:focus-visible,button.atcb-modal-btn:focus-visible{background-color:var(--modal-btn-background-hover);outline:2px solid var(--keyboard-focus)}.atcb-subevent-btn{display:flex;align-items:flex-start;cursor:pointer;font-family:var(--font);font-size:1em;box-shadow:var(--date-btn-shadow);background-color:var(--date-btn-background);border:0;border-radius:6px;padding:0;margin:0;touch-action:manipulation;position:relative;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}.atcb-subevent-btn:hover{align-items:center}.atcb-subevent-btn:focus,.atcb-subevent-btn:hover{background-color:var(--date-btn-background-hover);box-shadow:var(--date-btn-shadow-hover)}.atcb-subevent-btn:focus-visible{outline:2px solid var(--keyboard-focus)}.atcb-subevent-btn+.atcb-subevent-btn{margin-top:30px}.atcb-date-btn-left{border-radius:4px 0 0 4px;align-self:stretch;background-color:var(--date-btn-cal-background);color:var(--date-btn-background-hover);padding:.7em .8em .8em;width:2.7em;align-items:center;display:flex;flex-direction:column}.atcb-rtl .atcb-date-btn-left{border-radius:0 4px 4px 0}.atcb-subevent-btn:hover .atcb-date-btn-left{opacity:.8}.atcb-date-btn-day{color:var(--date-btn-cal-day-text);font-weight:300;font-size:2em;word-break:keep-all;padding-bottom:.1em}.atcb-initialized[lang=ja] .atcb-date-btn-day,.atcb-initialized[lang=ko] .atcb-date-btn-day,.atcb-initialized[lang=zh] .atcb-date-btn-day{font-size:1.3em}.atcb-date-btn-month{color:var(--date-btn-cal-month-text);font-weight:600;font-size:1em}.atcb-date-btn-right{position:relative;color:var(--date-btn-text);min-width:12.5em;overflow-wrap:anywhere}.atcb-date-btn-details{opacity:1;padding:.7em .8em;text-align:left}.atcb-rtl .atcb-date-btn-details{text-align:right}.atcb-date-btn-hover{position:absolute;top:0;left:0;width:100%;opacity:0;height:100%;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:1em;padding:.3em;box-sizing:border-box}.atcb-subevent-btn:hover .atcb-date-btn-details{opacity:0}.atcb-subevent-btn:hover .atcb-date-btn-hover{opacity:1}.atcb-date-btn-headline{font-weight:600;font-size:.9em;margin-bottom:.5em;overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.atcb-date-btn-content{display:flex;align-items:flex-start;font-size:.8em;color:var(--date-btn-text-secondary)}.atcb-date-btn-content-location{overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;word-break:break-all}.atcb-date-btn-content-icon{display:inline-block;height:.8em;width:1.3em;flex:0 0 1.3em}.atcb-rtl .atcb-date-btn-content-icon{margin-right:0;margin-left:.5em}.atcb-initialized[lang=ja] .atcb-date-btn-content:not(.atcb-date-btn-content-location) .atcb-date-btn-content-icon,.atcb-initialized[lang=ko] .atcb-date-btn-content:not(.atcb-date-btn-content-location) .atcb-date-btn-content-icon,.atcb-initialized[lang=zh] .atcb-date-btn-content:not(.atcb-date-btn-content-location) .atcb-date-btn-content-icon{margin-top:.15em}.atcb-date-btn-content-icon svg{height:100%;fill:currentcolor;width:auto}.atcb-date-btn-content+.atcb-date-btn-content{margin-top:.3em}.atcb-date-btn-content-text span:not(.atcb-icon-ical){padding-right:.3em;display:inline-block}.atcb-checkmark{display:none}.atcb-saved .atcb-checkmark{box-sizing:content-box;color:var(--btn-text);display:block;position:absolute;top:-.9em;right:-.3em;padding:.5em;background:var(--checkmark-background);border-radius:100%;height:1.5em}.atcb-button.atcb-active:not(.atcb-modal-style,.atcb-dropoverlay) .atcb-checkmark,.atcb-button.atcb-single:focus .atcb-checkmark,.atcb-button.atcb-single:hover .atcb-checkmark{top:-.77em;right:-.17em}.atcb-checkmark svg{height:100%;fill:currentcolor;width:auto}#atcb-bgoverlay{background-color:var(--overlay-background);border:0;box-sizing:border-box;display:flex;height:calc(100vh + 100px);inset-inline:0;left:0;right:0;top:0;min-height:100%;min-width:100%;overflow-y:auto;padding:20px 20px 130px;position:fixed;width:100vw;z-index:14000000}#atcb-bgoverlay:not(dialog){animation:atcb-bgoverlay-animate .1s ease 0s 1 normal forwards;opacity:0}#atcb-bgoverlay.atcb-no-bg{animation:none;backdrop-filter:none;-webkit-backdrop-filter:none;opacity:1;background-color:transparent}@keyframes atcb-bgoverlay-animate{0%{opacity:0}100%{opacity:1}}#atcb-bgoverlay.atcb-click:hover{cursor:var(--overlay-cursor)}.atcb-icon .atcb-icon-apple svg{fill:currentcolor}.atcb-icon .atcb-icon-ical svg{fill:currentcolor}.atcb-icon .atcb-icon-ms365 svg{fill:var(--icon-ms365-color)}.atcb-icon .atcb-icon-yahoo svg{fill:var(--icon-yahoo-color)}.atcb-icon .atcb-icon-google svg,.atcb-icon .atcb-icon-msteams svg,.atcb-icon .atcb-icon-outlookcom svg{filter:var(--icon-filter)}\",\r\"text\": \":host{width:fit-content;--base-font-size-l:16px;--base-font-size-m:16px;--base-font-size-s:16px;--font:arial,helvetica,sans-serif;--keyboard-focus:#1e90ff;--btn-underline:#a9ceff;--btn-border:#a8a8a8;--btn-background:#f5f5f5;--btn-background-hover:#fff;--btn-text:#333;--btn-text-hover:#000;--btn-text-shadow:#fff;--list-background:#f5f5f5;--list-background-hover:#fff;--list-text:#333;--list-text-hover:#000;--list-close-background:#e5e5e5;--list-close-text:#777;--list-shadow:rgba(0 0 0 / 20%) 2px 5px 18px -1px,rgba(0 0 0 / 40%) 2px 2px 10px -3px;--list-shadow-modal:rgba(0 0 0 / 60%) 3px 6px 40px -5px,rgba(0 0 0 / 60%) 3px 3px 15px -4px;--modal-text:#000;--modal-background:#f5f5f5;--modal-btn-bar:#c6c8cd;--modal-btn-background:#f5f5f5;--modal-btn-secondary-background:#e2e1e6;--modal-btn-background-hover:#fff;--modal-btn-text:#2e2e2e;--modal-btn-text-hover:#161616;--modal-btn-secondary-text:#666567;--modal-shadow:drop-shadow(5px 8px 30px rgba(0 0 0 / 70%));--modal-shadow-btn:rgba(0 0 0 / 10%) 2px 3px 10px -3px,rgba(0 0 0 / 25%) 1px 1px 8px -4px;--modal-shadow-btn-hover:rgba(0 0 0 / 35%) 3px 5px 15px -2px,rgba(0 0 0 / 20%) 2px 4px 25px -6px;--date-btn-text:#1d1d1e;--date-btn-text-secondary:#3a3a3f;--date-btn-cal-day-text:#fff;--date-btn-cal-month-text:#d3d2d7;--date-btn-cal-background:#313132;--date-btn-background:#eae9ed;--date-btn-background-hover:#fff;--date-btn-shadow:rgba(0 0 0 / 40%) 1px 3px 15px -4px,rgba(0 0 0 / 20%) 1px 1px 8px -4px;--date-btn-shadow-hover:rgba(0 0 0 / 40%) 4px 6px 18px -1px,rgba(0 0 0 / 35%) 4px 5px 25px -2px;--checkmark-background:radial-gradient(circle,rgba(255 255 255 / 80%) 0,rgba(255 255 255 / 60%) 40%,rgba(255 255 255 / 0%) 70%);--overlay-background:rgba(200 200 200 / 25%);--overlay-cursor:url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23777' width='16' height='16' viewBox='0 0 122.878 122.88'%3E%3Cpath d='M1.426 8.313a4.87 4.87 0 0 1 0-6.886 4.87 4.87 0 0 1 6.886 0l53.127 53.127 53.127-53.127a4.87 4.87 0 0 1 6.887 0 4.87 4.87 0 0 1 0 6.886L68.324 61.439l53.128 53.128a4.87 4.87 0 0 1-6.887 6.886L61.438 68.326 8.312 121.453a4.87 4.87 0 0 1-6.886 0 4.87 4.87 0 0 1 0-6.886l53.127-53.128L1.426 8.313h0z'/%3E%3C/svg%3E\\\") 16 16,crosshair;--icon-ms365-color:#ea3e23;--icon-yahoo-color:#5f01d1;--icon-filter:none}:host(.atcb-dark){--btn-underline:#336db9;--btn-border:#888;--btn-background:#2e2e2e;--btn-background-hover:#373737;--btn-text:#dedede;--btn-text-hover:#fff;--btn-text-shadow:#000;--list-background:#2e2e2e;--list-background-hover:#373737;--list-text:#dedede;--list-text-hover:#fff;--list-close-background:#282828;--list-shadow:rgba(255 255 255 / 5%) -12px -5px 20px -8px,rgba(255 255 255 / 6%) -7px -5px 15px -3px,rgba(0 0 0 / 50%) 2px 5px 18px -1px,rgba(0 0 0 / 40%) 3px 3px 20px -3px;--list-shadow-modal:rgba(255 255 255 / 8%) -12px -5px 30px -8px,rgba(255 255 255 / 8%) -7px -5px 15px -3px,rgba(0 0 0 / 60%) 4px 6px 50px -4px,rgba(0 0 0 / 90%) 8px 12px 40px -2px;--modal-text:#f1f1f1;--modal-background:#242424;--modal-btn-bar:#38383a;--modal-btn-background:#181819;--modal-btn-secondary-background:#2e2d30;--modal-btn-background-hover:#434246;--modal-btn-text:#dbdbdb;--modal-btn-text-hover:#fff;--modal-btn-secondary-text:#b8b8b8;--modal-shadow:drop-shadow(5px 8px 30px rgba(0 0 0 / 90%));--modal-shadow-btn:rgba(255 255 255 / 5%) -2px -2px 10px,rgba(0 0 0 / 30%) 1px 2px 8px -1px;--date-btn-text:#ebebf0;--date-btn-text-secondary:#b5b5bd;--date-btn-cal-day-text:#101010;--date-btn-cal-month-text:#3e3e3f;--date-btn-cal-background:#c7c7cd;--date-btn-background:#363636;--date-btn-background-hover:#474747;--date-btn-shadow:rgba(255 255 255 / 10%) -8px -6px 20px,rgba(0 0 0 / 50%) 1px 3px 25px -8px,rgba(0 0 0 / 50%) 1px 1px 10px -3px;--checkmark-background:radial-gradient(circle,rgba(0 0 0 / 40%) 0,rgba(0 0 0 / 20%) 40%,rgba(0 0 0 / 0%) 70%);--overlay-background:rgba(20 20 20 / 60%);--icon-ms365-color:#ea3e23;--icon-yahoo-color:#bebebe;--icon-filter:grayscale(0.2)}.atcb-button-wrapper,.atcb-list,.atcb-modal-box{font-size:var(--base-font-size-l)}@media (width <= 991px){.atcb-button-wrapper,.atcb-list,.atcb-modal-box{font-size:var(--base-font-size-m)}}@media (width <= 575px){.atcb-button-wrapper,.atcb-list,.atcb-modal-box{font-size:var(--base-font-size-s)}}.atcb-button-wrapper{display:block;padding:5px;position:relative}.atcb-button{background-image:linear-gradient(120deg,var(--btn-underline) 0,var(--btn-underline) 100%);background-repeat:no-repeat;background-size:100% 10%;background-position:0 100%;background-color:transparent;border:0;border-radius:0;transition:background-size .1s ease-in,border-radius .2s ease-in;align-items:center;color:var(--btn-text);cursor:pointer;display:flex;font-family:var(--font);font-size:1em;font-weight:600;justify-content:center;line-height:1.2em;margin:0 .2em;padding:.75em;position:relative;text-align:left;touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;width:auto;z-index:1}.atcb-button.atcb-no-text,.atcb-button:disabled{min-width:0}.atcb-rtl .atcb-button{direction:rtl;text-align:right}.atcb-button:focus-visible{outline:2px solid var(--keyboard-focus)}.atcb-button:not([disabled]):focus,.atcb-button:not([disabled]):hover{background-size:100% 100%;color:var(--btn-text-hover);text-shadow:0 0 .7em var(--btn-text-shadow);border-radius:21px}.atcb-button.atcb-active:not(.atcb-modal-style,.atcb-dropoverlay){z-index:15000000}.atcb-button.atcb-active:not(.atcb-modal-style,.atcb-dropoverlay),.atcb-button.atcb-single:not([disabled]):focus,.atcb-button.atcb-single:not([disabled]):hover{background-size:100% 10%;border-radius:3px 3px 11px 11px;background-position:0 0;background-color:var(--btn-background);color:var(--btn-text);text-shadow:none}.atcb-button.atcb-active.atcb-dropup{background-position:0 100%;border-radius:11px 11px 3px 3px}.atcb-button.atcb-dropup::after,.atcb-button:not(.atcb-modal-style,.atcb-dropoverlay,.atcb-dropup)::before{content:\\\"\\\";width:0;height:0;position:absolute;left:0;right:0;margin:0 auto;transition:border-width .1s linear .1s}.atcb-button:not(.atcb-modal-style,.atcb-dropoverlay,.atcb-dropup)::before{top:100%;border:0 solid transparent;border-bottom:none;border-top-color:var(--btn-background)}.atcb-button.atcb-dropup::after{bottom:100%;border:0 solid transparent;border-top:none;border-bottom-color:var(--btn-background)}.atcb-button.atcb-active.atcb-dropup::after,.atcb-button.atcb-active:not(.atcb-modal-style,.atcb-dropoverlay,.atcb-dropup)::before{border-width:.35em}.atcb-button.atcb-active.atcb-dropoverlay{z-index:14000090}.atcb-icon{height:1em;margin-right:1em;line-height:1em;flex-grow:0;flex-shrink:0}.atcb-rtl .atcb-icon{margin-right:0;margin-left:1em}.atcb-no-text .atcb-icon{margin-right:0;margin-left:0}.atcb-icon svg{height:100%;fill:currentcolor;width:auto}.atcb-icon-trigger svg{display:none}.atcb-button .atcb-icon-trigger::after{content:\\\"+\\\";font-size:1.5em}.atcb-text{overflow-wrap:anywhere}.atcb-button:disabled .atcb-text{letter-spacing:.1em}.atcb-dropdown-anchor{bottom:-15px;height:0;width:100%;opacity:0;position:absolute}.atcb-list-wrapper{box-sizing:border-box;position:absolute;z-index:14000090;min-width:12.5em;width:auto}.atcb-list-wrapper:not(.atcb-dropup,.atcb-dropoverlay){animation:list-entrance-bottom .2s ease 0s 1 normal forwards}.atcb-list-wrapper.atcb-dropup{animation:list-entrance-top .2s ease 0s 1 normal forwards}.atcb-list-wrapper.atcb-dropoverlay{animation:list-entrance-center .2s ease 0s 1 normal forwards;z-index:15000000}@keyframes list-entrance-bottom{0%{opacity:0;transform:translateY(250px)}100%{opacity:1;transform:translateY(0)}}@keyframes list-entrance-top{0%{opacity:0;transform:translateY(-250px)}100%{opacity:1;transform:translateY(0)}}@keyframes list-entrance-center{0%{opacity:0;transform:scaleY(1)}1%{opacity:1;transform:scaleY(0)}100%{opacity:1;transform:scaleY(1)}}.atcb-list{border-radius:11px;box-sizing:border-box;box-shadow:var(--list-shadow);color:var(--list-text);display:block;font-family:var(--font);min-width:100%;position:relative;user-select:none;-webkit-user-select:none;width:fit-content}.atcb-list-item{align-items:center;background-color:var(--list-background);box-sizing:border-box;cursor:pointer;display:flex;font-size:1em;line-height:1.75em;padding:.8em 1em;text-align:left;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.atcb-rtl .atcb-list-item{direction:rtl;text-align:right}.atcb-list-item:hover{background-color:var(--list-background-hover);color:var(--list-text-hover)}.atcb-list-item:focus-visible{background-color:var(--list-background-hover);color:var(--keyboard-focus);font-weight:600;outline:0}.atcb-list-item:last-child{border-radius:0 0 11px 11px}.atcb-list-item:first-child{border-radius:11px 11px 0 0}.atcb-list-item:only-child{border-radius:11px}.atcb-list.atcb-modal{box-shadow:var(--list-shadow-modal)}.atcb-list-item .atcb-icon{margin-bottom:.1em;margin-right:.7em;width:1.125em}.atcb-rtl .atcb-list-item .atcb-icon{margin-right:0;margin-left:.7em}.atcb-no-text .atcb-list-item .atcb-icon{margin:0 auto}.atcb-list-item-close{background-color:var(--list-close-background)}.atcb-list-item.atcb-list-item-close:not(:focus-visible){color:var(--list-close-text)}.atcb-list-item-close svg{fill:currentcolor}.atcb-modal{display:block;margin:auto;min-width:250px;width:auto;position:relative;z-index:14000090}.atcb-modal-box{filter:var(--modal-shadow);color:var(--modal-text);cursor:default;box-sizing:border-box;font-family:var(--font);line-height:1.5em;text-align:left;user-select:none;-webkit-user-select:none;touch-action:manipulation;width:100%;margin-bottom:20px;max-width:32em;-webkit-tap-highlight-color:transparent}.atcb-modal-box.atcb-rtl{text-align:right;direction:rtl;padding:1.25em 1em 1.25em 2em}.atcb-modal-icon{height:2.5em;width:2.5em;border-radius:100%;background-color:var(--modal-background);padding:1.75em;margin:auto}.atcb-modal-icon svg{height:auto;fill:currentcolor;width:100%}.atcb-modal-headline{background-color:var(--modal-background);border-radius:9px 9px 0 0;font-size:1.3em;font-weight:600;line-height:1.5em;padding:1.8em 2em 1.3em;text-transform:uppercase;text-align:center}.atcb-modal-icon+.atcb-modal-headline{margin-top:-2.6em;padding-top:2.6em}.atcb-modal-content{background-color:var(--modal-background);font-size:1em;padding:.3em 2.5em 2.25em}@media (width <= 575px){.atcb-modal-headline{padding:1.8em 1em 1em}.atcb-modal-content{padding:.3em 1em 2em}}.atcb-modal-buttons{background-color:var(--modal-btn-bar);border-radius:0 0 9px 9px;box-sizing:border-box;padding:.8em 1em;text-align:center;width:100%;display:flex;justify-content:center;flex-flow:row-reverse wrap;align-items:center}a.atcb-modal-btn,button.atcb-modal-btn{background-color:var(--modal-btn-secondary-background);border:0;border-radius:21px;box-shadow:var(--modal-shadow-btn);color:var(--modal-btn-secondary-text);cursor:pointer;display:inline-block;font-family:var(--font);font-size:.9em;font-weight:600;line-height:1.5em;margin:.625em;padding:.625em 1.25em;position:relative;text-align:center;text-decoration:none;touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;text-transform:uppercase}a.atcb-modal-btn.atcb-modal-btn-primary,button.atcb-modal-btn.atcb-modal-btn-primary{background-color:var(--modal-btn-background);color:var(--modal-btn-text)}a.atcb-modal-btn:hover,button.atcb-modal-btn:hover{background-color:var(--modal-btn-background-hover);box-shadow:var(--modal-shadow-btn-hover);color:var(--modal-btn-text-hover);text-decoration:none}a.atcb-modal-btn:focus-visible,button.atcb-modal-btn:focus-visible{background-color:var(--modal-btn-background-hover);outline:2px solid var(--keyboard-focus)}.atcb-subevent-btn{display:flex;align-items:flex-start;cursor:pointer;font-family:var(--font);font-size:1em;box-shadow:var(--date-btn-shadow);background-color:var(--date-btn-background);border:0;border-radius:6px;padding:0;margin:0;touch-action:manipulation;position:relative;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}.atcb-subevent-btn:hover{align-items:center}.atcb-subevent-btn:focus,.atcb-subevent-btn:hover{background-color:var(--date-btn-background-hover);box-shadow:var(--date-btn-shadow-hover)}.atcb-subevent-btn:focus-visible{outline:2px solid var(--keyboard-focus)}.atcb-subevent-btn+.atcb-subevent-btn{margin-top:30px}.atcb-date-btn-left{border-radius:4px 0 0 4px;align-self:stretch;background-color:var(--date-btn-cal-background);color:var(--date-btn-background-hover);padding:.7em .8em .8em;width:2.7em;align-items:center;display:flex;flex-direction:column}.atcb-rtl .atcb-date-btn-left{border-radius:0 4px 4px 0}.atcb-subevent-btn:hover .atcb-date-btn-left{opacity:.8}.atcb-date-btn-day{color:var(--date-btn-cal-day-text);font-weight:300;font-size:2em;word-break:keep-all;padding-bottom:.1em}.atcb-initialized[lang=ja] .atcb-date-btn-day,.atcb-initialized[lang=ko] .atcb-date-btn-day,.atcb-initialized[lang=zh] .atcb-date-btn-day{font-size:1.3em}.atcb-date-btn-month{color:var(--date-btn-cal-month-text);font-weight:600;font-size:1em}.atcb-date-btn-right{position:relative;color:var(--date-btn-text);min-width:12.5em;overflow-wrap:anywhere}.atcb-date-btn-details{opacity:1;padding:.7em .8em;text-align:left}.atcb-rtl .atcb-date-btn-details{text-align:right}.atcb-date-btn-hover{position:absolute;top:0;left:0;width:100%;opacity:0;height:100%;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:1em;padding:.3em;box-sizing:border-box}.atcb-subevent-btn:hover .atcb-date-btn-details{opacity:0}.atcb-subevent-btn:hover .atcb-date-btn-hover{opacity:1}.atcb-date-btn-headline{font-weight:600;font-size:.9em;margin-bottom:.5em;overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.atcb-date-btn-content{display:flex;align-items:flex-start;font-size:.8em;color:var(--date-btn-text-secondary)}.atcb-date-btn-content-location{overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;word-break:break-all}.atcb-date-btn-content-icon{display:inline-block;height:.8em;width:1.3em;flex:0 0 1.3em}.atcb-rtl .atcb-date-btn-content-icon{margin-right:0;margin-left:.5em}.atcb-initialized[lang=ja] .atcb-date-btn-content:not(.atcb-date-btn-content-location) .atcb-date-btn-content-icon,.atcb-initialized[lang=ko] .atcb-date-btn-content:not(.atcb-date-btn-content-location) .atcb-date-btn-content-icon,.atcb-initialized[lang=zh] .atcb-date-btn-content:not(.atcb-date-btn-content-location) .atcb-date-btn-content-icon{margin-top:.15em}.atcb-date-btn-content-icon svg{height:100%;fill:currentcolor;width:auto}.atcb-date-btn-content+.atcb-date-btn-content{margin-top:.3em}.atcb-date-btn-content-text span:not(.atcb-icon-ical){padding-right:.3em;display:inline-block}.atcb-checkmark{display:none}.atcb-saved .atcb-checkmark{box-sizing:content-box;color:var(--btn-text);display:block;position:absolute;top:-.9em;right:-.3em;padding:.5em;background:var(--checkmark-background);border-radius:100%;height:1.5em}.atcb-checkmark svg{height:100%;fill:currentcolor;width:auto}#atcb-bgoverlay{backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);background-color:var(--overlay-background);border:0;box-sizing:border-box;display:flex;height:calc(100vh + 100px);inset-inline:0;left:0;right:0;top:0;min-height:100%;min-width:100%;overflow-y:auto;padding:20px 20px 130px;position:fixed;width:100vw;z-index:14000000}#atcb-bgoverlay:not(dialog){animation:atcb-bgoverlay-animate .2s ease 0s 1 normal forwards;opacity:0}#atcb-bgoverlay.atcb-no-bg{animation:none;backdrop-filter:none;-webkit-backdrop-filter:none;opacity:1;background-color:transparent}@keyframes atcb-bgoverlay-animate{0%{opacity:0}100%{opacity:1}}#atcb-bgoverlay.atcb-click:hover{cursor:var(--overlay-cursor)}.atcb-icon .atcb-icon-apple svg{fill:var(--btn-text)}.atcb-icon .atcb-icon-ical svg{fill:var(--btn-text)}.atcb-icon .atcb-icon-ms365 svg{fill:var(--icon-ms365-color)}.atcb-icon .atcb-icon-yahoo svg{fill:var(--icon-yahoo-color)}.atcb-icon .atcb-icon-google svg,.atcb-icon .atcb-icon-msteams svg,.atcb-icon .atcb-icon-outlookcom svg{filter:var(--icon-filter)}\",\r\"date\": \":host{width:fit-content;--base-font-size-l:16px;--base-font-size-m:16px;--base-font-size-s:16px;--font:arial,helvetica,sans-serif;--keyboard-focus:#1e90ff;--btn-background:#f5f5f5;--btn-background-hover:#fff;--btn-border:#d2d2d2;--btn-text:#333;--btn-text-hover:#000;--btn-shadow:rgba(0 0 0 / 20%) 2px 5px 18px -1px,rgba(0 0 0 / 15%) 2px 2px 10px -3px;--btn-shadow-hover:rgba(0 0 0 / 30%) 2px 5px 18px -1px,rgba(0 0 0 / 25%) 2px 2px 10px -3px;--list-background:#f5f5f5;--list-background-hover:#fff;--list-text:#333;--list-text-hover:#000;--list-close-background:#e5e5e5;--list-close-text:#777;--list-shadow:rgba(0 0 0 / 20%) 2px 5px 18px -1px,rgba(0 0 0 / 40%) 2px 2px 10px -3px;--list-shadow-modal:rgba(0 0 0 / 60%) 3px 6px 40px -5px,rgba(0 0 0 / 60%) 3px 3px 15px -4px;--modal-text:#000;--modal-background:#f5f5f5;--modal-btn-bar:#c6c8cd;--modal-btn-background:#f5f5f5;--modal-btn-secondary-background:#e2e1e6;--modal-btn-background-hover:#fff;--modal-btn-text:#2e2e2e;--modal-btn-text-hover:#161616;--modal-btn-secondary-text:#666567;--modal-shadow:drop-shadow(5px 8px 30px rgba(0 0 0 / 70%));--modal-shadow-btn:rgba(0 0 0 / 10%) 2px 3px 10px -3px,rgba(0 0 0 / 25%) 1px 1px 8px -4px;--modal-shadow-btn-hover:rgba(0 0 0 / 35%) 3px 5px 15px -2px,rgba(0 0 0 / 20%) 2px 4px 25px -6px;--date-btn-text:#1d1d1e;--date-btn-text-secondary:#3a3a3f;--date-btn-cal-day-text:#fff;--date-btn-cal-month-text:#d3d2d7;--date-btn-cal-background:#313132;--date-btn-background:#eae9ed;--date-btn-background-hover:#fff;--date-btn-shadow:rgba(0 0 0 / 40%) 1px 3px 15px -4px,rgba(0 0 0 / 20%) 1px 1px 8px -4px;--date-btn-shadow-hover:rgba(0 0 0 / 40%) 4px 6px 18px -1px,rgba(0 0 0 / 35%) 4px 5px 25px -2px;--checkmark-background:radial-gradient(circle,#fff 0,rgba(255 255 255 / 80%) 40%,rgba(255 255 255 / 0%) 70%);--overlay-background:rgba(20 20 20 / 25%);--overlay-cursor:url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23777' width='16' height='16' viewBox='0 0 122.878 122.88'%3E%3Cpath d='M1.426 8.313a4.87 4.87 0 0 1 0-6.886 4.87 4.87 0 0 1 6.886 0l53.127 53.127 53.127-53.127a4.87 4.87 0 0 1 6.887 0 4.87 4.87 0 0 1 0 6.886L68.324 61.439l53.128 53.128a4.87 4.87 0 0 1-6.887 6.886L61.438 68.326 8.312 121.453a4.87 4.87 0 0 1-6.886 0 4.87 4.87 0 0 1 0-6.886l53.127-53.128L1.426 8.313h0z'/%3E%3C/svg%3E\\\") 16 16,crosshair;--icon-ms365-color:#ea3e23;--icon-yahoo-color:#5f01d1;--icon-filter:none}:host(.atcb-dark){--btn-background:#2e2e2e;--btn-background-hover:#474747;--btn-border:#4d4d4d;--btn-text:#dedede;--btn-text-hover:#f1f1f1;--btn-shadow:rgba(255 255 255 / 5%) -12px -5px 20px -8px,rgba(255 255 255 / 6%) -7px -5px 15px -3px,rgba(0 0 0 / 50%) 2px 5px 18px -1px,rgba(0 0 0 / 40%) 3px 3px 20px -3px;--btn-shadow-hover:rgba(255 255 255 / 6%) -12px -5px 23px -8px,rgba(255 255 255 / 7%) -7px -5px 18px -3px,rgba(0 0 0 / 60%) 2px 5px 19px -1px,rgba(0 0 0 / 50%) 3px 3px 22px -3px;--list-background:#2e2e2e;--list-background-hover:#474747;--list-text:#dedede;--list-text-hover:#f1f1f1;--list-close-background:#282828;--list-shadow:rgba(255 255 255 / 5%) -12px -5px 20px -8px,rgba(255 255 255 / 6%) -7px -5px 15px -3px,rgba(0 0 0 / 50%) 2px 5px 18px -1px,rgba(0 0 0 / 40%) 3px 3px 20px -3px;--list-shadow-modal:rgba(255 255 255 / 8%) -12px -5px 30px -8px,rgba(255 255 255 / 8%) -7px -5px 15px -3px,rgba(0 0 0 / 60%) 4px 6px 50px -4px,rgba(0 0 0 / 90%) 8px 12px 40px -2px;--modal-text:#f1f1f1;--modal-background:#242424;--modal-btn-bar:#38383a;--modal-btn-background:#181819;--modal-btn-secondary-background:#2e2d30;--modal-btn-background-hover:#434246;--modal-btn-text:#dbdbdb;--modal-btn-text-hover:#fff;--modal-btn-secondary-text:#b8b8b8;--modal-shadow:drop-shadow(5px 8px 30px rgba(0 0 0 / 90%));--modal-shadow-btn:rgba(255 255 255 / 5%) -2px -2px 10px,rgba(0 0 0 / 30%) 1px 2px 8px -1px;--date-btn-text:#ebebf0;--date-btn-text-secondary:#b5b5bd;--date-btn-cal-day-text:#101010;--date-btn-cal-month-text:#3e3e3f;--date-btn-cal-background:#c7c7cd;--date-btn-background:#363636;--date-btn-background-hover:#474747;--date-btn-shadow:rgba(255 255 255 / 10%) -8px -6px 20px,rgba(0 0 0 / 50%) 1px 3px 25px -8px,rgba(0 0 0 / 50%) 1px 1px 10px -3px;--checkmark-background:radial-gradient(circle,rgba(0 0 0 / 50%) 0,rgba(0 0 0 / 30%) 40%,rgba(0 0 0 / 0%) 70%);--overlay-background:rgba(20 20 20 / 60%);--icon-ms365-color:#ea3e23;--icon-yahoo-color:#bebebe;--icon-filter:grayscale(.2)}.atcb-button-wrapper,.atcb-list,.atcb-modal-box{font-size:var(--base-font-size-l)}@media (width <= 991px){.atcb-button-wrapper,.atcb-list,.atcb-modal-box{font-size:var(--base-font-size-m)}}@media (width <= 575px){.atcb-button-wrapper,.atcb-list,.atcb-modal-box{font-size:var(--base-font-size-s)}}.atcb-button-wrapper{display:block;padding:5px;position:relative}.atcb-button,.atcb-subevent-btn{display:flex;align-items:flex-start;cursor:pointer;font-family:var(--font);font-size:1em;box-shadow:var(--date-btn-shadow);background-color:var(--date-btn-background);border:0;border-radius:6px;padding:0;margin:0;touch-action:manipulation;position:relative;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}.atcb-button{box-shadow:var(--btn-shadow);min-width:17.5em;max-width:16em;position:relative;z-index:1}.atcb-rtl .atcb-button{direction:rtl;text-align:right}.atcb-button:hover,.atcb-subevent-btn:hover{align-items:center}.atcb-subevent-btn:focus,.atcb-subevent-btn:hover{background-color:var(--date-btn-background-hover);box-shadow:var(--date-btn-shadow-hover)}.atcb-button:focus,.atcb-button:hover{background-color:var(--btn-background-hover);box-shadow:var(--btn-shadow-hover)}.atcb-button:focus-visible,.atcb-subevent-btn:focus-visible{outline:2px solid var(--keyboard-focus)}.atcb-button.atcb-active.atcb-dropoverlay{z-index:14000090}.atcb-subevent-btn+.atcb-subevent-btn{margin-top:30px}.atcb-date-btn-left{border-radius:4px 0 0 4px;align-self:stretch;background-color:var(--date-btn-cal-background);color:var(--date-btn-background-hover);padding:.7em .8em .8em;width:2.7em;align-items:center;display:flex;flex-direction:column}.atcb-rtl .atcb-date-btn-left{border-radius:0 4px 4px 0}.atcb-button:hover .atcb-date-btn-left,.atcb-subevent-btn:hover .atcb-date-btn-left{opacity:.8}.atcb-date-btn-day{color:var(--date-btn-cal-day-text);font-weight:300;font-size:2em;word-break:keep-all;padding-bottom:.1em}.atcb-initialized[lang=ja] .atcb-date-btn-day,.atcb-initialized[lang=ko] .atcb-date-btn-day,.atcb-initialized[lang=zh] .atcb-date-btn-day{font-size:1.3em}.atcb-date-btn-month{color:var(--date-btn-cal-month-text);font-weight:600;font-size:1em}.atcb-date-btn-right{position:relative;color:var(--date-btn-text);min-width:12.5em;overflow-wrap:anywhere}.atcb-date-btn-details{opacity:1;padding:.7em .8em;text-align:left}.atcb-rtl .atcb-date-btn-details{text-align:right}.atcb-date-btn-hover{position:absolute;top:0;left:0;width:100%;opacity:0;height:100%;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:1em;padding:.3em;box-sizing:border-box}.atcb-button:disabled .atcb-date-btn-hover{letter-spacing:.1em}.atcb-button:hover .atcb-date-btn-details,.atcb-subevent-btn:hover .atcb-date-btn-details{opacity:0}.atcb-button:hover .atcb-date-btn-hover,.atcb-subevent-btn:hover .atcb-date-btn-hover{opacity:1}.atcb-date-btn-headline{font-weight:600;font-size:.9em;margin-bottom:.5em;overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.atcb-date-btn-content{display:flex;align-items:flex-start;font-size:.8em;color:var(--date-btn-text-secondary)}.atcb-date-btn-content-location{overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;word-break:break-all}.atcb-date-btn-content-icon{display:inline-block;height:.8em;width:1.3em;flex:0 0 1.3em}.atcb-rtl .atcb-date-btn-content-icon{margin-right:0;margin-left:.5em}.atcb-initialized[lang=ja] .atcb-date-btn-content:not(.atcb-date-btn-content-location) .atcb-date-btn-content-icon,.atcb-initialized[lang=ko] .atcb-date-btn-content:not(.atcb-date-btn-content-location) .atcb-date-btn-content-icon,.atcb-initialized[lang=zh] .atcb-date-btn-content:not(.atcb-date-btn-content-location) .atcb-date-btn-content-icon{margin-top:.15em}.atcb-date-btn-content-icon svg{height:100%;fill:currentcolor;width:auto}.atcb-date-btn-content+.atcb-date-btn-content{margin-top:.3em}.atcb-date-btn-content-text span:not(.atcb-icon-ical){padding-right:.3em;display:inline-block}.atcb-icon{height:1em;margin-bottom:.3em;margin-right:.8em;flex-grow:0;flex-shrink:0}.atcb-rtl .atcb-icon{margin-right:0;margin-left:.8em}.atcb-icon svg{height:100%;fill:currentcolor;width:auto}.atcb-text{overflow-wrap:anywhere}.atcb-dropdown-anchor{bottom:4px;height:1px;width:100%;opacity:0;position:absolute}.atcb-list-wrapper{box-sizing:border-box;padding:0 4px;position:absolute;z-index:14000090}.atcb-list-wrapper.atcb-dropoverlay{z-index:15000000}.atcb-list{border-radius:0 0 6px 6px;box-sizing:border-box;box-shadow:var(--list-shadow);color:var(--list-text);display:block;font-family:var(--font);min-width:100%;position:relative;user-select:none;-webkit-user-select:none;width:fit-content}.atcb-list-item{align-items:center;background-color:var(--list-background);box-sizing:border-box;cursor:pointer;display:flex;font-size:1em;line-height:1.75em;padding:.8em;text-align:left;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.atcb-rtl .atcb-list-item{direction:rtl;text-align:right}.atcb-list-item:hover{background-color:var(--list-background-hover);color:var(--list-text-hover)}.atcb-list-item:focus-visible{background-color:var(--list-background-hover);color:var(--keyboard-focus);font-weight:600;outline:0}.atcb-list-item:last-child{border-radius:0 0 6px 6px}.atcb-dropup .atcb-list-item:last-child{border-radius:0;padding-bottom:1.25em}.atcb-dropoverlay .atcb-list .atcb-list-item:first-child,.atcb-dropup .atcb-list-item:first-child,.atcb-list.atcb-modal .atcb-list-item:first-child{border-radius:6px 6px 0 0}.atcb-dropoverlay .atcb-list .atcb-list-item:only-child,.atcb-list.atcb-modal .atcb-list-item:only-child{border-radius:6px}.atcb-list.atcb-generated-button:not(.atcb-modal) .atcb-list-item:first-child{padding-top:1.25em}.atcb-dropoverlay .atcb-list.atcb-generated-button:not(.atcb-modal) .atcb-list-item:first-child,.atcb-dropup .atcb-list.atcb-generated-button:not(.atcb-modal) .atcb-list-item:first-child{padding-top:.8em}.atcb-dropoverlay .atcb-list,.atcb-list.atcb-modal{border-radius:6px}.atcb-list.atcb-modal{box-shadow:var(--list-shadow-modal)}.atcb-list-item .atcb-icon{margin-bottom:.5em;margin-right:.6em;width:1.125em}.atcb-rtl .atcb-list-item .atcb-icon{margin-right:0;margin-left:.6em}.atcb-no-text .atcb-list-item .atcb-icon{margin:0 auto}.atcb-list-item-close{background-color:var(--list-close-background)}.atcb-list-item.atcb-list-item-close:not(:focus-visible){color:var(--list-close-text)}.atcb-list-item-close svg{fill:currentcolor}.atcb-modal{display:block;margin:auto;min-width:250px;width:auto;position:relative;z-index:14000090}.atcb-modal-box{filter:var(--modal-shadow);color:var(--modal-text);cursor:default;box-sizing:border-box;font-family:var(--font);line-height:1.5em;text-align:left;user-select:none;-webkit-user-select:none;touch-action:manipulation;width:100%;margin-bottom:20px;max-width:32em;-webkit-tap-highlight-color:transparent}.atcb-modal-box.atcb-rtl{text-align:right;direction:rtl;padding:1.25em 1em 1.25em 2em}.atcb-modal-icon{height:2.5em;width:2.5em;border-radius:100%;background-color:var(--modal-background);padding:1.75em;margin:auto}.atcb-modal-icon svg{height:auto;fill:currentcolor;width:100%}.atcb-modal-headline{background-color:var(--modal-background);border-radius:6px 6px 0 0;font-size:1.3em;font-weight:600;line-height:1.5em;padding:1.8em 2em 1.3em;text-transform:uppercase;text-align:center}.atcb-modal-icon+.atcb-modal-headline{margin-top:-2.6em;padding-top:2.6em}.atcb-modal-content{background-color:var(--modal-background);font-size:1em;padding:.3em 2.5em 2.25em}@media (width <= 575px){.atcb-modal-headline{padding:1.8em 1em 1em}.atcb-modal-content{padding:.3em 1em 2em}}.atcb-modal-buttons{background-color:var(--modal-btn-bar);border-radius:0 0 6px 6px;box-sizing:border-box;padding:.8em 1em;text-align:center;width:100%;display:flex;justify-content:center;flex-flow:row-reverse wrap;align-items:center}a.atcb-modal-btn,button.atcb-modal-btn{background-color:var(--modal-btn-secondary-background);border:0;border-radius:6px;box-shadow:var(--modal-shadow-btn);color:var(--modal-btn-secondary-text);cursor:pointer;display:inline-block;font-family:var(--font);font-size:.9em;font-weight:600;line-height:1.5em;margin:.625em;padding:.625em 1.25em;position:relative;text-align:center;text-decoration:none;touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;text-transform:uppercase}a.atcb-modal-btn.atcb-modal-btn-primary,button.atcb-modal-btn.atcb-modal-btn-primary{background-color:var(--modal-btn-background);color:var(--modal-btn-text)}a.atcb-modal-btn:hover,button.atcb-modal-btn:hover{background-color:var(--modal-btn-background-hover);box-shadow:var(--modal-shadow-btn-hover);color:var(--modal-btn-text-hover);text-decoration:none}a.atcb-modal-btn:focus-visible,button.atcb-modal-btn:focus-visible{background-color:var(--modal-btn-background-hover);outline:2px solid var(--keyboard-focus)}.atcb-checkmark{display:none}.atcb-saved .atcb-checkmark{box-sizing:content-box;color:var(--btn-text);display:block;position:absolute;top:-.9em;right:-.3em;padding:.5em;background:var(--checkmark-background);border-radius:100%;height:1.5em}.atcb-checkmark svg{height:100%;fill:currentcolor;width:auto}#atcb-bgoverlay{backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);background-color:var(--overlay-background);border:0;box-sizing:border-box;display:flex;height:calc(100vh + 100px);inset-inline:0;left:0;right:0;top:0;min-height:100%;min-width:100%;overflow-y:auto;padding:20px 20px 130px;position:fixed;width:100vw;z-index:14000000}#atcb-bgoverlay:not(dialog){animation:atcb-bgoverlay-animate .2s ease 0s 1 normal forwards;opacity:0}#atcb-bgoverlay.atcb-no-bg{animation:none;backdrop-filter:none;-webkit-backdrop-filter:none;opacity:1;background-color:transparent}@keyframes atcb-bgoverlay-animate{0%{opacity:0}100%{opacity:1}}#atcb-bgoverlay.atcb-click:hover{cursor:var(--overlay-cursor)}.atcb-icon .atcb-icon-apple svg{fill:currentcolor}.atcb-icon .atcb-icon-ical svg{fill:currentcolor}.atcb-icon .atcb-icon-ms365 svg{fill:var(--icon-ms365-color)}.atcb-icon .atcb-icon-yahoo svg{fill:var(--icon-yahoo-color)}.atcb-icon .atcb-icon-google svg,.atcb-icon .atcb-icon-msteams svg,.atcb-icon .atcb-icon-outlookcom svg{filter:var(--icon-filter)}\",\r};\rconst isBrowser = () => {\n if (typeof window === 'undefined') {\n return false;\n } else {\n return true;\n }\n};\nconst isiOS = isBrowser()\n ? () => {\n if ((/iPad|iPhone|iPod/i.test(navigator.userAgent || navigator.vendor || window.opera) && !window.MSStream) || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1)) {\n return true;\n } else {\n return false;\n }\n }\n : () => {\n return false;\n };\nconst isAndroid = isBrowser()\n ? () => {\n if (/android/i.test(navigator.userAgent || navigator.vendor || window.opera) && !window.MSStream) {\n return true;\n } else {\n return false;\n }\n }\n : () => {\n return false;\n };\n/*const isChrome = isBrowser()\n ? () => {\n if (/chrome|chromium|crios|google inc/i.test(navigator.userAgent || navigator.vendor)) {\n return true;\n } else {\n return false;\n }\n }\n : () => {\n return false;\n };*/\nconst isSafari = isBrowser()\n ? () => {\n if (/^((?!chrome|android|crios|fxios).)*safari/i.test(navigator.userAgent || navigator.vendor)) {\n return true;\n } else {\n return false;\n }\n }\n : () => {\n return false;\n };\nconst isMobile = () => {\n if (isAndroid() || isiOS()) {\n return true;\n } else {\n return false;\n }\n};\nconst isWebView = isBrowser()\n ? () => {\n if (/(; ?wv|(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari))/i.test(navigator.userAgent || navigator.vendor)) {\n return true;\n } else {\n return false;\n }\n }\n : () => {\n return false;\n };\nconst isProblematicWebView = isBrowser()\n ? () => {\n if (/(Instagram)/i.test(navigator.userAgent || navigator.vendor || window.opera)) {\n return true;\n } else {\n return false;\n }\n }\n : () => {\n return false;\n };\nconst atcbDefaultTarget = isWebView() ? '_system' : '_blank';\nconst atcbOptions = ['apple', 'google', 'ical', 'ms365', 'outlookcom', 'msteams', 'yahoo'];\nconst atcbValidRecurrOptions = ['apple', 'google', 'ical'];\nconst atcbInvalidSubscribeOptions = ['msteams'];\nconst atcbiOSInvalidOptions = ['ical'];\nconst atcbStates = [];\nconst atcbWcParams = [\n 'debug',\n 'name',\n 'dates',\n 'description',\n 'startDate',\n 'startTime',\n 'endDate',\n 'endTime',\n 'timeZone',\n 'location',\n 'status',\n 'sequence',\n 'uid',\n 'organizer',\n 'attendee',\n 'icsFile',\n 'images',\n 'recurrence',\n 'recurrence_interval',\n 'recurrence_until',\n 'recurrence_count',\n 'recurrence_byDay',\n 'recurrence_byMonth',\n 'recurrence_byMonthDay',\n 'recurrence_weekstart',\n 'availability',\n 'created',\n 'updated',\n 'subscribe',\n 'options',\n 'iCalFileName',\n 'listStyle',\n 'buttonStyle',\n 'trigger',\n 'hideIconButton',\n 'hideIconList',\n 'hideIconModal',\n 'hideTextLabelButton',\n 'hideTextLabelList',\n 'buttonsList',\n 'hideBackground',\n 'hideCheckmark',\n 'hideBranding',\n 'size',\n 'label',\n 'ty',\n 'rsvp',\n 'inline',\n 'inlineRsvp',\n 'customLabels',\n 'customCss',\n 'lightMode',\n 'language',\n 'hideRichData',\n 'bypassWebViewCheck',\n 'blockInteraction',\n 'styleLight',\n 'styleDark',\n 'disabled',\n 'hidden',\n 'hideButton',\n 'pastDateHandling',\n];\nconst atcbWcBooleanParams = [\n 'debug',\n 'hideIconButton',\n 'hideIconList',\n 'hideIconModal',\n 'hideTextLabelButton',\n 'hideTextLabelList',\n 'subscribe',\n 'hideBackground',\n 'hideCheckmark',\n 'hideBranding',\n 'inlineRsvp',\n 'hideRichData',\n 'buttonsList',\n 'inline',\n 'bypassWebViewCheck',\n 'blockInteraction',\n 'disabled',\n 'hidden',\n 'hideButton',\n];\nconst atcbWcObjectParams = ['customLabels', 'ty', 'rsvp'];\nconst atcbWcObjectArrayParams = ['dates'];\nconst atcbWcArrayParams = ['images', 'options'];\nconst atcbIcon = {\n trigger:\n '',\n apple:\n '',\n google:\n '',\n ical: '',\n msteams:\n '',\n ms365:\n '',\n outlookcom:\n '',\n yahoo:\n '',\n atcb: '',\n close:\n '',\n location:\n '',\n warning:\n '',\n checkmark:\n '',\n};\n\n\nfunction atcb_decorate_data(data) {\n data = atcb_decorate_data_boolean(data);\n data.timeZone = atcb_decorate_data_timezone(data.timeZone);\n data = atcb_decorate_data_rrule(data);\n data = atcb_decorate_data_options(data);\n data = atcb_decorate_data_style(data);\n data.sizes = atcb_decorate_sizes(data.size);\n data.lightMode = atcb_decorate_light_mode(data.lightMode);\n data = atcb_decorate_data_i18n(data);\n data = atcb_decorate_data_dates(data);\n data = atcb_decorate_data_meta(data);\n data = atcb_decorate_data_extend(data);\n data = atcb_decorate_data_button_status_handling(data);\n return data;\n}\nfunction atcb_decorate_data_boolean(data) {\n for (let i = 0; i < atcbWcBooleanParams.length; i++) {\n const attr = atcbWcBooleanParams[`${i}`];\n if (data[`${attr}`] != null && (data[`${attr}`] === 'true' || data[`${attr}`] === true)) {\n data[`${attr}`] = true;\n } else {\n data[`${attr}`] = false;\n }\n }\n return data;\n}\nfunction atcb_decorate_data_timezone(tz = null) {\n if (!tz || tz == '') {\n return 'GMT';\n }\n return tz;\n}\nfunction atcb_decorate_data_rrule(data) {\n if (data.recurrence != null && data.recurrence != '') {\n data.recurrence = data.recurrence.replace(/\\s+/g, '').toUpperCase();\n if (!/^(RRULE:[\\w=;,:+-/\\\\]+|daily|weekly|monthly|yearly)$/im.test(data.recurrence)) {\n data.recurrence = '!wrong rrule format!';\n } else {\n if (/^RRULE:/i.test(data.recurrence)) {\n data.recurrence_simplyfied = false;\n const rruleParts = data.recurrence.substring(6).split(';');\n const rruleObj = new Object();\n rruleParts.forEach(function (rule) {\n rruleObj[rule.split('=')[0]] = rule.split('=')[1];\n });\n data.recurrence_until = rruleObj.UNTIL ? rruleObj.UNTIL : '';\n data.recurrence_count = rruleObj.COUNT ? rruleObj.COUNT : '';\n data.recurrence_byDay = rruleObj.BYDAY ? rruleObj.BYDAY : '';\n data.recurrence_byMonth = rruleObj.BYMONTH ? rruleObj.BYMONTH : '';\n data.recurrence_byMonthDay = rruleObj.BYMONTHDAY ? rruleObj.BYMONTHDAY : '';\n data.recurrence_interval = rruleObj.INTERVAL ? rruleObj.INTERVAL : 1;\n data.recurrence_frequency = rruleObj.FREQ ? rruleObj.FREQ : '';\n } else {\n data.recurrence_simplyfied = true;\n if (data.recurrence_interval == null || data.recurrence_interval == '') {\n data.recurrence_interval = 1;\n }\n if (data.recurrence_weekstart == null || (data.recurrence_weekstart == '') | (data.recurrence_weekstart.length > 2)) {\n data.recurrence_weekstart = 'MO';\n }\n data.recurrence_frequency = data.recurrence;\n data.recurrence = 'RRULE:FREQ=' + data.recurrence + ';WKST=' + data.recurrence_weekstart + ';INTERVAL=' + data.recurrence_interval;\n if (data.recurrence_until != null && data.recurrence_until != '') {\n if (data.endTime != null && data.endTime != '') {\n data.recurrence = data.recurrence + ';UNTIL=' + data.recurrence_until.replace(/-/g, '').slice(0, 8) + 'T' + data.endTime.replace(':', '') + '00';\n } else {\n data.recurrence = data.recurrence + ';UNTIL=' + data.recurrence_until.replace(/-/g, '').slice(0, 8);\n }\n }\n if (data.recurrence_count != null && data.recurrence_count != '') {\n data.recurrence = data.recurrence + ';COUNT=' + data.recurrence_count;\n }\n if (data.recurrence_byDay != null && data.recurrence_byDay != '') {\n data.recurrence = data.recurrence + ';BYDAY=' + data.recurrence_byDay;\n }\n if (data.recurrence_byMonth != null && data.recurrence_byMonth != '') {\n data.recurrence = data.recurrence + ';BYMONTH=' + data.recurrence_byMonth;\n }\n if (data.recurrence_byMonthDay != null && data.recurrence_byMonthDay != '') {\n data.recurrence = data.recurrence + ';BYMONTHDAY=' + data.recurrence_byMonthDay;\n }\n }\n }\n }\n return data;\n}\nfunction atcb_decorate_data_options(data) {\n const newOptions = [];\n data.optionLabels = [];\n let iCalGiven = false;\n let appleGiven = false;\n for (let i = 0; i < data.options.length; i++) {\n const cleanOption = data.options[`${i}`].split('|');\n const optionName = cleanOption[0].toLowerCase().replace('microsoft', 'ms').replace(/\\./, '');\n const optionLabel = (function () {\n if (cleanOption[1] != null) {\n return cleanOption[1];\n }\n return '';\n })();\n if (optionName === 'apple') {\n appleGiven = true;\n }\n if (optionName === 'ical') {\n iCalGiven = true;\n }\n if (\n (isiOS() && atcbiOSInvalidOptions.includes(optionName)) ||\n (data.recurrence != null && data.recurrence != '' && (!atcbValidRecurrOptions.includes(optionName) || (data.recurrence_until != null && data.recurrence_until != '' && (optionName === 'apple' || optionName === 'ical')) || (isiOS() && optionName === 'google'))) ||\n (data.subscribe && atcbInvalidSubscribeOptions.includes(optionName))\n ) {\n continue;\n }\n newOptions.push(optionName);\n data.optionLabels.push(optionLabel);\n }\n if (newOptions.length === 0) {\n if (!isiOS()) {\n newOptions.push('ical');\n data.optionLabels.push('');\n }\n iCalGiven = true;\n }\n if (isiOS() && iCalGiven && !appleGiven) {\n newOptions.push('apple');\n data.optionLabels.push('');\n }\n data.options = newOptions;\n return data;\n}\nfunction atcb_decorate_data_style(data) {\n if (data.listStyle == null || data.listStyle == '') {\n data.listStyle = 'dropdown';\n }\n const isDropdown = (function () {\n if (data.listStyle == 'dropdown' || data.listStyle == 'dropdown-static' || data.listStyle == 'dropup-static') {\n return true;\n }\n return false;\n })();\n if (data.listStyle === 'modal') {\n data.trigger = 'click';\n }\n if (data.buttonStyle != null && data.buttonStyle != '' && data.buttonStyle != 'default') {\n if (data.buttonStyle == 'round' || data.buttonStyle == 'text' || data.buttonStyle == 'date' || data.buttonStyle == 'neumorphism') {\n data.trigger = 'click';\n }\n if (data.buttonStyle == 'date' && isDropdown) {\n data.listStyle = 'overlay';\n }\n } else {\n data.buttonStyle = 'default';\n }\n if ((data.buttonStyle == 'default' || data.buttonStyle == '3d' || data.buttonStyle == 'flat') && isDropdown && !data.hideTextLabelList && data.hideTextLabelButton) {\n data.listStyle = 'overlay';\n }\n if (data.buttonsList && data.buttonStyle == 'date') {\n data.buttonsList = false;\n }\n return data;\n}\nfunction atcb_decorate_sizes(size) {\n const sizes = [];\n sizes['l'] = sizes['m'] = sizes['s'] = 16;\n if (size != null && size != '') {\n const sizeParts = size.split('|');\n for (let i = 0; i < sizeParts.length; i++) {\n sizeParts[`${i}`] = parseInt(sizeParts[`${i}`]);\n }\n if (sizeParts[0] >= 0 && sizeParts[0] < 11) {\n sizes['l'] = sizes['m'] = sizes['s'] = 10 + sizeParts[0];\n }\n if (sizeParts.length > 2) {\n if (sizeParts[1] >= 0 && sizeParts[1] < 11) {\n sizes['m'] = 10 + sizeParts[1];\n }\n if (sizeParts[2] >= 0 && sizeParts[2] < 11) {\n sizes['s'] = 10 + sizeParts[2];\n }\n } else if (sizeParts.length == 2) {\n if (sizeParts[1] >= 0 && sizeParts[1] < 11) {\n sizes['m'] = sizes['s'] = 10 + sizeParts[1];\n }\n }\n }\n return sizes;\n}\nfunction atcb_decorate_light_mode(lightMode = '') {\n if (lightMode == 'system' && isBrowser()) {\n const prefersDarkScheme = window.matchMedia('(prefers-color-scheme: dark)');\n return prefersDarkScheme.matches ? 'dark' : 'light';\n }\n if (lightMode != 'bodyScheme' && lightMode != 'dark') {\n return 'light';\n }\n return lightMode;\n}\nfunction atcb_decorate_data_i18n(data) {\n if (data.language == null || data.language == '' || !availableLanguages.includes(data.language)) {\n data.language = 'en';\n }\n if (data.language.length > 2) {\n data.language = data.language.substring(0, 2);\n }\n if (rtlLanguages.includes(data.language)) {\n data.rtl = true;\n } else {\n data.rtl = false;\n }\n return data;\n}\nfunction atcb_decorate_data_dates(data) {\n if (data.dates != null && data.dates.length > 0) {\n for (let i = 0; i < data.dates.length; i++) {\n if (data.dates[`${i}`].timeZone == null) {\n data.dates[`${i}`].timeZone = data.timeZone;\n }\n const cleanedUpDates = atcb_date_cleanup(data.dates[`${i}`]);\n data.dates[`${i}`].startTime = cleanedUpDates.startTime;\n data.dates[`${i}`].endTime = cleanedUpDates.endTime;\n data.dates[`${i}`].timeZone = cleanedUpDates.timeZone;\n data.dates[`${i}`].startDate = atcb_date_calculation(cleanedUpDates.startDate);\n data.dates[`${i}`].endDate = atcb_date_calculation(cleanedUpDates.endDate);\n data.dates[`${i}`].timestamp = atcb_date_specials_calculation('timestamp', data.dates[`${i}`].startDate, data.dates[`${i}`].startTime, data.dates[`${i}`].timeZone);\n data.dates[`${i}`].overdue = atcb_date_specials_calculation('overdue', data.dates[`${i}`].endDate, data.dates[`${i}`].endTime, data.dates[`${i}`].timeZone);\n }\n } else {\n const cleanedUpDates = atcb_date_cleanup(data);\n data.dates = [];\n data.dates[0] = new Object();\n data.startTime = data.dates[0].startTime = cleanedUpDates.startTime;\n data.endTime = data.dates[0].endTime = cleanedUpDates.endTime;\n data.timeZone = data.dates[0].timeZone = cleanedUpDates.timeZone;\n data.startDate = data.dates[0].startDate = atcb_date_calculation(cleanedUpDates.startDate);\n data.endDate = data.dates[0].endDate = atcb_date_calculation(cleanedUpDates.endDate);\n if (!data.recurrence) {\n data.dates[0].overdue = atcb_date_specials_calculation('overdue', data.endDate, data.endTime, data.timeZone);\n } else {\n data.dates[0].overdue = false;\n }\n }\n const now = new Date();\n if (data.created == null || data.created == '') {\n data.created = atcb_format_datetime(now, 'clean', true);\n }\n if (data.updated == null || data.updated == '') {\n data.updated = atcb_format_datetime(now, 'clean', true);\n }\n return data;\n}\nfunction atcb_decorate_data_meta(data) {\n if (data.status == null || data.status == '') {\n data.status = 'CONFIRMED';\n }\n if (data.sequence == null || data.sequence == '') {\n data.sequence = 0;\n }\n return data;\n}\nfunction atcb_decorate_data_description(data, i) {\n if (data.dates[`${i}`].description != null && data.dates[`${i}`].description != '') {\n data.dates[`${i}`].description = data.dates[`${i}`].description.replace(/(\\\\r\\\\n|\\\\n|\\\\r|)/g, '');\n data.dates[`${i}`].descriptionHtmlFree = atcb_rewrite_html_elements(data.dates[`${i}`].description, true);\n data.dates[`${i}`].descriptionHtmlFreeICal = atcb_rewrite_html_elements(data.dates[`${i}`].description, true, true);\n data.dates[`${i}`].description = atcb_rewrite_html_elements(data.dates[`${i}`].description);\n } else {\n if (data.dates[`${i}`].description == null && data.description != null && data.description != '') {\n data.description = data.description.replace(/(\\\\r\\\\n|\\\\n|\\\\r|)/g, '');\n data.dates[`${i}`].descriptionHtmlFree = atcb_rewrite_html_elements(data.description, true);\n data.dates[`${i}`].descriptionHtmlFreeICal = atcb_rewrite_html_elements(data.description, true, true);\n data.dates[`${i}`].description = atcb_rewrite_html_elements(data.description);\n } else {\n data.dates[`${i}`].descriptionHtmlFree = data.dates[`${i}`].description = '';\n }\n }\n return data;\n}\nfunction atcb_decorate_data_extend(data) {\n for (let i = 0; i < data.dates.length; i++) {\n data = atcb_decorate_data_description(data, i);\n if (data.dates[`${i}`].name == null || data.dates[`${i}`].name == '') {\n data.dates[`${i}`].name = data.name;\n }\n if (data.dates[`${i}`].status == null) {\n data.dates[`${i}`].status = data.status.toUpperCase();\n } else {\n data.dates[`${i}`].status = data.dates[`${i}`].status.toUpperCase();\n }\n if (data.dates[`${i}`].sequence == null) {\n data.dates[`${i}`].sequence = data.sequence;\n }\n if (data.dates[`${i}`].organizer == null && data.organizer != null) {\n data.dates[`${i}`].organizer = data.organizer;\n }\n if (data.dates[`${i}`].attendee == null && data.attendee != null) {\n data.dates[`${i}`].attendee = data.attendee;\n }\n if (data.dates[`${i}`].availability == null && data.availability != null) {\n data.dates[`${i}`].availability = data.availability.toLowerCase();\n } else if (data.dates[`${i}`].availability != null) {\n data.dates[`${i}`].availability = data.dates[`${i}`].availability.toLowerCase();\n }\n if (data.dates[`${i}`].location == null && data.location != null) {\n data.dates[`${i}`].location = data.location;\n }\n if (data.dates[`${i}`].location && data.dates[`${i}`].location.startsWith('http')) {\n data.dates[`${i}`].onlineEvent = true;\n } else {\n data.dates[`${i}`].onlineEvent = false;\n }\n if (data.dates[`${i}`].uid == null) {\n if (i == 0 && data.uid != null && data.uid != '') {\n data.dates[0].uid = data.uid;\n } else {\n data.dates[`${i}`].uid = atcb_generate_uuid();\n }\n }\n }\n if (data.recurrence != null && data.recurrence != '') {\n data.dates[0].recurrence = data.recurrence;\n }\n if (data.dates.length > 1) {\n data.dates.sort((a, b) => a.timestamp - b.timestamp);\n }\n return data;\n}\nfunction atcb_date_cleanup(dateTimeData) {\n if (dateTimeData.endDate == null || dateTimeData.endDate == '') {\n dateTimeData.endDate = dateTimeData.startDate;\n }\n const endpoints = ['start', 'end'];\n endpoints.forEach(function (point) {\n if (!/^(\\d{4}-\\d{2}-\\d{2}T?(?:\\d{2}:\\d{2}|)Z?|today(?:\\+\\d{1,4}|))$/.test(dateTimeData[point + 'Date'])) {\n dateTimeData[point + 'Date'] = 'badly-formed';\n } else {\n if (dateTimeData[point + 'Date'] != null) {\n dateTimeData[point + 'Date'] = dateTimeData[point + 'Date'].replace(/\\.\\d{3}/, '').replace('Z', '');\n const tmpSplitStartDate = dateTimeData[point + 'Date'].split('T');\n if (tmpSplitStartDate[1] != null) {\n dateTimeData[point + 'Date'] = tmpSplitStartDate[0];\n dateTimeData[point + 'Time'] = tmpSplitStartDate[1];\n }\n }\n if (dateTimeData[point + 'Time'] != null && dateTimeData[point + 'Time'].length === 8) {\n const timeStr = dateTimeData[point + 'Time'];\n dateTimeData[point + 'Time'] = timeStr.substring(0, timeStr.length - 3);\n }\n }\n });\n if (dateTimeData.timeZone == 'currentBrowser') {\n dateTimeData.timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n }\n return dateTimeData;\n}\nfunction atcb_date_specials_calculation(type, dateString, timeString = null, timeZone) {\n try {\n const tmpDate = (function () {\n if (timeString) {\n const offsetEnd = tzlib_get_offset(timeZone, dateString, timeString);\n return new Date(dateString + ' ' + timeString + ':00 GMT' + offsetEnd);\n }\n return new Date(dateString);\n })();\n if (type === 'timestamp') {\n return tmpDate.getTime();\n }\n if (!timeString) {\n tmpDate.setDate(tmpDate.getDate() + 1);\n }\n const currentUtcDate = new Date().toISOString();\n return tmpDate.getTime() < new Date(currentUtcDate).getTime();\n } catch (e) {\n return false;\n }\n}\nfunction atcb_date_calculation(dateString) {\n const today = new Date();\n const todayString = today.getUTCFullYear() + '-' + (today.getUTCMonth() + 1) + '-' + today.getUTCDate();\n dateString = dateString.replace(/today/gi, todayString);\n const dateStringParts = dateString.split('+');\n const dateParts = dateStringParts[0].split('-');\n let newDate = (function () {\n if (dateParts[0].length < 4) {\n return new Date(Date.UTC(dateParts[2], dateParts[0] - 1, dateParts[1]));\n }\n return new Date(Date.UTC(dateParts[0], dateParts[1] - 1, dateParts[2]));\n })();\n if (dateStringParts[1] != null && dateStringParts[1] > 0) {\n newDate.setDate(newDate.getDate() + parseInt(dateStringParts[1]));\n }\n try {\n return newDate.toISOString().replace(/T(\\d{2}:\\d{2}:\\d{2}\\.\\d{3})Z/g, '');\n } catch (e) {\n return false;\n }\n}\nfunction atcb_decorate_data_button_status_handling(data) {\n if (data.pastDateHandling == null || (data.pastDateHandling != 'disable' && data.pastDateHandling != 'hide')) {\n data.pastDateHandling = 'none';\n }\n const overdue = (function () {\n for (let i = 0; i < data.dates.length; i++) {\n if (!data.dates[`${i}`].overdue) {\n return false;\n }\n }\n return true;\n })();\n data.allOverdue = false;\n if (overdue) {\n data.allOverdue = true;\n if (data.pastDateHandling == 'disable') {\n data.disabled = true;\n } else if (data.pastDateHandling == 'hide') {\n data.hidden = true;\n }\n }\n if (data.disabled || data.hidden) {\n data.blockInteraction = true;\n }\n return data;\n}\n\n\nfunction atcb_check_required(data) {\n if (data.validationError) {\n data.validationError = null;\n }\n if (data.options == null || data.options.length < 1) {\n data.validationError = 'Add to Calendar Button generation failed: no valid options set';\n return false;\n }\n if (data.name == null || data.name == '') {\n data.validationError = 'Add to Calendar Button generation failed: required name information missing';\n return false;\n }\n if (data.dates != null && data.dates.length > 0) {\n const requiredMultiField = ['name', 'startDate'];\n const requiredMultiFieldFlex = ['name'];\n return requiredMultiField.every(function (field) {\n for (let i = 0; i < data.dates.length; i++) {\n if (\n (!requiredMultiFieldFlex.includes(`${field}`) && (data.dates[`${i}`][`${field}`] == null || data.dates[`${i}`][`${field}`] == '')) ||\n (requiredMultiFieldFlex.includes(`${field}`) && (data.dates[`${i}`][`${field}`] == null || data.dates[`${i}`][`${field}`] == '') && (data[`${field}`] == null || data[`${field}`] == ''))\n ) {\n data.validationError = 'Add to Calendar Button generation failed: required setting missing [dates array object #' + (i + 1) + '/' + data.dates.length + '] => [' + field + ']';\n return false;\n }\n }\n return true;\n });\n } else {\n const requiredSingleField = ['startDate'];\n return requiredSingleField.every(function (field) {\n if (data[`${field}`] == null || data[`${field}`] == '') {\n data.validationError = 'Add to Calendar Button generation failed: required setting missing [' + field + ']';\n return false;\n }\n return true;\n });\n }\n}\nfunction atcb_validate(data) {\n if (data.validationError) {\n data.validationError = null;\n }\n const msgPrefix = 'Add to Calendar Button generation (' + data.identifier + ')';\n if (!atcb_validate_icsFile(data, msgPrefix)) return false;\n if (!atcb_validate_buttonStyle(data, msgPrefix)) return false;\n if (!atcb_validate_subscribe(data, msgPrefix)) return false;\n if (!atcb_validate_created(data, msgPrefix)) return false;\n if (!atcb_validate_updated(data, msgPrefix)) return false;\n if (!atcb_validate_options(data, msgPrefix)) return false;\n if (!atcb_validate_date_blocks(data, msgPrefix)) return false;\n if (!atcb_validate_rrule(data, msgPrefix)) return false;\n if (data.recurrence_simplyfied) {\n if (!atcb_validate_rrule_simplyfied(data, msgPrefix)) return false;\n }\n return true;\n}\nfunction atcb_validate_icsFile(data, msgPrefix, i = '', msgSuffix = '') {\n const icsFileStr = (function () {\n if (i != '' && data.dates[`${i}`].icsFile != null) {\n return data.dates[`${i}`].icsFile;\n }\n if (i == '' && data.icsFile != null) {\n return data.icsFile;\n }\n return '';\n })();\n if (icsFileStr != '') {\n if (!atcb_secure_url(icsFileStr, false) || (!data.icsFile.startsWith('https://') && !data.icsFile.startsWith('http://'))) {\n data.validationError = msgPrefix + ' failed: explicit ics file path not valid' + msgSuffix;\n return false;\n }\n }\n return true;\n}\nfunction atcb_validate_buttonStyle(data, msgPrefix) {\n const availableStyles = ['default', '3d', 'flat', 'round', 'neumorphism', 'text', 'date', 'custom', 'none'];\n if (!availableStyles.includes(data.buttonStyle)) {\n data.validationError = msgPrefix + ' failed: provided buttonStyle invalid';\n return false;\n }\n if (data.customCss != null && data.customCss != '' && (!atcb_secure_url(data.customCss, false) || !/\\.css$/m.test(data.customCss))) {\n data.validationError = msgPrefix + ' failed: customCss provided, but no valid url';\n return false;\n }\n if ((data.customCss == null || data.customCss == '') && data.buttonStyle == 'custom') {\n data.validationError = msgPrefix + ' failed: buttonStyle \"custom\" selected, but no customCss file provided';\n return false;\n }\n return true;\n}\nfunction atcb_validate_subscribe(data, msgPrefix) {\n if (data.subscribe == true && (data.icsFile == null || data.icsFile == '')) {\n data.validationError = msgPrefix + ' failed: a subscription calendar requires a valid explicit ics file as well';\n return false;\n }\n return true;\n}\nfunction atcb_validate_created(data, msgPrefix) {\n if (!/^\\d{8}T\\d{6}Z$/.test(data.created)) {\n data.validationError = msgPrefix + ' failed: created date format not valid. Needs to be a full ISO-8601 UTC date and time string, formatted YYYYMMDDTHHMMSSZ';\n return false;\n }\n return true;\n}\nfunction atcb_validate_updated(data, msgPrefix) {\n if (!/^\\d{8}T\\d{6}Z$/.test(data.updated)) {\n data.validationError = msgPrefix + ' failed: updated date format not valid. Needs to be a full ISO-8601 UTC date and time string, formatted YYYYMMDDTHHMMSSZ';\n return false;\n }\n return true;\n}\nfunction atcb_validate_options(data, msgPrefix) {\n if (data.options == null || data.options.length < 1) {\n data.validationError = msgPrefix + ' failed: no valid options available';\n return false;\n }\n if (\n !data.options.every(function (option) {\n if (!atcbOptions.includes(option)) {\n data.validationError = msgPrefix + ' failed: invalid option [' + option + ']';\n return false;\n }\n return true;\n })\n ) {\n return false;\n }\n return true;\n}\nfunction atcb_validate_date_blocks(data, msgPrefix) {\n for (let i = 0; i < data.dates.length; i++) {\n const msgSuffix = (function () {\n if (data.dates.length == 1) {\n return '';\n } else {\n return ' [dates array object #' + (i + 1) + '/' + data.dates.length + '] ';\n }\n })();\n if (!atcb_validate_icsFile(data, msgPrefix, i, msgSuffix)) return false;\n if (!atcb_validate_status(data, msgPrefix, i, msgSuffix)) return false;\n if (!atcb_validate_availability(data, msgPrefix, i, msgSuffix)) return false;\n if (!atcb_validate_organizer(data, msgPrefix, i, msgSuffix)) return false;\n if (!atcb_validate_attendee(data, msgPrefix, i, msgSuffix)) return false;\n if (!atcb_validate_uid(data, msgPrefix, i, msgSuffix)) return false;\n if (!atcb_validate_sequence(data, msgPrefix, i, msgSuffix)) return false;\n if (!atcb_validate_timezone(data, msgPrefix, i, msgSuffix)) return false;\n if (!atcb_validate_datetime(data, msgPrefix, i, msgSuffix)) return false;\n }\n return true;\n}\nfunction atcb_validate_status(data, msgPrefix, i, msgSuffix) {\n if (data.dates[`${i}`].status != 'TENTATIVE' && data.dates[`${i}`].status != 'CONFIRMED' && data.dates[`${i}`].status != 'CANCELLED') {\n data.validationError = msgPrefix + ' failed: event status needs to be TENTATIVE, CONFIRMED, or CANCELLED' + msgSuffix;\n return false;\n }\n return true;\n}\nfunction atcb_validate_availability(data, msgPrefix, i, msgSuffix) {\n if (data.dates[`${i}`].availability != null && data.dates[`${i}`].availability != '' && data.dates[`${i}`].availability != 'free' && data.dates[`${i}`].availability != 'busy') {\n data.validationError = msgPrefix + ' failed: event availability needs to be \"free\" or \"busy\"' + msgSuffix;\n return false;\n }\n return true;\n}\nfunction atcb_validate_organizer(data, msgPrefix, i, msgSuffix) {\n if (data.dates[`${i}`].organizer != null && data.dates[`${i}`].organizer != '') {\n const organizerParts = data.dates[`${i}`].organizer.split('|');\n if (organizerParts.length != 2 || organizerParts[0].length > 50 || organizerParts[1].length > 80 || !atcb_validEmail(organizerParts[1])) {\n data.validationError = msgPrefix + ' failed: organizer needs to match the schema \"NAME|EMAIL\" with a valid email address' + msgSuffix;\n return false;\n }\n }\n return true;\n}\nfunction atcb_validate_attendee(data, msgPrefix, i, msgSuffix) {\n if (data.dates[`${i}`].attendee != null && data.dates[`${i}`].attendee != '') {\n if (data.dates[`${i}`].organizer == null || data.dates[`${i}`].organizer == '') {\n data.validationError = msgPrefix + ' failed: if an attendee is set, you also need to set the organizer' + msgSuffix;\n return false;\n }\n const attendeeParts = data.dates[`${i}`].attendee.split('|');\n if (attendeeParts.length != 2 || attendeeParts[0].length > 50 || attendeeParts[1].length > 80 || !atcb_validEmail(attendeeParts[1])) {\n data.validationError = msgPrefix + ' failed: attendee needs to match the schema \"NAME|EMAIL\" with a valid email address' + msgSuffix;\n return false;\n }\n }\n return true;\n}\nfunction atcb_validate_uid(data, msgPrefix, i, msgSuffix) {\n if (!/^(\\w|-){1,254}$/.test(data.dates[`${i}`].uid)) {\n if (data.debug) {\n console.warn(msgPrefix + ': UID not valid. May only contain alpha, digits, and dashes; and be less than 255 characters. Falling back to an automated value!' + msgSuffix);\n }\n data.dates[`${i}`].uid = atcb_generate_uuid();\n }\n if (!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(data.dates[`${i}`].uid) && data.debug) {\n console.warn(msgPrefix + ': UID is highly recommended to be a hex-encoded random Universally Unique Identifier (UUID)!' + msgSuffix);\n }\n return true;\n}\nfunction atcb_validate_sequence(data, msgPrefix, i, msgSuffix) {\n if (!/^\\d+$/.test(data.dates[`${i}`].sequence)) {\n if (data.debug) {\n console.log(msgPrefix + ': sequence needs to be a number. Used the default 0 instead' + msgSuffix);\n }\n data.dates[`${i}`].sequence = 0;\n }\n return true;\n}\nfunction atcb_validate_timezone(data, msgPrefix, i, msgSuffix) {\n const validTimeZones = tzlib_get_timezones();\n if (!validTimeZones.includes(data.dates[`${i}`].timeZone)) {\n data.validationError = msgPrefix + ' failed: invalid time zone given' + msgSuffix;\n return false;\n }\n return true;\n}\nfunction atcb_validate_datetime(data, msgPrefix, i, msgSuffix) {\n const dates = ['startDate', 'endDate'];\n const newDate = dates;\n if (\n !dates.every(function (date) {\n if (data.dates[`${i}`][`${date}`].length !== 10) {\n data.validationError = msgPrefix + ' failed: date misspelled [-> YYYY-MM-DD]' + msgSuffix;\n return false;\n }\n const dateParts = data.dates[`${i}`][`${date}`].split('-');\n if (dateParts.length < 3 || dateParts.length > 3) {\n data.validationError = msgPrefix + ' failed: date misspelled [' + date + ': ' + data.dates[`${i}`][`${date}`] + ']' + msgSuffix;\n return false;\n }\n newDate[`${date}`] = new Date(dateParts[0], dateParts[1] - 1, dateParts[2]);\n return true;\n })\n ) {\n return false;\n }\n const times = ['startTime', 'endTime'];\n if (\n !times.every(function (time) {\n if (data.dates[`${i}`][`${time}`] != null) {\n if (data.dates[`${i}`][`${time}`].length !== 5) {\n data.validationError = msgPrefix + ' failed: time misspelled [-> HH:MM]' + msgSuffix;\n return false;\n }\n const timeParts = data.dates[`${i}`][`${time}`].split(':');\n if (timeParts.length < 2 || timeParts.length > 2) {\n data.validationError = msgPrefix + ' failed: time misspelled [' + time + ': ' + data.dates[`${i}`][`${time}`] + ']' + msgSuffix;\n return false;\n }\n if (timeParts[0] > 23) {\n data.validationError = msgPrefix + ' failed: time misspelled - hours number too high [' + time + ': ' + timeParts[0] + ']' + msgSuffix;\n return false;\n }\n if (timeParts[1] > 59) {\n data.validationError = msgPrefix + ' failed: time misspelled - minutes number too high [' + time + ': ' + timeParts[1] + ']' + msgSuffix;\n return false;\n }\n if (time == 'startTime') {\n newDate.startDate = new Date(newDate.startDate.getTime() + timeParts[0] * 3600000 + timeParts[1] * 60000);\n }\n if (time == 'endTime') {\n newDate.endDate = new Date(newDate.endDate.getTime() + timeParts[0] * 3600000 + timeParts[1] * 60000);\n }\n }\n return true;\n })\n ) {\n return false;\n }\n if ((data.dates[`${i}`].startTime != null && data.dates[`${i}`].endTime == null) || (data.dates[`${i}`].startTime == null && data.dates[`${i}`].endTime != null)) {\n data.validationError = msgPrefix + ' failed: if you set a starting or end time, the respective other one also needs to be defined' + msgSuffix;\n return false;\n }\n if (newDate.endDate < newDate.startDate) {\n data.validationError = msgPrefix + ' failed: end date before start date' + msgSuffix;\n return false;\n }\n return true;\n}\nfunction atcb_validate_rrule(data, msgPrefix) {\n if (data.recurrence != null && data.recurrence != '' && data.dates.length > 1) {\n data.validationError = msgPrefix + ' failed: RRULE and multi-date set at the same time';\n return false;\n }\n if (data.recurrence != null && data.recurrence != '' && !/^RRULE:[\\w=;,:+-/\\\\]+$/i.test(data.recurrence)) {\n data.validationError = msgPrefix + ' failed: RRULE data misspelled';\n return false;\n }\n return true;\n}\nfunction atcb_validate_rrule_simplyfied(data, msgPrefix) {\n if (data.recurrence_interval != null && data.recurrence_interval != '' && !/^\\d+$/.test(data.recurrence_interval)) {\n data.validationError = msgPrefix + ' failed: recurrence data (interval) misspelled';\n return false;\n }\n if (data.recurrence_until != null && data.recurrence_until != '' && !/^(\\d|-|:)+$/i.test(data.recurrence_until)) {\n data.validationError = msgPrefix + ' failed: recurrence data (until) misspelled';\n return false;\n }\n if (data.recurrence_count != null && data.recurrence_count != '' && !/^\\d+$/.test(data.recurrence_count)) {\n data.validationError = msgPrefix + ' failed: recurrence data (interval) misspelled';\n return false;\n }\n if (data.recurrence_byMonth != null && data.recurrence_byMonth != '' && !/^(\\d|,)+$/.test(data.recurrence_byMonth)) {\n data.validationError = msgPrefix + ' failed: recurrence data (byMonth) misspelled';\n return false;\n }\n if (data.recurrence_byMonthDay != null && data.recurrence_byMonthDay != '' && !/^(\\d|,)+$/.test(data.recurrence_byMonthDay)) {\n data.validationError = msgPrefix + ' failed: recurrence data (byMonthDay) misspelled';\n return false;\n }\n if (data.recurrence_byDay != null && data.recurrence_byDay != '' && !/^(\\d|-|MO|TU|WE|TH|FR|SA|SU|,)+$/im.test(data.recurrence_byDay)) {\n data.validationError = msgPrefix + ' failed: recurrence data (byDay) misspelled';\n return false;\n }\n if (data.recurrence_weekstart != null && data.recurrence_weekstart != '' && !/^(MO|TU|WE|TH|FR|SA|SU)$/im.test(data.recurrence_weekstart)) {\n data.validationError = msgPrefix + ' failed: recurrence data (weekstart) misspelled';\n return false;\n }\n return true;\n}\n\n\nfunction atcb_toggle(host, action, data = '', button = null, keyboardTrigger = false, generatedButton = false) {\n if (action == 'open') {\n atcb_open(host, data, button, keyboardTrigger, generatedButton);\n } else if (action == 'close' || button.classList.contains('atcb-active') || host.querySelector('.atcb-active-modal')) {\n atcb_close(host, keyboardTrigger);\n } else {\n atcb_open(host, data, button, keyboardTrigger, generatedButton);\n }\n}\nfunction atcb_open(host, data, button = null, keyboardTrigger = false, generatedButton = false) {\n if (host.querySelector('.atcb-list') || host.querySelector('.atcb-modal')) return;\n atcb_log_event('openList', data.identifier, data.identifier);\n atcbStates['active'] = data.identifier;\n const list = atcb_generate_dropdown_list(host, data);\n const listWrapper = document.createElement('div');\n listWrapper.classList.add('atcb-list-wrapper');\n if (data.hideTextLabelList) {\n listWrapper.classList.add('atcb-no-text');\n }\n if (button) {\n button.classList.add('atcb-active');\n button.setAttribute('aria-expanded', true);\n if (data.listStyle === 'modal') {\n button.classList.add('atcb-modal-style');\n list.classList.add('atcb-modal');\n } else {\n listWrapper.append(list);\n listWrapper.classList.add('atcb-dropdown');\n if (data.listStyle === 'overlay') {\n listWrapper.classList.add('atcb-dropoverlay');\n }\n }\n if (generatedButton) {\n list.classList.add('atcb-generated-button'); \n }\n } else {\n list.classList.add('atcb-modal');\n }\n if (data.listStyle === 'modal') {\n const bgOverlay = atcb_generate_bg_overlay(host, data.trigger, true, !data.hideBackground);\n const modalHost = atcb_generate_modal_host(host, data);\n modalHost.querySelector('.atcb-modal-host-initialized').append(bgOverlay);\n bgOverlay.append(list);\n if (!data.hideBranding) {\n atcb_create_atcbl(modalHost, false);\n }\n atcb_set_sizes(list, data.sizes);\n atcb_manage_body_scroll(modalHost);\n atcb_set_fullsize(bgOverlay);\n } else {\n const bgOverlay = atcb_generate_bg_overlay(host, data.trigger, false, !data.hideBackground);\n host.querySelector('.atcb-initialized').append(listWrapper);\n listWrapper.append(list);\n if (data.buttonStyle != 'default') {\n listWrapper.classList.add('atcb-style-' + data.buttonStyle);\n }\n if (!data.hideBranding) {\n atcb_create_atcbl(host);\n }\n host.append(bgOverlay);\n atcb_set_sizes(list, data.sizes);\n listWrapper.style.display = 'none';\n setTimeout(function () {\n listWrapper.style.display = 'block';\n if (data.listStyle === 'dropdown-static') {\n atcb_position_list(host, button, listWrapper, true);\n } else if (data.listStyle === 'dropup-static') {\n atcb_position_list(host, button, listWrapper, false, true);\n } else {\n atcb_position_list(host, button, listWrapper);\n }\n }, 5);\n atcb_set_fullsize(bgOverlay);\n }\n const focusEl = (function () {\n const hostEl = host.querySelector('.atcb-list-item');\n if (hostEl) {\n return hostEl;\n }\n const modalHost = document.getElementById(data.identifier + '-modal-host');\n if (!modalHost) {\n return;\n }\n return modalHost.shadowRoot.querySelector('.atcb-list-item');\n })();\n if (focusEl) {\n if (keyboardTrigger) {\n focusEl.focus();\n } else {\n focusEl.focus({ preventScroll: true });\n focusEl.blur();\n }\n }\n}\nfunction atcb_close(host, keyboardTrigger = false) {\n const existingModalHost = document.getElementById(host.host.getAttribute('atcb-button-id') + '-modal-host');\n const allModals = (function () {\n if (!existingModalHost || existingModalHost.length === 0) {\n return [];\n }\n return existingModalHost.shadowRoot.querySelectorAll('.atcb-modal[data-modal-nr]');\n })();\n if (allModals.length > 1) {\n existingModalHost.shadowRoot.querySelectorAll('.atcb-modal[data-modal-nr=\"' + allModals.length + '\"]')[0].remove();\n const nextModal = existingModalHost.shadowRoot.querySelectorAll('.atcb-modal[data-modal-nr=\"' + (allModals.length - 1) + '\"]')[0];\n nextModal.style.display = 'block';\n let focusEl = nextModal;\n const availableButtons = nextModal.getElementsByTagName('button');\n if (availableButtons.length > 0) {\n focusEl = availableButtons[0];\n }\n focusEl.focus();\n if (!keyboardTrigger) {\n focusEl.blur();\n }\n } else {\n const newFocusEl = (function () {\n const hostEl = host.querySelector('.atcb-active, .atcb-active-modal');\n if (hostEl) {\n return hostEl;\n }\n return document.querySelector('.atcb-active, .atcb-active-modal');\n })();\n if (newFocusEl) {\n newFocusEl.focus({ preventScroll: true });\n if (!keyboardTrigger) {\n newFocusEl.blur();\n }\n }\n Array.from(host.querySelectorAll('.atcb-active')).forEach((button) => {\n button.classList.remove('atcb-active');\n button.setAttribute('aria-expanded', false);\n });\n Array.from(host.querySelectorAll('.atcb-active-modal')).forEach((modal) => {\n modal.classList.remove('atcb-active-modal');\n });\n Array.from(document.querySelectorAll('.atcb-active')).forEach((button) => {\n button.classList.remove('atcb-active');\n button.setAttribute('aria-expanded', false);\n });\n Array.from(document.querySelectorAll('.atcb-active-modal')).forEach((modal) => {\n modal.classList.remove('atcb-active-modal');\n });\n if (existingModalHost) {\n existingModalHost.remove();\n }\n document.body.classList.remove('atcb-modal-no-scroll');\n document.documentElement.classList.remove('atcb-modal-no-scroll');\n Array.from(host.querySelectorAll('.atcb-list-wrapper'))\n .concat(Array.from(host.querySelectorAll('.atcb-list')))\n .concat(Array.from(host.querySelectorAll('#add-to-calendar-button-reference')))\n .concat(Array.from(host.querySelectorAll('#atcb-bgoverlay')))\n .forEach((el) => el.remove());\n atcbStates['active'] = '';\n }\n}\n\n\nfunction atcb_generate_label(host, data, parent, type, icon = false, text = '', oneOption = false) {\n switch (type) {\n case 'trigger':\n default:\n parent.id = data.identifier;\n if (!data.blockInteraction) {\n parent.addEventListener('keyup', function (event) {\n if (event.key === 'Enter' || event.code == 'Space' || (event.key === 'Alt' && event.key === 'Control' && event.code === 'Space')) {\n event.preventDefault();\n atcb_toggle(host, 'auto', data, parent, true, true);\n }\n });\n parent.addEventListener(\n 'touchend',\n atcb_debounce_leading((event) => {\n event.preventDefault();\n atcb_toggle(host, 'auto', data, parent, false, true);\n }),\n );\n if (data.trigger === 'click') {\n parent.addEventListener(\n 'mouseup',\n atcb_debounce_leading((event) => {\n event.preventDefault();\n atcb_toggle(host, 'auto', data, parent, false, true);\n }),\n );\n } else {\n parent.addEventListener(\n 'mouseenter',\n atcb_debounce_leading((event) => {\n event.preventDefault();\n atcb_toggle(host, 'open', data, parent, false, true);\n }),\n );\n }\n }\n break;\n case 'apple':\n case 'google':\n case 'ical':\n case 'msteams':\n case 'ms365':\n case 'outlookcom':\n case 'yahoo':\n parent.id = data.identifier + '-' + type;\n if (!data.blockInteraction) {\n parent.addEventListener(\n 'click',\n atcb_debounce_leading(() => {\n if (oneOption) {\n host.querySelector('#' + parent.id).blur();\n atcb_log_event('openSingletonLink', parent.id, data.identifier);\n } else {\n atcb_toggle(host, 'close');\n atcb_log_event('openCalendarLink', parent.id, data.identifier);\n }\n atcb_generate_links(host, type, data);\n }),\n );\n parent.addEventListener('keyup', function (event) {\n if (event.key === 'Enter') {\n event.preventDefault();\n if (oneOption) {\n host.querySelector('#' + parent.id).blur();\n atcb_log_event('openSingletonLink', parent.id, data.identifier);\n } else {\n atcb_toggle(host, 'close');\n atcb_log_event('openCalendarLink', parent.id, data.identifier);\n }\n atcb_generate_links(host, type, data, 'all', true);\n }\n });\n }\n break;\n case 'close':\n parent.id = data.identifier + '-close';\n parent.addEventListener(\n 'click',\n atcb_debounce(() => {\n atcb_log_event('closeList', 'List Close Button', atcbStates['active']);\n atcb_toggle(host, 'close');\n }),\n );\n parent.addEventListener('keyup', function (event) {\n if (event.key === 'Enter') {\n event.preventDefault();\n atcb_log_event('closeList', 'List Close Button', atcbStates['active']);\n atcb_toggle(host, 'close', data, 'all', true);\n }\n });\n break;\n }\n atcb_generate_label_content(data, parent, type, icon, text, oneOption);\n}\nfunction atcb_generate_label_content(data, parent, type, icon, text, oneOption) {\n const defaultTriggerText = (function () {\n if (data.pastDateHandling != 'none') {\n let allOverdue = true;\n for (let i = 0; i < data.dates.length; i++) {\n if (!data.dates[`${i}`].overdue) {\n allOverdue = false;\n break;\n }\n }\n if (allOverdue) {\n return atcb_translate_hook('expired', data);\n }\n }\n return atcb_translate_hook('label.addtocalendar', data);\n })();\n if (text == '' && data.options.length === 1) {\n text = defaultTriggerText;\n }\n const labelText = {\n trigger: text || defaultTriggerText,\n apple: text || 'Apple',\n google: text || 'Google',\n ical: text || atcb_translate_hook('label.icalfile', data),\n msteams: text || 'Microsoft Teams',\n ms365: text || 'Microsoft 365',\n outlookcom: text || 'Outlook.com',\n yahoo: text || 'Yahoo',\n close: atcb_translate_hook('close', data),\n };\n text = labelText[`${type}`];\n if (data.buttonStyle == 'date' && (type == 'trigger' || oneOption)) {\n return;\n }\n if (icon) {\n const iconEl = document.createElement('span');\n iconEl.classList.add('atcb-icon');\n iconEl.innerHTML = atcbIcon[`${type}`];\n parent.append(iconEl);\n }\n if (((type == 'trigger' || oneOption) && !data.hideTextLabelButton) || (!oneOption && type != 'trigger' && !data.hideTextLabelList)) {\n const textEl = document.createElement('span');\n textEl.classList.add('atcb-text');\n textEl.textContent = text;\n parent.append(textEl);\n }\n parent.setAttribute('aria-label', text);\n}\nfunction atcb_generate_button(host, button, data, debug = false) {\n const oneOption = (function () {\n if (data.options.length === 1 || (data.buttonsList && data.buttonStyle != 'date')) {\n return true;\n }\n return false;\n })();\n const optionSplit = oneOption ? data.options : ['default'];\n optionSplit.forEach(function (option) {\n const buttonTriggerWrapper = document.createElement('div');\n buttonTriggerWrapper.classList.add('atcb-button-wrapper');\n if (data.rtl) {\n buttonTriggerWrapper.classList.add('atcb-rtl');\n }\n button.append(buttonTriggerWrapper);\n atcb_set_sizes(buttonTriggerWrapper, data.sizes);\n const buttonTrigger = document.createElement('button');\n buttonTrigger.classList.add('atcb-button');\n if (data.disabled) {\n buttonTrigger.setAttribute('disabled', true);\n buttonTrigger.style.cssText = 'opacity: .75; cursor: not-allowed; filter: brightness(95%); border-style: dashed;';\n }\n if (data.hideTextLabelButton) {\n buttonTrigger.classList.add('atcb-no-text');\n }\n if (data.trigger === 'click') {\n buttonTrigger.classList.add('atcb-click');\n }\n if (data.listStyle === 'overlay') {\n buttonTrigger.classList.add('atcb-dropoverlay');\n }\n buttonTrigger.type = 'button';\n buttonTrigger.setAttribute('aria-expanded', false); \n buttonTriggerWrapper.append(buttonTrigger);\n if (data.buttonStyle == 'date') {\n atcb_generate_date_button(data, buttonTrigger);\n }\n if (oneOption) {\n buttonTrigger.classList.add('atcb-single');\n const label = (function () {\n if (data.buttonsList && data.options.length > 1) {\n return data.optionLabels[0];\n }\n return data.label;\n })();\n atcb_generate_label(host, data, buttonTrigger, option, !data.hideIconButton, label, true);\n buttonTrigger.id = data.identifier;\n if (data.buttonsList) {\n buttonTrigger.id = data.identifier + '-' + option;\n }\n } else {\n atcb_generate_label(host, data, buttonTrigger, 'trigger', !data.hideIconButton, data.label);\n const buttonDropdownAnchor = document.createElement('div');\n buttonDropdownAnchor.classList.add('atcb-dropdown-anchor');\n buttonTrigger.append(buttonDropdownAnchor);\n }\n if (!data.hideCheckmark && !data.hideTextLabelButton && !data.buttonsList && !data.disabled) {\n const btnCheck = document.createElement('div');\n btnCheck.classList.add('atcb-checkmark');\n btnCheck.innerHTML = atcbIcon['checkmark'];\n buttonTrigger.append(btnCheck);\n }\n });\n if (debug) {\n console.log('Add to Calendar Button \"' + data.identifier + '\" created');\n }\n}\nfunction atcb_generate_dropdown_list(host, data) {\n const optionsList = document.createElement('div');\n optionsList.classList.add('atcb-list');\n optionsList.role = 'list';\n if (data.rtl) {\n optionsList.classList.add('atcb-rtl');\n }\n let listCount = 0;\n data.options.forEach(function (option) {\n const optionItem = document.createElement('div');\n optionItem.classList.add('atcb-list-item');\n optionItem.role = 'link';\n optionItem.tabIndex = 0;\n listCount++;\n optionItem.dataset.optionNumber = listCount;\n optionsList.append(optionItem);\n atcb_generate_label(host, data, optionItem, option, !data.hideIconList, data.optionLabels[listCount - 1]);\n });\n if (data.listStyle === 'modal') {\n const optionItem = document.createElement('div');\n optionItem.classList.add('atcb-list-item', 'atcb-list-item-close');\n optionItem.role = 'button';\n optionItem.tabIndex = 0;\n listCount++;\n optionItem.dataset.optionNumber = listCount;\n optionsList.append(optionItem);\n atcb_generate_label(host, data, optionItem, 'close', !data.hideIconList);\n }\n return optionsList;\n}\nfunction atcb_generate_bg_overlay(host, trigger = '', modal = false, darken = true) {\n const bgOverlay = (function () {\n if (modal) {\n return document.createElement('dialog');\n }\n return document.createElement('div');\n })();\n if (modal) {\n bgOverlay.setAttribute('open', true);\n }\n bgOverlay.id = 'atcb-bgoverlay';\n if (!darken) {\n bgOverlay.classList.add('atcb-no-bg');\n }\n bgOverlay.role = 'button';\n bgOverlay.tabIndex = 0;\n bgOverlay.addEventListener(\n 'mouseup',\n atcb_debounce_leading((e) => {\n if (e.target !== e.currentTarget) return;\n atcb_log_event('closeList', 'Background Hit', atcbStates['active']);\n atcb_toggle(host, 'close');\n }),\n );\n let fingerMoved = false;\n bgOverlay.addEventListener(\n 'touchstart',\n atcb_debounce_leading(() => (fingerMoved = false)),\n { passive: true },\n );\n bgOverlay.addEventListener(\n 'touchmove',\n atcb_debounce_leading(() => (fingerMoved = true)),\n { passive: true },\n );\n bgOverlay.addEventListener(\n 'touchend',\n atcb_debounce((e) => {\n if (fingerMoved !== false || e.target !== e.currentTarget) return;\n atcb_log_event('closeList', 'Background Hit', atcbStates['active']);\n atcb_toggle(host, 'close');\n }),\n { passive: true },\n );\n if (trigger !== 'click') {\n bgOverlay.addEventListener(\n 'mousemove',\n atcb_debounce_leading((e) => {\n if (e.target !== e.currentTarget) return;\n atcb_log_event('closeList', 'Background Hit', atcbStates['active']);\n atcb_toggle(host, 'close');\n }),\n );\n } else {\n bgOverlay.classList.add('atcb-click');\n }\n return bgOverlay;\n}\nfunction atcb_create_atcbl(host, atList = true) {\n const atcbL = document.createElement('div');\n atcbL.id = 'add-to-calendar-button-reference';\n atcbL.style.cssText = 'width: 130px; padding: 5px; height: auto; opacity: .8; transform: translate3d(0, 0, 0); z-index: 15000000;';\n setTimeout(() => {\n atcbL.innerHTML = '' + atcbIcon['atcb'] + '';\n }, 500);\n if (atList) {\n host.querySelector('.atcb-initialized .atcb-list-wrapper').append(atcbL);\n } else {\n if (window.innerHeight > 1000 || window.innerWidth > 1000) {\n host.append(atcbL);\n atcbL.style.cssText += 'position: fixed; bottom: 15px; right: 30px;';\n }\n }\n}\nfunction atcb_create_modal(host, data, icon = '', headline, content = '', buttons = [], subEvents = [], keyboardTrigger = false) {\n atcbStates['active'] = data.identifier;\n const modalHost = atcb_generate_modal_host(host, data, false);\n const bgOverlay = (function () {\n const el = modalHost.getElementById('atcb-bgoverlay');\n if (!el) {\n const newOverlay = atcb_generate_bg_overlay(host, 'click', true, !data.hideBackground);\n modalHost.querySelector('.atcb-modal-host-initialized').append(newOverlay);\n return newOverlay;\n }\n return el;\n })();\n const modalWrapper = document.createElement('div');\n modalWrapper.classList.add('atcb-modal');\n bgOverlay.append(modalWrapper);\n const modalCount = modalHost.querySelectorAll('.atcb-modal').length;\n modalWrapper.dataset.modalNr = modalCount;\n modalWrapper.tabIndex = 0;\n modalWrapper.focus({ preventScroll: true });\n modalWrapper.blur();\n const parentButton = (function () {\n const hostEl = host.getElementById(data.identifier);\n if (hostEl) {\n return hostEl;\n }\n return document.getElementById(data.identifier);\n })();\n if (parentButton) {\n parentButton.classList.add('atcb-active-modal');\n }\n const modal = document.createElement('div');\n modal.classList.add('atcb-modal-box');\n if (data.rtl) {\n modal.classList.add('atcb-rtl');\n }\n modalWrapper.append(modal);\n atcb_set_sizes(modal, data.sizes);\n atcb_set_fullsize(bgOverlay);\n if (icon != '' && !data.hideIconModal) {\n const modalIcon = document.createElement('div');\n modalIcon.classList.add('atcb-modal-icon');\n modalIcon.innerHTML = atcbIcon[`${icon}`];\n modal.append(modalIcon);\n }\n const modalHeadline = document.createElement('div');\n modalHeadline.classList.add('atcb-modal-headline');\n modalHeadline.textContent = headline;\n modal.append(modalHeadline);\n if (content != '') {\n const modalContent = document.createElement('div');\n modalContent.classList.add('atcb-modal-content');\n modalContent.innerHTML = content;\n modal.append(modalContent);\n }\n if (subEvents.length > 1) {\n if (!data.hideBranding) {\n atcb_create_atcbl(modalHost, false);\n }\n const modalsubEventsContent = document.createElement('div');\n modalsubEventsContent.classList.add('atcb-modal-content');\n modal.append(modalsubEventsContent);\n for (let i = 1; i < subEvents.length; i++) {\n const modalSubEventButton = document.createElement('button');\n modalSubEventButton.type = 'button';\n modalSubEventButton.id = data.identifier + '-' + subEvents[0] + '-' + i;\n if (atcbStates[`${data.identifier}`][`${subEvents[0]}`][i - 1] > 0) {\n modalSubEventButton.classList.add('atcb-saved');\n }\n modalSubEventButton.classList.add('atcb-subevent-btn');\n modalsubEventsContent.append(modalSubEventButton);\n atcb_generate_date_button(data, modalSubEventButton, i);\n if (!data.dates[i - 1].overdue || data.pastDateHandling == 'none') {\n if (i == 1 && keyboardTrigger) {\n modalSubEventButton.focus();\n }\n modalSubEventButton.addEventListener(\n 'click',\n atcb_debounce(() => {\n atcb_log_event('openSubEventLink', modalSubEventButton.id, data.identifier);\n modalSubEventButton.blur();\n atcb_generate_links(host, subEvents[0], data, subEvents[`${i}`], keyboardTrigger, true);\n }),\n );\n } else {\n modalSubEventButton.setAttribute('disabled', true);\n modalSubEventButton.style.cssText = 'opacity: .75; cursor: not-allowed; filter: brightness(95%); border-style: dashed;';\n }\n }\n }\n if (buttons.length == 0) {\n buttons.push({ type: 'close', label: atcb_translate_hook('close', data) });\n }\n const modalButtons = document.createElement('div');\n modalButtons.classList.add('atcb-modal-buttons');\n modal.append(modalButtons);\n buttons.forEach((button, index) => {\n let modalButton;\n if (button.href != null && button.href != '') {\n modalButton = document.createElement('a');\n modalButton.setAttribute('target', atcbDefaultTarget);\n modalButton.setAttribute('href', button.href);\n modalButton.setAttribute('rel', 'noopener');\n } else {\n modalButton = document.createElement('button');\n modalButton.type = 'button';\n }\n modalButton.classList.add('atcb-modal-btn');\n if (button.primary) {\n modalButton.classList.add('atcb-modal-btn-primary');\n }\n if (button.label == null || button.label == '') {\n button.label = atcb_translate_hook('modal.button.default', data);\n }\n modalButton.textContent = button.label;\n modalButtons.append(modalButton);\n if (index == 0 && subEvents.length < 2 && keyboardTrigger) {\n modalButton.focus();\n }\n switch (button.type) {\n default:\n case 'close':\n modalButton.addEventListener(\n 'click',\n atcb_debounce(() => {\n atcb_log_event('closeList', 'Modal Close Button', atcbStates['active']);\n atcb_close(host);\n }),\n );\n modalButton.addEventListener('keyup', function (event) {\n if (event.key === 'Enter' || event.code == 'Space' || (event.key === 'Alt' && event.key === 'Control' && event.code === 'Space')) {\n atcb_log_event('closeList', 'Modal Close Button', atcbStates['active']);\n atcb_toggle(host, 'close', '', '', true);\n }\n });\n break;\n case 'yahoo2nd':\n modalButton.addEventListener(\n 'click',\n atcb_debounce(() => {\n atcb_close(host);\n atcb_subscribe_yahoo_modal_switch(host, data);\n }),\n );\n modalButton.addEventListener('keyup', function (event) {\n if (event.key === 'Enter' || event.code == 'Space' || (event.key === 'Alt' && event.key === 'Control' && event.code === 'Space')) {\n atcb_toggle(host, 'close', '', '', true);\n atcb_subscribe_yahoo_modal_switch(host, data, keyboardTrigger);\n }\n });\n break;\n case 'none':\n break;\n }\n });\n if (modalCount > 1) {\n const prevModal = modalHost.querySelector('.atcb-modal[data-modal-nr=\"' + (modalCount - 1) + '\"]');\n prevModal.style.display = 'none';\n }\n atcb_manage_body_scroll(modalHost, modalWrapper);\n}\nfunction atcb_subscribe_yahoo_modal_switch(host, data, keyboardTrigger) {\n atcb_set_fully_successful(host, data);\n atcb_generate_links(host, 'yahoo2nd', data, 'all', keyboardTrigger);\n}\nfunction atcb_generate_date_button(data, parent, subEvent = 'all') {\n if (subEvent != 'all') {\n subEvent = parseInt(subEvent) - 1;\n } else if (data.dates.length == 1) {\n subEvent = 0;\n }\n const fullTimeInfo = (function () {\n let startDateInfo, endDateInfo, timeZoneInfoStart, timeZoneInfoEnd;\n let formattedTimeStart = {};\n let formattedTimeEnd = {};\n let timeBlocks = [];\n let timeZoneInfoStringStart = '';\n let timeZoneInfoStringEnd = '';\n if (subEvent == 'all') {\n formattedTimeStart = atcb_generate_time(data.dates[0]);\n formattedTimeEnd = atcb_generate_time(data.dates[data.dates.length - 1]);\n timeZoneInfoStart = data.dates[0].timeZone;\n timeZoneInfoEnd = data.dates[data.dates.length - 1].timeZone;\n } else {\n formattedTimeStart = atcb_generate_time(data.dates[`${subEvent}`]);\n formattedTimeEnd = formattedTimeStart;\n timeZoneInfoStart = data.dates[`${subEvent}`].timeZone;\n timeZoneInfoEnd = timeZoneInfoStart;\n }\n startDateInfo = new Date(formattedTimeStart.start);\n endDateInfo = new Date(formattedTimeEnd.end);\n if (formattedTimeStart.allday) {\n timeZoneInfoStart = 'GMT';\n }\n if (formattedTimeEnd.allday) {\n timeZoneInfoEnd = 'GMT';\n }\n const browserTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n const magicLocationPhrases = ['global', 'world-wide', 'worldwide', 'online'];\n const convertable = (function () {\n let i = 0;\n let j = data.dates.length - 1;\n if (subEvent != 'all') {\n i = j = subEvent;\n }\n for (i; i <= j; i++) {\n const magicLocation = (function () {\n if (data.dates[`${i}`].location != null && data.dates[`${i}`].location != '') {\n if (magicLocationPhrases.includes(data.dates[`${i}`].location.toLowerCase())) {\n return true;\n }\n }\n return false;\n })();\n if (!magicLocation && !data.dates[`${i}`].onlineEvent) {\n return false;\n }\n }\n return true;\n })();\n if (convertable) {\n timeZoneInfoStart = timeZoneInfoEnd = browserTimezone;\n } else {\n if (!formattedTimeStart.allday && browserTimezone != timeZoneInfoStart && timeZoneInfoStart != timeZoneInfoEnd) {\n timeZoneInfoStringStart = '(' + timeZoneInfoStart + ')';\n }\n if ((!formattedTimeEnd.allday && browserTimezone != timeZoneInfoEnd) || timeZoneInfoStart != timeZoneInfoEnd) {\n timeZoneInfoStringEnd = '(' + timeZoneInfoEnd + ')';\n }\n }\n const now = new Date();\n const dropYearStart = (function () {\n if (startDateInfo.getFullYear() == now.getFullYear()) {\n return true;\n }\n return false;\n })();\n const dropYearEnd = (function () {\n if (endDateInfo.getFullYear() == now.getFullYear()) {\n return true;\n }\n return false;\n })();\n const formatOptionsStart = get_format_options(timeZoneInfoStart, dropYearStart, data.language);\n const formatOptionsEnd = get_format_options(timeZoneInfoEnd, dropYearEnd, data.language);\n if (startDateInfo.toLocaleDateString(data.language, formatOptionsEnd.DateLong) === endDateInfo.toLocaleDateString(data.language, formatOptionsEnd.DateLong)) {\n if (formattedTimeStart.allday) {\n if (!dropYearStart) {\n timeBlocks.push(startDateInfo.toLocaleDateString(data.language, formatOptionsStart.DateLong));\n }\n } else {\n let timeString = '';\n if (dropYearStart) {\n timeString = startDateInfo.toLocaleString(data.language, formatOptionsStart.Time);\n } else {\n timeString = startDateInfo.toLocaleString(data.language, formatOptionsStart.DateTimeLong);\n }\n if (data.language == 'en') {\n timeString = timeString.replace(/:00/, '');\n }\n timeBlocks.push(timeString);\n if (timeZoneInfoStringStart != '') {\n timeBlocks.push(timeZoneInfoStringStart);\n }\n timeBlocks.push('-');\n timeString = endDateInfo.toLocaleTimeString(data.language, formatOptionsEnd.Time);\n if (data.language == 'en') {\n timeString = timeString.replace(/:00/, '');\n }\n timeBlocks.push(timeString);\n if (timeZoneInfoStringEnd != '') {\n timeBlocks.push(timeZoneInfoStringEnd);\n }\n }\n } else {\n if (formattedTimeStart.allday) {\n timeBlocks.push(startDateInfo.toLocaleDateString(data.language, formatOptionsStart.DateLong));\n } else {\n let timeString = '';\n if (dropYearStart) {\n timeString = startDateInfo.toLocaleString(data.language, formatOptionsStart.Time);\n } else {\n timeString = startDateInfo.toLocaleString(data.language, formatOptionsStart.DateTimeLong);\n }\n if (data.language == 'en') {\n timeString = timeString.replace(/:00/, '');\n }\n timeBlocks.push(timeString);\n }\n if (timeZoneInfoStringStart != '') {\n timeBlocks.push(timeZoneInfoStringStart);\n }\n timeBlocks.push('-');\n if (formattedTimeEnd.allday) {\n timeBlocks.push(endDateInfo.toLocaleDateString(data.language, formatOptionsEnd.DateLong));\n } else {\n let timeString = endDateInfo.toLocaleString(data.language, formatOptionsEnd.DateTimeLong);\n if (data.language == 'en') {\n timeString = timeString.replace(/:00/, '');\n }\n timeBlocks.push(timeString);\n }\n if (timeZoneInfoStringEnd != '') {\n timeBlocks.push(timeZoneInfoStringEnd);\n }\n }\n return timeBlocks;\n })();\n const hoverText = (function () {\n if (subEvent != 'all' && data.dates[`${subEvent}`].status == 'CANCELLED') {\n return atcb_translate_hook('date.status.cancelled', data) + '
' + atcb_translate_hook('date.status.cancelled.cta', data);\n }\n if (data.pastDateHandling != 'none') {\n if ((subEvent == 'all' && data.allOverdue) || (subEvent != 'all' && data.dates[`${subEvent}`].overdue)) {\n return atcb_translate_hook('expired', data);\n }\n }\n if (data.label && data.label != '') {\n return data.label;\n }\n return '+ ' + atcb_translate_hook('label.addtocalendar', data);\n })();\n const cancelledInfo = (function () {\n if (subEvent != 'all' && data.dates[`${subEvent}`].status == 'CANCELLED') {\n return atcb_translate_hook('date.status.cancelled', data);\n }\n return '';\n })();\n const recurringString = (function () {\n if (fullTimeInfo.length == 0) {\n return atcb_translate_hook('recurring', data) + ' ⟳';\n }\n return '⟳';\n })();\n if (subEvent == 'all') {\n subEvent = 0;\n }\n const startDate = new Date(atcb_generate_time(data.dates[`${subEvent}`]).start);\n const allDay = atcb_generate_time(data.dates[`${subEvent}`]).allday;\n const timeZone = data.dates[`${subEvent}`].timeZone;\n const btnLeft = document.createElement('div');\n btnLeft.classList.add('atcb-date-btn-left');\n parent.append(btnLeft);\n const btnDay = document.createElement('div');\n btnDay.classList.add('atcb-date-btn-day');\n btnLeft.append(btnDay);\n const btnMonth = document.createElement('div');\n btnMonth.classList.add('atcb-date-btn-month');\n btnDay.textContent = (function () {\n if (allDay) {\n return startDate.toLocaleString(data.language, { day: 'numeric' });\n }\n return startDate.toLocaleString(data.language, {\n day: 'numeric',\n timeZone: timeZone,\n });\n })();\n btnMonth.textContent = (function () {\n if (allDay) {\n return startDate.toLocaleString(data.language, { month: 'short' });\n }\n return startDate.toLocaleString(data.language, {\n month: 'short',\n timeZone: timeZone,\n });\n })();\n btnLeft.append(btnMonth);\n const btnRight = document.createElement('div');\n btnRight.classList.add('atcb-date-btn-right');\n parent.append(btnRight);\n const btnDetails = document.createElement('div');\n btnDetails.classList.add('atcb-date-btn-details');\n btnRight.append(btnDetails);\n const btnHeadline = document.createElement('div');\n btnHeadline.classList.add('atcb-date-btn-headline');\n btnHeadline.textContent = data.dates[`${subEvent}`].name;\n btnDetails.append(btnHeadline);\n if ((data.dates[`${subEvent}`].location != null && data.dates[`${subEvent}`].location != '' && !data.dates[`${subEvent}`].onlineEvent) || cancelledInfo != '') {\n const btnLocation = document.createElement('div');\n btnLocation.classList.add('atcb-date-btn-content');\n btnDetails.append(btnLocation);\n if (cancelledInfo != '') {\n btnLocation.textContent = cancelledInfo;\n btnLocation.style.fontWeight = '600';\n btnLocation.style.color = '#9c1a23';\n } else {\n btnLocation.classList.add('atcb-date-btn-content-location');\n const btnLocationIcon = document.createElement('span');\n btnLocationIcon.classList.add('atcb-date-btn-content-icon');\n btnLocationIcon.innerHTML = atcbIcon['location'];\n btnLocation.append(btnLocationIcon);\n const btnLocationText = document.createElement('span');\n btnLocationText.textContent = data.dates[`${subEvent}`].location;\n btnLocation.append(btnLocationText);\n }\n } else {\n if (data.dates[`${subEvent}`].description != '' && fullTimeInfo.length == 0 && (data.recurrence == null || data.recurrence == '')) {\n const btnDescription = document.createElement('div');\n btnDescription.classList.add('atcb-date-btn-content');\n btnDescription.textContent = data.dates[`${subEvent}`].description;\n btnDescription.style.cssText = 'overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;';\n btnDetails.append(btnDescription);\n } else {\n btnHeadline.style.cssText = '-webkit-line-clamp: 2;';\n if (fullTimeInfo.length == 0 && (data.recurrence == null || data.recurrence == '')) {\n btnRight.style.alignSelf = 'center';\n btnHeadline.style.cssText = 'text-align: center; -webkit-line-clamp: 2;';\n }\n }\n }\n if (fullTimeInfo.length > 0 || (data.recurrence != null && data.recurrence != '')) {\n const btnDateTime = document.createElement('div');\n btnDateTime.classList.add('atcb-date-btn-content');\n btnDetails.append(btnDateTime);\n const btnDateTimeIcon = document.createElement('span');\n btnDateTimeIcon.classList.add('atcb-date-btn-content-icon');\n btnDateTimeIcon.innerHTML = atcbIcon['ical'];\n btnDateTime.append(btnDateTimeIcon);\n const btnDateTimeText = document.createElement('span');\n btnDateTimeText.classList.add('atcb-date-btn-content-text');\n btnDateTime.append(btnDateTimeText);\n fullTimeInfo.forEach(function (block) {\n const btnDateTimeTextBlock = document.createElement('span');\n btnDateTimeTextBlock.textContent = block;\n btnDateTimeText.append(btnDateTimeTextBlock);\n });\n if (data.recurrence != null && data.recurrence != '') {\n const recurSign = document.createElement('span');\n recurSign.innerHTML = recurringString;\n btnDateTimeText.append(recurSign);\n }\n }\n const btnHover = document.createElement('div');\n btnHover.classList.add('atcb-date-btn-hover');\n btnHover.innerHTML = hoverText;\n btnRight.append(btnHover);\n if (!data.hideCheckmark) {\n const btnCheck = document.createElement('div');\n btnCheck.classList.add('atcb-checkmark');\n btnCheck.innerHTML = atcbIcon['checkmark'];\n parent.append(btnCheck);\n }\n}\nfunction get_format_options(timeZoneInfo, dropYear = false, language = 'en') {\n const hoursFormat = (function () {\n if (language == 'en') {\n return 'h12'; \n }\n return 'h23'; \n })();\n if (dropYear) {\n return {\n DateLong: {\n timeZone: timeZoneInfo,\n month: 'short',\n day: 'numeric',\n },\n DateTimeLong: {\n timeZone: timeZoneInfo,\n month: 'short',\n day: 'numeric',\n hour: 'numeric',\n minute: '2-digit',\n hourCycle: hoursFormat,\n },\n Time: {\n timeZone: timeZoneInfo,\n hour: 'numeric',\n minute: '2-digit',\n hourCycle: hoursFormat,\n },\n };\n }\n return {\n DateLong: {\n timeZone: timeZoneInfo,\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n },\n DateTimeLong: {\n timeZone: timeZoneInfo,\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: '2-digit',\n hourCycle: hoursFormat,\n },\n Time: {\n timeZone: timeZoneInfo,\n hour: 'numeric',\n minute: '2-digit',\n hourCycle: hoursFormat,\n },\n };\n}\nfunction atcb_generate_modal_host(host, data, reset = true) {\n const existingModalHost = document.getElementById(data.identifier + '-modal-host');\n if (!reset && existingModalHost) {\n return existingModalHost.shadowRoot;\n }\n if (existingModalHost) {\n existingModalHost.remove();\n }\n let newModalHost = document.createElement('div');\n newModalHost.id = data.identifier + '-modal-host';\n if (host.host.hasAttribute('styleLight')) {\n newModalHost.setAttribute('styleLight', host.host.getAttribute('styleLight'));\n }\n if (host.host.hasAttribute('styleDark')) {\n newModalHost.setAttribute('styleDark', host.host.getAttribute('styleDark'));\n }\n newModalHost.setAttribute('atcb-button-id', data.identifier);\n newModalHost.setAttribute('style', 'transform:translate3D(0, 0, 0);visibility:visible;opacity:1;position:fixed;top:0;left:0;display:flex;z-index:13999998;');\n document.body.append(newModalHost);\n newModalHost.attachShadow({ mode: 'open', delegateFocus: true });\n const elem = document.createElement('template');\n elem.innerHTML = '
';\n newModalHost.shadowRoot.append(elem.content.cloneNode(true));\n atcb_set_light_mode(newModalHost.shadowRoot, data);\n atcb_load_css(newModalHost.shadowRoot, null, data.buttonStyle, false, false, data.customCss);\n return newModalHost.shadowRoot;\n}\n\n\nfunction atcb_generate_rich_data(data, parent) {\n const schemaEl = document.createElement('script');\n schemaEl.type = 'application/ld+json';\n const schemaContentMulti = [];\n if (data.dates.length > 1) {\n const parts = [];\n parts.push('\"@context\":\"https://schema.org\"');\n parts.push('\"@type\":\"EventSeries\"');\n parts.push('\"@id\":\"' + data.name.replace(/\\s/g, '') + '\"');\n parts.push('\"name\":\"' + data.name + '\",');\n schemaContentMulti.push('{\\r\\n' + parts.join(',\\r\\n') + '\\r\\n');\n }\n const schemaContentFull = [];\n for (let i = 0; i < data.dates.length; i++) {\n const schemaContent = [];\n schemaContent.push('\"@context\":\"https://schema.org\"');\n schemaContent.push('\"@type\":\"Event\"');\n if (data.dates.length > 1) {\n schemaContent.push('\"@id\":\"' + data.name.replace(/\\s/g, '') + '-' + (i + 1) + '\"');\n }\n if (data.dates[`${i}`].status == 'CANCELLED') {\n schemaContent.push('\"eventStatus\":\"https://schema.org/EventCancelled\"');\n }\n schemaContent.push('\"name\":\"' + data.dates[`${i}`].name + '\"');\n if (data.dates[`${i}`].descriptionHtmlFree) {\n schemaContent.push('\"description\":\"' + data.dates[`${i}`].descriptionHtmlFree + '\"');\n }\n const formattedDate = atcb_generate_time(data.dates[`${i}`], 'delimiters', 'general', true);\n schemaContent.push('\"startDate\":\"' + formattedDate.start + '\"');\n if (formattedDate.duration != null) {\n schemaContent.push('\"duration\":\"' + formattedDate.duration + '\"');\n }\n schemaContent.push(data.dates[`${i}`].onlineEvent ? '\"eventAttendanceMode\":\"https://schema.org/OnlineEventAttendanceMode\",\\r\\n\"location\": {\\r\\n\"@type\":\"VirtualLocation\",\\r\\n\"url\":\"' + data.dates[`${i}`].location + '\"\\r\\n}' : '\"location\":\"' + data.dates[`${i}`].location + '\"');\n if (data.recurrence != null && data.recurrence != '') {\n schemaContent.push(...atcb_generate_rich_data_recurrence(data, formattedDate));\n } else {\n schemaContent.push('\"endDate\":\"' + formattedDate.end + '\"');\n }\n if (data.dates[`${i}`].organizer != null && data.dates[`${i}`].organizer != '') {\n const organizerParts = data.dates[`${i}`].organizer.split('|');\n schemaContent.push('\"organizer\":{\\r\\n\"@type\":\"Person\",\\r\\n\"name\":\"' + organizerParts[0] + '\",\\r\\n\"email\":\"' + organizerParts[1] + '\"\\r\\n}');\n }\n const imageData = [];\n if (data.images != null) {\n if (Array.isArray(data.images)) {\n for (let i = 0; i < data.images.length; i++) {\n if (atcb_secure_url(data.images[`${i}`], data.debug) && data.images[`${i}`].startsWith('http')) {\n imageData.push('\"' + data.images[`${i}`] + '\"');\n }\n }\n }\n } else {\n imageData.push('\"https://add-to-calendar-button.com/demo_assets/img/1x1.png\"');\n imageData.push('\"https://add-to-calendar-button.com/demo_assets/img/4x3.png\"');\n imageData.push('\"https://add-to-calendar-button.com/demo_assets/img/16x9.png\"');\n }\n if (imageData.length > 0) {\n schemaContent.push('\"image\":[\\r\\n' + imageData.join(',\\r\\n') + ']');\n }\n schemaContentFull.push('{\\r\\n' + schemaContent.join(',\\r\\n') + '\\r\\n}');\n }\n if (data.dates.length > 1) {\n schemaEl.textContent = schemaContentMulti.join(',\\r\\n') + '\"subEvents\":[\\r\\n' + schemaContentFull.join(',\\r\\n') + '\\r\\n]\\r\\n}';\n } else {\n schemaEl.textContent = schemaContentFull[0];\n }\n parent.parentNode.insertBefore(schemaEl, parent);\n}\nfunction atcb_generate_rich_data_recurrence(data, formattedDate) {\n const schemaRecurrenceContent = [];\n schemaRecurrenceContent.push('\"eventSchedule\": { \"@type\": \"Schedule\"');\n schemaRecurrenceContent.push('\"scheduleTimezone\":\"' + data.dates[0].timeZone + '\"');\n const repeatFrequency = 'P' + data.recurrence_interval + data.recurrence_frequency.substring(0, 1);\n schemaRecurrenceContent.push('\"repeatFrequency\":\"' + repeatFrequency + '\"');\n if (data.recurrence_byDay != null && data.recurrence_byDay != '') {\n const byDayString = (function () {\n if (/\\d/.test(data.recurrence_byDay)) {\n return '\"' + data.recurrence_byDay + '\"';\n } else {\n const byDays = data.recurrence_byDay.split(',');\n const helperMap = {\n MO: 'https://schema.org/Monday',\n TU: 'https://schema.org/Tuesday',\n WE: 'https://schema.org/Wednesday',\n TH: 'https://schema.org/Thursday',\n FR: 'https://schema.org/Friday',\n SA: 'https://schema.org/Saturday',\n SU: 'https://schema.org/Sunday',\n };\n const output = [];\n for (let i = 0; i < byDays.length; i++) {\n output.push('\"' + helperMap[byDays[`${i}`]] + '\"');\n }\n return '[' + output.join(',') + ']';\n }\n })();\n schemaRecurrenceContent.push('\"byDay\":' + byDayString);\n }\n if (data.recurrence_byMonth != null && data.recurrence_byMonth != '') {\n const byMonthString = data.recurrence_byMonth.includes(',') ? '[' + data.recurrence_byMonth + ']' : data.recurrence_byMonth;\n schemaRecurrenceContent.push('\"byMonth\":\"' + byMonthString + '\"');\n }\n if (data.recurrence_byMonthDay != null && data.recurrence_byMonthDay != '') {\n const byMonthDayString = data.recurrence_byMonthDay.includes(',') ? '[' + data.recurrence_byMonthDay + ']' : data.recurrence_byMonthDay;\n schemaRecurrenceContent.push('\"byMonthDay\":\"' + byMonthDayString + '\"');\n }\n if (data.recurrence_count != null && data.recurrence_count != '') {\n schemaRecurrenceContent.push('\"repeatCount\":\"' + data.recurrence_count + '\"');\n }\n if (data.recurrence_until != null && data.recurrence_until != '') {\n schemaRecurrenceContent.push('\"endDate\":\"' + data.recurrence_until + '\"');\n }\n if (data.startTime != null && data.startTime != '' && data.endTime != null && data.endTime != '') {\n schemaRecurrenceContent.push('\"startTime\":\"' + data.startTime + ':00\"');\n schemaRecurrenceContent.push('\"endTime\":\"' + data.endTime + ':00\"');\n schemaRecurrenceContent.push('\"duration\":\"' + formattedDate.duration + '\"');\n }\n schemaRecurrenceContent.push('\"startDate\":\"' + data.startDate + '\" }');\n return schemaRecurrenceContent;\n}\n\n\nfunction atcb_generate_links(host, type, data, subEvent = 'all', keyboardTrigger = false, multiDateModal = false) {\n let linkType = type;\n if (type == 'apple') {\n linkType = 'ical';\n }\n if (subEvent != 'all') {\n subEvent = parseInt(subEvent) - 1;\n } else if (data.dates.length == 1) {\n subEvent = 0;\n }\n if (data.subscribe) {\n atcb_generate_subscribe_links(host, linkType, data, keyboardTrigger);\n return;\n }\n if (subEvent != 'all') {\n if (data.dates[`${subEvent}`].status == 'CANCELLED' && linkType != 'ical') {\n atcb_create_modal(host, data, 'warning', atcb_translate_hook('date.status.cancelled', data), atcb_translate_hook('date.status.cancelled.cta', data), [], [], keyboardTrigger);\n } else {\n switch (linkType) {\n case 'ical': // also for apple (see above)\n atcb_generate_ical(host, data, subEvent, keyboardTrigger);\n break;\n case 'google':\n atcb_generate_google(data.dates[`${subEvent}`]);\n break;\n case 'msteams':\n atcb_generate_msteams(data.dates[`${subEvent}`]);\n break;\n case 'ms365':\n atcb_generate_microsoft(data.dates[`${subEvent}`]);\n break;\n case 'outlookcom':\n atcb_generate_microsoft(data.dates[`${subEvent}`], 'outlook');\n break;\n case 'yahoo':\n atcb_generate_yahoo(data.dates[`${subEvent}`]);\n break;\n }\n }\n const modalHost = document.getElementById(data.identifier + '-modal-host');\n if (modalHost) {\n const subEventButton = modalHost.shadowRoot.getElementById(data.identifier + '-' + type + '-' + (subEvent + 1));\n if (subEventButton) {\n subEventButton.classList.add('atcb-saved');\n }\n }\n atcbStates[`${data.identifier}`][`${type}`][`${subEvent}`]++;\n const filteredStates = atcbStates[`${data.identifier}`][`${type}`].filter(function (value) {\n return value < 1;\n });\n if (filteredStates.length == 0) {\n atcb_set_fully_successful(host, data, multiDateModal);\n }\n return;\n }\n atcb_generate_multidate_links(host, type, linkType, data, keyboardTrigger, multiDateModal);\n}\nfunction atcb_generate_multidate_links(host, type, linkType, data, keyboardTrigger, multiDateModal) {\n if (\n linkType == 'ical' &&\n data.dates.every(function (theSubEvent) {\n if (theSubEvent.status == 'CANCELLED' || (theSubEvent.organizer != null && theSubEvent.organizer != '')) {\n return false;\n }\n return true;\n })\n ) {\n atcb_generate_ical(host, data, 'all', keyboardTrigger);\n for (let i = 0; i < atcbStates[`${data.identifier}`][`${type}`].length; i++) {\n atcbStates[`${data.identifier}`][`${type}`][`${i}`]++;\n }\n atcb_set_fully_successful(host, data, multiDateModal);\n return;\n }\n if (!multiDateModal) {\n const individualButtons = [type];\n for (let i = 0; i < data.dates.length; i++) {\n individualButtons.push(i + 1);\n }\n atcb_create_modal(host, data, type, atcb_translate_hook('modal.multidate.h', data), atcb_translate_hook('modal.multidate.text', data), [], individualButtons, keyboardTrigger);\n }\n}\nfunction atcb_generate_subscribe_links(host, linkType, data, keyboardTrigger) {\n const adjustedFileUrl = data.icsFile.replace('https://', 'webcal://');\n switch (linkType) {\n case 'ical': // also for apple (see above)\n if (isMobile()) {\n atcb_subscribe_ical(data.icsFile);\n break;\n }\n atcb_subscribe_ical(adjustedFileUrl);\n break;\n case 'google':\n atcb_subscribe_google(adjustedFileUrl);\n break;\n case 'ms365':\n atcb_subscribe_microsoft(adjustedFileUrl, data.name);\n break;\n case 'outlookcom':\n atcb_subscribe_microsoft(adjustedFileUrl, data.name, 'outlook');\n break;\n case 'yahoo':\n atcb_copy_to_clipboard(data.icsFile);\n atcb_create_modal(\n host,\n data,\n 'yahoo',\n atcb_translate_hook('modal.subscribe.yahoo.h', data),\n atcb_translate_hook('modal.clipboard.text', data) + '
' + atcb_translate_hook('modal.subscribe.yahoo.text', data),\n [\n {\n label: atcb_translate_hook('Open Yahoo Calendar', data),\n primary: true,\n type: 'yahoo2nd',\n href: 'https://www.yahoo.com/calendar',\n },\n { label: atcb_translate_hook('cancel', data) },\n ],\n [],\n keyboardTrigger,\n );\n return;\n case 'yahoo2nd':\n atcb_copy_to_clipboard(data.icsFile);\n atcb_create_modal(\n host,\n data,\n 'yahoo',\n atcb_translate_hook('modal.subscribe.yahoo.h', data),\n atcb_translate_hook('modal.clipboard.text', data) + '
' + atcb_translate_hook('modal.subscribe.yahoo.text', data),\n [\n {\n label: atcb_translate_hook('Open Yahoo Calendar', data),\n type: 'none',\n href: 'https://www.yahoo.com/calendar',\n },\n { label: atcb_translate_hook('cancel', data) },\n ],\n [],\n keyboardTrigger,\n );\n return;\n }\n atcb_set_fully_successful(host, data);\n}\nfunction atcb_set_fully_successful(host, data, multiDateModal = false) {\n const trigger = host.getElementById(data.identifier);\n if (trigger) {\n trigger.classList.add('atcb-saved');\n }\n atcb_saved_hook(host, data);\n if (multiDateModal && host.querySelectorAll('.atcb-modal[data-modal-nr]').length < 2) {\n atcb_toggle(host, 'close');\n }\n}\nfunction atcb_subscribe_ical(fileUrl) {\n atcb_open_cal_url(fileUrl);\n}\nfunction atcb_subscribe_google(fileUrl) {\n const baseUrl = 'https://calendar.google.com/calendar/r?cid=';\n const newFileUrl = (function () {\n const fileUrlRegex = /^(https?:\\/\\/|webcal:\\/\\/|\\/\\/)calendar\\.google\\.com\\//;\n if (fileUrlRegex.test(fileUrl)) {\n return fileUrl.replace(/^(.)*\\?cid=/, '');\n }\n return encodeURIComponent(fileUrl);\n })();\n atcb_open_cal_url(baseUrl + newFileUrl);\n}\nfunction atcb_subscribe_microsoft(fileUrl, calName, type = '365') {\n const urlParts = [];\n const baseUrl = (function () {\n if (type == 'outlook') {\n return 'https://outlook.live.com/calendar/0/addfromweb/?';\n } else {\n return 'https://outlook.office.com/calendar/0/addfromweb/?';\n }\n })();\n urlParts.push('url=' + encodeURIComponent(fileUrl));\n urlParts.push('name=' + encodeURIComponent(calName));\n atcb_open_cal_url(baseUrl + urlParts.join('&'));\n}\nfunction atcb_generate_google(data) {\n const urlParts = [];\n urlParts.push('https://calendar.google.com/calendar/render?action=TEMPLATE');\n const formattedDate = atcb_generate_time(data, 'clean', 'google');\n urlParts.push('dates=' + encodeURIComponent(formattedDate.start) + '%2F' + encodeURIComponent(formattedDate.end));\n if (data.timeZone != null && data.timeZone != '' && !/(GMT[+|-]\\d{1,2}|Etc\\/U|Etc\\/Zulu|CET|CST6CDT|EET|EST|EST5EDT|MET|MST|MST7MDT|PST8PDT|WET)/i.test(data.timeZone) && !formattedDate.allday) {\n urlParts.push('ctz=' + data.timeZone);\n }\n if (data.name != null && data.name != '') {\n urlParts.push('text=' + encodeURIComponent(data.name));\n }\n const tmpDataDescription = [];\n if (data.description != null && data.description != '') {\n tmpDataDescription.push(data.description);\n }\n if (data.location != null && data.location != '') {\n urlParts.push('location=' + encodeURIComponent(data.location));\n if (isiOS()) {\n if (tmpDataDescription.length > 0) {\n tmpDataDescription.push('

');\n }\n tmpDataDescription.push('📍: ' + data.location);\n }\n }\n if (tmpDataDescription.length > 0) {\n urlParts.push('details=' + encodeURIComponent(tmpDataDescription.join('')));\n }\n if (data.recurrence != null && data.recurrence != '') {\n urlParts.push('recur=' + encodeURIComponent(data.recurrence));\n }\n if (data.availability != null && data.availability != '') {\n const availabilityPart = (function () {\n if (data.availability == 'free') {\n return 'crm=AVAILABLE&trp=false';\n }\n return 'crm=BUSY&trp=true';\n })();\n urlParts.push(availabilityPart);\n }\n atcb_open_cal_url(urlParts.join('&'));\n}\nfunction atcb_generate_yahoo(data) {\n const urlParts = [];\n urlParts.push('https://calendar.yahoo.com/?v=60');\n const formattedDate = atcb_generate_time(data, 'clean');\n urlParts.push('st=' + encodeURIComponent(formattedDate.start) + '&et=' + encodeURIComponent(formattedDate.end));\n if (formattedDate.allday) {\n urlParts.push('dur=allday');\n }\n if (data.name != null && data.name != '') {\n urlParts.push('title=' + encodeURIComponent(data.name));\n }\n if (data.location != null && data.location != '') {\n urlParts.push('in_loc=' + encodeURIComponent(data.location));\n }\n if (data.descriptionHtmlFree != null && data.descriptionHtmlFree != '') {\n urlParts.push('desc=' + encodeURIComponent(data.descriptionHtmlFree));\n }\n atcb_open_cal_url(urlParts.join('&'));\n}\nfunction atcb_generate_microsoft(data, type = '365') {\n const urlParts = [];\n const basePath = (function () {\n if (isMobile()) {\n return '/calendar/0/deeplink/compose?path=%2Fcalendar%2Faction%2Fcompose&rru=addevent';\n }\n return '/calendar/action/compose?rru=addevent';\n })();\n const baseUrl = (function () {\n if (type == 'outlook') {\n return 'https://outlook.live.com' + basePath;\n } else {\n return 'https://outlook.office.com' + basePath;\n }\n })();\n urlParts.push(baseUrl);\n const formattedDate = atcb_generate_time(data, 'delimiters', 'microsoft');\n urlParts.push('startdt=' + formattedDate.start);\n urlParts.push('enddt=' + formattedDate.end);\n if (formattedDate.allday) {\n urlParts.push('allday=true');\n }\n if (data.name != null && data.name != '') {\n urlParts.push('subject=' + encodeURIComponent(data.name));\n }\n if (data.location != null && data.location != '') {\n urlParts.push('location=' + encodeURIComponent(data.location));\n }\n if (data.description != null && data.description != '') {\n urlParts.push('body=' + encodeURIComponent(data.description));\n }\n atcb_open_cal_url(urlParts.join('&'));\n}\nfunction atcb_generate_msteams(data) {\n const urlParts = [];\n const baseUrl = 'https://teams.microsoft.com/l/meeting/new?';\n const formattedDate = atcb_generate_time(data, 'delimiters', 'msteams', true);\n if (!formattedDate.allday || isMobile()) {\n urlParts.push('startTime=' + encodeURIComponent(formattedDate.start));\n urlParts.push('endTime=' + encodeURIComponent(formattedDate.end));\n } else {\n urlParts.push('startTime=' + formattedDate.start);\n urlParts.push('endTime=' + formattedDate.end);\n }\n if (data.name != null && data.name != '') {\n urlParts.push('subject=' + encodeURIComponent(data.name));\n }\n let locationString = '';\n if (data.location != null && data.location != '') {\n locationString = encodeURIComponent(data.location);\n urlParts.push('location=' + locationString);\n locationString += ' // '; \n }\n if (data.descriptionHtmlFree != null && data.descriptionHtmlFree != '') {\n urlParts.push('content=' + locationString + encodeURIComponent(data.descriptionHtmlFree));\n }\n atcb_open_cal_url(baseUrl + urlParts.join('&'));\n}\nfunction atcb_open_cal_url(url, target = '') {\n if (target == '') {\n target = atcbDefaultTarget;\n }\n if (atcb_secure_url(url)) {\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n const newTab = window.open(url, target);\n if (newTab) {\n newTab.focus();\n }\n }\n}\nfunction atcb_generate_ical(host, data, subEvent = 'all', keyboardTrigger = false) {\n if (subEvent != 'all') {\n subEvent = parseInt(subEvent);\n }\n const filename = atcb_determine_ical_filename(data, subEvent);\n const givenIcsFile = (function () {\n if (subEvent != 'all' && data.dates[`${subEvent}`].icsFile != null && data.dates[`${subEvent}`].icsFile != '') {\n return data.dates[`${subEvent}`].icsFile;\n }\n if (data.icsFile != null && data.icsFile != '') {\n return data.icsFile;\n }\n return '';\n })();\n if (givenIcsFile != '' && (!isiOS() || (isiOS() && isWebView() && data.bypassWebViewCheck == true))) {\n atcb_save_file(givenIcsFile, filename);\n return;\n }\n const now = new Date();\n const ics_lines = ['BEGIN:VCALENDAR', 'VERSION:2.0'];\n ics_lines.push('PRODID:-// https://add-to-calendar-pro.com // button v' + atcbVersion + ' //EN');\n ics_lines.push('CALSCALE:GREGORIAN');\n if (subEvent == 'all') {\n ics_lines.push('METHOD:PUBLISH');\n } else {\n if (data.dates[`${subEvent}`].status != null && data.dates[`${subEvent}`].status == 'CANCELLED') {\n ics_lines.push('METHOD:CANCEL');\n } else {\n if (data.dates[`${subEvent}`].organizer != null && data.dates[`${subEvent}`].organizer != '') {\n ics_lines.push('METHOD:REQUEST');\n } else {\n ics_lines.push('METHOD:PUBLISH');\n }\n }\n }\n const usedTimeZones = [];\n const loopStart = (function () {\n if (subEvent != 'all') {\n return subEvent;\n }\n return 0;\n })();\n const loopEnd = (function () {\n if (subEvent != 'all') {\n return subEvent;\n }\n return data.dates.length - 1;\n })();\n for (let i = loopStart; i <= loopEnd; i++) {\n const formattedDate = atcb_generate_time(data.dates[`${i}`], 'clean', 'ical');\n const timeAddon = (function () {\n if (formattedDate.allday) {\n return ';VALUE=DATE';\n }\n if (data.dates[`${i}`].timeZone != null && data.dates[`${i}`].timeZone != '') {\n const timeZoneBlock = tzlib_get_ical_block(data.dates[`${i}`].timeZone);\n if (!usedTimeZones.includes(data.dates[`${i}`].timeZone)) {\n ics_lines.push(timeZoneBlock[0]);\n }\n usedTimeZones.push(data.dates[`${i}`].timeZone);\n return ';' + timeZoneBlock[1];\n }\n })();\n ics_lines.push('BEGIN:VEVENT');\n ics_lines.push('UID:' + data.dates[`${i}`].uid);\n ics_lines.push('DTSTAMP:' + atcb_format_datetime(now, 'clean', true));\n ics_lines.push('DTSTART' + timeAddon + ':' + formattedDate.start);\n ics_lines.push('DTEND' + timeAddon + ':' + formattedDate.end);\n ics_lines.push('SUMMARY:' + atcb_rewrite_ical_text(data.dates[`${i}`].name, true));\n if (data.dates[`${i}`].descriptionHtmlFreeICal != null && data.dates[`${i}`].descriptionHtmlFreeICal != '') {\n ics_lines.push('DESCRIPTION:' + atcb_rewrite_ical_text(data.dates[`${i}`].descriptionHtmlFreeICal, true));\n }\n if (data.dates[`${i}`].description != null && data.dates[`${i}`].description != '') {\n ics_lines.push('X-ALT-DESC;FMTTYPE=text/html:\\r\\n \\r\\n \\r\\n ' + atcb_rewrite_ical_text(data.dates[`${i}`].description, true) + '\\r\\n ');\n }\n if (data.dates[`${i}`].location != null && data.dates[`${i}`].location != '') {\n ics_lines.push('LOCATION:' + atcb_rewrite_ical_text(data.dates[`${i}`].location, true));\n }\n if (data.dates[`${i}`].organizer != null && data.dates[`${i}`].organizer != '') {\n const organizerParts = data.dates[`${i}`].organizer.split('|');\n ics_lines.push('ORGANIZER;CN=\"' + atcb_rewrite_ical_text(organizerParts[0], false, true) + '\":MAILTO:' + organizerParts[1]);\n }\n if (data.dates[`${i}`].attendee != null && data.dates[`${i}`].attendee != '') {\n const attendeeParts = data.dates[`${i}`].attendee.split('|');\n ics_lines.push('ATTENDEE;ROLE=REQ-PARTICIPANT;CN=\"' + atcb_rewrite_ical_text(attendeeParts[0], false, true) + '\":MAILTO:' + attendeeParts[1]);\n }\n if (data.recurrence != null && data.recurrence != '') {\n ics_lines.push(data.recurrence);\n }\n if (data.dates[`${i}`].availability != null && data.dates[`${i}`].availability != '') {\n const transpVal = (function () {\n if (data.dates[`${i}`].availability == 'free') {\n return 'TRANSPARENT';\n }\n return 'OPAQUE';\n })();\n ics_lines.push('TRANSP:' + transpVal);\n }\n ics_lines.push('SEQUENCE:' + data.dates[`${i}`].sequence);\n ics_lines.push('STATUS:' + data.dates[`${i}`].status);\n ics_lines.push('CREATED:' + data.created);\n ics_lines.push('LAST-MODIFIED:' + data.updated);\n ics_lines.push('END:VEVENT');\n }\n ics_lines.push('END:VCALENDAR');\n const dataUrl = (function () {\n if (givenIcsFile != '') {\n return givenIcsFile;\n }\n return 'data:text/calendar;charset=utf-8,' + encodeURIComponent(ics_lines.join('\\r\\n'));\n })();\n if ((isiOS() && !isSafari()) || (isWebView() && (isiOS() || (isAndroid() && isProblematicWebView())))) {\n atcb_ical_copy_note(host, dataUrl, data, keyboardTrigger);\n return;\n }\n atcb_save_file(dataUrl, filename);\n}\nfunction atcb_determine_ical_filename(data, subEvent) {\n const filenameSuffix = (function () {\n if (subEvent != 'all' && subEvent != 0) {\n return '-' + parseInt(subEvent) + 1;\n }\n return '';\n })();\n if (data.iCalFileName != null && data.iCalFileName != '') {\n return data.iCalFileName + filenameSuffix;\n }\n if (data.icsFile != null && data.icsFile != '') {\n const filenamePart = data.icsFile.split('/').pop().split('.')[0];\n if (filenamePart != '') {\n return filenamePart + filenameSuffix;\n }\n }\n return 'event-to-save-in-my-calendar' + filenameSuffix;\n}\nfunction atcb_ical_copy_note(host, dataUrl, data, keyboardTrigger) {\n atcb_copy_to_clipboard(dataUrl);\n if (isiOS() && !isSafari()) {\n atcb_create_modal(\n host,\n data,\n 'warning',\n atcb_translate_hook('modal.opensafari.ical.h', data),\n atcb_translate_hook('modal.opensafari.ical.text', data) + '
' + atcb_translate_hook('modal.clipboard.text', data) + '
' + atcb_translate_hook('modal.opensafari.ical.steps', data),\n [],\n [],\n keyboardTrigger,\n );\n return;\n }\n atcb_create_modal(host, data, 'warning', atcb_translate_hook('modal.webview.ical.h', data), atcb_translate_hook('modal.webview.ical.text', data) + '
' + atcb_translate_hook('modal.clipboard.text', data) + '
' + atcb_translate_hook('modal.webview.ical.steps', data), [], [], keyboardTrigger);\n}\n\n\nfunction atcb_saved_hook(host, data) {\n atcb_log_event('success', data.identifier, data.identifier);\n if (data.proKey == null || data.proKey == '') {\n return;\n }\n}\nfunction atcb_save_file(file, filename) {\n try {\n const save = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');\n save.rel = 'noopener';\n save.href = file;\n if (isMobile()) {\n save.target = '_self';\n } else {\n save.target = '_blank';\n }\n save.download = filename + '.ics';\n const evt = new MouseEvent('click', {\n view: window,\n button: 0,\n bubbles: true,\n cancelable: false,\n });\n save.dispatchEvent(evt);\n (window.URL || window.webkitURL).revokeObjectURL(save.href);\n } catch (e) {\n console.error(e);\n }\n}\nfunction atcb_generate_time(data, style = 'delimiters', targetCal = 'general', addTimeZoneOffset = false) {\n if (data.startTime != null && data.startTime != '' && data.endTime != null && data.endTime != '') {\n const newStartDate = new Date(data.startDate + 'T' + data.startTime + ':00.000+00:00');\n const newEndDate = new Date(data.endDate + 'T' + data.endTime + ':00.000+00:00');\n const durationMS = newEndDate - newStartDate;\n const durationHours = Math.floor(durationMS / 1000 / 60 / 60);\n const durationMinutes = Math.floor(((durationMS - durationHours * 60 * 60 * 1000) / 1000 / 60) % 60);\n const durationString = (function () {\n if (durationHours < 10) {\n return '0' + durationHours + ':' + ('0' + durationMinutes).slice(-2);\n }\n return durationHours + ':' + ('0' + durationMinutes).slice(-2);\n })();\n if (targetCal == 'ical' || (targetCal == 'google' && !/(GMT[+|-]\\d{1,2}|Etc\\/U|Etc\\/Zulu|CET|CST6CDT|EET|EST|EST5EDT|MET|MST|MST7MDT|PST8PDT|WET)/i.test(data.timeZone))) {\n return {\n start: atcb_format_datetime(newStartDate, 'clean', true, true),\n end: atcb_format_datetime(newEndDate, 'clean', true, true),\n duration: durationString,\n allday: false,\n };\n }\n const offsetStart = tzlib_get_offset(data.timeZone, data.startDate, data.startTime);\n const offsetEnd = tzlib_get_offset(data.timeZone, data.endDate, data.endTime);\n if (addTimeZoneOffset) {\n const formattedOffsetStart = offsetStart.slice(0, 3) + ':' + offsetStart.slice(3);\n const formattedOffsetEnd = offsetEnd.slice(0, 3) + ':' + offsetEnd.slice(3);\n return {\n start: newStartDate.toISOString().replace('.000Z', formattedOffsetStart),\n end: newEndDate.toISOString().replace('.000Z', formattedOffsetEnd),\n duration: durationString,\n allday: false,\n };\n }\n const calcOffsetStart = parseInt(offsetStart[0] + 1) * -1 * ((parseInt(offsetStart.substring(1, 3)) * 60 + parseInt(offsetStart.substring(3, 5))) * 60 * 1000);\n const calcOffsetEnd = parseInt(offsetEnd[0] + 1) * -1 * ((parseInt(offsetEnd.substring(1, 3)) * 60 + parseInt(offsetEnd.substring(3, 5))) * 60 * 1000);\n newStartDate.setTime(newStartDate.getTime() + calcOffsetStart);\n newEndDate.setTime(newEndDate.getTime() + calcOffsetEnd);\n return {\n start: atcb_format_datetime(newStartDate, style),\n end: atcb_format_datetime(newEndDate, style),\n duration: durationString,\n allday: false,\n };\n } else {\n const startDate = data.startDate.split('-');\n const endDate = data.endDate.split('-');\n const newStartDate = new Date(Date.UTC(startDate[0], startDate[1] - 1, startDate[2], 12, 0, 0));\n const newEndDate = new Date(Date.UTC(endDate[0], endDate[1] - 1, endDate[2], 12, 0, 0));\n if (targetCal === 'google' || (targetCal === 'microsoft' && !isMobile()) || targetCal === 'msteams' || targetCal === 'ical') {\n newEndDate.setDate(newEndDate.getDate() + 1);\n }\n if (targetCal === 'msteams') {\n if (isMobile()) {\n const offset = newStartDate.getTimezoneOffset();\n const formattedOffset = (function () {\n if (offset < 0) {\n return '+' + ('0' + Math.abs(offset / 60)).slice(-2) + ':' + ('0' + Math.abs(offset % 60)).slice(-2);\n } else {\n return '-' + ('0' + Math.abs(offset / 60)).slice(-2) + ':' + ('0' + Math.abs(offset % 60)).slice(-2);\n }\n })();\n return {\n start: atcb_format_datetime(newStartDate, style, false, true) + 'T00:00:00' + formattedOffset,\n end: atcb_format_datetime(newEndDate, style, false, true) + 'T00:00:00' + formattedOffset,\n allday: true,\n };\n }\n return {\n start: atcb_format_datetime(newStartDate, style, false, true) + '+00:00',\n end: atcb_format_datetime(newEndDate, style, false, true) + '+00:00',\n allday: true,\n };\n }\n return {\n start: atcb_format_datetime(newStartDate, style, false),\n end: atcb_format_datetime(newEndDate, style, false),\n allday: true,\n };\n }\n}\nfunction atcb_format_datetime(datetime, style = 'delimiters', includeTime = true, removeZ = false) {\n const regex = (function () {\n if (includeTime) {\n if (style == 'clean') {\n return /(-|:|(\\.\\d{3}))/g;\n }\n return /(\\.\\d{3})/g;\n }\n if (style == 'clean') {\n return /(-|T(\\d{2}:\\d{2}:\\d{2}\\.\\d{3})Z)/g;\n }\n return /T(\\d{2}:\\d{2}:\\d{2}\\.\\d{3})Z/g;\n })();\n const output = removeZ ? datetime.toISOString().replace(regex, '').replace('Z', '') : datetime.toISOString().replace(regex, '');\n return output;\n}\nfunction atcb_secure_content(data, isJSON = true) {\n const toClean = isJSON ? JSON.stringify(data) : data;\n const cleanedUp = toClean.replace(/(<(?!br)([^>]+)>)/gi, '');\n if (isJSON) {\n return JSON.parse(cleanedUp);\n } else {\n return cleanedUp;\n }\n}\nfunction atcb_secure_url(url, throwError = true) {\n if (url.match(/((\\.\\.\\/)|(\\.\\.\\\\)|(%2e%2e%2f)|(%252e%252e%252f)|(%2e%2e\\/)|(%252e%252e\\/)|(\\.\\.%2f)|(\\.\\.%252f)|(%2e%2e%5c)|(%252e%252e%255c)|(%2e%2e\\\\)|(%252e%252e\\\\)|(\\.\\.%5c)|(\\.\\.%255c)|(\\.\\.%c0%af)|(\\.\\.%25c0%25af)|(\\.\\.%c1%9c)|(\\.\\.%25c1%259c))/gi)) {\n if (throwError) {\n console.error('Seems like the generated URL includes at least one security issue and got blocked. Please check the calendar button parameters!');\n }\n return false;\n } else {\n return true;\n }\n}\nfunction atcb_validEmail(email) {\n if (!/^.{0,70}@.{1,30}\\.[\\w.]{2,9}$/.test(email)) {\n return false;\n }\n return true;\n}\nfunction atcb_rewrite_html_elements(content, clear = false, iCalBreaks = false) {\n if (clear) {\n content = content.replace(/\\[(|\\/)(url|hr|p|b|strong|u|i|em|li|ul|ol|h\\d)\\]|((\\|.*)\\[\\/url\\])/gi, '');\n content = content.replace(/\\{(|\\/)(url|hr|p|b|strong|u|i|em|li|ul|ol|h\\d)\\}|((\\|.*)\\{\\/url\\})/gi, '');\n if (iCalBreaks) {\n content = content.replace(/(\\[br\\]|\\{br\\})/gi, '\\\\n');\n } else {\n content = content.replace(/(\\[br\\]|\\{br\\})/gi, ' ');\n }\n content = content.replace(/&[#a-zA-Z0-9]{1,9};/gi, '');\n } else {\n content = content.replace(/\\[(\\/|)(br|hr|p|b|strong|u|i|em|li|ul|ol|h\\d)\\]/gi, '<$1$2>');\n content = content.replace(/\\{(\\/|)(br|hr|p|b|strong|u|i|em|li|ul|ol|h\\d)\\}/gi, '<$1$2>');\n content = content.replace(/\\[url\\]([\\w&$+.,:;=~!*'?@^%#|\\s\\-()/]*)\\[\\/url\\]/gi, function (match, p1) {\n return atcb_parse_url_code(p1);\n });\n content = content.replace(/\\{url\\}([\\w&$+.,:;=~!*'?@^%#|\\s\\-()/]*)\\{\\/url\\}/gi, function (match, p1) {\n return atcb_parse_url_code(p1);\n });\n }\n return content;\n}\nfunction atcb_parse_url_code(input) {\n const urlText = input.split('|');\n const text = (function () {\n if (urlText.length > 1 && urlText[1] != '') {\n return urlText[1];\n } else {\n return urlText[0];\n }\n })();\n return '' + text + '';\n}\nfunction atcb_rewrite_ical_text(content, truncate = true, inQuotes = false) {\n if (inQuotes) {\n content = content.replace(/\"/g, '');\n } else {\n content = content.replace(/\\\\/g, '\\\\\\\\').replace(/(,|;)/g, '\\\\$1').replace(/\\\\\\\\n/g, '\\\\n');\n }\n if (truncate) {\n content = content.replace(/.{60}/g, '$&' + '\\r\\n ');\n }\n return content;\n}\nfunction atcb_position_list(host, trigger, list, blockUpwards = false, blockDownwards = false) {\n let anchorSet = false;\n const originalTrigger = trigger;\n if (trigger.querySelector('.atcb-dropdown-anchor') !== null) {\n trigger = trigger.querySelector('.atcb-dropdown-anchor');\n anchorSet = true;\n }\n list.style.position = 'relative';\n list.style.display = 'inline-block';\n let triggerDim = trigger.getBoundingClientRect();\n const btnDim = originalTrigger.getBoundingClientRect();\n const btnParentDim = originalTrigger.parentNode.getBoundingClientRect();\n const viewportHeight = document.documentElement.clientHeight;\n if (anchorSet === true && !list.classList.contains('atcb-dropoverlay')) {\n let listDim = list.getBoundingClientRect();\n list.style.width = listDim.width + 'px';\n if (list.classList.contains('atcb-dropup') || (!blockUpwards && triggerDim.top + listDim.height > viewportHeight - 20 && 2 * btnDim.top + btnDim.height - triggerDim.top - listDim.height > 20) || blockDownwards) {\n originalTrigger.classList.add('atcb-dropup');\n list.classList.add('atcb-dropup');\n list.style.bottom = btnParentDim.bottom - btnDim.bottom + (triggerDim.top - btnDim.top) + 'px';\n } else {\n list.style.top = btnDim.top - btnParentDim.top + (triggerDim.top - btnDim.top) + 'px';\n if (originalTrigger.classList.contains('atcb-dropup')) {\n originalTrigger.classList.remove('atcb-dropup');\n }\n }\n triggerDim = trigger.getBoundingClientRect();\n list.style.minWidth = triggerDim.width + 'px';\n if ((list.classList.contains('atcb-dropdown') && !list.classList.contains('atcb-style-round')) || list.classList.contains('atcb-style-text') || list.classList.contains('atcb-style-neumorphism')) {\n list.style.maxWidth = triggerDim.width + 'px';\n }\n listDim = list.getBoundingClientRect();\n list.style.left = Math.round(triggerDim.left - btnParentDim.left - (listDim.width - triggerDim.width) / 2) + 'px';\n } else {\n list.style.minWidth = btnDim.width + 20 + 'px';\n const listDim = list.getBoundingClientRect();\n list.style.width = listDim.width + 'px';\n const sideMargin = Math.round((btnDim.width - listDim.width) / 4);\n list.style.margin = -Math.round((listDim.height + btnDim.height) / 2) + 'px ' + sideMargin + 'px 0 ' + sideMargin + 'px';\n }\n list.style.position = 'absolute';\n list.style.display = 'block';\n const atcbL = host.querySelector('#add-to-calendar-button-reference');\n if (atcbL) {\n if (originalTrigger.classList.contains('atcb-dropup')) {\n originalTrigger.parentNode.parentNode.after(atcbL);\n atcbL.style.padding = '5px 15px';\n atcbL.style.position = 'absolute';\n atcbL.style.left = btnDim.left + 'px';\n }\n }\n}\nfunction atcb_manage_body_scroll(host, modalObj = null) {\n const modal = (function () {\n if (modalObj != null) {\n return modalObj;\n } else {\n const allModals = host.querySelectorAll('.atcb-modal');\n if (allModals.length == 0) {\n return null;\n }\n return allModals[allModals.length - 1];\n }\n })();\n if (modal == null) {\n return;\n }\n const modalDim = modal.getBoundingClientRect();\n if (modalDim.height + 150 > window.innerHeight) {\n document.body.classList.add('atcb-modal-no-scroll');\n document.documentElement.classList.add('atcb-modal-no-scroll');\n } else {\n document.body.classList.remove('atcb-modal-no-scroll');\n document.documentElement.classList.remove('atcb-modal-no-scroll');\n }\n}\nfunction atcb_set_fullsize(el) {\n el.style.width = window.innerWidth + 'px';\n el.style.height = window.innerHeight + 100 + 'px';\n}\nfunction atcb_set_sizes(el, sizes) {\n el.style.setProperty('--base-font-size-l', sizes['l'] + 'px');\n el.style.setProperty('--base-font-size-m', sizes['m'] + 'px');\n el.style.setProperty('--base-font-size-s', sizes['s'] + 'px');\n}\nfunction atcb_generate_uuid() {\n return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, (c) => (c ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))).toString(16));\n}\nfunction atcb_copy_to_clipboard(dataString) {\n const tmpInput = document.createElement('input');\n document.body.append(tmpInput);\n const editable = tmpInput.contentEditable;\n const readOnly = tmpInput.readOnly;\n tmpInput.contentEditable = true;\n tmpInput.readOnly = false;\n tmpInput.value = dataString;\n if (isiOS()) {\n var range = document.createRange();\n range.selectNodeContents(tmpInput);\n var selection = window.getSelection();\n selection.removeAllRanges();\n selection.addRange(range);\n tmpInput.setSelectionRange(0, 999999);\n } else {\n tmpInput.select();\n }\n tmpInput.contentEditable = editable;\n tmpInput.readOnly = readOnly;\n document.execCommand('copy');\n tmpInput.remove();\n}\nfunction atcb_debounce(func, timeout = 200) {\n let timer;\n return (...args) => {\n clearTimeout(timer);\n timer = setTimeout(() => {\n func.apply(this, args);\n }, timeout);\n };\n}\nfunction atcb_debounce_leading(func, timeout = 300) {\n let timer;\n return (...args) => {\n if (!timer) {\n func.apply(this, args);\n }\n clearTimeout(timer);\n timer = setTimeout(() => {\n timer = undefined;\n }, timeout);\n };\n}\n\n\nfunction atcb_log_event(event, trigger, identifier) {\n const parentEl = (function () {\n const customTrigger = document.getElementById(identifier);\n if (customTrigger) {\n return customTrigger;\n }\n return document.querySelector('[atcb-button-id=\"' + identifier + '\"]');\n })();\n if (parentEl) {\n parentEl.setAttribute('atcb-last-event', event + ':' + trigger);\n }\n if (isBrowser()) {\n atcb_push_to_data_layer(event, trigger);\n }\n}\nfunction atcb_push_to_data_layer(event, trigger) {\n let action = '';\n switch (event) {\n case 'initialization':\n action = 'Initialized';\n break;\n case 'openList':\n action = 'Opened';\n break;\n case 'closeList':\n action = 'Closed';\n break;\n case 'openCalendarLink':\n action = 'Opened';\n break;\n case 'openSingletonLink':\n action = 'Opened';\n break;\n case 'openSubEventLink':\n action = 'Opened';\n break;\n case 'success':\n action = 'Saved';\n break;\n }\n const atcbDataLayer = (window.dataLayer = window.dataLayer || []);\n atcbDataLayer.push({\n eventCategory: 'Add-to-Calendar-Button',\n eventAction: action,\n eventLabel: trigger,\n event: event,\n });\n}\n\n\n/* How to add new languages:\n * 1. Duplicate the \"en\" block at the following \"i18nStrings\" object.\n * 2. Change the key to the ISO 639-1 code of your language (https://www.w3schools.com/tags/ref_language_codes.asp).\n * 3. Translate the labels.\n * 4. Add the language to the \"rtlLanguages\" array below, if it write from right to left.\n * 4. Update the \"language\" part at the configuration page of the demo page - add the new lagnuages to the \"Options\" info (/demo/pages/configuration.vue).\n * 5. Also update the language.ts file at the demo page, so the language appears at the demo playground (/demo/src/components/models/language.ts).\n */\nconst rtlLanguages = ['ar', 'fa'];\nconst i18nStrings = {\n en: {\n 'label.addtocalendar': 'Add to Calendar',\n 'label.icalfile': 'iCal File',\n close: 'Close',\n 'modal.button.default': 'Click me',\n 'modal.webview.ical.h': 'Open your browser',\n 'modal.webview.ical.text': 'Unfortunately, in-app browsers have problems with the way we generate the calendar file.',\n 'modal.clipboard.text': 'We automatically copied a magical URL into your clipboard.',\n 'modal.webview.ical.steps': '
  1. Open another browser on your phone, ...
  2. Paste the clipboard content and go.
',\n 'modal.opensafari.ical.h': 'Open Safari',\n 'modal.opensafari.ical.text': 'Unfortunately, iOS has some problems generating and opening the calendar file outside of Safari.',\n 'modal.opensafari.ical.steps': '
  1. Open Safari, ...
  2. Paste the clipboard content and go.
',\n 'modal.multidate.h': 'This is an event series',\n 'modal.multidate.text': 'Add the individual events one by one:',\n 'date.status.cancelled': 'This date got cancelled.',\n 'date.status.cancelled.cta': 'Please update your calendar!',\n 'modal.subscribe.yahoo.h': 'Add Calendar to Yahoo',\n 'modal.subscribe.yahoo.text': '
  1. Open now the Yahoo Calendar.
  2. Click the \"Actions\" tab.
  3. Hit \"Follow Other Calendars\".
  4. Set a name and paste the clipboard content into the url field.
',\n cancel: 'Cancel',\n expired: 'Expired',\n recurring: 'Recurring',\n },\n de: {\n 'label.addtocalendar': 'Im Kalender speichern',\n 'label.icalfile': 'iCal-Datei',\n close: 'Schließen',\n 'modal.button.default': 'Klick mich',\n 'modal.webview.ical.h': 'Öffne deinen Browser',\n 'modal.webview.ical.text': 'Leider haben In-App-Browser Probleme mit der Art, wie wir Kalender-Dateien erzeugen.',\n 'modal.clipboard.text': 'Wir haben automatisch eine magische URL in deine Zwischenablage kopiert.',\n 'modal.webview.ical.steps': '
  1. Öffne einen anderen Browser auf deinem Smartphone, ...
  2. Nutze die Einfügen-Funktion, um fortzufahren.
',\n 'modal.opensafari.ical.h': 'Öffne Safari',\n 'modal.opensafari.ical.text': 'Leider hat iOS einige Probleme beim Generieren und Öffnen der Kalenderdatei außerhalb von Safari.',\n 'modal.opensafari.ical.steps': '
  1. Öffne Safari, ...
  2. Nutze die Einfügen-Funktion, um fortzufahren.
',\n 'modal.multidate.h': 'Dies ist eine Termin-Reihe',\n 'modal.multidate.text': 'Füge die einzelnen Termine der Reihe nach deinem Kalender hinzu:',\n 'date.status.cancelled': 'Dieser Termin wurde abgesagt.',\n 'date.status.cancelled.cta': 'Bitte aktualisiere deinen Kalender!',\n 'modal.subscribe.yahoo.h': 'Kalender zu Yahoo hinzufügen',\n 'modal.subscribe.yahoo.text': '
  1. Öffne den Yahoo Kalender.
  2. Klicke auf den \"Aktionen\" Tab.
  3. Wähle \"Weiteren Kalendern folgen\".
  4. Wähle einen Namen und füge die URL aus deiner Zwischenablage in das URL-Feld ein.
',\n cancel: 'Abbrechen',\n expired: 'Abgelaufen',\n recurring: 'Wiederkehrend',\n },\n es: {\n 'label.addtocalendar': 'Añadir al Calendario',\n 'label.icalfile': 'iCal Ficha',\n close: 'Ciérralo',\n 'modal.button.default': 'Haz clic mí',\n 'modal.webview.ical.h': 'Abra su browser',\n 'modal.webview.ical.text': 'Lamentablemente, los browsers in-app tienen problemas con la forma en que generamos el archivo del calendario.',\n 'modal.clipboard.text': 'Hemos copiado automáticamente una URL mágica en su portapapeles.',\n 'modal.webview.ical.steps': '
  1. Abre otro browser en tu smartphone, ...
  2. Utilice la función de pegar para continuar.
',\n 'modal.opensafari.ical.h': 'Abrir Safari',\n 'modal.opensafari.ical.text': 'Desafortunadamente, iOS tiene algunos problemas para generar y abrir el archivo de calendario fuera de Safari.',\n 'modal.opensafari.ical.steps': '
  1. Abrir Safari, ...
  2. Utilice la función de pegar para continuar.
',\n 'modal.multidate.h': 'Esta es una serie de fechas',\n 'modal.multidate.text': 'Añada las fechas individuales a su calendario en orden:',\n 'date.status.cancelled': 'Esta fecha fue cancelada.',\n 'date.status.cancelled.cta': 'Actualice su calendario!',\n 'modal.subscribe.yahoo.h': 'Añadir calendario a Yahoo',\n 'modal.subscribe.yahoo.text': '
  1. Abra el calendario de Yahoo.
  2. Haga clic en la pestaña \"Acciones\".
  3. Seleccione \"Seguir otros calendarios\".
  4. Elige un nombre y pega la URL de tu portapapeles en el campo URL.
',\n cancel: 'Cancelar',\n expired: 'Caducada',\n recurring: 'Periódica',\n },\n pt: {\n 'label.addtocalendar': 'Incluir no Calendário',\n 'label.icalfile': 'Ficheiro iCal',\n close: 'Fechar',\n 'modal.button.default': 'Clicar-me',\n 'modal.webview.ical.h': 'Abra o seu browser',\n 'modal.webview.ical.text': 'Infelizmente, os navegadores em tampas têm problemas com a forma como geramos o ficheiro de calendário.',\n 'modal.clipboard.text': 'Copiámos automaticamente um URL mágico para a sua área de transferência.',\n 'modal.webview.ical.steps': '
  1. Abrir outro browser en tu smartphone, ...
  2. Use a função colar para continuar.
',\n 'modal.opensafari.ical.h': 'Safari aberto',\n 'modal.opensafari.ical.text': 'Infelizmente, o iOS tem alguns problemas para gerar e abrir o arquivo de calendário fora do Safari.',\n 'modal.opensafari.ical.steps': '
  1. Safari aberto, ...
  2. Use a função colar para continuar.
',\n 'modal.multidate.h': 'Esta é uma série de datas',\n 'modal.multidate.text': 'Adicione as datas individuais ao seu calendário, por ordem:',\n 'date.status.cancelled': 'Esta data foi cancelada.',\n 'date.status.cancelled.cta': 'Actualize o seu calendário!',\n 'modal.subscribe.yahoo.h': 'Adicionar calendário ao Yahoo',\n 'modal.subscribe.yahoo.text': '
  1. Abrir o calendário do Yahoo.
  2. Clique no separador \"Acções\".
  3. Seleccione \"Seguir outros calendários\".
  4. Escolha um nome e cole o URL da sua área de transferência no campo URL.
',\n cancel: 'Cancelar',\n expired: 'Expirada',\n recurring: 'Recorrente',\n },\n fr: {\n 'label.addtocalendar': \"Ajouter à l'Agenda\",\n 'label.icalfile': 'Fichier iCal',\n close: 'Fermer',\n 'modal.button.default': 'Cliquez-moi',\n 'modal.webview.ical.h': 'Ouvrez votre navigateur',\n 'modal.webview.ical.text': \"Malheureusement, les navigateurs in-app ont des problèmes avec la manière dont nous créons les fichiers d'agenda.\",\n 'modal.clipboard.text': 'Nous avons automatiquement copié une URL magique dans votre presse-papiers.',\n 'modal.webview.ical.steps': '
  1. Ouvrez un autre navigateur sur votre smartphone, ...
  2. Collez le contenu du presser-papier et continuez.
',\n 'modal.opensafari.ical.h': 'Ouvrir Safari',\n 'modal.opensafari.ical.text': 'Malheureusement, iOS rencontre des problèmes pour générer et ouvrir le fichier de calendrier en dehors de Safari.',\n 'modal.opensafari.ical.steps': '
  1. Ouvrez Safari, ...
  2. Collez le contenu du presse-papier et continuez.
',\n 'modal.multidate.h': 'Ceci est un évènement récurrent',\n 'modal.multidate.text': 'Ajouter les différents évènements un par un:',\n 'date.status.cancelled': 'Cette date est annulée.',\n 'date.status.cancelled.cta': 'Actualisez votre agenda!',\n 'modal.subscribe.yahoo.h': 'Ajouter un agenda à Yahoo',\n 'modal.subscribe.yahoo.text': '
  1. Ouvrez l\\'Agenda Yahoo.
  2. Cliquez sur l\\'onglet \"Actions\".
  3. Sélectionnez \"Suivre d\\'autres agendas\".
  4. Choisissez un nom et collez le contenu de votre presse-papiers dans le champ URL.
',\n cancel: 'Annuler',\n expired: 'Expiré',\n recurring: 'Récurrente',\n },\n nl: {\n 'label.addtocalendar': 'Opslaan in Agenda',\n 'label.icalfile': 'iCal File',\n close: 'Sluiten',\n 'modal.button.default': 'Klik me',\n 'modal.webview.ical.h': 'Open uw browser',\n 'modal.webview.ical.text': 'Helaas hebben in-app browsers problemen met de manier waarop wij kalenderbestanden maken.',\n 'modal.clipboard.text': 'We hebben automatisch een magische URL naar je klembord gekopieerd.',\n 'modal.webview.ical.steps': '
  1. Open een andere browser op uw smartphone, ...
  2. Gebruik de insert functie om verder te gaan.
',\n 'modal.opensafari.ical.h': 'Open Safari',\n 'modal.opensafari.ical.text': 'Helaas heeft iOS enkele problemen met het genereren en openen van het agendabestand buiten Safari.',\n 'modal.opensafari.ical.steps': '
  1. Open Safari, ...
  2. Gebruik de insert functie om verder te gaan.
',\n 'modal.multidate.h': 'Dit is een reeks data',\n 'modal.multidate.text': 'Voeg de afzonderlijke delen één voor één toe:',\n 'date.status.cancelled': 'Deze datum is geannuleerd.',\n 'date.status.cancelled.cta': 'Uw agenda bijwerken!',\n 'modal.subscribe.yahoo.h': 'Toevoegen aan Yahoo',\n 'modal.subscribe.yahoo.text': '
  1. Open de Yahoo calendar.
  2. Klik op de \"Acties\" tab.
  3. Selecteer \"Volg Andere Agenda\\'s\".
  4. Kies een naam en plak de URL van uw klembord in het URL-veld.
',\n cancel: 'Annuleren',\n expired: 'Verlopen',\n recurring: 'Terugkerend',\n },\n tr: {\n 'label.addtocalendar': 'Takvime Ekle',\n 'label.icalfile': 'iCal Dosyası',\n close: 'Kapat',\n 'modal.button.default': 'Beni tıklayın',\n 'modal.webview.ical.h': 'Tarayıcınızı açın',\n 'modal.webview.ical.text': 'Ne yazık ki, uygulama içi tarayıcılar takvim dosyalarını oluşturma şeklimizle ilgili sorunlar yaşıyor.',\n 'modal.clipboard.text': 'Panonuza otomatik olarak sihirli bir URL kopyaladık.',\n 'modal.webview.ical.steps': '
  1. Akıllı telefonunuzda başka bir tarayıcı açın, ...
  2. Devam etmek için insert fonksiyonunu kullanın.
',\n 'modal.opensafari.ical.h': 'Açık Safari',\n 'modal.opensafari.ical.text': 'Ne yazık ki iOS, takvim dosyasını Safari dışında oluştururken ve açarken bazı sorunlar yaşıyor.',\n 'modal.opensafari.ical.steps': '
  1. Açık Safari, ...
  2. Devam etmek için insert fonksiyonunu kullanın.
',\n 'modal.multidate.h': 'Bu bir etkinlik serisidir',\n 'modal.multidate.text': 'Parçaları teker teker ekleyin:',\n 'date.status.cancelled': 'Bu tarih iptal edildi.',\n 'date.status.cancelled.cta': 'Lütfen takviminizi güncelleyin!',\n 'modal.subscribe.yahoo.h': \"Yahoo'ya takvim ekleme\",\n 'modal.subscribe.yahoo.text': '
  1. Yahoo takvimini açın.
  2. \"Eylemler\" sekmesine tıklayın.
  3. \"Diğer Takvimleri Takip Et\" öğesini seçin.
  4. Bir ad seçin ve URL\\'yi panonuzdan URL alanına yapıştırın.
',\n cancel: 'İptal',\n expired: 'Günü geçmiş',\n recurring: 'Yinelenen',\n },\n zh: {\n 'label.addtocalendar': '添加到日历',\n 'label.icalfile': 'iCal 文件',\n close: '关',\n 'modal.button.default': '点我',\n 'modal.webview.ical.h': '打开浏览器',\n 'modal.webview.ical.text': '不幸的是,应用内浏览器在我们生成日历文件的方式上存在问题。',\n 'modal.clipboard.text': '我们自动将魔术 URL 复制到您的剪贴板。',\n 'modal.webview.ical.steps': '
  1. 打开手机上的任何其他浏览器, ...
  2. 粘贴剪贴板内容并开始。
',\n 'modal.opensafari.ical.h': '打开 Safari',\n 'modal.opensafari.ical.text': '不幸的是,iOS 在 Safari 之外生成和打开日历文件时遇到一些问题。',\n 'modal.opensafari.ical.steps': '
  1. 打开 Safari, ...
  2. 粘贴剪贴板内容并开始。
',\n 'modal.multidate.h': '这是一个活动系列',\n 'modal.multidate.text': '逐个添加各个部分:',\n 'date.status.cancelled': '此日期已取消。',\n 'date.status.cancelled.cta': '请更新您的日历!',\n 'modal.subscribe.yahoo.h': '将日历添加到 Yahoo',\n 'modal.subscribe.yahoo.text': '
  1. 打开 Yahoo 日历。
  2. 点击“操作”标签。
  3. 选择“关注其他日历”。
  4. 选择一个名称并将剪贴板中的 URL 粘贴到 URL 字段中。
',\n cancel: '中止',\n expired: '已到期',\n recurring: '再次发生的',\n },\n ar: {\n 'label.addtocalendar': 'إضافة إلى التقويم',\n 'label.icalfile': 'ملف iCal',\n close: 'قريب',\n 'modal.button.default': 'انقر فوق لي',\n 'modal.webview.ical.h': 'افتح المستعرض الخاص بك',\n 'modal.webview.ical.text': 'لسوء الحظ ، تواجه المتصفحات داخل التطبيق مشاكل في طريقة إنشاء ملف التقويم.',\n 'modal.clipboard.text': 'قمنا تلقائيًا بنسخ عنوان URL سحري إلى الحافظة الخاصة بك.',\n 'modal.webview.ical.steps': '
  1. افتح أي متصفح آخر على هاتفك الذكي, ...
  2. .الصق محتوى الحافظة واذهب
',\n 'modal.opensafari.ical.h': 'افتح Safari',\n 'modal.opensafari.ical.text': 'لسوء الحظ ، يواجه iOS بعض المشكلات في إنشاء ملف التقويم وفتحه خارج Safari.',\n 'modal.opensafari.ical.steps': '
  1. افتح Safari, ...
  2. الصق محتوى الحافظة واذهب.
',\n 'modal.multidate.h': 'هذه سلسلة أحداث',\n 'modal.multidate.text': 'أضف الأجزاء الفردية واحدة تلو الأخرى:',\n 'date.status.cancelled': 'تم إلغاء هذا التاريخ.',\n 'date.status.cancelled.cta': 'الرجاء تحديث التقويم الخاص بك!',\n 'modal.subscribe.yahoo.h': 'أضف التقويم إلى Yahoo',\n 'modal.subscribe.yahoo.text': '
  1. افتح تقويم Yahoo.
  2. انقر فوق علامة التبويب \"الإجراءات\".
  3. حدد \"متابعة تقويمات أخرى\".
  4. اختر اسمًا والصق عنوان URL من الحافظة الخاصة بك في حقل URL.
',\n cancel: 'إحباط',\n expired: 'منتهي الصلاحية',\n recurring: 'يتكرر',\n },\n hi: {\n 'label.addtocalendar': 'कैलेंडर में जोड़ें',\n 'label.icalfile': 'iCal फ़ाइल',\n close: 'बंद करना',\n 'modal.button.default': 'मुझे क्लिक करें',\n 'modal.webview.ical.h': 'अपना ब्राउज़र खोलें',\n 'modal.webview.ical.text': 'दुर्भाग्य से, इन-ऐप ब्राउज़र में कैलेंडर फ़ाइल बनाने के तरीके में समस्याएँ हैं।',\n 'modal.clipboard.text': 'हमने आपके क्लिपबोर्ड पर स्वचालित रूप से एक जादुई URL कॉपी कर लिया है।',\n 'modal.webview.ical.steps': '
  1. अपने फ़ोन पर दूसरा ब्राउज़र खोलें, ...
  2. क्लिपबोर्ड सामग्री चिपकाएं और जाएं।
',\n 'modal.opensafari.ical.h': 'सफारी खोलें',\n 'modal.opensafari.ical.text': 'दुर्भाग्य से, iOS में सफ़ारी के बाहर कैलेंडर फ़ाइल बनाने और खोलने में कुछ समस्याएँ हैं।',\n 'modal.opensafari.ical.steps': '
  1. सफारी खोलें, ...
  2. क्लिपबोर्ड सामग्री चिपकाएं और जाएं।
',\n 'modal.multidate.h': 'यह एक इवेंट सीरीज़ है',\n 'modal.multidate.text': 'अलग-अलग हिस्सों को एक-एक करके जोड़ें:',\n 'date.status.cancelled': 'यह तिथि रद्द हो गई।',\n 'date.status.cancelled.cta': 'कृपया अपना कैलेंडर अपडेट करें!',\n 'modal.subscribe.yahoo.h': 'Yahoo . में कैलेंडर जोड़ें',\n 'modal.subscribe.yahoo.text': '
  1. Yahoo कैलेंडर खोलें।
  2. \"कृती\" टैब पर क्लिक करें।
  3. \"इतर कॅलेंडर्सचे अनुसरण करा\" चुनें।
  4. एक नाम चुनें और अपने क्लिपबोर्ड से URL को URL फ़ील्ड में पेस्ट करें।
',\n cancel: 'रद्द करना',\n expired: 'खत्म हो चुका',\n recurring: 'पुनरावर्ती',\n },\n pl: {\n 'label.addtocalendar': 'Dodaj do kalendarza',\n 'label.icalfile': 'Plik iCal',\n close: 'Zamknij',\n 'modal.button.default': 'Kliknij mnie',\n 'modal.webview.ical.h': 'Otwórz przeglądarkę',\n 'modal.webview.ical.text': 'Niestety, przeglądarki in-app mają problemy ze sposobem, w jaki generujemy plik kalendarza.',\n 'modal.clipboard.text': 'Automatycznie skopiowaliśmy magiczny adres URL do schowka.',\n 'modal.webview.ical.steps': '
  1. Otwórz inną przeglądarkę w swoim telefonie, ...
  2. Wklej zawartość schowka i ruszaj.
',\n 'modal.opensafari.ical.h': 'Otwórz Safari',\n 'modal.opensafari.ical.text': 'Niestety iOS ma pewne problemy z generowaniem i otwieraniem pliku kalendarza poza Safari.',\n 'modal.opensafari.ical.steps': '
  1. Otwórz Safari, ...
  2. Wklej zawartość schowka i ruszaj.
',\n 'modal.multidate.h': 'To jest cykl imprez',\n 'modal.multidate.text': 'Dodawać po kolei poszczególne części:',\n 'date.status.cancelled': 'Ta data została odwołana.',\n 'date.status.cancelled.cta': 'Zaktualizuj swój kalendarz!',\n 'modal.subscribe.yahoo.h': 'Dodaj kalendarz do Yahoo',\n 'modal.subscribe.yahoo.text': '
  1. Otwórz kalendarz Yahoo.
  2. Kliknij na zakładkę \"Czynności\".
  3. Wybierz \"Obserwuj inne kalendarze\".
  4. Wybierz nazwę i wklej adres URL ze schowka w polu URL.
',\n cancel: 'Anuluj',\n expired: 'Wygasły',\n recurring: 'Powtarzający się',\n },\n id: {\n 'label.addtocalendar': 'Tambahkan ke Kalender',\n 'label.icalfile': 'File iCal',\n close: 'Tutup',\n 'modal.button.default': 'Klik saya',\n 'modal.webview.ical.h': 'Buka browser Anda',\n 'modal.webview.ical.text': 'Sayangnya, browser dalam aplikasi memiliki masalah dengan cara kami menghasilkan file kalender.',\n 'modal.clipboard.text': 'Kami telah secara otomatis menyalin URL ajaib ke clipboard Anda.',\n 'modal.webview.ical.steps': '
  1. Buka peramban lain pada ponsel Anda, ...
  2. Tempelkan konten clipboard dan pergi.
',\n 'modal.opensafari.ical.h': 'Buka Safari',\n 'modal.opensafari.ical.text': 'Sayangnya, iOS memiliki beberapa masalah dalam membuat dan membuka file kalender di luar Safari.',\n 'modal.opensafari.ical.steps': '
  1. Buka Safari, ...
  2. Tempelkan konten clipboard dan pergi.
',\n 'modal.multidate.h': 'Ini adalah rangkaian acara',\n 'modal.multidate.text': 'Tambahkan masing-masing bagian satu per satu:',\n 'date.status.cancelled': 'Tanggal ini dibatalkan.',\n 'date.status.cancelled.cta': 'Perbarui kalender Anda!',\n 'modal.subscribe.yahoo.h': 'Tambahkan kalender ke Yahoo',\n 'modal.subscribe.yahoo.text': '
  1. Buka kalender Yahoo.
  2. Klik pada tab \"Tindakan\".
  3. Pilih \"Ikuti Kalender Lain\".
  4. Pilih nama dan tempelkan URL dari clipboard Anda ke bidang URL.
',\n cancel: 'Batal',\n expired: 'Kedaluwarsa',\n recurring: 'Berulang',\n },\n no: {\n 'label.addtocalendar': 'Legg til i kalenderen',\n 'label.icalfile': 'iCal-fil',\n close: 'Lukk',\n 'modal.button.default': 'Klikk på meg',\n 'modal.webview.ical.h': 'Åpne nettleseren din',\n 'modal.webview.ical.text': 'Dessverre har nettlesere i appen problemer med måten vi genererer kalenderfilen på.',\n 'modal.clipboard.text': 'Vi kopierte automatisk en magisk URL til utklippstavlen din.',\n 'modal.webview.ical.steps': '
  1. Åpne en annen nettleser på telefonen, ...
  2. Lim inn innholdet på utklippstavlen og gå.
',\n 'modal.opensafari.ical.h': 'Åpne Safari',\n 'modal.opensafari.ical.text': 'Dessverre har iOS noen problemer med å generere og åpne kalenderfilen utenfor Safari.',\n 'modal.opensafari.ical.steps': '
  1. Åpne Safari, ...
  2. Lim inn innholdet på utklippstavlen og gå.
',\n 'modal.multidate.h': 'Dette er en avtaleserie',\n 'modal.multidate.text': 'Legg til de enkelte datoene i kalenderen din i rekkefølge:',\n 'date.status.cancelled': 'Denne datoen ble avlyst.',\n 'date.status.cancelled.cta': 'Oppdater kalenderen din!',\n 'modal.subscribe.yahoo.h': 'Legg til kalender til Yahoo',\n 'modal.subscribe.yahoo.text': '
  1. Åpne Yahoo-kalenderen.
  2. Klikk på «Handlinger»-fanen.
  3. Velg «Følg andre kalendere».
  4. Velg et navn og lim inn URL-en fra utklippstavlen i URL-feltet.
',\n cancel: 'Avbryt',\n expired: 'Utløpt',\n recurring: 'Tilbakevendende',\n },\n fi: {\n 'label.addtocalendar': 'Lisää kalenteriin',\n 'label.icalfile': 'iCal-tiedosto',\n close: 'Sulje',\n 'modal.button.default': 'Klikkaa minua',\n 'modal.webview.ical.h': 'Avaa selain',\n 'modal.webview.ical.text': 'Valitettavasti sovelluksen sisäisillä selaimilla on ongelmia kalenteritiedoston luomisessa.',\n 'modal.clipboard.text': 'Olemme automaattisesti kopioineet maagisen URL-osoitteen leikepöydällesi.',\n 'modal.webview.ical.steps': '
  1. Avaa toinen selain puhelimessasi., ...
  2. liitä leikepöydän sisältö ja lähde.
',\n 'modal.opensafari.ical.h': 'Avaa Safari',\n 'modal.opensafari.ical.text': 'Valitettavasti iOS:llä on ongelmia kalenteritiedoston luomisessa ja avaamisessa Safarin ulkopuolella.',\n 'modal.opensafari.ical.steps': '
  1. Avaa Safari, ...
  2. liitä leikepöydän sisältö ja lähde.
',\n 'modal.multidate.h': 'Tämä on tapahtumasarja',\n 'modal.multidate.text': 'Lisää yksittäiset osat yksi kerrallaan:',\n 'date.status.cancelled': 'Tämä päivämäärä peruttiin.',\n 'date.status.cancelled.cta': 'Päivitä kalenterisi!',\n 'modal.subscribe.yahoo.h': 'Lisää kalenteri Yahoo',\n 'modal.subscribe.yahoo.text': '
  1. Avaa Yahoo-kalenteri.
  2. Napsauta \"Toiminnot\"-välilehteä.
  3. Valitse \"Seuraa muiden kalentereita\".
  4. Valitse nimi ja liitä URL-osoite leikepöydältäsi URL-kenttään.
',\n cancel: 'Peruuta',\n expired: 'Vanhentunut',\n recurring: 'Toistuva',\n },\n sv: {\n 'label.addtocalendar': 'Lägg till i kalender',\n 'label.icalfile': 'iCal-fil',\n close: 'Stäng',\n 'modal.button.default': 'Klicka på mig',\n 'modal.webview.ical.h': 'Öppna din webbläsare',\n 'modal.webview.ical.text': 'Tyvärr har webbläsare i appen problem med hur vi genererar kalenderfilen.',\n 'modal.clipboard.text': 'Vi har automatiskt kopierat en magisk URL till ditt klippblock.',\n 'modal.webview.ical.steps': '
  1. Öppna en annan webbläsare på telefonen, ...
  2. Insätt innehållet i klippbordet och kör.
',\n 'modal.opensafari.ical.h': 'Öppna Safari',\n 'modal.opensafari.ical.text': 'Tyvärr har iOS vissa problem med att generera och öppna kalenderfilen utanför Safari.',\n 'modal.opensafari.ical.steps': '
  1. Öppna Safari, ...
  2. Insätt innehållet i klippbordet och kör.
',\n 'modal.multidate.h': 'Detta är en evenemangsserie',\n 'modal.multidate.text': 'Lägg till de enskilda delarna en efter en:',\n 'date.status.cancelled': 'Detta datum har ställts in.',\n 'date.status.cancelled.cta': 'Uppdatera din kalender!',\n 'modal.subscribe.yahoo.h': 'Lägg till kalender i Yahoo',\n 'modal.subscribe.yahoo.text': '
  1. Öppna Yahoo-kalendern.
  2. Klicka på fliken \"Åtgärder\".
  3. Välj \"Följ andra kalendrar\".
  4. Välj ett namn och klistra in URL:en från klippbordet i URL-fältet.
',\n cancel: 'Avbryt',\n expired: 'Utgånget',\n recurring: 'Återkommande',\n },\n cs: {\n 'label.addtocalendar': 'Přidat do kalendáře',\n 'label.icalfile': 'Soubor iCal',\n close: 'Zavřít',\n 'modal.button.default': 'Klikněte na mě',\n 'modal.webview.ical.h': 'Otevřete prohlížeč',\n 'modal.webview.ical.text': 'Prohlížeče v aplikacích mají bohužel problémy se způsobem generování souboru kalendáře.',\n 'modal.clipboard.text': 'Do schránky jsme automaticky zkopírovali kouzelnou adresu URL.',\n 'modal.webview.ical.steps': '
  1. Otevření jiného prohlížeče v telefonu, ...
  2. Vložte obsah schránky a přejděte.
',\n 'modal.opensafari.ical.h': 'Otevřít Safari',\n 'modal.opensafari.ical.text': 'Bohužel má iOS nějaké problémy s generováním a otevíráním souboru kalendáře mimo Safari.',\n 'modal.opensafari.ical.steps': '
  1. Otevřít Safari, ...
  2. Vložte obsah schránky a přejděte.
',\n 'modal.multidate.h': 'Jedná se o sérii událostí',\n 'modal.multidate.text': 'Přidávejte jednotlivé díly jeden po druhém:',\n 'date.status.cancelled': 'Toto datum bylo zrušeno.',\n 'date.status.cancelled.cta': 'Aktualizujte svůj kalendář!',\n 'modal.subscribe.yahoo.h': 'Přidat kalendář do Yahoo',\n 'modal.subscribe.yahoo.text': '
  1. Otevřete kalendář Yahoo.
  2. Klikněte na kartu \"Akce\".
  3. Vyberte možnost \"Sledovat další kalendáře\".
  4. Vyberte název a vložte adresu URL ze schránky do pole URL.
',\n cancel: 'Storno',\n expired: 'Platnost vypršela',\n recurring: 'Opakující se',\n },\n ja: {\n 'label.addtocalendar': 'カレンダーに追加',\n 'label.icalfile': 'iCalファイル',\n close: '閉じる',\n 'modal.button.default': 'クリックしてください',\n 'modal.webview.ical.h': 'ブラウザを起動する',\n 'modal.webview.ical.text': '残念ながら、アプリ内ブラウザは、カレンダーファイルの生成方法に問題があります。',\n 'modal.clipboard.text': '魔法のURLを自動的にクリップボードにコピーしています。',\n 'modal.webview.ical.steps': '
  1. スマートフォンで別のブラウザを起動する, ...
  2. クリップボードの内容を貼り付けて行く。
',\n 'modal.opensafari.ical.h': 'オープンSafari',\n 'modal.opensafari.ical.text': '残念ながら、iOS では、Safari の外でカレンダー ファイルを生成したり開いたりする際にいくつかの問題があります。',\n 'modal.opensafari.ical.steps': '
  1. オープンSafari, ...
  2. クリップボードの内容を貼り付けて行く。
',\n 'modal.multidate.h': 'イベントシリーズです',\n 'modal.multidate.text': '個々のパーツを一つずつ追加していく:',\n 'date.status.cancelled': 'この日はキャンセルになりました。',\n 'date.status.cancelled.cta': 'カレンダーを更新する!',\n 'modal.subscribe.yahoo.h': 'Yahooにカレンダーを追加する',\n 'modal.subscribe.yahoo.text': '
  1. Yahooカレンダーを開く。
  2. [実行] タブをクリックします。
  3. [その他のカレンダーのフォロー] を選択します。
  4. 名前を決めて、クリップボードにあるURLをURL欄に貼り付けます。
',\n cancel: 'キャンセル',\n expired: '期限切れ',\n recurring: '繰り返し',\n },\n it: {\n 'label.addtocalendar': 'Aggiungi al calendario',\n 'label.icalfile': 'File iCal',\n close: 'Chiudere',\n 'modal.button.default': 'Clicca su di me',\n 'modal.webview.ical.h': 'Aprire il browser',\n 'modal.webview.ical.text': 'Purtroppo i browser in-app hanno problemi con il modo in cui generiamo il file del calendario.',\n 'modal.clipboard.text': 'Abbiamo copiato automaticamente un URL magico negli appunti.',\n 'modal.webview.ical.steps': '
  1. Aprire un altro browser sul cellulare, ...
  2. Incollare il contenuto degli appunti e partire.
',\n 'modal.opensafari.ical.h': 'Aprire Safari',\n 'modal.opensafari.ical.text': \"Sfortunatamente, iOS ha alcuni problemi nella generazione e nell'apertura del file del calendario al di fuori di Safari.\",\n 'modal.opensafari.ical.steps': '
  1. Aprire Safari, ...
  2. Incollare il contenuto degli appunti e partire.
',\n 'modal.multidate.h': 'Questa è una serie di eventi',\n 'modal.multidate.text': 'Aggiungere le singole parti una per una:',\n 'date.status.cancelled': 'La data è stata annullata.',\n 'date.status.cancelled.cta': 'Aggiornare il calendario!',\n 'modal.subscribe.yahoo.h': 'Aggiungi il calendario a Yahoo',\n 'modal.subscribe.yahoo.text': '
  1. Aprire il calendario di Yahoo.
  2. Fare clic sulla scheda \"Azioni\".
  3. Selezionare \"Segui altri calendari\".
  4. Scegliere un nome e incollare l\\'URL dagli appunti nel campo URL.
',\n cancel: 'Annulla',\n expired: 'Scaduta',\n recurring: 'Ricorrente',\n },\n ko: {\n 'label.addtocalendar': '캘린더에 추가',\n 'label.icalfile': 'iCal 파일',\n close: '닫다',\n 'modal.button.default': '클릭 해주세요',\n 'modal.webview.ical.h': '브라우저 열기',\n 'modal.webview.ical.text': '불행히도 인앱 브라우저는 캘린더 파일을 생성하는 방식에 문제가 있습니다.',\n 'modal.clipboard.text': '매직 URL을 클립보드에 자동으로 복사했습니다.',\n 'modal.webview.ical.steps': '
  1. 휴대전화에서 다른 브라우저 열기, ...
  2. 클립보드 내용을 붙여넣고 이동합니다.
',\n 'modal.opensafari.ical.h': 'Safari 열기',\n 'modal.opensafari.ical.text': '안타깝게도 iOS에는 Safari 외부에서 캘린더 파일을 생성하고 여는 데 몇 가지 문제가 있습니다.',\n 'modal.opensafari.ical.steps': '
  1. Safari 열기, ...
  2. 클립보드 내용을 붙여넣고 이동합니다.
',\n 'modal.multidate.h': '이벤트 시리즈입니다',\n 'modal.multidate.text': '개별 부품을 하나씩 추가:',\n 'date.status.cancelled': '이 날짜는 취소되었습니다.',\n 'date.status.cancelled.cta': '캘린더를 업데이트하세요!',\n 'modal.subscribe.yahoo.h': 'Yahoo에 캘린더 추가',\n 'modal.subscribe.yahoo.text': '
  1. Yahoo 캘린더를 엽니다.
  2. \"동작\" 탭을 클릭합니다.
  3. \"다른 일정관리 팔로우\"를 선택합니다.
  4. 이름을 선택하고 클립보드의 URL을 URL 필드에 붙여넣습니다.
',\n cancel: '취소',\n expired: '만료됨',\n recurring: '되풀이',\n },\n vi: {\n 'label.addtocalendar': 'Thêm vào Lịch',\n 'label.icalfile': 'Tệp iCal',\n close: 'Đóng',\n 'modal.button.default': 'Nhấp vào đây',\n 'modal.webview.ical.h': 'Mở trình duyệt của bạn',\n 'modal.webview.ical.text': 'Rất tiếc, các trình duyệt trong ứng dụng gặp sự cố với cách chúng tôi tạo tệp lịch.',\n 'modal.clipboard.text': 'Chúng tôi đã tự động sao chép một URL ma thuật vào khay nhớ tạm của bạn.',\n 'modal.webview.ical.steps': '
  1. Mở trình duyệt khác trên điện thoại của bạn, ...
  2. Dán nội dung khay nhớ tạm và bắt đầu.
',\n 'modal.opensafari.ical.h': 'Mở Safari',\n 'modal.opensafari.ical.text': 'Rất tiếc, iOS gặp một số sự cố khi tạo và mở tệp lịch bên ngoài Safari.',\n 'modal.opensafari.ical.steps': '
  1. Mở Safari, ...
  2. Dán nội dung khay nhớ tạm và bắt đầu.
',\n 'modal.multidate.h': 'Đây là một chuỗi sự kiện',\n 'modal.multidate.text': 'Thêm từng phần riêng lẻ một:',\n 'date.status.cancelled': 'Ngày này đã bị hủy.',\n 'date.status.cancelled.cta': 'Cập nhật lịch của bạn!',\n 'modal.subscribe.yahoo.h': 'Thêm lịch vào Yahoo',\n 'modal.subscribe.yahoo.text': '
  1. Mở Lịch Yahoo.
  2. Nhấp vào tab \"Hành động\".
  3. Chọn \"Theo dõi các Lịch khác\".
  4. Chọn tên và dán URL từ khay nhớ tạm của bạn vào trường URL.
',\n cancel: 'Hủy bỏ',\n expired: 'Hết hạn',\n recurring: 'Định kỳ',\n },\n ro: {\n 'label.addtocalendar': 'Adauga In Calendar',\n 'label.icalfile': 'Fisier iCal',\n close: 'Inchide',\n 'modal.button.default': 'Apasa-ma',\n 'modal.webview.ical.h': 'Deschide browserul',\n 'modal.webview.ical.text': 'Din pacate, browserele din aplicatie au probleme cu generarea de fisiere pentru calendar.',\n 'modal.clipboard.text': 'Ti-am copiat automat un URL magic in clipboard',\n 'modal.webview.ical.steps': '
  1. Deschide un alt browser pe telefonul tau, ...
  2. Lipeste continutul din clipboard si continua.
',\n 'modal.opensafari.ical.h': 'Deschide Safari',\n 'modal.opensafari.ical.text': 'Din păcate, iOS are unele probleme la generarea și deschiderea fișierului calendar în afara Safari.',\n 'modal.opensafari.ical.steps': '
  1. Deschides Safari, ...
  2. Lipeste continutul din clipboard si continua.
',\n 'modal.multidate.h': 'Aceasta este o serie de evenimente',\n 'modal.multidate.text': 'Adauga evenimentele individuale una cate una:',\n 'date.status.cancelled': 'Aceasta data a fost anulata.',\n 'date.status.cancelled.cta': 'Te rugam sa-ti updatezi calendarul!',\n 'modal.subscribe.yahoo.h': 'Adauga Calendar in Yahoo',\n 'modal.subscribe.yahoo.text': '
  1. Deschide acum calendarul Yahoo.
  2. Apasa pe tab-ul de \"Actiuni\".
  3. Apasa \"Urmareste alte calendare\".
  4. Seteaza un nume si lipeste continutul din clipboard in casuta cu url.
',\n cancel: 'Anuleaza',\n expired: 'Expirat',\n recurring: 'Recurente',\n },\n fa: {\n 'label.addtocalendar': 'افزودن به تقویم',\n 'label.icalfile': 'پرونده iCal',\n close: 'بستن',\n 'modal.button.default': 'اینجا کلیک کنید',\n 'modal.webview.ical.h': 'مرورگر خود را باز کنید',\n 'modal.webview.ical.text': 'متاسفانه، مرورگرهای درون برنامه‌ای با نحوه تولید پرونده تقویم مشکل دارند.',\n 'modal.clipboard.text': 'ما به طور خودکار یک نشانی اینترنتی جادویی را در کلیپ‌بورد شما کپی کردیم.',\n 'modal.webview.ical.steps': '
  1. مرورگر دیگری را در گوشی خود باز کنید، ...
  2. محتوای کلیپ‌بورد را Paste کنید و Go را بزنید که آدرس باز شود.
',\n 'modal.opensafari.ical.h': 'سافاری را باز کنید',\n 'modal.opensafari.ical.text': 'متأسفانه iOS در تولید و باز کردن فایل تقویم خارج از سافاری مشکلاتی دارد.',\n 'modal.opensafari.ical.steps': '
  1. سافاری را باز کنید، ...
  2. محتوای کلیپ‌بورد را Paste کنید و Go را بزنید که آدرس باز شود.
',\n 'modal.multidate.h': 'این یک سری رویداد است',\n 'modal.multidate.text': 'رویدادهای شخصی را یکی یکی اضافه کنید:',\n 'date.status.cancelled': 'این تاریخ لغو شد',\n 'date.status.cancelled.cta': 'لطفا تقویم خود را به‌روز کنید!',\n 'modal.subscribe.yahoo.h': 'افزودن تقویم به یاهو',\n 'modal.subscribe.yahoo.text': '
  1. اکنون تقویم یاهو را باز کنید.
  2. روی زبانه «Actions» کلیک کنید.
  3. روی «Follow Other Calendars» ضربه بزنید.
  4. یک نام وارد کنید و محتوای کلیپ‌بورد را در قسمت url قرار دهید.
',\n cancel: 'لغو',\n expired: 'منقضی شده',\n },\n et: {\n 'label.addtocalendar': 'Lisa kalendrisse',\n 'label.icalfile': 'iCal fail',\n close: 'Sulge',\n 'modal.button.default': 'Kliki siia',\n 'modal.webview.ical.h': 'Ava oma veebilehitseja',\n 'modal.webview.ical.text': 'Kahjuks on rakendusesisestel veebilehitsejatel probleeme kalendrifailide loomisega.',\n 'modal.clipboard.text': 'Kalendri veebi aadress on automaatselt kopeeritud sinu lõikelauale.',\n 'modal.webview.ical.steps': '
  1. Ava teine veebilehitseja oma telefonis, ...
  2. Kleebi lõikelaua sisu ning mine sellele lehele.
',\n 'modal.opensafari.ical.h': 'Ava Safari',\n 'modal.opensafari.ical.text': 'Kahjuks on iOS-il probleeme kalendrifaili genereerimise ja avamisega väljaspool Safarit.',\n 'modal.opensafari.ical.steps': '
  1. Ava Safari, ...
  2. Kleebi lõikelaua sisu ning mine sellele lehele.
',\n 'modal.multidate.h': 'See on sündmuste seeria',\n 'modal.multidate.text': 'Ava üksikud sündmused ükshaaval:',\n 'date.status.cancelled': 'See kuupäev on tühistatud.',\n 'date.status.cancelled.cta': 'Palun uuenda oma kalendrit!',\n 'modal.subscribe.yahoo.h': 'Lisa kalender Yahoo-sse',\n 'modal.subscribe.yahoo.text': '
  1. Ava oma Yahoo kalender.
  2. Kliki \"Actions\" vahelehte.
  3. Vajuta \"Follow Other Calendars\".
  4. Määra nimi ning lisa lõikelaua sisu URL (veebi aadressi) väljale.
',\n cancel: 'Tühista',\n expired: 'Aegunud',\n },\n};\nconst availableLanguages = Object.keys(i18nStrings);\nfunction atcb_translate_hook(identifier, data) {\n if (data.customLabels != null && data.customLabels[`${identifier}`] != null && data.customLabels[`${identifier}`] != '') {\n return atcb_rewrite_html_elements(data.customLabels[`${identifier}`]);\n } else {\n return atcb_translate(identifier, data.language);\n }\n}\nfunction atcb_translate(identifier, language) {\n if (!language) {\n language = 'en';\n }\n if (i18nStrings[`${language}`][`${identifier}`]) {\n return i18nStrings[`${language}`][`${identifier}`];\n }\n return identifier;\n}\n\n\nlet atcbInitialGlobalInit = false;\nlet atcbBtnCount = 0;\nconst lightModeMutationObserver = [];\nconst template = `
`;\nif (isBrowser()) {\n class AddToCalendarButton extends HTMLElement {\n constructor() {\n super();\n const elem = document.createElement('template');\n elem.innerHTML = template;\n this.attachShadow({ mode: 'open', delegateFocus: true });\n this.shadowRoot.append(elem.content.cloneNode(true));\n this.loaded = false;\n this.initialized = false;\n this.data = {};\n this.error = false;\n }\n async connectedCallback() {\n this.debug = this.hasAttribute('debug');\n if (this.getAttribute('proKey') != null && this.getAttribute('proKey') != '') {\n this.data = atcb_get_pro_data(this.getAttribute('proKey'));\n }\n if (this.data.name == null || this.data.name == '') {\n try {\n this.data = atcb_read_attributes(this);\n this.loaded = true;\n } catch (e) {\n if (this.debug) {\n atcb_render_debug_msg(this.shadowRoot, e);\n }\n this.loaded = true;\n return;\n }\n this.data.proKey = '';\n }\n this.initButton();\n }\n disconnectedCallback() {\n atcb_cleanup(this.shadowRoot, this.data);\n if (this.debug) {\n console.log('Add to Calendar Button \"' + this.data.identifier + '\" destroyed');\n }\n if (document.querySelectorAll('add-to-calendar-button').length == 0) {\n atcbBtnCount = 0;\n }\n }\n static get observedAttributes() {\n const observeAdditionally = ['instance'];\n return atcbWcParams\n .map((element) => {\n return element.toLowerCase();\n })\n .concat(observeAdditionally);\n }\n attributeChangedCallback(name, oldValue, newValue) {\n if (this.data.proKey != null && this.data.proKey != '') {\n return;\n }\n if (!this.loaded) {\n return;\n }\n if (this.debug && this.initialized) {\n console.log(`${name}'s value has been changed from ${oldValue} to ${newValue}`);\n }\n atcb_cleanup(this.shadowRoot, this.data);\n this.data = {};\n this.shadowRoot.querySelector('.atcb-initialized').remove();\n const elem = document.createElement('template');\n elem.innerHTML = template;\n this.shadowRoot.append(elem.content.cloneNode(true));\n try {\n this.data = atcb_read_attributes(this);\n } catch (e) {\n if (this.debug) {\n atcb_render_debug_msg(this.shadowRoot, e);\n }\n return;\n }\n this.initButton();\n }\n initButton() {\n if (!this.initialized) {\n this.initialized = true;\n atcbBtnCount = atcbBtnCount + 1;\n }\n if (this.identifier && this.identifier != '') {\n this.data.identifier = this.identifier;\n } else {\n if (this.data.identifier && this.data.identifier != '') {\n if (!/^[\\w\\-_]+$/.test(this.data.identifier)) {\n this.data.identifier = '';\n if (this.debug) {\n console.warn('Add to Calendar Button generation: identifier invalid - using auto numbers instead');\n }\n } else {\n this.data.identifier = 'atcb-btn-' + this.data.identifier;\n }\n }\n if (this.data.identifier == null || this.data.identifier == '') {\n this.data.identifier = 'atcb-btn-' + atcbBtnCount;\n }\n this.identifier = this.data.identifier;\n }\n this.setAttribute('atcb-button-id', this.data.identifier);\n try {\n this.style.visibility = 'visible';\n this.style.opacity = '1';\n this.style.position = 'relative';\n atcb_build_button(this.shadowRoot, this.data, this.debug);\n } catch (e) {\n if (this.debug) {\n atcb_render_debug_msg(this.shadowRoot, e);\n }\n return;\n }\n }\n }\n if (!customElements.get('add-to-calendar-button')) {\n customElements.define('add-to-calendar-button', AddToCalendarButton);\n }\n}\nfunction atcb_read_attributes(el) {\n let data = {};\n data['hideBranding'] = true;\n for (let i = 0; i < atcbWcParams.length; i++) {\n let attr = atcbWcParams[`${i}`];\n if (el.hasAttribute(`${attr}`)) {\n let inputVal = atcb_secure_content(el.getAttribute(`${attr}`).replace(/(\\\\r\\\\n|\\\\n|\\\\r)/g, ''), false);\n let val;\n if (atcbWcBooleanParams.includes(attr)) {\n if (inputVal == '') {\n val = true;\n } else {\n val = inputVal === 'true';\n }\n } else if (atcbWcObjectParams.includes(attr)) {\n val = JSON.parse(inputVal);\n } else if (atcbWcObjectArrayParams.includes(attr)) {\n const cleanedInput = (function () {\n if (inputVal.substring(0, 1) != '[') {\n return '[' + inputVal + ']';\n }\n return inputVal;\n })();\n val = JSON.parse(cleanedInput);\n } else if (atcbWcArrayParams.includes(attr)) {\n const cleanedInput = (function () {\n let newVal = inputVal;\n if (inputVal.includes('\"') || inputVal.includes(\"'\")) {\n if (inputVal.includes('[')) {\n newVal = inputVal.substring(2, inputVal.length - 2);\n } else {\n newVal = inputVal.substring(1, inputVal.length - 1);\n }\n }\n if (!inputVal.includes('|')) {\n newVal = newVal.replace(/\\s/g, '');\n }\n return newVal;\n })();\n if (cleanedInput.includes(\"','\")) {\n val = cleanedInput.split(\"','\");\n } else {\n val = cleanedInput.split('\",\"');\n }\n } else {\n val = inputVal;\n }\n data[`${attr}`] = val;\n }\n const identifierAttr = el.getAttribute('identifier');\n if (identifierAttr != null && identifierAttr != '') {\n data['identifier'] = atcb_secure_content(identifierAttr.replace(/(\\\\r\\\\n|\\\\n|\\\\r)/g, ''), false);\n }\n }\n if (!atcb_check_required(data)) {\n const slotInput = el.innerHTML;\n const atcbJsonInput = (function () {\n if (slotInput != '') {\n try {\n return JSON.parse(atcb_secure_content(slotInput.replace(/(\\\\r\\\\n|\\\\n|\\\\r)/g, ''), false));\n } catch (e) {\n throw new Error('Add to Calendar Button generation failed: JSON content provided, but badly formatted (in doubt, try some tool like https://jsonformatter.org/ to validate).\\r\\nError message: ' + e);\n }\n }\n return '';\n })();\n if (atcbJsonInput.length == 0) {\n console.error(data.validationError);\n throw new Error('Add to Calendar Button generation failed: no data provided or missing required fields - see console logs for details');\n }\n data = atcbJsonInput;\n }\n return data;\n}\nfunction atcb_build_button(host, data, debug = false) {\n data = atcb_decorate_data(data);\n if (atcb_validate(data)) {\n const rootObj = host.querySelector('.atcb-initialized');\n atcb_set_light_mode(host, data);\n rootObj.setAttribute('lang', data.language);\n atcb_load_css(host, rootObj, data.buttonStyle, data.inline, data.buttonsList, data.customCss);\n atcb_setup_state_management(data);\n atcb_set_global_event_listener(host, data);\n atcb_init_log(data.proKey, debug);\n if (!data.hidden) {\n atcb_generate_button(host, rootObj, data, debug);\n if (!data.hideRichData && data.name && data.dates[0].location && data.dates[0].startDate) {\n atcb_generate_rich_data(data, host.host);\n data.schemaEl = host.host.previousSibling;\n }\n }\n atcb_log_event('initialization', data.identifier, data.identifier);\n } else if (debug) {\n console.error(data.validationError);\n throw new Error(data.validationError);\n }\n}\nfunction atcb_cleanup(host, data) {\n atcb_close(host);\n atcb_unset_global_event_listener(data.identifier);\n if (data.schemaEl != null) {\n data.schemaEl.remove();\n }\n Array.from(host.querySelectorAll('.atcb-debug-error-msg'))\n .concat(Array.from(host.querySelectorAll('style')))\n .concat(Array.from(host.querySelectorAll('.atcb-button-wrapper')))\n .forEach((el) => el.remove());\n delete atcbStates[`${data.identifier}`];\n}\nfunction atcb_set_light_mode(shadowRoot, data) {\n shadowRoot.host.classList.remove('atcb-dark', 'atcb-light', 'atcb-bodyScheme');\n const hostLightMode = (function () {\n if (data.lightMode == 'bodyScheme') {\n if (document.body.classList.contains('atcb-dark') || document.documentElement.classList.contains('atcb-dark')) {\n return 'dark';\n } else {\n return 'light';\n }\n }\n return data.lightMode;\n })();\n shadowRoot.host.classList.add('atcb-' + hostLightMode);\n}\nfunction atcb_load_css(host, rootObj = null, style = '', inline = false, buttonsList = false, customCss = '') {\n if (!document.getElementById('atcb-global-style')) {\n const cssGlobalContent = document.createElement('style');\n cssGlobalContent.id = 'atcb-global-style';\n const scrollBarWidth = window.innerWidth - document.documentElement.clientWidth;\n cssGlobalContent.innerText = '.atcb-modal-no-scroll { overflow-y: hidden !important; -webkit-overflow-scrolling: touch; } body.atcb-modal-no-scroll { padding-right: ' + scrollBarWidth + 'px; }';\n document.head.append(cssGlobalContent);\n }\n if (customCss != '' && style == 'custom') {\n const cssFile = document.createElement('link');\n cssFile.setAttribute('rel', 'stylesheet');\n cssFile.setAttribute('type', 'text/css');\n cssFile.setAttribute('href', customCss);\n if (rootObj == null) {\n host.host.style.display = 'none';\n loadExternalCssAsynch(cssFile, host, host.host);\n } else {\n const placeholder = document.createElement('div');\n placeholder.style.cssText = 'width: 150px; height: 40px; border-radius: 200px; background-color: #777; opacity: .3;';\n host.prepend(placeholder);\n loadExternalCssAsynch(cssFile, host, rootObj, placeholder, inline, buttonsList);\n }\n return;\n }\n if (style != 'none' && atcbCssTemplate[`${style}`] != null) {\n const cssContent = document.createElement('style');\n const overrideDefaultCss = (function () {\n if (host.host.hasAttribute('styleLight')) {\n const output = ':host { ' + atcb_secure_content(host.host.getAttribute('styleLight').replace(/(\\\\r\\\\n|\\\\n|\\\\r)/g, ''), false) + ' }';\n return output;\n }\n return '';\n })();\n const overrideDarkCss = (function () {\n if (host.host.hasAttribute('styleDark')) {\n const output = ':host(.atcb-dark), :host-context(html.atcb-dark):host(.atcb-bodyScheme), :host-context(body.atcb-dark):host(.atcb-bodyScheme) { ' + atcb_secure_content(host.host.getAttribute('styleDark').replace(/(\\\\r\\\\n|\\\\n|\\\\r)/g, ''), false) + ' }';\n return output;\n }\n return '';\n })();\n cssContent.innerText = atcbCssTemplate[`${style}`] + overrideDefaultCss + overrideDarkCss;\n host.prepend(cssContent);\n }\n if (rootObj != null) {\n if (inline) {\n rootObj.style.display = 'inline-block';\n } else {\n if (buttonsList) {\n rootObj.style.display = 'flex';\n rootObj.style.flexWrap = 'wrap';\n rootObj.style.justifyContent = 'center';\n } else {\n rootObj.style.display = 'block';\n }\n }\n }\n}\nasync function loadExternalCssAsynch(cssFile, host, rootObj, placeholder = null, inline = false, buttonsList = false) {\n host.prepend(cssFile);\n await new Promise((resolve) => {\n cssFile.onload = resolve;\n });\n if (placeholder != null) {\n placeholder.remove();\n }\n if (inline) {\n rootObj.style.display = 'inline-block';\n } else {\n if (buttonsList) {\n rootObj.style.display = 'flex';\n rootObj.style.flexWrap = 'wrap';\n rootObj.style.justifyContent = 'center';\n } else {\n rootObj.style.display = 'block';\n }\n }\n}\nfunction atcb_render_debug_msg(host, error) {\n if (host.querySelector('.atcb-debug-error-msg')) return;\n const errorBanner = document.createElement('div');\n errorBanner.classList.add('atcb-debug-error-msg');\n errorBanner.style.cssText = 'color: #bf2e2e; font-size: 12px; font-weight: bold; padding: 12px 15px; border: 2px solid #bf2e2e; max-width: 180px; border-radius: 13px;';\n errorBanner.textContent = error;\n host.append(errorBanner);\n}\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction atcb_action(data, triggerElement, keyboardTrigger = false) {\n if (!isBrowser()) {\n return;\n }\n data = atcb_secure_content(data);\n data.hideBranding = true;\n if (data.proKey != null && data.proKey != '') {\n data = atcb_get_pro_data(data.proKey);\n }\n data.debug = data.debug === 'true';\n if (!atcb_check_required(data)) {\n console.error(data.validationError);\n return;\n }\n data = atcb_decorate_data(data);\n let root = document.body;\n data.trigger = 'click';\n if (triggerElement) {\n root = triggerElement;\n if (triggerElement.id != null && triggerElement.id != '') {\n data.identifier = triggerElement.id;\n } else {\n if (data.identifier != null && data.identifier != '' && /^[\\w\\-_]+$/.test(data.identifier)) {\n data.identifier = 'atcb-btn-' + data.identifier;\n } else {\n data.identifier = 'atcb-btn-custom';\n }\n triggerElement.id = data.identifier;\n }\n if (data.listStyle === 'dropdown' || data.listStyle === 'dropdown-static' || data.listStyle === 'dropup-static') {\n data.listStyle = 'modal';\n }\n } else {\n data.identifier = 'atcb-btn-custom';\n data.listStyle = 'modal';\n }\n if (!atcb_validate(data)) {\n console.error(data.validationError);\n return;\n }\n const oneOption = (function () {\n if (data.options.length === 1) {\n return true;\n }\n return false;\n })();\n const potentialExistingHost = document.getElementById('atcb-customTrigger-' + data.identifier + '-host');\n if (potentialExistingHost) {\n atcb_close(potentialExistingHost.shadowRoot, false);\n if (atcbStates[`${atcbStates['active']}`]) {\n delete atcbStates[`${atcbStates['active']}`];\n }\n potentialExistingHost.remove();\n }\n atcb_log_event('initialization', data.identifier, data.identifier);\n if (!data.blockInteraction) {\n let host = null;\n if (!oneOption || (data.options[0] !== 'apple' && data.options[0] !== 'ical') || (data.dates && data.dates.length > 1 && data.dates.organizer) || (isMobile())) {\n host = document.createElement('div');\n host.id = 'atcb-customTrigger-' + data.identifier + '-host';\n if (root == document.body) {\n document.body.append(host);\n } else {\n root.after(host);\n }\n if (triggerElement) {\n const btnDim = triggerElement.getBoundingClientRect();\n host.style.position = 'relative';\n host.style.left = -btnDim.width + 'px';\n host.style.top = btnDim.height + 'px';\n }\n host.setAttribute('atcb-button-id', data.identifier);\n host.attachShadow({ mode: 'open', delegateFocus: true });\n const elem = document.createElement('template');\n elem.innerHTML = template;\n host.shadowRoot.append(elem.content.cloneNode(true));\n const rootObj = host.shadowRoot.querySelector('.atcb-initialized');\n atcb_setup_state_management(data);\n atcb_set_light_mode(host.shadowRoot, data);\n host.shadowRoot.querySelector('.atcb-initialized').setAttribute('lang', data.language);\n atcb_load_css(host.shadowRoot, rootObj, data.buttonStyle, false, false, data.customCss);\n atcb_set_global_event_listener(host.shadowRoot, data);\n }\n if (oneOption) {\n atcb_generate_links(host.shadowRoot, data.options[0], data, 'all', keyboardTrigger);\n atcb_log_event('openSingletonLink', data.identifier, data.identifier);\n } else {\n atcb_toggle(host.shadowRoot, 'open', data, triggerElement, keyboardTrigger);\n }\n }\n atcb_init_log(data.proKey, data.debug);\n if (data.debug) {\n console.log('Add to Calendar Button \"' + data.identifier + '\" triggered');\n }\n return data.identifier;\n}\nfunction atcb_setup_state_management(data) {\n const singleDates = [];\n for (let i = 0; i < data.options.length; i++) {\n singleDates[data.options[`${i}`]] = [];\n for (let id = 1; id <= data.dates.length; id++) {\n singleDates[data.options[`${i}`]].push(0);\n }\n }\n atcbStates[data.identifier] = singleDates;\n}\nfunction atcb_init_log(pro = '', debug = false) {\n if (!atcbInitialGlobalInit) {\n const versionOutput = (function () {\n if (debug) {\n return ' (version ' + atcbVersion + ')';\n }\n return '';\n })();\n if (pro != '') {\n console.log('Add to Calendar PRO script initialized' + versionOutput + ' | https://add-to-calendar-pro.com');\n } else {\n console.log('%c\\nAdd to Calendar Button script initialized' + versionOutput + '\\n' + 'see https://add-to-calendar-button.com for details.\\n', 'font-weight: bold;');\n }\n atcbInitialGlobalInit = true;\n }\n}\nfunction atcb_get_pro_data(licenseKey) {\n /*!\n * @preserve\n * PER LICENSE AGREEMENT, YOU ARE NOT ALLOWED TO REMOVE OR CHANGE THIS FUNCTION!\n */\n const data = {};\n if (licenseKey != null && licenseKey != '') {\n data.proKey = licenseKey;\n data.identifier = licenseKey;\n console.error('Add to Calendar Button proKey invalid! Falling back to local data...');\n }\n return data;\n}\nfunction atcb_set_global_event_listener(host, data) {\n if (!isBrowser()) {\n return;\n }\n if (data.lightMode == 'bodyScheme') {\n lightModeMutationObserver[data.identifier] = new MutationObserver(function (mutationsList) {\n mutationsList.forEach((mutation) => {\n if (mutation.attributeName === 'class') {\n atcb_set_light_mode(host, data);\n }\n });\n });\n lightModeMutationObserver[data.identifier].observe(document.documentElement, { attributes: true });\n lightModeMutationObserver[data.identifier].observe(document.body, { attributes: true });\n }\n if (!atcbInitialGlobalInit) {\n document.addEventListener('keyup', atcb_global_listener_keyup);\n document.addEventListener('keydown', atcb_global_listener_keydown);\n window.addEventListener('resize', atcb_global_listener_resize);\n }\n}\nfunction atcb_global_listener_keyup(event) {\n const host = (function () {\n const root = document.querySelector('[atcb-button-id=\"' + atcbStates['active'] + '\"]');\n if (root) {\n return root.shadowRoot;\n }\n return null;\n })();\n if (host && event.key === 'Escape') {\n atcb_log_event('closeList', 'Ecs Hit', atcbStates['active']);\n atcb_toggle(host, 'close', '', '', true);\n }\n}\nfunction atcb_global_listener_keydown(event) {\n const host = (function () {\n const root = document.querySelector('[atcb-button-id=\"' + atcbStates['active'] + '\"]');\n const rootModal = document.getElementById(atcbStates['active'] + '-modal-host');\n if (rootModal) {\n return rootModal.shadowRoot;\n }\n if (root) {\n return root.shadowRoot;\n }\n return null;\n })();\n if (host && host.querySelector('.atcb-list') && (event.key === 'ArrowDown' || event.key === 'ArrowUp' || event.key === 'Tab')) {\n event.preventDefault();\n let targetFocus = 0;\n let currFocusOption = host.activeElement;\n const optionListCount = host.querySelectorAll('.atcb-list-item').length;\n if (currFocusOption && currFocusOption.classList.contains('atcb-list-item')) {\n if (event.key === 'ArrowDown' && currFocusOption.dataset.optionNumber < optionListCount) {\n targetFocus = parseInt(currFocusOption.dataset.optionNumber) + 1;\n } else if (event.key === 'Tab') {\n if (currFocusOption.dataset.optionNumber < optionListCount) {\n targetFocus = parseInt(currFocusOption.dataset.optionNumber) + 1;\n } else {\n targetFocus = 1;\n }\n } else if (event.key === 'ArrowUp' && currFocusOption.dataset.optionNumber >= 1) {\n targetFocus = parseInt(currFocusOption.dataset.optionNumber) - 1;\n }\n if (targetFocus > 0) {\n host.querySelector('.atcb-list-item[data-option-number=\"' + targetFocus + '\"]').focus();\n }\n } else {\n switch (event.key) {\n default:\n host.querySelector('.atcb-list-item[data-option-number=\"1\"]').focus();\n break;\n case 'ArrowUp':\n host.querySelector('.atcb-list-item[data-option-number=\"' + optionListCount + '\"]').focus();\n break;\n }\n }\n }\n}\nfunction atcb_global_listener_resize() {\n const host = (function () {\n const root = document.querySelector('[atcb-button-id=\"' + atcbStates['active'] + '\"]');\n const rootModal = document.getElementById(atcbStates['active'] + '-modal-host');\n if (rootModal) {\n return rootModal.shadowRoot;\n }\n if (root) {\n return root.shadowRoot;\n }\n return null;\n })();\n if (host) {\n const activeOverlay = host.querySelector('#atcb-bgoverlay');\n if (activeOverlay) {\n atcb_set_fullsize(activeOverlay);\n atcb_manage_body_scroll(host);\n }\n }\n}\nfunction atcb_unset_global_event_listener(identifier) {\n if (typeof lightModeMutationObserver[`${identifier}`] !== 'undefined') {\n lightModeMutationObserver[`${identifier}`].disconnect();\n }\n}\n\nexport { atcb_action };"],"x_google_ignoreList":[26,27,28]}