{"version":3,"file":"js/vendors-db26ae6f9804793a4485.js","mappings":"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ACA,iBACA,SACA,OACA,WACA,aACA,OACA,cACA,WACA,WACA,WACA,SACA,WAEA,aACAhC,SAAQgC,IACRurI,EAAWvrI,GAAQ,IAAIysO,EACrBzsO,EA/JY,GAiKZ,EACAA,EAAK6hB,cACL,MACA,GACA,EACD,IAKH,CACE,UAGA,WACA,QACA,YAKA7jB,SAAQgC,IACRurI,EAAWvrI,GAAQ,IAAIysO,EACrBzsO,EAxLY,GA0LZ,EACAA,EACA,MACA,GACA,EACD,IAKH,CACE,UACA,YAKAhC,SAAQgC,IACRurI,EAAWvrI,GAAQ,IAAIysO,EACrBzsO,EAvMuB,GAyMvB,EACAA,EACA,MACA,GACA,EACD,IAIH,CACE,OACA,OACA,OACA,QAKAhC,SAAQgC,IACRurI,EAAWvrI,GAAQ,IAAIysO,EACrBzsO,EArNqB,GAuNrB,EACAA,EACA,MACA,GACA,EACD,IAIH,CAAC,UAAW,SAAShC,SAAQgC,IAC3BurI,EAAWvrI,GAAQ,IAAIysO,EACrBzsO,EAtOY,GAwOZ,EACAA,EAAK6hB,cACL,MACA,GACA,EACD,IAGH,MAAM6qN,EAAW,iBACXhvG,EAAah6F,GAASA,EAAM,GAAGhlC,cAOrC,CACE,gBACA,qBACA,cACA,iBACA,aACA,YACA,YACA,sBACA,8BACA,gBACA,kBACA,oBACA,oBACA,eACA,YACA,cACA,gBACA,cACA,YACA,mBACA,eACA,aACA,eACA,cACA,aACA,+BACA,6BACA,cACA,iBACA,kBACA,iBACA,iBACA,aACA,aACA,eACA,oBACA,qBACA,cACA,WACA,iBACA,mBACA,kBACA,aACA,eACA,yBACA,0BACA,mBACA,oBACA,iBACA,kBACA,oBACA,iBACA,eACA,cACA,kBACA,iBACA,qBACA,sBACA,eACA,gBACA,eACA,eACA,YACA,gBACA,iBACA,gBACA,aACA,gBACA,gBACA,eACA,eACA,cACA,YAKAV,SAAQi2F,IACR,MAAMj0F,EAAOi0F,EAAc3yF,QAAQorO,EAAUhvG,GAC7C6N,EAAWvrI,GAAQ,IAAIysO,EACrBzsO,EA9VW,GAgWX,EACAi0F,E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","sources":["webpack://mba-web-client/./node_modules/@barges/react/lib/classnames.js","webpack://mba-web-client/./node_modules/@barges/react/lib/node_modules/rollup-plugin-styles/dist/runtime/inject-css.js","webpack://mba-web-client/./node_modules/@barges/react/lib/atoms/title/title.module.scss.js","webpack://mba-web-client/./node_modules/@barges/react/lib/atoms/title/title.js","webpack://mba-web-client/./node_modules/@barges/react/lib/atoms/icon/icon.module.scss.js","webpack://mba-web-client/./node_modules/@barges/react/lib/atoms/icon/icon.js","webpack://mba-web-client/./node_modules/@barges/react/lib/molecules/button/button.js","webpack://mba-web-client/./node_modules/@barges/react/lib/molecules/picker/picker.js","webpack://mba-web-client/./node_modules/@barges/react/lib/molecules/menu_item/menu_item.js","webpack://mba-web-client/./node_modules/@barges/react/lib/molecules/avatar/avatar.js","webpack://mba-web-client/./node_modules/@barges/react/lib/atoms/status_indicator/status_indicator.module.scss.js","webpack://mba-web-client/./node_modules/@barges/react/lib/atoms/status_indicator/status_indicator.js","webpack://mba-web-client/./node_modules/@barges/react/lib/molecules/input/input.js","webpack://mba-web-client/./node_modules/@barges/react/lib/organisms/footer/footer.js","webpack://mba-web-client/./node_modules/@barges/react/lib/molecules/speciality/speciality.js","webpack://mba-web-client/./node_modules/@barges/react/lib/molecules/my_orders_right_arrow/my_orders_right_arrow.js","webpack://mba-web-client/./node_modules/@barges/react/lib/organisms/my_orders_advisor_cell/my_orders_advisor_cell.js","webpack://mba-web-client/./node_modules/@barges/react/lib/atoms/label/label.module.scss.js","webpack://mba-web-client/./node_modules/@barges/react/lib/atoms/label/label.js","webpack://mba-web-client/./node_modules/@barges/react/lib/atoms/my_orders_section_divider/my_orders_section_divider.module.scss.js","webpack://mba-web-client/./node_modules/@barges/react/lib/atoms/my_orders_section_divider/my_orders_section_divider.js","webpack://mba-web-client/./node_modules/@barges/react/lib/organisms/my_orders_order_cell/img/live_chat.js","webpack://mba-web-client/./node_modules/@barges/react/lib/organisms/my_orders_order_cell/img/video_call.js","webpack://mba-web-client/./node_modules/@barges/react/lib/organisms/my_orders_order_cell/img/voice_call.js","webpack://mba-web-client/./node_modules/@barges/react/lib/organisms/my_orders_order_cell/img/clock.js","webpack://mba-web-client/./node_modules/@barges/react/lib/organisms/my_orders_order_cell/my_orders_order_cell.js","webpack://mba-web-client/./node_modules/@barges/react/lib/molecules/chat_bubble/chat-bubble.js","webpack://mba-web-client/./node_modules/@barges/react/lib/molecules/table/table.js","webpack://mba-web-client/./node_modules/@barges/react/lib/molecules/duration_item/duration_item.js","webpack://mba-web-client/./node_modules/@barges/react/lib/molecules/filter_tab/filter_tab.js","webpack://mba-web-client/./node_modules/@barges/react/lib/atoms/switch/switch.module.scss.js","webpack://mba-web-client/./node_modules/@barges/react/lib/atoms/switch/switch.js","webpack://mba-web-client/./node_modules/@barges/react/lib/atoms/play_button/img/play_button_icon.js","webpack://mba-web-client/./node_modules/@barges/react/lib/atoms/play_button/play_button.module.scss.js","webpack://mba-web-client/./node_modules/@barges/react/lib/atoms/play_button/play_button.js","webpack://mba-web-client/./node_modules/@barges/react/lib/atoms/rating/img/rating_icon.js","webpack://mba-web-client/./node_modules/@barges/react/lib/atoms/rating/rating.module.scss.js","webpack://mba-web-client/./node_modules/@barges/react/lib/atoms/rating/rating.js","webpack://mba-web-client/./node_modules/@barges/react/lib/atoms/channels_card/channels_card.module.scss.js","webpack://mba-web-client/./node_modules/@barges/react/lib/atoms/channels_card/channels_card.js","webpack://mba-web-client/./node_modules/@barges/react/lib/atoms/live_modes_prices/live_modes_prices.module.scss.js","webpack://mba-web-client/./node_modules/@barges/react/lib/atoms/live_modes_prices/live_modes_prices.js","webpack://mba-web-client/./node_modules/@barges/react/lib/atoms/reading_since_and_count/reading_since_and_count.module.scss.js","webpack://mba-web-client/./node_modules/@barges/react/lib/atoms/reading_since_and_count/reading_since_and_count.js","webpack://mba-web-client/./node_modules/@barges/react/lib/organisms/staff_pick/staff_pick_small.js","webpack://mba-web-client/./node_modules/@barges/react/lib/organisms/staff_pick/staff_pick_big.js","webpack://mba-web-client/./node_modules/@barges/react/lib/organisms/staff_pick/staff_pick.js","webpack://mba-web-client/./node_modules/@barges/react/lib/molecules/method_cell/img/right_arrow_icon.js","webpack://mba-web-client/./node_modules/@barges/react/lib/molecules/method_cell/img/hourglass_icon.js","webpack://mba-web-client/./node_modules/@barges/react/lib/molecules/method_cell/img/refresh_icon.js","webpack://mba-web-client/./node_modules/@barges/react/lib/molecules/method_cell/img/checkmark_icon.js","webpack://mba-web-client/./node_modules/@barges/react/lib/molecules/method_cell/method_cell.js","webpack://mba-web-client/./node_modules/@barges/react/lib/molecules/payment_method_details/img/delete_icon.js","webpack://mba-web-client/./node_modules/@barges/react/lib/molecules/payment_method_details/payment_method_details.js","webpack://mba-web-client/./node_modules/@barges/react/lib/molecules/channel_button/assets/chatIcon.js","webpack://mba-web-client/./node_modules/@barges/react/lib/molecules/channel_button/assets/voiceIcon.js","webpack://mba-web-client/./node_modules/@barges/react/lib/molecules/channel_button/assets/videoIcon.js","webpack://mba-web-client/./node_modules/@barges/react/lib/molecules/channel_button/channel_button.js","webpack://mba-web-client/./node_modules/@barges/react/lib/organisms/advisor_section/img/left_arrow_icon.js","webpack://mba-web-client/./node_modules/@barges/react/lib/organisms/advisor_section/img/right_arrow_icon.js","webpack://mba-web-client/./node_modules/@barges/react/lib/organisms/advisor_section/advisor_section.js","webpack://mba-web-client/./node_modules/@barges/react/lib/atoms/advisor_section_title_label/advisor_section_title_label.module.scss.js","webpack://mba-web-client/./node_modules/@barges/react/lib/atoms/advisor_section_title_label/advisor_section_title_label.js","webpack://mba-web-client/./node_modules/@barges/react/lib/atoms/advisor_section_short_descriptions/advisor_section_short_descriptions.module.scss.js","webpack://mba-web-client/./node_modules/@barges/react/lib/atoms/advisor_section_short_descriptions/advisor_section_short_descriptions.js","webpack://mba-web-client/./node_modules/@barges/react/lib/organisms/my_orders_details_item/assets/Clock.js","webpack://mba-web-client/./node_modules/@barges/react/lib/organisms/my_orders_details_item/assets/Stars.js","webpack://mba-web-client/./node_modules/@barges/react/lib/organisms/my_orders_details_item/assets/ChatTypeIcon.js","webpack://mba-web-client/./node_modules/@barges/react/lib/organisms/my_orders_details_item/my_orders_details_item.js","webpack://mba-web-client/./node_modules/@barges/react/lib/organisms/advisor_list_card/advisor_list_card_pg/advisor_list_card_pg.js","webpack://mba-web-client/./node_modules/@barges/react/lib/organisms/advisor_list_card/advisor_list_card_ka/advisor_list_card_ka.js","webpack://mba-web-client/./node_modules/@barges/react/lib/organisms/advisor_list_card/advisor_list_card_ka/assets/HeartIcon.js","webpack://mba-web-client/./node_modules/@barges/react/lib/organisms/advisor_list_card/advisor_list_card_ka/assets/RatingIcon.js","webpack://mba-web-client/./node_modules/@barges/react/lib/molecules/typing_indicator/typing_indicator.js","webpack://mba-web-client/./node_modules/@barges/react/lib/molecules/marketing_banner/marketing_banner.js","webpack://mba-web-client/./node_modules/@barges/react/lib/organisms/popover/assets/icons.js","webpack://mba-web-client/./node_modules/@barges/react/lib/organisms/popover/popover.js","webpack://mba-web-client/./node_modules/@barges/react/lib/atoms/coupon/img/arrow_img.js","webpack://mba-web-client/./node_modules/@barges/react/lib/atoms/coupon/coupon.js","webpack://mba-web-client/./node_modules/@barges/react/lib/scss/global.scss.js","webpack://mba-web-client/./node_modules/@barges/react/lib/foundation/pem_papping/pem_mapping.js","webpack://mba-web-client/./node_modules/@barges/react/lib/foundation/font/font_styling.js","webpack://mba-web-client/./node_modules/@barges/react/lib/foundation/button/button.js","webpack://mba-web-client/./node_modules/@barges/react/lib/foundation/avatar/avatar.js","webpack://mba-web-client/./node_modules/@barges/react/lib/foundation/status_indicator/status_indicator.js","webpack://mba-web-client/./node_modules/@barges/react/lib/foundation/speciality/speciality.js","webpack://mba-web-client/./node_modules/@barges/react/lib/foundation/my_orders_advisor_cell_types/my_orders_advisor_cell_types.js","webpack://mba-web-client/./node_modules/@barges/react/lib/foundation/review_type/review_type.js","webpack://mba-web-client/./node_modules/@barges/react/lib/foundation/label/label_types.js","webpack://mba-web-client/./node_modules/@barges/react/lib/foundation/label/label_sizings.js","webpack://mba-web-client/./node_modules/@barges/react/lib/foundation/order/order.js","webpack://mba-web-client/./node_modules/@barges/react/lib/foundation/filter_tab/filter_tab.js","webpack://mba-web-client/./node_modules/@barges/react/lib/foundation/play_button/play_button.js","webpack://mba-web-client/./node_modules/@barges/react/lib/foundation/rating/rating.js","webpack://mba-web-client/./node_modules/@barges/react/lib/foundation/channels_card/channels_card.js","webpack://mba-web-client/./node_modules/@barges/react/lib/foundation/advisor_list_card/advisor_list_card.js","webpack://mba-web-client/./node_modules/@barges/react/lib/foundation/live_modes_prices/live_modes_prices.js","webpack://mba-web-client/./node_modules/@barges/react/lib/foundation/reading_since_and_count/reading_since_and_count.js","webpack://mba-web-client/./node_modules/@barges/react/lib/foundation/staff_pick/staff_pick.js","webpack://mba-web-client/./node_modules/@barges/react/lib/foundation/method_cell/method_cell.js","webpack://mba-web-client/./node_modules/@barges/react/lib/foundation/my_orders_details_item/my_orders_details_item_type.js","webpack://mba-web-client/./node_modules/@barges/react/lib/foundation/payment_method_details/payment_method_details.js","webpack://mba-web-client/./node_modules/@barges/react/lib/foundation/coupon/coupon_types.js","webpack://mba-web-client/./node_modules/@barges/react/lib/foundation/profile_channel_button/profile_channel_button.js","webpack://mba-web-client/./node_modules/@barges/react/lib/foundation/index.js","webpack://mba-web-client/./node_modules/@bugsnag/browser/dist/bugsnag.js","webpack://mba-web-client/./node_modules/@bugsnag/js/browser/notifier.js","webpack://mba-web-client/./node_modules/@bugsnag/plugin-react/dist/bugsnag-react.js","webpack://mba-web-client/./node_modules/@firebase/util/dist/index.esm2017.js","webpack://mba-web-client/./node_modules/immer/dist/immer.esm.mjs","webpack://mba-web-client/./node_modules/@reduxjs/toolkit/dist/redux-toolkit.esm.js","webpack://mba-web-client/./node_modules/@remix-run/router/dist/router.js","webpack://mba-web-client/./node_modules/classnames/index.js","webpack://mba-web-client/./node_modules/d3-array/src/ticks.js","webpack://mba-web-client/./node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/_lib/assign/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/_lib/cloneObject/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/_lib/defaultLocale/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/_lib/defaultOptions/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/_lib/format/longFormatters/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/_lib/getUTCWeek/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/_lib/protectedTokens/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/_lib/requiredArgs/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/_lib/roundingMethods/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/_lib/setUTCDay/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/_lib/setUTCISODay/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/_lib/setUTCISOWeek/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/_lib/setUTCWeek/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/_lib/toInteger/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/add/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/addBusinessDays/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/addDays/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/addHours/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/addISOWeekYears/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/addMilliseconds/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/addMinutes/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/addMonths/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/addQuarters/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/addSeconds/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/addWeeks/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/addYears/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/areIntervalsOverlapping/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/clamp/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/closestIndexTo/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/closestTo/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/compareAsc/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/compareDesc/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/constants/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/daysToWeeks/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/differenceInBusinessDays/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/differenceInCalendarDays/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/differenceInCalendarISOWeekYears/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/differenceInCalendarISOWeeks/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/differenceInCalendarMonths/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/differenceInCalendarQuarters/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/differenceInCalendarWeeks/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/differenceInCalendarYears/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/differenceInDays/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/differenceInHours/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/differenceInISOWeekYears/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/differenceInMilliseconds/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/differenceInMinutes/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/differenceInMonths/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/differenceInQuarters/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/differenceInSeconds/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/differenceInWeeks/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/differenceInYears/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/eachDayOfInterval/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/eachHourOfInterval/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/eachMinuteOfInterval/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/eachMonthOfInterval/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/eachQuarterOfInterval/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/eachWeekOfInterval/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/eachWeekendOfInterval/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/eachWeekendOfMonth/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/eachWeekendOfYear/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/eachYearOfInterval/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/endOfDay/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/endOfDecade/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/endOfHour/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/endOfISOWeek/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/endOfISOWeekYear/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/endOfMinute/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/endOfMonth/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/endOfQuarter/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/endOfSecond/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/endOfToday/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/endOfTomorrow/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/endOfWeek/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/endOfYear/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/endOfYesterday/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/_lib/format/formatters/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/format/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/formatDistance/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/formatDistanceStrict/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/formatDistanceToNow/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/formatDistanceToNowStrict/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/formatDuration/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/formatISO/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/formatISO9075/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/formatISODuration/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/formatRFC3339/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/formatRFC7231/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/formatRelative/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/fromUnixTime/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/getDate/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/getDay/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/getDayOfYear/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/getDaysInMonth/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/getDaysInYear/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/getDecade/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/getDefaultOptions/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/getHours/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/getISODay/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/getISOWeek/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/getISOWeekYear/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/getISOWeeksInYear/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/getMilliseconds/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/getMinutes/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/getMonth/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/getOverlappingDaysInIntervals/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/getQuarter/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/getSeconds/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/getTime/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/getUnixTime/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/getWeek/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/getWeekOfMonth/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/getWeekYear/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/getWeeksInMonth/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/getYear/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/hoursToMilliseconds/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/hoursToMinutes/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/hoursToSeconds/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/intervalToDuration/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/intlFormat/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/intlFormatDistance/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/isAfter/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/isBefore/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/isDate/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/isEqual/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/isExists/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/isFirstDayOfMonth/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/isFriday/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/isFuture/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/isLastDayOfMonth/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/isLeapYear/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/isMatch/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/isMonday/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/isPast/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/isSameDay/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/isSameHour/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/isSameISOWeek/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/isSameISOWeekYear/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/isSameMinute/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/isSameMonth/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/isSameQuarter/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/isSameSecond/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/isSameWeek/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/isSameYear/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/isSaturday/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/isSunday/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/isThisHour/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/isThisISOWeek/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/isThisMinute/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/isThisMonth/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/isThisQuarter/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/isThisSecond/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/isThisWeek/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/isThisYear/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/isThursday/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/isToday/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/isTomorrow/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/isTuesday/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/isValid/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/isWednesday/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/isWeekend/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/isWithinInterval/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/isYesterday/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/lastDayOfDecade/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/lastDayOfISOWeek/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/lastDayOfISOWeekYear/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/lastDayOfMonth/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/lastDayOfQuarter/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/lastDayOfWeek/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/lastDayOfYear/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/lightFormat/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/locale/en-US/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/locale/es/_lib/formatDistance/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/locale/es/_lib/formatLong/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/locale/es/_lib/formatRelative/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/locale/es/_lib/localize/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/locale/es/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/locale/es/_lib/match/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/max/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/milliseconds/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/millisecondsToHours/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/millisecondsToMinutes/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/millisecondsToSeconds/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/min/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/minutesToHours/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/minutesToMilliseconds/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/minutesToSeconds/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/monthsToQuarters/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/monthsToYears/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/nextDay/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/nextFriday/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/nextMonday/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/nextSaturday/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/nextSunday/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/nextThursday/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/nextTuesday/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/nextWednesday/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/parse/_lib/Parser.js","webpack://mba-web-client/./node_modules/date-fns/esm/parse/_lib/Setter.js","webpack://mba-web-client/./node_modules/date-fns/esm/parse/_lib/constants.js","webpack://mba-web-client/./node_modules/date-fns/esm/parse/_lib/parsers/EraParser.js","webpack://mba-web-client/./node_modules/date-fns/esm/parse/_lib/parsers/YearParser.js","webpack://mba-web-client/./node_modules/date-fns/esm/parse/_lib/parsers/LocalWeekYearParser.js","webpack://mba-web-client/./node_modules/date-fns/esm/parse/_lib/parsers/ISOWeekYearParser.js","webpack://mba-web-client/./node_modules/date-fns/esm/parse/_lib/parsers/ExtendedYearParser.js","webpack://mba-web-client/./node_modules/date-fns/esm/parse/_lib/parsers/QuarterParser.js","webpack://mba-web-client/./node_modules/date-fns/esm/parse/_lib/parsers/StandAloneQuarterParser.js","webpack://mba-web-client/./node_modules/date-fns/esm/parse/_lib/parsers/MonthParser.js","webpack://mba-web-client/./node_modules/date-fns/esm/parse/_lib/parsers/StandAloneMonthParser.js","webpack://mba-web-client/./node_modules/date-fns/esm/parse/_lib/parsers/LocalWeekParser.js","webpack://mba-web-client/./node_modules/date-fns/esm/parse/_lib/parsers/ISOWeekParser.js","webpack://mba-web-client/./node_modules/date-fns/esm/parse/_lib/parsers/DateParser.js","webpack://mba-web-client/./node_modules/date-fns/esm/parse/_lib/parsers/DayOfYearParser.js","webpack://mba-web-client/./node_modules/date-fns/esm/parse/_lib/parsers/DayParser.js","webpack://mba-web-client/./node_modules/date-fns/esm/parse/_lib/parsers/LocalDayParser.js","webpack://mba-web-client/./node_modules/date-fns/esm/parse/_lib/parsers/StandAloneLocalDayParser.js","webpack://mba-web-client/./node_modules/date-fns/esm/parse/_lib/parsers/ISODayParser.js","webpack://mba-web-client/./node_modules/date-fns/esm/parse/_lib/parsers/AMPMParser.js","webpack://mba-web-client/./node_modules/date-fns/esm/parse/_lib/parsers/AMPMMidnightParser.js","webpack://mba-web-client/./node_modules/date-fns/esm/parse/_lib/parsers/DayPeriodParser.js","webpack://mba-web-client/./node_modules/date-fns/esm/parse/_lib/parsers/Hour1to12Parser.js","webpack://mba-web-client/./node_modules/date-fns/esm/parse/_lib/parsers/Hour0to23Parser.js","webpack://mba-web-client/./node_modules/date-fns/esm/parse/_lib/parsers/Hour0To11Parser.js","webpack://mba-web-client/./node_modules/date-fns/esm/parse/_lib/parsers/Hour1To24Parser.js","webpack://mba-web-client/./node_modules/date-fns/esm/parse/_lib/parsers/MinuteParser.js","webpack://mba-web-client/./node_modules/date-fns/esm/parse/_lib/parsers/SecondParser.js","webpack://mba-web-client/./node_modules/date-fns/esm/parse/_lib/parsers/FractionOfSecondParser.js","webpack://mba-web-client/./node_modules/date-fns/esm/parse/_lib/parsers/ISOTimezoneWithZParser.js","webpack://mba-web-client/./node_modules/date-fns/esm/parse/_lib/parsers/ISOTimezoneParser.js","webpack://mba-web-client/./node_modules/date-fns/esm/parse/_lib/parsers/TimestampSecondsParser.js","webpack://mba-web-client/./node_modules/date-fns/esm/parse/_lib/parsers/TimestampMillisecondsParser.js","webpack://mba-web-client/./node_modules/date-fns/esm/parse/_lib/parsers/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/parse/_lib/utils.js","webpack://mba-web-client/./node_modules/date-fns/esm/parse/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/parseISO/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/parseJSON/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/previousDay/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/previousFriday/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/previousMonday/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/previousSaturday/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/previousSunday/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/previousThursday/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/previousTuesday/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/previousWednesday/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/quartersToMonths/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/quartersToYears/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/roundToNearestMinutes/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/secondsToHours/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/secondsToMilliseconds/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/secondsToMinutes/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/set/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/setDate/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/setDay/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/setDayOfYear/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/setDefaultOptions/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/setHours/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/setISODay/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/setISOWeek/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/setISOWeekYear/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/setMilliseconds/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/setMinutes/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/setMonth/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/setQuarter/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/setSeconds/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/setWeek/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/setWeekYear/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/setYear/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/startOfDay/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/startOfDecade/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/startOfHour/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/startOfISOWeek/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/startOfISOWeekYear/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/startOfMinute/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/startOfMonth/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/startOfQuarter/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/startOfSecond/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/startOfToday/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/startOfTomorrow/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/startOfWeek/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/startOfWeekYear/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/startOfYear/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/startOfYesterday/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/sub/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/subBusinessDays/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/subDays/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/subHours/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/subISOWeekYears/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/subMilliseconds/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/subMinutes/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/subMonths/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/subQuarters/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/subSeconds/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/subWeeks/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/subYears/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/toDate/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/weeksToDays/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/yearsToMonths/index.js","webpack://mba-web-client/./node_modules/date-fns/esm/yearsToQuarters/index.js","webpack://mba-web-client/./node_modules/deeks/lib/deeks.js","webpack://mba-web-client/./node_modules/deeks/lib/types.js","webpack://mba-web-client/./node_modules/deeks/lib/utils.js","webpack://mba-web-client/./node_modules/doc-path/lib/path.js","webpack://mba-web-client/./node_modules/domelementtype/lib/index.js","webpack://mba-web-client/./node_modules/domhandler/lib/index.js","webpack://mba-web-client/./node_modules/domhandler/lib/node.js","webpack://mba-web-client/./node_modules/extend/index.js","webpack://mba-web-client/./node_modules/fingerprintjs2/fingerprint2.js","webpack://mba-web-client/./node_modules/hast-util-to-jsx-runtime/node_modules/inline-style-parser/index.js","webpack://mba-web-client/./node_modules/hast-util-to-jsx-runtime/node_modules/style-to-object/cjs/index.js","webpack://mba-web-client/./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack://mba-web-client/./node_modules/html-dom-parser/lib/client/constants.js","webpack://mba-web-client/./node_modules/html-dom-parser/lib/client/domparser.js","webpack://mba-web-client/./node_modules/html-dom-parser/lib/client/html-to-dom.js","webpack://mba-web-client/./node_modules/html-dom-parser/lib/client/utilities.js","webpack://mba-web-client/./node_modules/html-react-parser/lib/attributes-to-props.js","webpack://mba-web-client/./node_modules/html-react-parser/lib/dom-to-react.js","webpack://mba-web-client/./node_modules/html-react-parser/lib/index.js","webpack://mba-web-client/./node_modules/html-react-parser/lib/utilities.js","webpack://mba-web-client/./node_modules/inline-style-parser/index.js","webpack://mba-web-client/./node_modules/json-2-csv/lib/constants.js","webpack://mba-web-client/./node_modules/json-2-csv/lib/converter.js","webpack://mba-web-client/./node_modules/json-2-csv/lib/csv2json.js","webpack://mba-web-client/./node_modules/json-2-csv/lib/json2csv.js","webpack://mba-web-client/./node_modules/json-2-csv/lib/utils.js","webpack://mba-web-client/./node_modules/lodash.camelcase/index.js","webpack://mba-web-client/./node_modules/lodash.debounce/index.js","webpack://mba-web-client/./node_modules/lodash.lowercase/index.js","webpack://mba-web-client/./node_modules/lodash.snakecase/index.js","webpack://mba-web-client/./node_modules/lodash/_DataView.js","webpack://mba-web-client/./node_modules/lodash/_Hash.js","webpack://mba-web-client/./node_modules/lodash/_ListCache.js","webpack://mba-web-client/./node_modules/lodash/_Map.js","webpack://mba-web-client/./node_modules/lodash/_MapCache.js","webpack://mba-web-client/./node_modules/lodash/_Promise.js","webpack://mba-web-client/./node_modules/lodash/_Set.js","webpack://mba-web-client/./node_modules/lodash/_Stack.js","webpack://mba-web-client/./node_modules/lodash/_Symbol.js","webpack://mba-web-client/./node_modules/lodash/_Uint8Array.js","webpack://mba-web-client/./node_modules/lodash/_WeakMap.js","webpack://mba-web-client/./node_modules/lodash/_arrayEach.js","webpack://mba-web-client/./node_modules/lodash/_arrayFilter.js","webpack://mba-web-client/./node_modules/lodash/_arrayLikeKeys.js","webpack://mba-web-client/./node_modules/lodash/_arrayPush.js","webpack://mba-web-client/./node_modules/lodash/_assignValue.js","webpack://mba-web-client/./node_modules/lodash/_assocIndexOf.js","webpack://mba-web-client/./node_modules/lodash/_baseAssign.js","webpack://mba-web-client/./node_modules/lodash/_baseAssignIn.js","webpack://mba-web-client/./node_modules/lodash/_baseAssignValue.js","webpack://mba-web-client/./node_modules/lodash/_baseClone.js","webpack://mba-web-client/./node_modules/lodash/_baseCreate.js","webpack://mba-web-client/./node_modules/lodash/_baseGetAllKeys.js","webpack://mba-web-client/./node_modules/lodash/_baseGetTag.js","webpack://mba-web-client/./node_modules/lodash/_baseIsArguments.js","webpack://mba-web-client/./node_modules/lodash/_baseIsMap.js","webpack://mba-web-client/./node_modules/lodash/_baseIsNative.js","webpack://mba-web-client/./node_modules/lodash/_baseIsSet.js","webpack://mba-web-client/./node_modules/lodash/_baseIsTypedArray.js","webpack://mba-web-client/./node_modules/lodash/_baseKeys.js","webpack://mba-web-client/./node_modules/lodash/_baseKeysIn.js","webpack://mba-web-client/./node_modules/lodash/_baseTimes.js","webpack://mba-web-client/./node_modules/lodash/_baseTrim.js","webpack://mba-web-client/./node_modules/lodash/_baseUnary.js","webpack://mba-web-client/./node_modules/lodash/_cloneArrayBuffer.js","webpack://mba-web-client/./node_modules/lodash/_cloneBuffer.js","webpack://mba-web-client/./node_modules/lodash/_cloneDataView.js","webpack://mba-web-client/./node_modules/lodash/_cloneRegExp.js","webpack://mba-web-client/./node_modules/lodash/_cloneSymbol.js","webpack://mba-web-client/./node_modules/lodash/_cloneTypedArray.js","webpack://mba-web-client/./node_modules/lodash/_copyArray.js","webpack://mba-web-client/./node_modules/lodash/_copyObject.js","webpack://mba-web-client/./node_modules/lodash/_copySymbols.js","webpack://mba-web-client/./node_modules/lodash/_copySymbolsIn.js","webpack://mba-web-client/./node_modules/lodash/_coreJsData.js","webpack://mba-web-client/./node_modules/lodash/_defineProperty.js","webpack://mba-web-client/./node_modules/lodash/_freeGlobal.js","webpack://mba-web-client/./node_modules/lodash/_getAllKeys.js","webpack://mba-web-client/./node_modules/lodash/_getAllKeysIn.js","webpack://mba-web-client/./node_modules/lodash/_getMapData.js","webpack://mba-web-client/./node_modules/lodash/_getNative.js","webpack://mba-web-client/./node_modules/lodash/_getPrototype.js","webpack://mba-web-client/./node_modules/lodash/_getRawTag.js","webpack://mba-web-client/./node_modules/lodash/_getSymbols.js","webpack://mba-web-client/./node_modules/lodash/_getSymbolsIn.js","webpack://mba-web-client/./node_modules/lodash/_getTag.js","webpack://mba-web-client/./node_modules/lodash/_getValue.js","webpack://mba-web-client/./node_modules/lodash/_hashClear.js","webpack://mba-web-client/./node_modules/lodash/_hashDelete.js","webpack://mba-web-client/./node_modules/lodash/_hashGet.js","webpack://mba-web-client/./node_modules/lodash/_hashHas.js","webpack://mba-web-client/./node_modules/lodash/_hashSet.js","webpack://mba-web-client/./node_modules/lodash/_initCloneArray.js","webpack://mba-web-client/./node_modules/lodash/_initCloneByTag.js","webpack://mba-web-client/./node_modules/lodash/_initCloneObject.js","webpack://mba-web-client/./node_modules/lodash/_isIndex.js","webpack://mba-web-client/./node_modules/lodash/_isKeyable.js","webpack://mba-web-client/./node_modules/lodash/_isMasked.js","webpack://mba-web-client/./node_modules/lodash/_isPrototype.js","webpack://mba-web-client/./node_modules/lodash/_listCacheClear.js","webpack://mba-web-client/./node_modules/lodash/_listCacheDelete.js","webpack://mba-web-client/./node_modules/lodash/_listCacheGet.js","webpack://mba-web-client/./node_modules/lodash/_listCacheHas.js","webpack://mba-web-client/./node_modules/lodash/_listCacheSet.js","webpack://mba-web-client/./node_modules/lodash/_mapCacheClear.js","webpack://mba-web-client/./node_modules/lodash/_mapCacheDelete.js","webpack://mba-web-client/./node_modules/lodash/_mapCacheGet.js","webpack://mba-web-client/./node_modules/lodash/_mapCacheHas.js","webpack://mba-web-client/./node_modules/lodash/_mapCacheSet.js","webpack://mba-web-client/./node_modules/lodash/_nativeCreate.js","webpack://mba-web-client/./node_modules/lodash/_nativeKeys.js","webpack://mba-web-client/./node_modules/lodash/_nativeKeysIn.js","webpack://mba-web-client/./node_modules/lodash/_nodeUtil.js","webpack://mba-web-client/./node_modules/lodash/_objectToString.js","webpack://mba-web-client/./node_modules/lodash/_overArg.js","webpack://mba-web-client/./node_modules/lodash/_root.js","webpack://mba-web-client/./node_modules/lodash/_stackClear.js","webpack://mba-web-client/./node_modules/lodash/_stackDelete.js","webpack://mba-web-client/./node_modules/lodash/_stackGet.js","webpack://mba-web-client/./node_modules/lodash/_stackHas.js","webpack://mba-web-client/./node_modules/lodash/_stackSet.js","webpack://mba-web-client/./node_modules/lodash/_toSource.js","webpack://mba-web-client/./node_modules/lodash/_trimmedEndIndex.js","webpack://mba-web-client/./node_modules/lodash/before.js","webpack://mba-web-client/./node_modules/lodash/cloneDeep.js","webpack://mba-web-client/./node_modules/lodash/debounce.js","webpack://mba-web-client/./node_modules/lodash/eq.js","webpack://mba-web-client/./node_modules/lodash/fp.js","webpack://mba-web-client/./node_modules/lodash/fp/_baseConvert.js","webpack://mba-web-client/./node_modules/lodash/fp/_mapping.js","webpack://mba-web-client/./node_modules/lodash/fp/placeholder.js","webpack://mba-web-client/./node_modules/lodash/isArguments.js","webpack://mba-web-client/./node_modules/lodash/isArray.js","webpack://mba-web-client/./node_modules/lodash/isArrayLike.js","webpack://mba-web-client/./node_modules/lodash/isBuffer.js","webpack://mba-web-client/./node_modules/lodash/isFunction.js","webpack://mba-web-client/./node_modules/lodash/isLength.js","webpack://mba-web-client/./node_modules/lodash/isMap.js","webpack://mba-web-client/./node_modules/lodash/isObject.js","webpack://mba-web-client/./node_modules/lodash/isObjectLike.js","webpack://mba-web-client/./node_modules/lodash/isSet.js","webpack://mba-web-client/./node_modules/lodash/isSymbol.js","webpack://mba-web-client/./node_modules/lodash/isTypedArray.js","webpack://mba-web-client/./node_modules/lodash/keys.js","webpack://mba-web-client/./node_modules/lodash/keysIn.js","webpack://mba-web-client/./node_modules/lodash/lodash.min.js","webpack://mba-web-client/./node_modules/lodash/now.js","webpack://mba-web-client/./node_modules/lodash/once.js","webpack://mba-web-client/./node_modules/lodash/stubArray.js","webpack://mba-web-client/./node_modules/lodash/stubFalse.js","webpack://mba-web-client/./node_modules/lodash/toFinite.js","webpack://mba-web-client/./node_modules/lodash/toInteger.js","webpack://mba-web-client/./node_modules/lodash/toNumber.js","webpack://mba-web-client/./node_modules/mixpanel-browser/dist/mixpanel.cjs.js","webpack://mba-web-client/./node_modules/navigator.locks/dist/index.umd.js","webpack://mba-web-client/./node_modules/normalize-wheel/index.js","webpack://mba-web-client/./node_modules/normalize-wheel/src/ExecutionEnvironment.js","webpack://mba-web-client/./node_modules/normalize-wheel/src/UserAgent_DEPRECATED.js","webpack://mba-web-client/./node_modules/normalize-wheel/src/isEventSupported.js","webpack://mba-web-client/./node_modules/normalize-wheel/src/normalizeWheel.js","webpack://mba-web-client/./node_modules/object-assign/index.js","webpack://mba-web-client/./node_modules/opentok-react/dist/OTPublisher.js","webpack://mba-web-client/./node_modules/opentok-react/dist/OTSession.js","webpack://mba-web-client/./node_modules/opentok-react/dist/OTStreams.js","webpack://mba-web-client/./node_modules/opentok-react/dist/OTSubscriber.js","webpack://mba-web-client/./node_modules/opentok-react/dist/OTSubscriberContext.js","webpack://mba-web-client/./node_modules/opentok-react/dist/createSession.js","webpack://mba-web-client/./node_modules/opentok-react/dist/index.js","webpack://mba-web-client/./node_modules/opentok-react/dist/preloadScript.js","webpack://mba-web-client/./node_modules/opentok-react/node_modules/prop-types/factoryWithThrowingShims.js","webpack://mba-web-client/./node_modules/opentok-react/node_modules/prop-types/index.js","webpack://mba-web-client/./node_modules/opentok-react/node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://mba-web-client/./node_modules/prop-types/factoryWithThrowingShims.js","webpack://mba-web-client/./node_modules/prop-types/index.js","webpack://mba-web-client/./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://mba-web-client/./node_modules/pubnub/dist/web/pubnub.min.js","webpack://mba-web-client/./node_modules/qr.js/lib/8BitByte.js","webpack://mba-web-client/./node_modules/qr.js/lib/BitBuffer.js","webpack://mba-web-client/./node_modules/qr.js/lib/ErrorCorrectLevel.js","webpack://mba-web-client/./node_modules/qr.js/lib/Polynomial.js","webpack://mba-web-client/./node_modules/qr.js/lib/QRCode.js","webpack://mba-web-client/./node_modules/qr.js/lib/RSBlock.js","webpack://mba-web-client/./node_modules/qr.js/lib/math.js","webpack://mba-web-client/./node_modules/qr.js/lib/mode.js","webpack://mba-web-client/./node_modules/qr.js/lib/util.js","webpack://mba-web-client/./node_modules/react-compound-slider/dist/rcs.esm.js","webpack://mba-web-client/./node_modules/react-device-detect/dist/lib.js","webpack://mba-web-client/./node_modules/react-device-detect/node_modules/ua-parser-js/dist/ua-parser.min.js","webpack://mba-web-client/./node_modules/react-display-name/lib/getDisplayName.js","webpack://mba-web-client/./node_modules/react-dom/cjs/react-dom.production.min.js","webpack://mba-web-client/./node_modules/react-dom/client.js","webpack://mba-web-client/./node_modules/react-dom/index.js","webpack://mba-web-client/./node_modules/react-easy-crop/node_modules/tslib/tslib.es6.js","webpack://mba-web-client/./node_modules/react-easy-crop/index.module.js","webpack://mba-web-client/./node_modules/react-easy-swipe/lib/index.js","webpack://mba-web-client/./node_modules/react-easy-swipe/lib/react-swipe.js","webpack://mba-web-client/./node_modules/react-easy-swipe/node_modules/prop-types/factoryWithThrowingShims.js","webpack://mba-web-client/./node_modules/react-easy-swipe/node_modules/prop-types/index.js","webpack://mba-web-client/./node_modules/react-easy-swipe/node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://mba-web-client/./node_modules/react-facebook-login/dist/facebook-login-render-props.js","webpack://mba-web-client/./node_modules/react-fast-compare/index.js","webpack://mba-web-client/./node_modules/react-helmet/es/Helmet.js","webpack://mba-web-client/./node_modules/react-helmet/node_modules/prop-types/factoryWithThrowingShims.js","webpack://mba-web-client/./node_modules/react-helmet/node_modules/prop-types/index.js","webpack://mba-web-client/./node_modules/react-helmet/node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://mba-web-client/./node_modules/react-hotjar/index.js","webpack://mba-web-client/./node_modules/react-hotjar/src/react-hotjar.js","webpack://mba-web-client/./node_modules/react-is/cjs/react-is.production.min.js","webpack://mba-web-client/./node_modules/react-is/index.js","webpack://mba-web-client/./node_modules/react-property/lib/index.js","webpack://mba-web-client/./node_modules/react-property/lib/possibleStandardNamesOptimized.js","webpack://mba-web-client/./node_modules/react-qr-code/lib/QRCodeSvg/index.js","webpack://mba-web-client/./node_modules/react-qr-code/lib/index.js","webpack://mba-web-client/./node_modules/react-redux/es/utils/batch.js","webpack://mba-web-client/./node_modules/react-redux/es/components/Context.js","webpack://mba-web-client/./node_modules/react-redux/es/hooks/useReduxContext.js","webpack://mba-web-client/./node_modules/react-redux/es/hooks/useSelector.js","webpack://mba-web-client/./node_modules/react-redux/node_modules/@babel/runtime/helpers/esm/extends.js","webpack://mba-web-client/./node_modules/react-redux/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://mba-web-client/./node_modules/react-redux/es/connect/selectorFactory.js","webpack://mba-web-client/./node_modules/react-redux/es/connect/wrapMapToProps.js","webpack://mba-web-client/./node_modules/react-redux/es/connect/invalidArgFactory.js","webpack://mba-web-client/./node_modules/react-redux/es/connect/mergeProps.js","webpack://mba-web-client/./node_modules/react-redux/es/utils/Subscription.js","webpack://mba-web-client/./node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","webpack://mba-web-client/./node_modules/react-redux/es/utils/shallowEqual.js","webpack://mba-web-client/./node_modules/react-redux/es/components/connect.js","webpack://mba-web-client/./node_modules/react-redux/es/connect/mapStateToProps.js","webpack://mba-web-client/./node_modules/react-redux/es/connect/mapDispatchToProps.js","webpack://mba-web-client/./node_modules/react-redux/es/utils/bindActionCreators.js","webpack://mba-web-client/./node_modules/react-redux/es/components/Provider.js","webpack://mba-web-client/./node_modules/react-redux/es/hooks/useStore.js","webpack://mba-web-client/./node_modules/react-redux/es/hooks/useDispatch.js","webpack://mba-web-client/./node_modules/react-redux/es/index.js","webpack://mba-web-client/./node_modules/react-redux/es/utils/useSyncExternalStore.js","webpack://mba-web-client/./node_modules/react-redux/node_modules/react-is/cjs/react-is.production.min.js","webpack://mba-web-client/./node_modules/react-redux/node_modules/react-is/index.js","webpack://mba-web-client/./node_modules/react-responsive-carousel/lib/js/CSSTranslate.js","webpack://mba-web-client/./node_modules/react-responsive-carousel/lib/js/components/Carousel/animations.js","webpack://mba-web-client/./node_modules/react-responsive-carousel/lib/js/components/Carousel/index.js","webpack://mba-web-client/./node_modules/react-responsive-carousel/lib/js/components/Carousel/utils.js","webpack://mba-web-client/./node_modules/react-responsive-carousel/lib/js/components/Thumbs.js","webpack://mba-web-client/./node_modules/react-responsive-carousel/lib/js/cssClasses.js","webpack://mba-web-client/./node_modules/react-responsive-carousel/lib/js/dimensions.js","webpack://mba-web-client/./node_modules/react-responsive-carousel/lib/js/index.js","webpack://mba-web-client/./node_modules/react-responsive-carousel/lib/js/shims/document.js","webpack://mba-web-client/./node_modules/react-responsive-carousel/lib/js/shims/window.js","webpack://mba-web-client/./node_modules/react-responsive-carousel/node_modules/classnames/index.js","webpack://mba-web-client/./node_modules/react-router-dom-last-location/dist/index.es.js","webpack://mba-web-client/./node_modules/react-router-dom/dist/index.js","webpack://mba-web-client/./node_modules/react-router/dist/index.js","webpack://mba-web-client/./node_modules/react-side-effect/lib/index.js","webpack://mba-web-client/./node_modules/react-webcam/dist/react-webcam.js","webpack://mba-web-client/./node_modules/react/cjs/react-jsx-runtime.production.min.js","webpack://mba-web-client/./node_modules/react/cjs/react.production.min.js","webpack://mba-web-client/./node_modules/react/index.js","webpack://mba-web-client/./node_modules/react/jsx-runtime.js","webpack://mba-web-client/./node_modules/redux-logger/dist/redux-logger.js","webpack://mba-web-client/./node_modules/redux-thunk/es/index.js","webpack://mba-web-client/./node_modules/redux/node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://mba-web-client/./node_modules/redux/node_modules/@babel/runtime/helpers/esm/objectSpread2.js","webpack://mba-web-client/./node_modules/redux/es/redux.js","webpack://mba-web-client/./node_modules/scheduler/cjs/scheduler.production.min.js","webpack://mba-web-client/./node_modules/scheduler/index.js","webpack://mba-web-client/./node_modules/scriptjs/dist/script.js","webpack://mba-web-client/./node_modules/semver/classes/comparator.js","webpack://mba-web-client/./node_modules/semver/classes/range.js","webpack://mba-web-client/./node_modules/semver/classes/semver.js","webpack://mba-web-client/./node_modules/semver/functions/clean.js","webpack://mba-web-client/./node_modules/semver/functions/cmp.js","webpack://mba-web-client/./node_modules/semver/functions/coerce.js","webpack://mba-web-client/./node_modules/semver/functions/compare-build.js","webpack://mba-web-client/./node_modules/semver/functions/compare-loose.js","webpack://mba-web-client/./node_modules/semver/functions/compare.js","webpack://mba-web-client/./node_modules/semver/functions/diff.js","webpack://mba-web-client/./node_modules/semver/functions/eq.js","webpack://mba-web-client/./node_modules/semver/functions/gt.js","webpack://mba-web-client/./node_modules/semver/functions/gte.js","webpack://mba-web-client/./node_modules/semver/functions/inc.js","webpack://mba-web-client/./node_modules/semver/functions/lt.js","webpack://mba-web-client/./node_modules/semver/functions/lte.js","webpack://mba-web-client/./node_modules/semver/functions/major.js","webpack://mba-web-client/./node_modules/semver/functions/minor.js","webpack://mba-web-client/./node_modules/semver/functions/neq.js","webpack://mba-web-client/./node_modules/semver/functions/parse.js","webpack://mba-web-client/./node_modules/semver/functions/patch.js","webpack://mba-web-client/./node_modules/semver/functions/prerelease.js","webpack://mba-web-client/./node_modules/semver/functions/rcompare.js","webpack://mba-web-client/./node_modules/semver/functions/rsort.js","webpack://mba-web-client/./node_modules/semver/functions/satisfies.js","webpack://mba-web-client/./node_modules/semver/functions/sort.js","webpack://mba-web-client/./node_modules/semver/functions/valid.js","webpack://mba-web-client/./node_modules/semver/index.js","webpack://mba-web-client/./node_modules/semver/internal/constants.js","webpack://mba-web-client/./node_modules/semver/internal/debug.js","webpack://mba-web-client/./node_modules/semver/internal/identifiers.js","webpack://mba-web-client/./node_modules/semver/internal/lrucache.js","webpack://mba-web-client/./node_modules/semver/internal/parse-options.js","webpack://mba-web-client/./node_modules/semver/internal/re.js","webpack://mba-web-client/./node_modules/semver/ranges/gtr.js","webpack://mba-web-client/./node_modules/semver/ranges/intersects.js","webpack://mba-web-client/./node_modules/semver/ranges/ltr.js","webpack://mba-web-client/./node_modules/semver/ranges/max-satisfying.js","webpack://mba-web-client/./node_modules/semver/ranges/min-satisfying.js","webpack://mba-web-client/./node_modules/semver/ranges/min-version.js","webpack://mba-web-client/./node_modules/semver/ranges/outside.js","webpack://mba-web-client/./node_modules/semver/ranges/simplify.js","webpack://mba-web-client/./node_modules/semver/ranges/subset.js","webpack://mba-web-client/./node_modules/semver/ranges/to-comparators.js","webpack://mba-web-client/./node_modules/semver/ranges/valid.js","webpack://mba-web-client/./node_modules/style-to-js/cjs/index.js","webpack://mba-web-client/./node_modules/style-to-js/cjs/utilities.js","webpack://mba-web-client/./node_modules/style-to-object/cjs/index.js","webpack://mba-web-client/./node_modules/tslib/tslib.es6.js","webpack://mba-web-client/./node_modules/ua-parser-js/src/ua-parser.js","webpack://mba-web-client/./node_modules/universal-cookie/es6/utils.js","webpack://mba-web-client/./node_modules/universal-cookie/es6/index.js","webpack://mba-web-client/./node_modules/universal-cookie/es6/Cookies.js","webpack://mba-web-client/./node_modules/universal-cookie/node_modules/cookie/index.js","webpack://mba-web-client/./node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","webpack://mba-web-client/./node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js","webpack://mba-web-client/./node_modules/use-sync-external-store/shim/index.js","webpack://mba-web-client/./node_modules/use-sync-external-store/shim/with-selector.js","webpack://mba-web-client/./node_modules/uuid/index.js","webpack://mba-web-client/./node_modules/uuid/lib/bytesToUuid.js","webpack://mba-web-client/./node_modules/uuid/lib/rng-browser.js","webpack://mba-web-client/./node_modules/uuid/v1.js","webpack://mba-web-client/./node_modules/uuid/v4.js","webpack://mba-web-client/./node_modules/void-elements/index.js","webpack://mba-web-client/./node_modules/warning/warning.js","webpack://mba-web-client/./node_modules/react-loading-skeleton/dist/index.cjs","webpack://mba-web-client/./node_modules/@firebase/app/dist/esm/index.esm2017.js","webpack://mba-web-client/./node_modules/@firebase/component/dist/esm/index.esm2017.js","webpack://mba-web-client/./node_modules/@firebase/logger/dist/esm/index.esm2017.js","webpack://mba-web-client/./node_modules/comma-separated-tokens/index.js","webpack://mba-web-client/./node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://mba-web-client/./node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://mba-web-client/./node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://mba-web-client/./node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://mba-web-client/./node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","webpack://mba-web-client/./node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/createSuper.js","webpack://mba-web-client/./node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://mba-web-client/./node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://mba-web-client/./node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://mba-web-client/./node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","webpack://mba-web-client/./node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://mba-web-client/./node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://mba-web-client/./node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://mba-web-client/./node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://mba-web-client/./node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://mba-web-client/./node_modules/date-fns/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://mba-web-client/./node_modules/decode-named-character-reference/index.dom.js","webpack://mba-web-client/./node_modules/devlop/lib/default.js","webpack://mba-web-client/./node_modules/estree-util-is-identifier-name/lib/index.js","webpack://mba-web-client/./node_modules/firebase/app/dist/esm/index.esm.js","webpack://mba-web-client/./node_modules/@firebase/auth/dist/esm2017/index-2cab5241.js","webpack://mba-web-client/./node_modules/@firebase/database/dist/index.esm2017.js","webpack://mba-web-client/./node_modules/@firebase/installations/dist/esm/index.esm2017.js","webpack://mba-web-client/./node_modules/@firebase/messaging/dist/esm/index.esm2017.js","webpack://mba-web-client/./node_modules/hast-util-to-jsx-runtime/node_modules/style-to-object/esm/index.mjs","webpack://mba-web-client/./node_modules/hast-util-to-jsx-runtime/lib/index.js","webpack://mba-web-client/./node_modules/hast-util-whitespace/lib/index.js","webpack://mba-web-client/./node_modules/hls.js/dist/hls.mjs","webpack://mba-web-client/./node_modules/html-react-parser/esm/index.mjs","webpack://mba-web-client/./node_modules/html-url-attributes/lib/index.js","webpack://mba-web-client/./node_modules/i18next/dist/esm/i18next.js","webpack://mba-web-client/./node_modules/idb/build/wrap-idb-value.js","webpack://mba-web-client/./node_modules/idb/build/index.js","webpack://mba-web-client/./node_modules/jose/dist/browser/lib/buffer_utils.js","webpack://mba-web-client/./node_modules/jose/dist/browser/runtime/base64url.js","webpack://mba-web-client/./node_modules/jose/dist/browser/util/errors.js","webpack://mba-web-client/./node_modules/jose/dist/browser/runtime/webcrypto.js","webpack://mba-web-client/./node_modules/jose/dist/browser/lib/crypto_key.js","webpack://mba-web-client/./node_modules/jose/dist/browser/lib/invalid_key_input.js","webpack://mba-web-client/./node_modules/jose/dist/browser/runtime/is_key_like.js","webpack://mba-web-client/./node_modules/jose/dist/browser/lib/is_object.js","webpack://mba-web-client/./node_modules/jose/dist/browser/lib/is_jwk.js","webpack://mba-web-client/./node_modules/jose/dist/browser/runtime/jwk_to_key.js","webpack://mba-web-client/./node_modules/jose/dist/browser/runtime/normalize_key.js","webpack://mba-web-client/./node_modules/jose/dist/browser/runtime/sign.js","webpack://mba-web-client/./node_modules/jose/dist/browser/runtime/get_sign_verify_key.js","webpack://mba-web-client/./node_modules/jose/dist/browser/runtime/check_key_length.js","webpack://mba-web-client/./node_modules/jose/dist/browser/runtime/subtle_dsa.js","webpack://mba-web-client/./node_modules/jose/dist/browser/lib/is_disjoint.js","webpack://mba-web-client/./node_modules/jose/dist/browser/lib/check_key_type.js","webpack://mba-web-client/./node_modules/jose/dist/browser/lib/validate_crit.js","webpack://mba-web-client/./node_modules/jose/dist/browser/jws/flattened/sign.js","webpack://mba-web-client/./node_modules/jose/dist/browser/jws/compact/sign.js","webpack://mba-web-client/./node_modules/jose/dist/browser/lib/epoch.js","webpack://mba-web-client/./node_modules/jose/dist/browser/lib/secs.js","webpack://mba-web-client/./node_modules/jose/dist/browser/jwt/produce.js","webpack://mba-web-client/./node_modules/jose/dist/browser/jwt/sign.js","webpack://mba-web-client/./node_modules/mdast-util-from-markdown/lib/index.js","webpack://mba-web-client/./node_modules/mdast-util-to-hast/lib/footer.js","webpack://mba-web-client/./node_modules/mdast-util-to-hast/lib/handlers/list-item.js","webpack://mba-web-client/./node_modules/mdast-util-to-hast/lib/handlers/index.js","webpack://mba-web-client/./node_modules/mdast-util-to-hast/lib/handlers/blockquote.js","webpack://mba-web-client/./node_modules/mdast-util-to-hast/lib/handlers/break.js","webpack://mba-web-client/./node_modules/mdast-util-to-hast/lib/handlers/code.js","webpack://mba-web-client/./node_modules/mdast-util-to-hast/lib/handlers/delete.js","webpack://mba-web-client/./node_modules/mdast-util-to-hast/lib/handlers/emphasis.js","webpack://mba-web-client/./node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js","webpack://mba-web-client/./node_modules/mdast-util-to-hast/lib/handlers/heading.js","webpack://mba-web-client/./node_modules/mdast-util-to-hast/lib/handlers/html.js","webpack://mba-web-client/./node_modules/mdast-util-to-hast/lib/handlers/image-reference.js","webpack://mba-web-client/./node_modules/mdast-util-to-hast/lib/handlers/image.js","webpack://mba-web-client/./node_modules/mdast-util-to-hast/lib/handlers/inline-code.js","webpack://mba-web-client/./node_modules/mdast-util-to-hast/lib/handlers/link-reference.js","webpack://mba-web-client/./node_modules/mdast-util-to-hast/lib/handlers/link.js","webpack://mba-web-client/./node_modules/mdast-util-to-hast/lib/handlers/list.js","webpack://mba-web-client/./node_modules/mdast-util-to-hast/lib/handlers/paragraph.js","webpack://mba-web-client/./node_modules/mdast-util-to-hast/lib/handlers/root.js","webpack://mba-web-client/./node_modules/mdast-util-to-hast/lib/handlers/strong.js","webpack://mba-web-client/./node_modules/mdast-util-to-hast/lib/handlers/table.js","webpack://mba-web-client/./node_modules/mdast-util-to-hast/lib/handlers/table-cell.js","webpack://mba-web-client/./node_modules/mdast-util-to-hast/lib/handlers/table-row.js","webpack://mba-web-client/./node_modules/mdast-util-to-hast/lib/handlers/text.js","webpack://mba-web-client/./node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js","webpack://mba-web-client/./node_modules/mdast-util-to-hast/lib/index.js","webpack://mba-web-client/./node_modules/mdast-util-to-hast/lib/revert.js","webpack://mba-web-client/./node_modules/mdast-util-to-hast/lib/state.js","webpack://mba-web-client/./node_modules/mdast-util-to-hast/node_modules/@ungap/structured-clone/esm/deserialize.js","webpack://mba-web-client/./node_modules/mdast-util-to-hast/node_modules/@ungap/structured-clone/esm/serialize.js","webpack://mba-web-client/./node_modules/mdast-util-to-hast/node_modules/@ungap/structured-clone/esm/index.js","webpack://mba-web-client/./node_modules/mdast-util-to-hast/node_modules/@ungap/structured-clone/esm/types.js","webpack://mba-web-client/./node_modules/mdast-util-to-string/lib/index.js","webpack://mba-web-client/./node_modules/micromark-core-commonmark/lib/blank-line.js","webpack://mba-web-client/./node_modules/micromark-factory-space/index.js","webpack://mba-web-client/./node_modules/micromark-util-character/index.js","webpack://mba-web-client/./node_modules/micromark-util-chunked/index.js","webpack://mba-web-client/./node_modules/micromark-util-combine-extensions/index.js","webpack://mba-web-client/./node_modules/micromark-util-decode-numeric-character-reference/index.js","webpack://mba-web-client/./node_modules/micromark-util-decode-string/index.js","webpack://mba-web-client/./node_modules/micromark-util-normalize-identifier/index.js","webpack://mba-web-client/./node_modules/micromark-util-resolve-all/index.js","webpack://mba-web-client/./node_modules/micromark-util-sanitize-uri/index.js","webpack://mba-web-client/./node_modules/micromark-util-subtokenize/index.js","webpack://mba-web-client/./node_modules/micromark-util-subtokenize/lib/splice-buffer.js","webpack://mba-web-client/./node_modules/micromark-core-commonmark/lib/thematic-break.js","webpack://mba-web-client/./node_modules/micromark-core-commonmark/lib/list.js","webpack://mba-web-client/./node_modules/micromark-core-commonmark/lib/block-quote.js","webpack://mba-web-client/./node_modules/micromark-factory-destination/index.js","webpack://mba-web-client/./node_modules/micromark-factory-label/index.js","webpack://mba-web-client/./node_modules/micromark-factory-title/index.js","webpack://mba-web-client/./node_modules/micromark-factory-whitespace/index.js","webpack://mba-web-client/./node_modules/micromark-core-commonmark/lib/definition.js","webpack://mba-web-client/./node_modules/micromark-core-commonmark/lib/code-indented.js","webpack://mba-web-client/./node_modules/micromark-core-commonmark/lib/heading-atx.js","webpack://mba-web-client/./node_modules/micromark-core-commonmark/lib/setext-underline.js","webpack://mba-web-client/./node_modules/micromark-util-html-tag-name/index.js","webpack://mba-web-client/./node_modules/micromark-core-commonmark/lib/html-flow.js","webpack://mba-web-client/./node_modules/micromark-core-commonmark/lib/code-fenced.js","webpack://mba-web-client/./node_modules/micromark-core-commonmark/lib/character-reference.js","webpack://mba-web-client/./node_modules/micromark-core-commonmark/lib/character-escape.js","webpack://mba-web-client/./node_modules/micromark-core-commonmark/lib/line-ending.js","webpack://mba-web-client/./node_modules/micromark-core-commonmark/lib/label-end.js","webpack://mba-web-client/./node_modules/micromark-core-commonmark/lib/label-start-image.js","webpack://mba-web-client/./node_modules/micromark-util-classify-character/index.js","webpack://mba-web-client/./node_modules/micromark-core-commonmark/lib/attention.js","webpack://mba-web-client/./node_modules/micromark-core-commonmark/lib/autolink.js","webpack://mba-web-client/./node_modules/micromark-core-commonmark/lib/html-text.js","webpack://mba-web-client/./node_modules/micromark-core-commonmark/lib/label-start-link.js","webpack://mba-web-client/./node_modules/micromark-core-commonmark/lib/hard-break-escape.js","webpack://mba-web-client/./node_modules/micromark-core-commonmark/lib/code-text.js","webpack://mba-web-client/./node_modules/micromark/lib/constructs.js","webpack://mba-web-client/./node_modules/micromark/lib/create-tokenizer.js","webpack://mba-web-client/./node_modules/micromark/lib/initialize/content.js","webpack://mba-web-client/./node_modules/micromark/lib/initialize/document.js","webpack://mba-web-client/./node_modules/micromark-core-commonmark/lib/content.js","webpack://mba-web-client/./node_modules/micromark/lib/initialize/flow.js","webpack://mba-web-client/./node_modules/micromark/lib/initialize/text.js","webpack://mba-web-client/./node_modules/micromark/lib/parse.js","webpack://mba-web-client/./node_modules/micromark/lib/postprocess.js","webpack://mba-web-client/./node_modules/micromark/lib/preprocess.js","webpack://mba-web-client/./node_modules/property-information/lib/util/merge.js","webpack://mba-web-client/./node_modules/property-information/lib/util/create.js","webpack://mba-web-client/./node_modules/property-information/lib/xlink.js","webpack://mba-web-client/./node_modules/property-information/lib/xml.js","webpack://mba-web-client/./node_modules/property-information/lib/util/case-insensitive-transform.js","webpack://mba-web-client/./node_modules/property-information/lib/xmlns.js","webpack://mba-web-client/./node_modules/property-information/lib/aria.js","webpack://mba-web-client/./node_modules/property-information/lib/html.js","webpack://mba-web-client/./node_modules/property-information/lib/svg.js","webpack://mba-web-client/./node_modules/property-information/index.js","webpack://mba-web-client/./node_modules/property-information/lib/find.js","webpack://mba-web-client/./node_modules/property-information/lib/hast-to-react.js","webpack://mba-web-client/./node_modules/property-information/lib/normalize.js","webpack://mba-web-client/./node_modules/property-information/lib/util/case-sensitive-transform.js","webpack://mba-web-client/./node_modules/property-information/lib/util/defined-info.js","webpack://mba-web-client/./node_modules/property-information/lib/util/info.js","webpack://mba-web-client/./node_modules/property-information/lib/util/schema.js","webpack://mba-web-client/./node_modules/property-information/lib/util/types.js","webpack://mba-web-client/./node_modules/decode-uri-component/index.js","webpack://mba-web-client/./node_modules/split-on-first/index.js","webpack://mba-web-client/./node_modules/filter-obj/index.js","webpack://mba-web-client/./node_modules/query-string/base.js","webpack://mba-web-client/./node_modules/query-string/index.js","webpack://mba-web-client/./node_modules/react-i18next/dist/es/i18nInstance.js","webpack://mba-web-client/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://mba-web-client/./node_modules/html-parse-stringify/dist/html-parse-stringify.module.js","webpack://mba-web-client/./node_modules/react-i18next/dist/es/utils.js","webpack://mba-web-client/./node_modules/react-i18next/dist/es/unescape.js","webpack://mba-web-client/./node_modules/react-i18next/dist/es/defaults.js","webpack://mba-web-client/./node_modules/react-i18next/dist/es/TransWithoutContext.js","webpack://mba-web-client/./node_modules/react-i18next/dist/es/initReactI18next.js","webpack://mba-web-client/./node_modules/react-i18next/dist/es/context.js","webpack://mba-web-client/./node_modules/react-i18next/dist/es/Trans.js","webpack://mba-web-client/./node_modules/react-i18next/dist/es/useTranslation.js","webpack://mba-web-client/./node_modules/react-i18next/dist/es/withTranslation.js","webpack://mba-web-client/./node_modules/react-i18next/dist/es/Translation.js","webpack://mba-web-client/./node_modules/react-i18next/dist/es/I18nextProvider.js","webpack://mba-web-client/./node_modules/react-i18next/dist/es/useSSR.js","webpack://mba-web-client/./node_modules/react-i18next/dist/es/withSSR.js","webpack://mba-web-client/./node_modules/react-i18next/dist/es/index.js","webpack://mba-web-client/./node_modules/react-loading-skeleton/dist/index.js","webpack://mba-web-client/./node_modules/react-markdown/lib/index.js","webpack://mba-web-client/./node_modules/remark-parse/lib/index.js","webpack://mba-web-client/./node_modules/remark-rehype/lib/index.js","webpack://mba-web-client/./node_modules/space-separated-tokens/index.js","webpack://mba-web-client/./node_modules/trim-lines/index.js","webpack://mba-web-client/./node_modules/bail/index.js","webpack://mba-web-client/./node_modules/unified/node_modules/is-plain-obj/index.js","webpack://mba-web-client/./node_modules/trough/lib/index.js","webpack://mba-web-client/./node_modules/unified/lib/callable-instance.js","webpack://mba-web-client/./node_modules/unified/lib/index.js","webpack://mba-web-client/./node_modules/unist-util-is/lib/index.js","webpack://mba-web-client/./node_modules/unist-util-position/lib/index.js","webpack://mba-web-client/./node_modules/unist-util-stringify-position/lib/index.js","webpack://mba-web-client/./node_modules/unist-util-visit-parents/lib/color.js","webpack://mba-web-client/./node_modules/unist-util-visit-parents/lib/index.js","webpack://mba-web-client/./node_modules/unist-util-visit/lib/index.js","webpack://mba-web-client/./node_modules/vfile-message/lib/index.js","webpack://mba-web-client/./node_modules/vfile/lib/index.js","webpack://mba-web-client/./node_modules/vfile/lib/minpath.browser.js","webpack://mba-web-client/./node_modules/vfile/lib/minproc.browser.js","webpack://mba-web-client/./node_modules/vfile/lib/minurl.browser.js","webpack://mba-web-client/./node_modules/vfile/lib/minurl.shared.js"],"sourcesContent":["const hasOwn = {}.hasOwnProperty;\nfunction classNames(...args) {\n let classes = \"\";\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n if (arg) {\n classes = appendClass(classes, parseValue(arg));\n }\n }\n return classes;\n}\nfunction parseValue(arg) {\n if (typeof arg === \"string\") {\n return arg;\n }\n if (typeof arg !== \"object\") {\n return \"\";\n }\n if (Array.isArray(arg)) {\n return classNames(...arg);\n }\n if (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes(\"[native code]\")) {\n return arg.toString();\n }\n let classes = \"\";\n for (const key in arg) {\n if (hasOwn.call(arg, key) && arg[key]) {\n classes = appendClass(classes, key);\n }\n }\n return classes;\n}\nfunction appendClass(value, newClass) {\n if (!newClass) {\n return value;\n }\n return value ? (value + \" \" + newClass) : newClass;\n}\n\nexport { classNames as default };\n//# sourceMappingURL=classnames.js.map\n","var e=[],t=[];function n(n,r){if(n&&\"undefined\"!=typeof document){var a,s=!0===r.prepend?\"prepend\":\"append\",d=!0===r.singleTag,i=\"string\"==typeof r.container?document.querySelector(r.container):document.getElementsByTagName(\"head\")[0];if(d){var u=e.indexOf(i);-1===u&&(u=e.push(i)-1,t[u]={}),a=t[u]&&t[u][s]?t[u][s]:t[u][s]=c();}else a=c();65279===n.charCodeAt(0)&&(n=n.substring(1)),a.styleSheet?a.styleSheet.cssText+=n:a.appendChild(document.createTextNode(n));}function c(){var e=document.createElement(\"style\");if(e.setAttribute(\"type\",\"text/css\"),r.attributes)for(var t=Object.keys(r.attributes),n=0;n {\n const getTitleClassName = () => classNames(modules_a1601a7d[`title-${fontStyle}`], {\n [modules_a1601a7d[\"title-bold\"]]: bold,\n [modules_a1601a7d[\"skeleton\"]]: loading,\n [modules_a1601a7d[`skeleton-${fontStyle}`]]: loading\n });\n const renderEllipsisTitle = () => (React.createElement(\"div\", { className: modules_a1601a7d[\"title-ellipsis-text\"], style: { \"--rows\": maxRows }, suppressHydrationWarning: true },\n React.createElement(\"span\", { className: getTitleClassName(), ...rest, \"data-testid\": \"mbw-title-container\", style: { whiteSpace: \"pre-line\" }, suppressHydrationWarning: true }, children)));\n const renderRegularTitle = () => (React.createElement(\"span\", { className: getTitleClassName(), style: { \"--rows\": maxRows }, ...rest, \"data-testid\": \"mbw-title-container\", suppressHydrationWarning: true }, children));\n const renderTitle = () => {\n if (ellipsis)\n return renderEllipsisTitle();\n return renderRegularTitle();\n };\n return renderTitle();\n};\n\nexport { Title as default };\n//# sourceMappingURL=title.js.map\n","import n from '../../node_modules/rollup-plugin-styles/dist/runtime/inject-css.js';\n\nvar css = \"@keyframes mbw_animationBzdot9__ced52ea7{0%{background-position:-200px 0}to{background-position:calc(200px + 100%) 0}}.mbw_skeleton__ced52ea7{display:flex;position:relative}.mbw_skeleton__ced52ea7:after{-webkit-animation:mbw_animationBzdot9__ced52ea7 1.2s ease-in-out infinite;animation:mbw_animationBzdot9__ced52ea7 1.2s ease-in-out infinite;background-color:#eee!important;background-image:linear-gradient(90deg,#eee,#f5f5f5,#eee);background-repeat:no-repeat;background-size:200px 100%;contain-intrinsic-size:auto 1px auto 1px;content:\\\"\\\";display:flex;height:100%;left:0;line-height:1;max-width:100%;pointer-events:none;position:absolute;top:0;width:100%}.mbw_icon__ced52ea7 svg{overflow:visible}\";\nvar modules_e00953a9 = {\"skeleton\":\"mbw_skeleton__ced52ea7\",\"animation-bzdot9\":\"mbw_animationBzdot9__ced52ea7\",\"icon\":\"mbw_icon__ced52ea7\"};\nn(css,{});\n\nexport { css, modules_e00953a9 as default };\n//# sourceMappingURL=icon.module.scss.js.map\n","import React, { useState } from 'react';\nimport classNames from '../../classnames.js';\nimport modules_e00953a9 from './icon.module.scss.js';\n\nconst Icon = (props) => {\n const { className, children, width, height, parentRef, dataTestId, loading } = props;\n const [iconPath, setIconPath] = useState(null);\n const updateSvgHandler = (colorSvg, childrenObject) => {\n const result = React.Children.map(childrenObject, (child) => {\n if (React.isValidElement(child) && (child.type === \"path\" || child.type === \"circle\" || child.type === \"mask\")) {\n const originalProps = child.props || {};\n let updatedProps = {\n ...originalProps,\n stroke: colorSvg\n };\n if (originalProps && originalProps.fill) {\n updatedProps = { ...updatedProps, fill: colorSvg };\n }\n return React.cloneElement(child, updatedProps);\n }\n return child;\n });\n setIconPath(result);\n };\n const updateSvg = (colorSvg) => {\n const result = React.Children.map(children, (child) => {\n if (React.isValidElement(child) && child.type === \"svg\") {\n return child.props.children;\n }\n return child;\n });\n updateSvgHandler(colorSvg, result);\n };\n const getParentTextColor = () => {\n let textColor = null;\n if (parentRef?.current) {\n const computedStyle = window.getComputedStyle(parentRef.current);\n textColor = computedStyle.getPropertyValue(\"color\");\n }\n return textColor;\n };\n const getIconColorByClassName = () => {\n let iconColor = null;\n if (className) {\n const elements = document.getElementsByClassName(className);\n for (let i = 0; i < elements.length; i++) {\n iconColor = window.getComputedStyle(elements[i], null).getPropertyValue(\"color\");\n }\n }\n return iconColor;\n };\n React.useEffect(() => {\n if (parentRef?.current) {\n const textColor = getParentTextColor();\n updateSvg(textColor);\n }\n if (parentRef?.current?.disabled) {\n updateSvg(\"#ffffff\");\n }\n if (className) {\n const iconColor = getIconColorByClassName();\n updateSvg(iconColor);\n }\n }, [parentRef, className]);\n React.useEffect(() => {\n const handleMouseOver = () => {\n if (parentRef?.current) {\n const hoverColor = getParentTextColor();\n updateSvg(hoverColor);\n }\n };\n const handleMouseLeave = () => {\n const prevColor = getIconColorByClassName() || getParentTextColor();\n updateSvg(prevColor || \"#121212\");\n };\n if (parentRef?.current && !parentRef.current.disabled) {\n parentRef.current.addEventListener(\"mouseover\", handleMouseOver);\n parentRef.current.addEventListener(\"mouseleave\", handleMouseLeave);\n }\n return () => {\n if (parentRef?.current && !parentRef.current.disabled) {\n parentRef.current.removeEventListener(\"mouseover\", handleMouseOver);\n parentRef.current.removeEventListener(\"mouseleave\", handleMouseLeave);\n }\n };\n }, [parentRef]);\n const getViewBox = () => {\n if (React.isValidElement(children) && children.type === \"svg\" && children.props.viewBox) {\n return children.props.viewBox;\n }\n return \"0 0 24 24\";\n };\n const getSvgClassName = () => classNames(modules_e00953a9.icon, className, { [modules_e00953a9.skeleton]: loading });\n const getSvgWidth = () => {\n let w = \"25\";\n if (className) {\n const elements = document.getElementsByClassName(className);\n for (let i = 0; i < elements.length; i++) {\n const style = window.getComputedStyle(elements[i], null);\n w = style.width;\n }\n }\n if (width)\n w = width;\n return w;\n };\n const getSvgHeight = () => {\n let h = \"25\";\n if (className) {\n const elements = document.getElementsByClassName(className);\n for (let i = 0; i < elements.length; i++) {\n const style = window.getComputedStyle(elements[i], null);\n h = style.height;\n }\n }\n if (height)\n h = height;\n return h;\n };\n const renderIcon = () => (React.createElement(\"div\", { className: getSvgClassName(), \"data-testid\": dataTestId },\n React.createElement(\"svg\", { width: getSvgWidth(), height: getSvgHeight(), \n // fill=\"#FFFFFF\"\n fill: 'transparent', viewBox: getViewBox(), xmlns: \"http://www.w3.org/2000/svg\" }, iconPath || children)));\n return renderIcon();\n};\n\nexport { Icon as default };\n//# sourceMappingURL=icon.js.map\n","import React, { useRef } from 'react';\nimport Title from '../../atoms/title/title.js';\nimport Icon from '../../atoms/icon/icon.js';\n\nconst getClassName = (title, type, dynemicHeight) => {\n let className = title ? `mbw-button-${type}` : `mbw-button-${type} mbw-button-no-title`;\n className = dynemicHeight ? className + \" mbw-button-dynemic-height\" : className;\n return className;\n};\nconst Button = ({ title, type = \"primary\", icon, onClick, disabled = false, dynemicHeight = false }) => {\n const buttonRef = useRef(null);\n const renderIcon = () => (icon ? (React.createElement(\"div\", { \"data-testid\": \"mbw-button-icon\", className: \"mbw-button--button-icon-container\" },\n React.createElement(Icon, { parentRef: buttonRef, className: \"mbw-button--button-icon\" }, icon))) : null);\n const renderTitle = () => title ? (React.createElement(\"div\", { \"data-testid\": \"mbw-button-title\", className: \"mbw-button--center-text\" },\n React.createElement(Title, { fontStyle: \"content-default\", bold: true }, title))) : null;\n return (React.createElement(\"button\", { \"data-testid\": \"mbw-button\", ref: buttonRef, className: getClassName(title, type, dynemicHeight), onClick: onClick, disabled: disabled },\n React.createElement(\"div\", { className: \"mbw-button--center\" },\n renderIcon(),\n renderTitle())));\n};\n\nexport { Button as default };\n//# sourceMappingURL=button.js.map\n","import React, { useRef, useState, useEffect } from 'react';\nimport Title from '../../atoms/title/title.js';\n\nconst Picker = ({ options, placeholder = \"\", onOptionSelected, title, description }) => {\n const pickerButtonRef = useRef(null);\n const [isOpen, setIsOpen] = useState(false);\n const [overlayTop, setOverlayTop] = useState(0);\n const [selectedIndex, setSelectedIndex] = useState(null);\n useEffect(() => {\n setOverlayTop((pickerButtonRef.current?.offsetHeight || 0) + 10);\n }, [pickerButtonRef.current?.offsetHeight]);\n const arrow = (React.createElement(\"svg\", { className: `mbw-picker--carret ${isOpen ? \"mbw-picker--carret--open\" : \"mbw-picker--carret--closed\"}`, width: 15, height: 15, viewBox: \"0 0 25 25\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\" },\n React.createElement(\"path\", { d: \"M19 9L12 15L5 9\", stroke: \"#121212\", strokeWidth: \"1.5\", strokeLinecap: \"round\", strokeLinejoin: \"round\" })));\n const onPickerClick = () => {\n setIsOpen(!isOpen);\n };\n const onOptionClick = (option, index) => {\n setSelectedIndex(index);\n setIsOpen(!isOpen);\n if (onOptionSelected) {\n onOptionSelected(option, index);\n }\n };\n const renderTitle = () => {\n if (title) {\n return React.createElement(Title, { fontStyle: \"content-default\" }, title);\n }\n return null;\n };\n const renderDescription = () => {\n if (description) {\n return React.createElement(\"div\", { className: \"mbw-picker--title\" },\n React.createElement(Title, { fontStyle: \"content-default\" }, description));\n }\n return null;\n };\n return (React.createElement(\"div\", null,\n renderTitle(),\n React.createElement(\"div\", { className: \"mbw-picker\" },\n React.createElement(\"button\", { \"data-testid\": \"mbw-picker-button\", ref: pickerButtonRef, onClick: onPickerClick, className: \"mbw-picker--button\" },\n React.createElement(Title, { fontStyle: \"content-default\" }, selectedIndex !== null ? options[selectedIndex].title : placeholder),\n arrow),\n isOpen ? (React.createElement(\"ul\", { style: { top: overlayTop || 0 }, className: \"mbw-picker--overlay\" }, options.map((o, index) => React.createElement(\"li\", { \"data-testid\": \"mbw-picker-option\", className: `mbw-picker--option${selectedIndex === index ? \" mbw-picker--option--selected\" : \"\"}`, onClick: () => { onOptionClick(o, index); }, key: o.value },\n React.createElement(Title, { fontStyle: \"content-default\" }, o.title))))) : null),\n renderDescription()));\n};\n//mbw-picker--option--selected\n\nexport { Picker as default };\n//# sourceMappingURL=picker.js.map\n","import React, { useRef } from 'react';\nimport Title from '../../atoms/title/title.js';\nimport Icon from '../../atoms/icon/icon.js';\n\nconst MenuItem = ({ title, icon, active = false, label }) => {\n const className = active ? \"mbw-menu-item-active\" : \"mbw-menu-item\";\n const itemRef = useRef(null);\n const renderMenuItemIcon = () => icon ? (React.createElement(\"div\", { \"data-testid\": \"mbw-menu-item-icon\" },\n React.createElement(Icon, { className: \"mbw-menu-item-icon\", parentRef: itemRef }, icon))) : null;\n const renderMenuItemTitle = () => title ? (React.createElement(\"div\", { \"data-testid\": \"mbw-menu-item-title\", className: \"mbw-menu-item-title\" },\n React.createElement(Title, { fontStyle: \"heading-h6\" }, title))) : null;\n return (React.createElement(\"div\", { \"data-testid\": \"mbw-menu-item\", ref: itemRef, className: className },\n React.createElement(\"div\", { className: \"mbw-menu-item-icon-and-title\" },\n renderMenuItemIcon(),\n renderMenuItemTitle()),\n label || null));\n};\n\nexport { MenuItem as default };\n//# sourceMappingURL=menu_item.js.map\n","import React from 'react';\n\nconst defaultAvatarUrl = \"data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' width='100' height='100' viewBox='0 0 100% 100%' fill='none'%3e%3crect width='100%' height='100%' fill='%23D0D0D0'/%3e%3cg clip-path='url(%23clip0_1143_48193)'%3e%3ccircle cx='49.9996' cy='35.5552' r='12.2222' fill='%239C9C9C'/%3e%3cellipse cx='49.9998' cy='65.5552' rx='21.1111' ry='12.2222' fill='%239C9C9C'/%3e%3c/g%3e%3cdefs%3e%3cclipPath id='clip0_1143_48193'%3e%3cpath d='M0 15C0 6.71573 6.71573 0 15 0H85C93.2843 0 100 6.71573 100 15V85C100 93.2843 93.2843 100 85 100H15C6.71573 100 0 93.2843 0 85V15Z' fill='white'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e\";\nconst Avatar = ({ type = \"round\", size, imgSrc = null, topOverlayContainer, bottomOverlayContainer, transformContainer, hideBorders }) => {\n const renderTransformContainer = () => {\n if (!transformContainer)\n return null;\n return (React.createElement(\"div\", { className: \"mbw-avatar-transform-container-holder\" }, transformContainer));\n };\n const renderTopOverlayContainer = () => {\n if (!topOverlayContainer)\n return React.createElement(\"div\", null);\n return (React.createElement(\"div\", { className: \"mbw-avatar-top-overlay-container\" }, topOverlayContainer));\n };\n const renderBottomOverlayContainer = () => {\n if (!renderBottomOverlayContainer)\n return React.createElement(\"div\", null);\n return (React.createElement(\"div\", { className: \"mbw-avatar-bottom-overlay-container\" }, bottomOverlayContainer));\n };\n const renderOverlaysContainer = () => {\n if (!topOverlayContainer && !bottomOverlayContainer)\n return null;\n return (React.createElement(\"div\", { className: 'mbw-avatar-overlays-container' },\n renderTopOverlayContainer(),\n renderBottomOverlayContainer()));\n };\n const getAvatarUrl = () => {\n if (!imgSrc)\n return defaultAvatarUrl;\n return imgSrc || defaultAvatarUrl;\n };\n const getImgContainerHolderClassName = () => {\n let className = `mbw-avatar-${type}-img-container-holder`;\n if (size)\n className = `mbw-avatar-${type}-${size}-img-container-holder`;\n if (!hideBorders)\n return className;\n Object.keys(hideBorders).forEach((key) => {\n switch (key) {\n case \"leftTop\":\n className = className + \" mbw-avatar-hide-left-top-border-radius\";\n break;\n case \"rightTop\":\n className = className + \" mbw-avatar-hide-right-top-border-radius\";\n break;\n case \"rightBottom\":\n className = className + \" mbw-avatar-hide-right-bottom-border-radius\";\n break;\n case \"leftBottom\":\n className = className + \" mbw-avatar-hide-left-bottom-border-radius\";\n break;\n }\n });\n return className;\n };\n const renderAvatar = () => (React.createElement(\"div\", { className: `mbw-avatar-${type}-container`, \"data-testid\": \"mbw-avatar-container\" },\n React.createElement(\"div\", { className: getImgContainerHolderClassName() },\n React.createElement(\"div\", { className: \"mbw-avatar-img-container\" },\n React.createElement(\"img\", { src: getAvatarUrl(), className: \"mbw-avatar-image\", alt: \"\" })),\n renderOverlaysContainer()),\n renderTransformContainer()));\n return renderAvatar();\n};\n\nexport { Avatar as default };\n//# sourceMappingURL=avatar.js.map\n","import n from '../../node_modules/rollup-plugin-styles/dist/runtime/inject-css.js';\n\nvar css = \"@keyframes mbw_animationBzdot9__b4aabd98{0%{background-position:-200px 0}to{background-position:calc(200px + 100%) 0}}.mbw_statusIndicatorContainer__b4aabd98{align-items:center;display:flex;justify-content:center;width:100%}.mbw_statusIndicatorBigHolder__b4aabd98{padding:.1875rem}.mbw_statusIndicatorBigHolder__b4aabd98,.mbw_statusIndicatorHolder__b4aabd98{background-color:var(--mbw-status-indicator-border-color,#fff);border-radius:31.25rem}.mbw_statusIndicatorHolder__b4aabd98.mbw_default__b4aabd98{padding:.1875rem}@media (max-width:48rem){.mbw_statusIndicatorHolder__b4aabd98.mbw_default__b4aabd98{padding:.125rem}}.mbw_statusIndicatorHolder__b4aabd98.mbw_medium__b4aabd98,.mbw_statusIndicatorHolder__b4aabd98.mbw_small__b4aabd98{padding:.1875rem}.mbw_statusIndicatorHolder__b4aabd98.mbw_small1__b4aabd98{padding:.125rem}.mbw_statusIndicatorOnlineBig__b4aabd98{height:var(--mbw-status-indicator-big-height,1.625rem);width:var(--mbw-status-indicator-big-width,7.5rem)}.mbw_statusIndicatorOnlineBig__b4aabd98,.mbw_statusIndicatorOnlineDefault__b4aabd98{align-items:center;background-color:var(--mbw-status-indicator-online-color,#62dd13);border-radius:31.25rem;color:var(--mbw-status-indicator-text-color,#fff);display:flex;justify-content:center}.mbw_statusIndicatorOnlineDefault__b4aabd98{height:var(--mbw-status-indicator-medium-height,.625rem);width:var(--mbw-status-indicator-medium-width,6.25rem)}@media (max-width:48rem){.mbw_statusIndicatorOnlineDefault__b4aabd98{height:var(--mbw-status-indicator-small-height,.5rem);width:var(--mbw-status-indicator-small-width,4.375rem)}}.mbw_statusIndicatorOnlineMedium__b4aabd98{height:var(--mbw-status-indicator-medium-height,.625rem);width:var(--mbw-status-indicator-medium-width,6.25rem)}.mbw_statusIndicatorOnlineMedium__b4aabd98,.mbw_statusIndicatorOnlineSmall__b4aabd98{align-items:center;background-color:var(--mbw-status-indicator-online-color,#62dd13);border-radius:31.25rem;color:var(--mbw-status-indicator-text-color,#fff);display:flex;justify-content:center}.mbw_statusIndicatorOnlineSmall__b4aabd98{height:var(--mbw-status-indicator-small-height,.5rem);width:var(--mbw-status-indicator-small-width,4.375rem)}.mbw_statusIndicatorOnlineExtraSmall__b4aabd98{height:var(--mbw-status-indicator-extra-small-height,.375rem);width:var(--mbw-status-indicator-extra-small-width,3.125rem)}.mbw_statusIndicatorOnlineExtraSmall1__b4aabd98,.mbw_statusIndicatorOnlineExtraSmall__b4aabd98{align-items:center;background-color:var(--mbw-status-indicator-online-color,#62dd13);border-radius:31.25rem;color:var(--mbw-status-indicator-text-color,#fff);display:flex;justify-content:center}.mbw_statusIndicatorOnlineExtraSmall1__b4aabd98{height:var(--mbw-status-indicator-extra-small-1-height,.1875rem);width:var(--mbw-status-indicator-extra-small-1-width,1.2rem)}.mbw_statusIndicatorOfflineBig__b4aabd98{height:var(--mbw-status-indicator-big-height,1.625rem);width:var(--mbw-status-indicator-big-width,7.5rem)}.mbw_statusIndicatorOfflineBig__b4aabd98,.mbw_statusIndicatorOfflineDefault__b4aabd98{align-items:center;background-color:var(--mbw-status-indicator-offline-color,#d0d0d0);border-radius:31.25rem;color:var(--mbw-status-indicator-text-color,#fff);display:flex;justify-content:center}.mbw_statusIndicatorOfflineDefault__b4aabd98{height:var(--mbw-status-indicator-medium-height,.625rem);width:var(--mbw-status-indicator-medium-width,6.25rem)}@media (max-width:48rem){.mbw_statusIndicatorOfflineDefault__b4aabd98{height:var(--mbw-status-indicator-small-height,.5rem);width:var(--mbw-status-indicator-small-width,4.375rem)}}.mbw_statusIndicatorOfflineMedium__b4aabd98{height:var(--mbw-status-indicator-medium-height,.625rem);width:var(--mbw-status-indicator-medium-width,6.25rem)}.mbw_statusIndicatorOfflineMedium__b4aabd98,.mbw_statusIndicatorOfflineSmall__b4aabd98{align-items:center;background-color:var(--mbw-status-indicator-offline-color,#d0d0d0);border-radius:31.25rem;color:var(--mbw-status-indicator-text-color,#fff);display:flex;justify-content:center}.mbw_statusIndicatorOfflineSmall__b4aabd98{height:var(--mbw-status-indicator-small-height,.5rem);width:var(--mbw-status-indicator-small-width,4.375rem)}.mbw_statusIndicatorOfflineExtraSmall__b4aabd98{height:var(--mbw-status-indicator-extra-small-height,.375rem);width:var(--mbw-status-indicator-extra-small-width,3.125rem)}.mbw_statusIndicatorOfflineExtraSmall1__b4aabd98,.mbw_statusIndicatorOfflineExtraSmall__b4aabd98{align-items:center;background-color:var(--mbw-status-indicator-offline-color,#d0d0d0);border-radius:31.25rem;color:var(--mbw-status-indicator-text-color,#fff);display:flex;justify-content:center}.mbw_statusIndicatorOfflineExtraSmall1__b4aabd98{height:var(--mbw-status-indicator-extra-small-1-height,.1875rem);width:var(--mbw-status-indicator-extra-small-1-width,1.2rem)}.mbw_statusIndicatorBusyBig__b4aabd98{height:var(--mbw-status-indicator-big-height,1.625rem);width:var(--mbw-status-indicator-big-width,7.5rem)}.mbw_statusIndicatorBusyBig__b4aabd98,.mbw_statusIndicatorBusyDefault__b4aabd98{align-items:center;background-color:var(--mbw-status-indicator-busy-color,#ff5a5a);border-radius:31.25rem;color:var(--mbw-status-indicator-text-color,#fff);display:flex;justify-content:center}.mbw_statusIndicatorBusyDefault__b4aabd98{height:var(--mbw-status-indicator-medium-height,.625rem);width:var(--mbw-status-indicator-medium-width,6.25rem)}@media (max-width:48rem){.mbw_statusIndicatorBusyDefault__b4aabd98{height:var(--mbw-status-indicator-small-height,.5rem);width:var(--mbw-status-indicator-small-width,4.375rem)}}.mbw_statusIndicatorBusyMedium__b4aabd98{height:var(--mbw-status-indicator-medium-height,.625rem);width:var(--mbw-status-indicator-medium-width,6.25rem)}.mbw_statusIndicatorBusyMedium__b4aabd98,.mbw_statusIndicatorBusySmall__b4aabd98{align-items:center;background-color:var(--mbw-status-indicator-busy-color,#ff5a5a);border-radius:31.25rem;color:var(--mbw-status-indicator-text-color,#fff);display:flex;justify-content:center}.mbw_statusIndicatorBusySmall__b4aabd98{height:var(--mbw-status-indicator-small-height,.5rem);width:var(--mbw-status-indicator-small-width,4.375rem)}.mbw_statusIndicatorBusyExtraSmall__b4aabd98{height:var(--mbw-status-indicator-extra-small-height,.375rem);width:var(--mbw-status-indicator-extra-small-width,3.125rem)}.mbw_statusIndicatorBusyExtraSmall1__b4aabd98,.mbw_statusIndicatorBusyExtraSmall__b4aabd98{align-items:center;background-color:var(--mbw-status-indicator-busy-color,#ff5a5a);border-radius:31.25rem;color:var(--mbw-status-indicator-text-color,#fff);display:flex;justify-content:center}.mbw_statusIndicatorBusyExtraSmall1__b4aabd98{height:var(--mbw-status-indicator-extra-small-1-height,.1875rem);width:var(--mbw-status-indicator-extra-small-1-width,1.2rem)}\";\nvar modules_9325e332 = {\"status-indicator-container\":\"mbw_statusIndicatorContainer__b4aabd98\",\"status-indicator-big-holder\":\"mbw_statusIndicatorBigHolder__b4aabd98\",\"status-indicator-holder\":\"mbw_statusIndicatorHolder__b4aabd98\",\"default\":\"mbw_default__b4aabd98\",\"medium\":\"mbw_medium__b4aabd98\",\"small\":\"mbw_small__b4aabd98\",\"small-1\":\"mbw_small1__b4aabd98\",\"status-indicator-online-big\":\"mbw_statusIndicatorOnlineBig__b4aabd98\",\"status-indicator-online-default\":\"mbw_statusIndicatorOnlineDefault__b4aabd98\",\"status-indicator-online-medium\":\"mbw_statusIndicatorOnlineMedium__b4aabd98\",\"status-indicator-online-small\":\"mbw_statusIndicatorOnlineSmall__b4aabd98\",\"status-indicator-online-extra-small\":\"mbw_statusIndicatorOnlineExtraSmall__b4aabd98\",\"status-indicator-online-extra-small-1\":\"mbw_statusIndicatorOnlineExtraSmall1__b4aabd98\",\"status-indicator-offline-big\":\"mbw_statusIndicatorOfflineBig__b4aabd98\",\"status-indicator-offline-default\":\"mbw_statusIndicatorOfflineDefault__b4aabd98\",\"status-indicator-offline-medium\":\"mbw_statusIndicatorOfflineMedium__b4aabd98\",\"status-indicator-offline-small\":\"mbw_statusIndicatorOfflineSmall__b4aabd98\",\"status-indicator-offline-extra-small\":\"mbw_statusIndicatorOfflineExtraSmall__b4aabd98\",\"status-indicator-offline-extra-small-1\":\"mbw_statusIndicatorOfflineExtraSmall1__b4aabd98\",\"status-indicator-busy-big\":\"mbw_statusIndicatorBusyBig__b4aabd98\",\"status-indicator-busy-default\":\"mbw_statusIndicatorBusyDefault__b4aabd98\",\"status-indicator-busy-medium\":\"mbw_statusIndicatorBusyMedium__b4aabd98\",\"status-indicator-busy-small\":\"mbw_statusIndicatorBusySmall__b4aabd98\",\"status-indicator-busy-extra-small\":\"mbw_statusIndicatorBusyExtraSmall__b4aabd98\",\"status-indicator-busy-extra-small-1\":\"mbw_statusIndicatorBusyExtraSmall1__b4aabd98\",\"animation-bzdot9\":\"mbw_animationBzdot9__b4aabd98\"};\nn(css,{});\n\nexport { css, modules_9325e332 as default };\n//# sourceMappingURL=status_indicator.module.scss.js.map\n","import React from 'react';\nimport Title from '../title/title.js';\nimport modules_9325e332 from './status_indicator.module.scss.js';\nimport classNames from '../../classnames.js';\n\nconst StatusIndicator = ({ status = \"offline\", size = \"default\", rounded, width, height, loading }) => {\n const renderStatusIndicatorText = () => {\n if (size !== \"big\")\n return null;\n const statusText = status.charAt(0).toUpperCase() + status.slice(1);\n return React.createElement(Title, { fontStyle: \"content-medium\", bold: true }, statusText);\n };\n const getStatusIndicatorContentClassName = () => classNames(modules_9325e332[`status-indicator-${status}-${size}`], {\n [modules_9325e332[\"skeleton\"]]: loading\n });\n if (rounded) {\n return React.createElement(\"div\", { className: getStatusIndicatorContentClassName(), style: { width: width, height: height } });\n }\n return (React.createElement(\"div\", { className: modules_9325e332[\"status-indicator-container\"], \"data-testid\": \"mbw-status-indicator-container\" },\n React.createElement(\"div\", { className: classNames(modules_9325e332[\"status-indicator-holder\"], modules_9325e332[size]) },\n React.createElement(\"div\", { className: getStatusIndicatorContentClassName(), \"data-testid\": \"mbw-status-indicator-content\" }, renderStatusIndicatorText()))));\n};\n\nexport { StatusIndicator as default };\n//# sourceMappingURL=status_indicator.js.map\n","import React, { useState } from 'react';\nimport Title from '../../atoms/title/title.js';\n\nconst Input = ({ title, type, description, disabled, error, leftIcon, rightIcon, maxLength, placeholder, lines, onChange, onKeyDown }) => {\n const [text, setText] = useState(\"\");\n const [textLength, setTextLength] = useState(\"\");\n const characterCount = textLength.length;\n const className = () => {\n let classNameValue = \"mbw-input\";\n if (error)\n classNameValue += \" mbw-input-error\";\n if (leftIcon)\n classNameValue += \" mbw-input-left-icon\";\n return classNameValue;\n };\n const inputRef = React.useRef(null);\n const handleChange = (event) => {\n const newText = event.target.value;\n setText(newText);\n onChange(newText);\n };\n const handleTextareaChange = (e) => {\n setTextLength(e.target.value);\n };\n return (React.createElement(\"div\", null,\n React.createElement(\"label\", null,\n React.createElement(Title, { fontStyle: \"content-small\", bold: true }, title)),\n React.createElement(\"div\", { className: \"mbw-input-wrapper\" }, !lines || lines <= 1 ? (React.createElement(React.Fragment, null,\n leftIcon && React.createElement(\"div\", { className: \"mbw-left-icon\" }, leftIcon),\n React.createElement(\"input\", { className: className(), maxLength: maxLength, placeholder: placeholder || \"Text\", value: text, onChange: handleChange, ref: inputRef, disabled: disabled, \"aria-label\": title, \"data-testid\": title, tabIndex: 0, type: type || \"text\", onKeyDown: onKeyDown }),\n rightIcon && React.createElement(\"div\", { className: \"mbw-right-icon\" }, rightIcon))) : (React.createElement(\"div\", { className: \"mbw-text-area-wrapper\" },\n React.createElement(\"textarea\", { tabIndex: 0, placeholder: placeholder || \"Text\", onChange: handleTextareaChange, className: `mbw-input${error && \" mbw-text-area-error\"}`, disabled: disabled, name: title, rows: lines, maxLength: maxLength || 250 }),\n React.createElement(\"div\", { className: !error ? \"mbw-text-area-characters\" : \"mbw-text-area-characters-error\" },\n React.createElement(Title, { fontStyle: \"caption-1\" },\n characterCount,\n \"/\",\n maxLength || 250))))),\n description && !error && !disabled && (React.createElement(\"div\", { className: \"mbw-input-description\" },\n React.createElement(Title, { fontStyle: \"caption-1\" }, description))),\n error && !disabled && (React.createElement(\"div\", { className: \"mbw-input-error-text\" },\n React.createElement(Title, { fontStyle: \"caption-1\" }, error)))));\n};\n\nexport { Input as default };\n//# sourceMappingURL=input.js.map\n","import React from 'react';\nimport Title from '../../atoms/title/title.js';\n\nconst Footer = ({ links, termsLinks, logo, companyInfo, socialLinks, logoAction }) => {\n return (React.createElement(\"footer\", null,\n React.createElement(\"div\", { className: \"mbw-footer\" },\n React.createElement(\"div\", { className: \"mbw-footer-logo-wrapper\" },\n React.createElement(\"div\", { className: \"mbw-footer-logo\", onClick: logoAction }, logo),\n React.createElement(\"div\", { className: \"mbw-footer-social-media\" }, socialLinks?.map((appLinks) => {\n return (React.createElement(\"a\", { key: appLinks.key, href: appLinks.href, target: \"_blank\", rel: \"noreferrer\" }, appLinks.icon));\n }))),\n React.createElement(\"div\", { className: \"mbw-footer-links\" }, links?.map((link) => (React.createElement(\"div\", { className: \"mbw-footer-link\", key: link.title },\n React.createElement(\"div\", { className: \"mbw-footer-link-title\" },\n React.createElement(Title, { fontStyle: \"content-default\", bold: true }, link.title)),\n link.children.map((itemsLink) => (React.createElement(\"div\", { key: itemsLink.name },\n React.createElement(Title, { fontStyle: \"heading-h6\" },\n React.createElement(\"a\", { className: \"mbw-footer-path\", href: itemsLink.path }, itemsLink.name)))))))))),\n React.createElement(\"div\", { className: \"mbw-footer-terms\" },\n React.createElement(Title, { fontStyle: \"content-small\" }, companyInfo),\n React.createElement(\"div\", { className: \"mbw-footer-terms-links\" }, termsLinks?.map((term) => {\n return (React.createElement(Title, { key: term.path, fontStyle: \"content-small\" },\n React.createElement(\"a\", { href: term.path }, term.name)));\n })))));\n};\n\nexport { Footer as default };\n//# sourceMappingURL=footer.js.map\n","import React from 'react';\nimport Title from '../../atoms/title/title.js';\n\nconst Speciality = ({ type = \"button\", speciality, renderTitle, icon, renderIcon, title }) => {\n const kindCaseCaterpillar = speciality.iconName?.replace(\"_\", \"-\") || \"default\";\n const specialityIcon = icon || speciality.iconUrl;\n const specialityTitle = title || speciality.name;\n let titleFontStyleDesktop;\n let titleFontStyleMobile;\n let descriptionFontStyleDesktop;\n let descriptionFontStyleMobile;\n switch (type) {\n case \"standard\":\n titleFontStyleDesktop = \"heading-h2\";\n descriptionFontStyleDesktop = \"heading-h6\";\n titleFontStyleMobile = \"heading-h2\";\n descriptionFontStyleMobile = \"heading-h6\";\n break;\n case \"button\":\n titleFontStyleDesktop = \"content-small\";\n titleFontStyleMobile = \"caption-1\";\n break;\n case \"advisor-profile\":\n titleFontStyleDesktop = \"content-small\";\n titleFontStyleMobile = speciality.iconName ? \"caption-2\" : \"content-small\";\n break;\n }\n const renderSpecialityIcon = () => (React.createElement(\"div\", { \"data-testid\": \"mbw-speciality-icon\", className: `mbw-speciality-icon-${type}-${kindCaseCaterpillar}` }, renderIcon ? renderIcon() : React.createElement(\"img\", { src: specialityIcon, alt: \"\" })));\n const renderSpecialityTitle = () => (React.createElement(\"div\", { \"data-testid\": \"mbw-speciality-title\", className: `mbw-speciality-title-${type}` }, renderTitle ? renderTitle() : (React.createElement(React.Fragment, null,\n React.createElement(\"div\", { className: `mbw-speciality-title-desktop-${type}` },\n React.createElement(Title, { fontStyle: titleFontStyleDesktop, bold: true }, specialityTitle)),\n React.createElement(\"div\", { className: `mbw-speciality-title-mobile-${type}` },\n React.createElement(Title, { fontStyle: titleFontStyleMobile, bold: true }, specialityTitle))))));\n const renderSpecialityDescription = () => (React.createElement(\"div\", { \"data-testid\": \"mbw-speciality-description\", className: `mbw-speciality-description-${type}` },\n React.createElement(\"div\", { className: \"mbw-speciality-description-desktop\" },\n React.createElement(Title, { fontStyle: descriptionFontStyleDesktop }, speciality.description)),\n React.createElement(\"div\", { className: \"mbw-speciality-description-mobile\" },\n React.createElement(Title, { fontStyle: descriptionFontStyleMobile }, speciality.description))));\n return (React.createElement(\"div\", { \"data-testid\": \"mbw-speciality\", className: `mbw-speciality-${type}-${kindCaseCaterpillar}` },\n React.createElement(\"div\", { \"data-testid\": \"mbw-speciality-content\", className: `mbw-speciality-content-${type}` },\n renderSpecialityIcon(),\n React.createElement(\"div\", { \"data-testid\": \"mbw-speciality-title-content\", className: `mbw-speciality-title-content-${type}` },\n renderSpecialityTitle(),\n renderSpecialityDescription()))));\n};\n\nexport { Speciality as default };\n//# sourceMappingURL=speciality.js.map\n","import React from 'react';\nimport Icon from '../../atoms/icon/icon.js';\nimport Title from '../../atoms/title/title.js';\n\nconst MyOrdersRightArrow = ({ withReview = false, reviewType = null }) => {\n const getRightArrowIconClassName = () => {\n if (withReview && !reviewType)\n return \"mbw-right-arrow-purple\";\n return \"mbw-right-arrow-default\";\n };\n const renderRightArrowIcon = () => (React.createElement(Icon, { width: \"24\", height: \"24\", className: getRightArrowIconClassName(), dataTestId: \"mbw-right-arrow\" },\n React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", fill: \"none\" },\n React.createElement(\"path\", { d: \"M9 19L15 12L9 5\", stroke: \"#121212\", strokeWidth: \"1.5\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }))));\n const renderReviewIcon = () => (React.createElement(Icon, { width: \"24\", height: \"24\", className: `mbw-right-arrow-review-${reviewType}-icon`, dataTestId: \"mbw-right-arrow-review-icon\" },\n React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"25\", height: \"24\", viewBox: \"0 0 25 24\", fill: \"none\" },\n React.createElement(\"circle\", { cx: \"12.5\", cy: \"12\", r: \"10\", stroke: \"#121212\", strokeWidth: \"1.5\" }),\n React.createElement(\"path\", { d: \"M9.5 16C10.3504 16.6303 11.3846 17 12.5 17C13.6154 17 14.6496 16.6303 15.5 16\", stroke: \"#121212\", strokeWidth: \"1.5\", strokeLinecap: \"round\" }),\n React.createElement(\"path\", { d: \"M16 10.5C16 10.8293 15.9101 11.1048 15.7911 11.2833C15.6697 11.4654 15.557 11.5 15.5 11.5C15.443 11.5 15.3303 11.4654 15.2089 11.2833C15.0899 11.1048 15 10.8293 15 10.5C15 10.1707 15.0899 9.89525 15.2089 9.71669C15.3303 9.53464 15.443 9.5 15.5 9.5C15.557 9.5 15.6697 9.53464 15.7911 9.71669C15.9101 9.89525 16 10.1707 16 10.5Z\", stroke: \"#121212\" }),\n React.createElement(\"path\", { d: \"M10 10.5C10 10.8293 9.91012 11.1048 9.79108 11.2833C9.66971 11.4654 9.55695 11.5 9.5 11.5C9.44305 11.5 9.33029 11.4654 9.20892 11.2833C9.08988 11.1048 9 10.8293 9 10.5C9 10.1707 9.08988 9.89525 9.20892 9.71669C9.33029 9.53464 9.44305 9.5 9.5 9.5C9.55695 9.5 9.66971 9.53464 9.79108 9.71669C9.91012 9.89525 10 10.1707 10 10.5Z\", stroke: \"#121212\" }))));\n const renderReview = () => {\n if (!withReview)\n return null;\n if (!reviewType) {\n return (React.createElement(\"div\", { className: 'mbw-right-arrow-review-text-container', \"data-testid\": \"mbw-right-arrow-review-text-container\" },\n React.createElement(Title, { fontStyle: 'content-default', bold: true }, \"Rate and review\")));\n }\n return (React.createElement(\"div\", { className: 'mbw-right-arrow-review-icon-container' }, renderReviewIcon()));\n };\n const renderMyOrdersRightArrow = () => (React.createElement(\"div\", { className: 'mbw-my-orders-right-arrow-container' },\n renderReview(),\n renderRightArrowIcon()));\n return renderMyOrdersRightArrow();\n};\n\nexport { MyOrdersRightArrow as default };\n//# sourceMappingURL=my_orders_right_arrow.js.map\n","import React from 'react';\nimport Avatar from '../../molecules/avatar/avatar.js';\nimport MyOrdersRightArrow from '../../molecules/my_orders_right_arrow/my_orders_right_arrow.js';\nimport Title from '../../atoms/title/title.js';\nimport StatusIndicator from '../../atoms/status_indicator/status_indicator.js';\n\nconst MyOrdersAdvisorCell = ({ type = \"completed\", advisorName = \"Advisor name\", advisorServiceName = \"Psychic reader\", advisorStatus = \"offline\", orderTitle, labels = [] }) => {\n const renderAvatar = () => (React.createElement(React.Fragment, null,\n React.createElement(\"div\", { className: 'mbw-my-orders-advisor-cell-avatar-holder-mobile' },\n React.createElement(Avatar, { type: 'rectangle', size: \"small\", transformContainer: React.createElement(StatusIndicator, { status: advisorStatus, size: \"extra-small-1\" }) })),\n React.createElement(\"div\", { className: 'mbw-my-orders-advisor-cell-avatar-holder-browser' },\n React.createElement(Avatar, { type: 'rectangle', size: \"large\", transformContainer: React.createElement(StatusIndicator, { status: advisorStatus, size: \"extra-small\" }) }))));\n const renderLabel = () => {\n const labelMobile = React.createElement(\"div\", { className: `mbw-my-orders-advisor-cell-${type}-labels-holder-mobile` },\n React.createElement(\"div\", { className: 'mbw-my-orders-advisor-cell-order-title-holder-container', \"data-testid\": \"mbw-my-orders-advisor-cell-order-title-holder-container\" }, orderTitle),\n React.createElement(\"div\", { className: 'mbw-my-orders-advisor-cell-labels-holder-container' }, labels.map((label, index) => (React.createElement(\"div\", { className: 'mbw-my-orders-advisor-cell-label-container', key: index, \"data-testid\": \"mbw-my-orders-advisor-cell-label-container\" }, label)))));\n const labelBrowser = React.createElement(\"div\", { className: `mbw-my-orders-advisor-cell-${type}-labels-holder-browser` },\n React.createElement(\"div\", { className: 'mbw-my-orders-advisor-cell-orderTitle-holder-container', \"data-testid\": \"mbw-my-orders-advisor-cell-orderTitle-holder-container\" }, orderTitle),\n React.createElement(\"div\", { className: 'mbw-my-orders-advisor-cell-labels-holder-container' }, labels.map((label, index) => (React.createElement(\"div\", { className: 'mbw-my-orders-advisor-cell-label-container', key: index, \"data-testid\": \"mbw-my-orders-advisor-cell-label-container\" }, label)))));\n return { labelMobile, labelBrowser };\n };\n const renderMyOrdersAdvisorCell = () => {\n const { labelMobile, labelBrowser } = renderLabel() || {};\n return (React.createElement(\"div\", { className: `mbw-my-orders-advisor-cell-${type}-container`, \"data-testid\": \"mbw-my-orders-advisor-cell-container\" },\n React.createElement(\"div\", { className: 'mbw-my-orders-advisor-cell-advisor-info' },\n React.createElement(\"div\", { className: 'mbw-my-orders-advisor-cell-avatar-service-container' },\n renderAvatar(),\n React.createElement(\"div\", { className: 'mbw-my-orders-advisor-cell-advisor-name-service-and-label-container' },\n React.createElement(\"div\", { className: 'mbw-my-orders-advisor-cell-advisor-name-service-container' },\n React.createElement(\"div\", { \"data-testid\": \"mbw-my-orders-advisor-cell-advisor-name\" },\n React.createElement(Title, { fontStyle: 'heading-h5', bold: true }, advisorName)),\n React.createElement(\"div\", { className: 'mbw-my-orders-advisor-cell-advisor-service-name-container', \"data-testid\": \"mbw-my-orders-advisor-cell-advisor-service-name\" },\n React.createElement(Title, { fontStyle: 'content-default' }, advisorServiceName))),\n labelBrowser)),\n labelMobile),\n React.createElement(\"div\", { className: 'mbw-my-orders-advisor-cell-right-arrow-container' },\n React.createElement(MyOrdersRightArrow, null))));\n };\n return renderMyOrdersAdvisorCell();\n};\n\nexport { MyOrdersAdvisorCell as default };\n//# sourceMappingURL=my_orders_advisor_cell.js.map\n","import n from '../../node_modules/rollup-plugin-styles/dist/runtime/inject-css.js';\n\nvar css = \"@keyframes mbw_animationBzdot9__3a1e751f{0%{background-position:-200px 0}to{background-position:calc(200px + 100%) 0}}.mbw_labelGrayContainer__3a1e751f{align-items:center;background-color:#f7f7f7;border:.063rem solid #eaeaea;border-radius:31.25rem;display:flex;justify-content:center;padding:.1875rem .625rem;width:fit-content}@media (max-width:48rem){.mbw_labelGrayContainer__3a1e751f{padding:.063rem .313rem}}\";\nvar modules_1a8f5c5e = {\"label-gray-container\":\"mbw_labelGrayContainer__3a1e751f\",\"animation-bzdot9\":\"mbw_animationBzdot9__3a1e751f\"};\nn(css,{});\n\nexport { css, modules_1a8f5c5e as default };\n//# sourceMappingURL=label.module.scss.js.map\n","import React from 'react';\nimport modules_1a8f5c5e from './label.module.scss.js';\n\nconst Label = ({ labelType, children }) => {\n const renderLabel = () => (React.createElement(\"div\", { className: modules_1a8f5c5e[`label-${labelType}-container`] }, children));\n return renderLabel();\n};\n\nexport { Label as default };\n//# sourceMappingURL=label.js.map\n","import n from '../../node_modules/rollup-plugin-styles/dist/runtime/inject-css.js';\n\nvar css = \".mbw_myOrdersSectionDividerContainer__9849aaed{align-items:center;display:flex;flex-direction:row;justify-content:center;width:100%}.mbw_myOrdersSectionCompletedDividerTitleContainer__9849aaed{color:var(--mbw-my-orders-section-divider-completed-color,#62dd13);white-space:nowrap}.mbw_myOrdersSectionCompletedDividerLineContainer__9849aaed{background-color:var(--mbw-my-orders-section-divider-completed-color,#62dd13);height:.063rem;margin-left:.313rem;width:100%}.mbw_myOrdersSectionNeedReviewDividerTitleContainer__9849aaed{color:var(--mbw-my-orders-section-divider-need-review-color,#ff8717);white-space:nowrap}.mbw_myOrdersSectionNeedReviewDividerLineContainer__9849aaed{background-color:var(--mbw-my-orders-section-divider-need-review-color,#ff8717);height:.063rem;margin-left:.313rem;width:100%}\";\nvar modules_c372949e = {\"my-orders-section-divider-container\":\"mbw_myOrdersSectionDividerContainer__9849aaed\",\"my-orders-section-completed-divider-title-container\":\"mbw_myOrdersSectionCompletedDividerTitleContainer__9849aaed\",\"my-orders-section-completed-divider-line-container\":\"mbw_myOrdersSectionCompletedDividerLineContainer__9849aaed\",\"my-orders-section-need-review-divider-title-container\":\"mbw_myOrdersSectionNeedReviewDividerTitleContainer__9849aaed\",\"my-orders-section-need-review-divider-line-container\":\"mbw_myOrdersSectionNeedReviewDividerLineContainer__9849aaed\"};\nn(css,{});\n\nexport { css, modules_c372949e as default };\n//# sourceMappingURL=my_orders_section_divider.module.scss.js.map\n","import React from 'react';\nimport Title from '../title/title.js';\nimport modules_c372949e from './my_orders_section_divider.module.scss.js';\n\nconst MyOrdersSectionDivider = ({ type = \"completed\", title = \"Completed\" }) => {\n const renderMyOrdersSectionDivider = () => (React.createElement(\"div\", { className: modules_c372949e[\"my-orders-section-divider-container\"] },\n React.createElement(\"div\", { className: modules_c372949e[`my-orders-section-${type}-divider-title-container`], \"data-testid\": \"mbw-my-orders-section-divider-title-container\" },\n React.createElement(Title, { fontStyle: \"content-default\", bold: true }, title)),\n React.createElement(\"div\", { className: modules_c372949e[`my-orders-section-${type}-divider-line-container`], \"data-testid\": \"mbw-my-orders-section-divider-line-container\" })));\n return renderMyOrdersSectionDivider();\n};\n\nexport { MyOrdersSectionDivider as default };\n//# sourceMappingURL=my_orders_section_divider.js.map\n","import React from 'react';\n\nconst liveChat = React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"30\", height: \"30\", viewBox: \"0 0 30 30\", fill: \"none\" },\n React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M27.5 15C27.5 21.9036 21.9036 27.5 15 27.5C13.0004 27.5 11.1105 27.0305 9.43441 26.1957C8.98901 25.9738 8.47992 25.9 7.99923 26.0286L5.21668 26.7731C4.00877 27.0963 2.90369 25.9912 3.22689 24.7833L3.9714 22.0008C4.10001 21.5201 4.02617 21.011 3.80433 20.5656C2.96952 18.8895 2.5 16.9996 2.5 15C2.5 8.09644 8.09644 2.5 15 2.5C21.9036 2.5 27.5 8.09644 27.5 15ZM10 16.25C9.30964 16.25 8.75 15.6904 8.75 15C8.75 14.3096 9.30964 13.75 10 13.75C10.6904 13.75 11.25 14.3096 11.25 15C11.25 15.6904 10.6904 16.25 10 16.25ZM13.75 15C13.75 15.6904 14.3096 16.25 15 16.25C15.6904 16.25 16.25 15.6904 16.25 15C16.25 14.3096 15.6904 13.75 15 13.75C14.3096 13.75 13.75 14.3096 13.75 15ZM18.75 15C18.75 15.6904 19.3096 16.25 20 16.25C20.6904 16.25 21.25 15.6904 21.25 15C21.25 14.3096 20.6904 13.75 20 13.75C19.3096 13.75 18.75 14.3096 18.75 15Z\", fill: \"#121212\" }));\n\nexport { liveChat };\n//# sourceMappingURL=live_chat.js.map\n","import React from 'react';\n\nconst videoCall = React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"30\", height: \"30\", viewBox: \"0 0 30 30\", fill: \"none\" },\n React.createElement(\"path\", { d: \"M3 8.25C3 6.17893 4.67893 4.5 6.75 4.5H18.75C20.8211 4.5 22.5 6.17893 22.5 8.25V21.75C22.5 23.8211 20.8211 25.5 18.75 25.5H6.75C4.67893 25.5 3 23.8211 3 21.75V8.25Z\", fill: \"#121212\" }),\n React.createElement(\"path\", { d: \"M21 13.1185C21 12.6806 21.1913 12.2646 21.5238 11.9796L26.0238 8.12245C26.9968 7.28844 28.5 7.9798 28.5 9.26133V20.7387C28.5 22.0202 26.9968 22.7116 26.0238 21.8776L21.5238 18.0204C21.1913 17.7354 21 17.3194 21 16.8815V13.1185Z\", fill: \"#121212\" }));\n\nexport { videoCall };\n//# sourceMappingURL=video_call.js.map\n","import React from 'react';\n\nconst voiceCall = React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"30\", height: \"30\", viewBox: \"0 0 30 30\", fill: \"none\" },\n React.createElement(\"path\", { d: \"M10.4904 6.60087L11.403 8.23623C12.2267 9.71207 11.896 11.6481 10.5988 12.9453C10.5988 12.9453 10.5988 12.9453 10.5988 12.9453C10.5987 12.9455 9.02542 14.519 11.8782 17.3718C14.7304 20.2239 16.3038 18.652 16.3047 18.6512C16.3047 18.6512 16.3047 18.6512 16.3047 18.6512C17.6019 17.354 19.5379 17.0233 21.0138 17.847L22.6491 18.7596C24.8777 20.0033 25.1409 23.1286 23.182 25.0875C22.005 26.2645 20.5631 27.1804 18.9691 27.2408C16.2858 27.3425 11.7288 26.6634 7.15771 22.0923C2.58659 17.5212 1.90749 12.9642 2.00921 10.2809C2.06964 8.68694 2.9855 7.24502 4.16254 6.06798C6.12137 4.10915 9.24665 4.37233 10.4904 6.60087Z\", fill: \"#121212\" }),\n React.createElement(\"path\", { d: \"M14.5137 1.91162C14.6096 1.31979 15.1692 0.918319 15.7612 1.01413C15.7979 1.02115 15.9158 1.04318 15.9775 1.05693C16.1011 1.08443 16.2734 1.12678 16.4883 1.18935C16.9179 1.31446 17.5182 1.52058 18.2387 1.85079C19.6811 2.51189 21.6006 3.66837 23.5925 5.6597C25.5844 7.65103 26.7412 9.57001 27.4025 11.012C27.7328 11.7323 27.939 12.3324 28.0642 12.7619C28.1267 12.9767 28.1691 13.149 28.1966 13.2725C28.2104 13.3343 28.2204 13.3839 28.2274 13.4205L28.2358 13.4656C28.3316 14.0575 27.9337 14.6401 27.3417 14.7359C26.7514 14.8314 26.1953 14.4319 26.0971 13.8428C26.094 13.827 26.0857 13.7845 26.0768 13.7445C26.059 13.6643 26.0281 13.5372 25.9791 13.3691C25.8811 13.0328 25.7109 12.5329 25.4284 11.9168C24.864 10.6861 23.8491 8.98658 22.0569 7.1949C20.2647 5.40322 18.5647 4.3886 17.3336 3.82436C16.7173 3.54189 16.2173 3.37177 15.8809 3.27382C15.7128 3.22486 15.5014 3.17635 15.4212 3.1585C14.832 3.06033 14.4182 2.50175 14.5137 1.91162Z\", fill: \"#121212\" }),\n React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M14.8413 6.90437C15.0061 6.3279 15.6071 5.9941 16.1837 6.15881L15.8854 7.20259C16.1837 6.15881 16.1837 6.15881 16.1837 6.15881L16.1858 6.15941L16.188 6.16005L16.1928 6.16146L16.204 6.16481L16.2327 6.17373C16.2545 6.18071 16.2818 6.1898 16.3143 6.20133C16.3793 6.22439 16.4653 6.2572 16.5707 6.30236C16.7816 6.39273 17.0698 6.53229 17.4238 6.74174C18.1325 7.16103 19.0999 7.85749 20.2364 8.99365C21.3728 10.1298 22.0695 11.097 22.4889 11.8054C22.6984 12.1593 22.838 12.4474 22.9284 12.6583C22.9736 12.7637 23.0064 12.8496 23.0295 12.9146C23.041 12.9471 23.0501 12.9743 23.0571 12.9962L23.066 13.0248L23.0694 13.036L23.0708 13.0409L23.0714 13.0431C23.0714 13.0431 23.072 13.0452 22.0279 13.3434L23.072 13.0452C23.2368 13.6216 22.9029 14.2225 22.3262 14.3872C21.7545 14.5505 21.1588 14.2237 20.9881 13.6562L20.9828 13.6406C20.9751 13.6189 20.9591 13.5761 20.9323 13.5135C20.8787 13.3886 20.7816 13.1842 20.62 12.9112C20.2972 12.3659 19.7141 11.542 18.7007 10.5289C17.6873 9.51574 16.8631 8.93287 16.3177 8.61014C16.0447 8.44859 15.8402 8.35147 15.7152 8.29792C15.6526 8.27112 15.6098 8.25515 15.588 8.24743L15.5724 8.24208C15.0048 8.07146 14.6779 7.47594 14.8413 6.90437Z\", fill: \"#121212\" }));\n\nexport { voiceCall };\n//# sourceMappingURL=voice_call.js.map\n","import React from 'react';\n\nconst clock = React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", fill: \"none\" },\n React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22ZM12.75 8C12.75 7.58579 12.4142 7.25 12 7.25C11.5858 7.25 11.25 7.58579 11.25 8V12C11.25 12.1989 11.329 12.3897 11.4697 12.5303L13.9697 15.0303C14.2626 15.3232 14.7374 15.3232 15.0303 15.0303C15.3232 14.7374 15.3232 14.2626 15.0303 13.9697L12.75 11.6893V8Z\", fill: \"#121212\" }));\n\nexport { clock };\n//# sourceMappingURL=clock.js.map\n","import React from 'react';\nimport MyOrdersRightArrow from '../../molecules/my_orders_right_arrow/my_orders_right_arrow.js';\nimport Title from '../../atoms/title/title.js';\nimport Icon from '../../atoms/icon/icon.js';\nimport { liveChat } from './img/live_chat.js';\nimport { videoCall } from './img/video_call.js';\nimport { voiceCall } from './img/voice_call.js';\nimport { clock } from './img/clock.js';\n\nconst MyOrdersOrderCell = ({ type = \"live-chat\", orderSubject, orderCreatedAt, orderDescription, reviewType = null, labels = [] }) => {\n const renderLabel = () => (React.createElement(\"div\", { className: 'mbw-my-orders-order-cell-labels-holder-container' }, labels.map((label, index) => (React.createElement(\"div\", { className: 'mbw-my-orders-order-cell-label-container', key: index, \"data-testid\": \"mbw-my-orders-order-cell-label-container\" }, label)))));\n const getOrderIcon = (icon) => (React.createElement(Icon, { className: `mbw-my-orders-order-cell-${type}-icon`, dataTestId: \"mbw-my-orders-order-cell-icon\" }, icon));\n const renderOrderIcon = () => {\n let orderIcon = null;\n switch (type) {\n case \"live-chat\":\n orderIcon = getOrderIcon(liveChat);\n break;\n case \"video-call\":\n orderIcon = getOrderIcon(videoCall);\n break;\n case \"voice-call\":\n orderIcon = getOrderIcon(voiceCall);\n break;\n default:\n orderIcon = null;\n }\n return orderIcon;\n };\n const renderOrderSubject = () => (React.createElement(\"div\", { className: \"mbw-my-orders-order-cell-subject-container\", \"data-testid\": \"mbw-my-orders-order-cell-subject-container\" },\n React.createElement(Title, { fontStyle: 'heading-h5', bold: true }, orderSubject)));\n const renderOrderTitle = () => (React.createElement(\"div\", { className: \"mbw-my-orders-order-cell-title-container\" },\n renderOrderIcon(),\n renderOrderSubject()));\n const renderOrderCreatedAt = () => (React.createElement(\"div\", { className: \"mbw-my-orders-order-cell-order-created-at-container\", \"data-testid\": \"mbw-my-orders-order-cell-order-created-at-container\" },\n React.createElement(Title, { fontStyle: 'content-default' }, orderCreatedAt)));\n const renderOrderDescription = () => (React.createElement(\"div\", { className: \"mbw-my-orders-order-cell-order-description-container\", \"data-testid\": \"mbw-my-orders-order-cell-order-description-container\" },\n React.createElement(Icon, { className: \"mbw-my-orders-order-cell-order-description-icon\" }, clock),\n React.createElement(Title, { fontStyle: 'content-default' }, orderDescription)));\n const renderMyOrdersAdvisorCell = () => (React.createElement(\"div\", { className: \"mbw-my-orders-order-cell-container\" },\n React.createElement(\"div\", { className: \"mbw-my-orders-order-cell-content-container\" },\n React.createElement(\"div\", { className: \"mbw-my-orders-order-cell-order-title-labels-container\" },\n renderOrderTitle(),\n renderLabel()),\n React.createElement(\"div\", { className: \"mbw-my-orders-order-cell-order-data-container\" },\n renderOrderCreatedAt(),\n renderOrderDescription())),\n React.createElement(\"div\", { className: 'mbw-my-orders-order-cell-right-arrow-container' },\n React.createElement(MyOrdersRightArrow, { withReview: !!reviewType, reviewType: reviewType }))));\n return renderMyOrdersAdvisorCell();\n};\n\nexport { MyOrdersOrderCell as default };\n//# sourceMappingURL=my_orders_order_cell.js.map\n","import React from 'react';\nimport Title from '../../atoms/title/title.js';\nimport Avatar from '../avatar/avatar.js';\n\nconst ChatBubble = ({ message, isUser, time, avatarSrc = null }) => {\n const now = new Date(time);\n const hours = now.getHours();\n const minutes = now.getMinutes();\n const ampm = hours >= 12 ? \"PM\" : \"AM\";\n const hours12 = hours % 12 || 12;\n const formattedHours = hours12.toString().padStart(2, \"0\");\n const formattedMinutes = minutes.toString().padStart(2, \"0\");\n const timeOnBubble = `${formattedHours}:${formattedMinutes} ${ampm}`;\n return (React.createElement(\"div\", { className: `mbw-chat-bubble-wrapper ${isUser ? \"mbw-chat-bubble-wrapper-user\" : \"mbw-chat-bubble-wrapper-other\"}` },\n !isUser && React.createElement(\"div\", { className: \"mbw-chat-bubble-avatar-container\" },\n React.createElement(Avatar, { imgSrc: avatarSrc, type: \"round\", size: \"small\" })),\n React.createElement(\"div\", { className: `mbw-chat-bubble ${isUser ? \"mbw-chat-bubble-user\" : \"mbw-chat-bubble-other\"}` },\n React.createElement(\"div\", { className: \"mbw-chat-bubble-message\" },\n React.createElement(Title, { fontStyle: \"content-medium\" }, message),\n React.createElement(\"div\", { className: \"mbw-chat-bubble-time\" },\n React.createElement(Title, { fontStyle: \"caption-2\" }, timeOnBubble))))));\n};\n\nexport { ChatBubble as default };\n//# sourceMappingURL=chat-bubble.js.map\n","import React from 'react';\nimport Title from '../../atoms/title/title.js';\n\nconst Table = ({ tableColumnsHeaders, data, tableTotalData }) => {\n return (React.createElement(\"div\", { className: \"mbw-table\" },\n React.createElement(\"div\", { className: \"mbw-table-head\" }, tableColumnsHeaders?.map((header) => {\n return (React.createElement(\"div\", { key: header },\n React.createElement(Title, { fontStyle: \"content-medium\", bold: true }, header)));\n })),\n React.createElement(\"div\", { className: \"mbw-table-body\" }, data?.map((item, index) => (React.createElement(\"div\", { key: index, className: \"mbw-table-row\" },\n React.createElement(\"div\", { className: \"mbw-table-item\" },\n React.createElement(Title, { fontStyle: \"content-medium\" }, item?.date)),\n React.createElement(\"div\", { className: \"mbw-table-item\" },\n React.createElement(Title, { fontStyle: \"content-medium\" }, item?.invoiceId)),\n React.createElement(\"div\", { className: \"mbw-table-item\" },\n React.createElement(Title, { fontStyle: \"content-medium\", bold: true },\n item?.paymentData?.currency,\n item?.paymentData?.amount + \".00\"),\n React.createElement(\"div\", { className: \"mbw-table-item-source\" },\n React.createElement(Title, { fontStyle: \"content-medium\" }, item?.paymentData?.source))))))),\n React.createElement(\"div\", { className: \"mbw-table-total\" },\n React.createElement(Title, { fontStyle: \"content-medium\" },\n tableTotalData?.total?.name,\n \" : \",\n tableTotalData?.total?.amount),\n React.createElement(\"div\", { className: \"mbw-table-total-cash-back\" },\n React.createElement(Title, { bold: true, fontStyle: \"content-medium\" },\n tableTotalData.cashBack.percentage,\n \" \",\n tableTotalData.cashBack.name,\n \" \",\n tableTotalData.cashBack.amount)))));\n};\n\nexport { Table as default };\n//# sourceMappingURL=table.js.map\n","import React, { useCallback } from 'react';\nimport Title from '../../atoms/title/title.js';\n\nconst DurationItem = ({ duration, durationText, durationSubText, mostPopular, selected = false, onDurationSelected, isNewUser = false, topLabel, useYourBalanceText, secondsText, bottomContainer, priceContainer }) => {\n const selectedClassName = (className) => selected ? `${className}-selected` : className;\n const newUserClassName = (className) => isNewUser ? selectedClassName(className) : \"\";\n const renderDurationText = () => (React.createElement(\"div\", { \"data-testid\": \"mbw-duration-item-duration-text\", className: \"mbw-duration-item-duration-text\" },\n React.createElement(Title, { fontStyle: \"heading-h5\", bold: true }, durationText)));\n const renderDurationSecondsText = () => secondsText ? (React.createElement(\"div\", { \"data-testid\": \"mbw-duration-item-duration-seconds-text\", className: \"mbw-duration-item-duration-seconds-text\" }, React.createElement(Title, { fontStyle: \"caption-1\", bold: true }, secondsText))) : null;\n const renderDurationTextMobile = () => (React.createElement(\"div\", { \"data-testid\": \"mbw-duration-item-duration-text\", className: \"mbw-duration-item-duration-text-mobile\" }, isNewUser ? React.createElement(Title, { fontStyle: \"heading-h5\", bold: true }, durationText)\n : React.createElement(Title, { fontStyle: \"heading-h4\", bold: true }, durationText)));\n const renderDuration = () => (React.createElement(\"div\", { className: \"mbw-duration-item-duration-container\" },\n React.createElement(\"div\", { \"data-testid\": \"mbw-duration-item-duration\", className: selectedClassName(\"mbw-duration-item-duration\") }, duration),\n renderDurationText(),\n renderDurationTextMobile(),\n renderDurationSecondsText(),\n durationSubText));\n const renderMostPopular = () => (React.createElement(\"div\", { \"data-testid\": \"mbw-duration-item-most-popular\" }, mostPopular));\n const renderTopLabel = () => (React.createElement(\"div\", { \"data-testid\": \"mbw-duration-item-top-label\" }, topLabel));\n const renderUseYourBalanceText = () => (React.createElement(\"div\", { \"data-testid\": \"mbw-duration-item-current-balance\", className: \"mbw-duration-item-current-balance\" },\n React.createElement(Title, { fontStyle: \"content-small\", bold: true }, useYourBalanceText)));\n const renderAdditionalText = useCallback(() => {\n if (useYourBalanceText)\n return renderUseYourBalanceText();\n return priceContainer;\n }, [useYourBalanceText]);\n return (React.createElement(\"div\", { \"data-testid\": \"mbw-duration-item\", className: selectedClassName(\"mbw-duration-item\") + newUserClassName(\" mbw-duration-item-new-user\"), onClick: onDurationSelected, onKeyDown: onDurationSelected },\n renderMostPopular(),\n renderTopLabel(),\n renderDuration(),\n renderAdditionalText(),\n bottomContainer));\n};\n\nexport { DurationItem as default };\n//# sourceMappingURL=duration_item.js.map\n","import React from 'react';\nimport Title from '../../atoms/title/title.js';\nimport Icon from '../../atoms/icon/icon.js';\n\nconst FilterTab = ({ type = \"filter\", title, icon, active = false, onClick }) => {\n const activeColorClass = active ? \"mbw-filter-tab-active\" : null;\n const renderIcon = () => (icon ? (React.createElement(Icon, { className: `mbw-filter-tab-${type}-icon ${activeColorClass}`, dataTestId: \"mbw-filter-tab-icon\" }, icon)) : null);\n const renderTitle = () => title ? (React.createElement(\"div\", { \"data-testid\": \"mbw-filter-tab-title\", className: `mbw-filter-tab-${type}-title ${activeColorClass}` },\n React.createElement(Title, { fontStyle: \"content-small\", bold: true }, title))) : null;\n return (React.createElement(\"button\", { \"data-testid\": \"mbw-filter-tab\", className: `mbw-filter-tab-${type} ${activeColorClass}`, onClick: onClick },\n renderIcon(),\n renderTitle()));\n};\n\nexport { FilterTab as default };\n//# sourceMappingURL=filter_tab.js.map\n","import n from '../../node_modules/rollup-plugin-styles/dist/runtime/inject-css.js';\n\nvar css = \".mbw_switchSwitch__b8969350{border:none;display:inline-block;height:1.875rem;position:relative;width:3.125rem}.mbw_switchSwitch__b8969350 input{height:0;opacity:0;width:0}.mbw_switchSlider__b8969350{align-items:center;background-color:var(--mbw-switch-background-color,#d0d0d0);border-radius:2.125rem;bottom:0;cursor:pointer;display:flex;left:0;position:absolute;right:0;top:0;transition:.4s}.mbw_switchSlider__b8969350:before{background-color:var(--mbw-switch-background-color-before,#fff);border-radius:50%;content:\\\"\\\";height:1.563rem;left:.25rem;position:absolute;transition:.4s;width:1.563rem}input:checked+.mbw_switchSlider__b8969350{background-color:var(--mbw-switch-background-color-checked,#62dd13)}input:checked+.mbw_switchSlider__b8969350:before{-webkit-transform:translateX(1.062rem);-ms-transform:translateX(1.062rem);transform:translateX(1.062rem)}\";\nvar modules_21d2064f = {\"switch-switch\":\"mbw_switchSwitch__b8969350\",\"switch-slider\":\"mbw_switchSlider__b8969350\"};\nn(css,{});\n\nexport { css, modules_21d2064f as default };\n//# sourceMappingURL=switch.module.scss.js.map\n","import React from 'react';\nimport modules_21d2064f from './switch.module.scss.js';\n\nconst Switch = ({ id, checked, onChange }) => {\n const onSwitcherChange = (e) => {\n if (!onChange)\n return;\n onChange(e.target.checked);\n };\n const renderSwitch = () => (React.createElement(\"label\", { \"data-testid\": \"mbw-switch\", id: id, htmlFor: `checkbox${id}`, className: modules_21d2064f[\"switch-switch\"] },\n React.createElement(\"input\", { \"data-testid\": \"mbw-switch-slider\", id: `checkbox${id}`, type: \"checkbox\", checked: checked, onChange: onSwitcherChange }),\n React.createElement(\"span\", { className: modules_21d2064f[\"switch-slider\"] })));\n return renderSwitch();\n};\nSwitch.displayName = \"Switch\";\n\nexport { Switch as default };\n//# sourceMappingURL=switch.js.map\n","import React from 'react';\n\nconst playButtonIcon = React.createElement(\"svg\", { width: \"22\", height: \"23\", viewBox: \"0 0 22 23\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\" },\n React.createElement(\"g\", { id: \"Frame 5801\" },\n React.createElement(\"path\", { id: \"Rectangle 1974\", d: \"M5.5 4.91806C5.5 3.73442 6.80673 3.0171 7.80531 3.65256L18.6364 10.5451C19.5626 11.1345 19.5626 12.4866 18.6364 13.076L7.80531 19.9685C6.80673 20.604 5.5 19.8867 5.5 18.703V4.91806Z\", fill: \"white\" })));\n\nexport { playButtonIcon };\n//# sourceMappingURL=play_button_icon.js.map\n","import n from '../../node_modules/rollup-plugin-styles/dist/runtime/inject-css.js';\n\nvar css = \"@keyframes mbw_animationBzdot9__e08598d6{0%{background-position:-200px 0}to{background-position:calc(200px + 100%) 0}}.mbw_skeleton__e08598d6{display:flex;position:relative}.mbw_skeleton__e08598d6:after{-webkit-animation:mbw_animationBzdot9__e08598d6 1.2s ease-in-out infinite;animation:mbw_animationBzdot9__e08598d6 1.2s ease-in-out infinite;background-color:#eee!important;background-image:linear-gradient(90deg,#eee,#f5f5f5,#eee);background-repeat:no-repeat;background-size:200px 100%;contain-intrinsic-size:auto 1px auto 1px;content:\\\"\\\";display:flex;height:100%;left:0;line-height:1;max-width:100%;pointer-events:none;position:absolute;top:0;width:100%}.mbw_playButtonBigContainer__e08598d6{align-items:center;background-color:var(--mbw-play-button-background-color,rgba(0,0,0,.5));border-radius:50%;cursor:pointer;display:flex;height:var(--mbw-play-button-big-height,2.875rem);justify-content:center;overflow:hidden;width:var(--mbw-play-button-big-width,2.875rem)}.mbw_playButtonBigContainer__e08598d6:hover{background-color:var(--mbw-play-button-background-color-hover,#8755f4)}.mbw_playButtonBigIcon__e08598d6{height:var(--mbw-play-button-big-icon-height,1.375rem);width:var(--mbw-play-button-big-icon-width,1.375rem)}.mbw_playButtonDefaultContainer__e08598d6{align-items:center;background-color:var(--mbw-play-button-background-color,rgba(0,0,0,.5));border-radius:50%;cursor:pointer;display:flex;height:var(--mbw-play-button-default-height,2.25rem);justify-content:center;overflow:hidden;width:var(--mbw-play-button-default-width,2.25rem)}.mbw_playButtonDefaultContainer__e08598d6:hover{background-color:var(--mbw-play-button-background-color-hover,#8755f4)}.mbw_playButtonDefaultIcon__e08598d6{height:var(--mbw-play-button-default-icon-height,1rem);width:var(--mbw-play-button-default-icon-width,1rem)}\";\nvar modules_547ff120 = {\"skeleton\":\"mbw_skeleton__e08598d6\",\"animation-bzdot9\":\"mbw_animationBzdot9__e08598d6\",\"play-button-big-container\":\"mbw_playButtonBigContainer__e08598d6\",\"play-button-big-icon\":\"mbw_playButtonBigIcon__e08598d6\",\"play-button-default-container\":\"mbw_playButtonDefaultContainer__e08598d6\",\"play-button-default-icon\":\"mbw_playButtonDefaultIcon__e08598d6\"};\nn(css,{});\n\nexport { css, modules_547ff120 as default };\n//# sourceMappingURL=play_button.module.scss.js.map\n","import React from 'react';\nimport { playButtonIcon } from './img/play_button_icon.js';\nimport Icon from '../icon/icon.js';\nimport classNames from '../../classnames.js';\nimport modules_547ff120 from './play_button.module.scss.js';\n\nconst PlayButton = ({ type = \"default\", onClick, loading = false }) => {\n const getPlayButtonContainerClassName = () => classNames(modules_547ff120[`play-button-${type}-container`], { [modules_547ff120[\"skeleton\"]]: loading });\n const renderPlayButton = () => (React.createElement(\"div\", { className: getPlayButtonContainerClassName(), onClick: onClick, \"data-testid\": \"mbw-play-button-container\" },\n React.createElement(Icon, { className: modules_547ff120[`play-button-${type}-icon`], dataTestId: \"mbw-play-button-icon\" }, playButtonIcon)));\n return renderPlayButton();\n};\n\nexport { PlayButton as default };\n//# sourceMappingURL=play_button.js.map\n","import React from 'react';\n\nconst RatingIcon = React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"20\", height: \"20\", viewBox: \"0 0 20 20\", fill: \"none\" },\n React.createElement(\"path\", { d: \"M7.62796 4.3648C8.6835 2.56594 9.21127 1.6665 10.0003 1.6665C10.7894 1.6665 11.3171 2.56594 12.3727 4.3648L12.6458 4.83019C12.9457 5.34137 13.0957 5.59696 13.3295 5.7656C13.5634 5.93424 13.8546 5.99684 14.4371 6.12204L14.9674 6.23603C17.0171 6.67661 18.042 6.8969 18.2858 7.64179C18.5296 8.38668 17.831 9.16285 16.4336 10.7152L16.0721 11.1168C15.675 11.5579 15.4764 11.7785 15.3871 12.0514C15.2978 12.3242 15.3278 12.6185 15.3878 13.2071L15.4425 13.7429C15.6538 15.8141 15.7594 16.8496 15.121 17.31C14.4827 17.7704 13.5231 17.3506 11.6039 16.5112L11.1074 16.294C10.5621 16.0554 10.2894 15.9362 10.0003 15.9362C9.71128 15.9362 9.4386 16.0555 8.89323 16.294L8.39672 16.5112C6.47755 17.3506 5.51797 17.7704 4.87962 17.31C4.24126 16.8496 4.34689 15.8141 4.55816 13.7429L4.61281 13.2071C4.67285 12.6185 4.70286 12.3242 4.61354 12.0514C4.52422 11.7785 4.32568 11.5579 3.92859 11.1168L3.56707 10.7152C2.1697 9.16285 1.47101 8.38668 1.71484 7.64179C1.95867 6.8969 2.98354 6.67661 5.03327 6.23603L5.56356 6.12204C6.14603 5.99684 6.43727 5.93424 6.67111 5.7656C6.90495 5.59696 7.05493 5.34137 7.35488 4.83019L7.62796 4.3648Z\", fill: \"#FFB222\" }));\n\nexport { RatingIcon };\n//# sourceMappingURL=rating_icon.js.map\n","import n from '../../node_modules/rollup-plugin-styles/dist/runtime/inject-css.js';\n\nvar css = \"@keyframes mbw_animationBzdot9__a4324176{0%{background-position:-200px 0}to{background-position:calc(200px + 100%) 0}}.mbw_ratingDefaultContainer__a4324176{align-items:center;background-color:#fff;border-radius:31.25rem;display:flex;justify-content:center;padding:.5rem .688rem .5rem .625rem}@media (max-width:48rem){.mbw_ratingDefaultContainer__a4324176{padding:.375rem .563rem .375rem .5rem}}.mbw_ratingDefaultIcon__a4324176{height:var(--mbw-medium-big-icon-height,1.2rem);margin-right:var(--mbw-rating-medium-icon-margin-right,.25rem);width:var(--mbw-medium-big-icon-width,1.2rem)}@media (max-width:48rem){.mbw_ratingDefaultIcon__a4324176{height:var(--mbw-small-big-icon-height,1.125rem);margin-right:var(--mbw-rating-small-icon-margin-right,.125rem);width:var(--mbw-small-big-icon-width,1.125rem)}}.mbw_ratingBigContainer__a4324176{align-items:center;background-color:#fff;border-radius:31.25rem;display:flex;justify-content:center;padding:.625rem .813rem .625rem .75rem}.mbw_ratingDefaultIcon__a4324176{align-items:center;color:#ffb222;display:flex;height:var(--mbw-rating-big-icon-height,1.375rem);justify-content:center;margin-right:var(--mbw-rating-big-icon-margin-right,.375rem);width:var(--mbw-rating-big-icon-width,1.375rem)}.mbw_ratingMediumContainer__a4324176{align-items:center;background-color:#fff;border-radius:31.25rem;display:flex;justify-content:center;padding:.5rem .688rem .5rem .625rem}.mbw_ratingMediumIcon__a4324176{align-items:center;color:#ffb222;display:flex;height:var(--mbw-medium-big-icon-height,1.2rem);justify-content:center;margin-right:var(--mbw-rating-medium-icon-margin-right,.25rem);width:var(--mbw-medium-big-icon-width,1.2rem)}.mbw_ratingSmallContainer__a4324176{align-items:center;background-color:#fff;border-radius:31.25rem;display:flex;justify-content:center;padding:.375rem .563rem .375rem .5rem}.mbw_ratingSmallIcon__a4324176{align-items:center;color:#ffb222;display:flex;height:var(--mbw-small-big-icon-height,1.125rem);justify-content:center;margin-right:var(--mbw-rating-small-icon-margin-right,.125rem);width:var(--mbw-small-big-icon-width,1.125rem)}.mbw_ratingBorderContainer__a4324176{border:.063rem solid var(--mbw-default-border,#eaeaea)}\";\nvar modules_a2428c96 = {\"rating-default-container\":\"mbw_ratingDefaultContainer__a4324176\",\"rating-default-icon\":\"mbw_ratingDefaultIcon__a4324176\",\"rating-big-container\":\"mbw_ratingBigContainer__a4324176\",\"rating-medium-container\":\"mbw_ratingMediumContainer__a4324176\",\"rating-medium-icon\":\"mbw_ratingMediumIcon__a4324176\",\"rating-small-container\":\"mbw_ratingSmallContainer__a4324176\",\"rating-small-icon\":\"mbw_ratingSmallIcon__a4324176\",\"rating-border-container\":\"mbw_ratingBorderContainer__a4324176\",\"animation-bzdot9\":\"mbw_animationBzdot9__a4324176\"};\nn(css,{});\n\nexport { css, modules_a2428c96 as default };\n//# sourceMappingURL=rating.module.scss.js.map\n","import React from 'react';\nimport { RatingIcon } from './img/rating_icon.js';\nimport Icon from '../icon/icon.js';\nimport Title from '../title/title.js';\nimport modules_a2428c96 from './rating.module.scss.js';\nimport classNames from '../../classnames.js';\n\nconst Rating = ({ type, rating, withBorder = false, loading }) => {\n const getFontStyle = () => {\n if (type === \"medium\")\n return \"content-medium\";\n if (type === \"small\")\n return \"content-small\";\n return \"content-default\";\n };\n const getRatingContainerClassname = () => classNames(modules_a2428c96[`rating-${type}-container`], {\n [modules_a2428c96[\"rating-border-container\"]]: withBorder\n });\n const renderRating = () => (React.createElement(\"div\", { className: getRatingContainerClassname(), \"data-testid\": \"mbw-rating-container\" },\n React.createElement(Icon, { className: modules_a2428c96[`rating-${type}-icon`], loading: loading }, RatingIcon),\n React.createElement(Title, { fontStyle: getFontStyle(), bold: true, loading: loading }, rating)));\n return renderRating();\n};\n\nexport { Rating as default };\n//# sourceMappingURL=rating.js.map\n","import n from '../../node_modules/rollup-plugin-styles/dist/runtime/inject-css.js';\n\nvar css = \"@keyframes mbw_animationBzdot9__2fa3f755{0%{background-position:-200px 0}to{background-position:calc(200px + 100%) 0}}.mbw_skeleton__2fa3f755{display:flex;position:relative}.mbw_skeleton__2fa3f755:after{-webkit-animation:mbw_animationBzdot9__2fa3f755 1.2s ease-in-out infinite;animation:mbw_animationBzdot9__2fa3f755 1.2s ease-in-out infinite;background-color:#eee!important;background-image:linear-gradient(90deg,#eee,#f5f5f5,#eee);background-repeat:no-repeat;background-size:200px 100%;contain-intrinsic-size:auto 1px auto 1px;content:\\\"\\\";display:flex;height:100%;left:0;line-height:1;max-width:100%;pointer-events:none;position:absolute;top:0;width:100%}.mbw_channelsCardContainer__2fa3f755{align-items:center;display:flex;flex-direction:row;justify-content:center}.mbw_channelsCardBigIconContainer__2fa3f755{background-color:#f7f7f7;border-radius:.625rem;display:flex;margin-left:var(--mbw-rating-big-icon-margin-left,.938rem);padding:var(--mbw-rating-big-icon-padding,.688rem)}.mbw_channelsCardBigIconContainer__2fa3f755:first-of-type{margin-left:0}.mbw_skeletonBig__2fa3f755{height:calc(var(--mbw-channels-card-big-icon-height, 2rem) + var(--mbw-rating-big-icon-padding, .688rem)*2);width:calc(var(--mbw-channels-card-big-icon-width, 2rem) + var(--mbw-rating-big-icon-padding, .688rem)*2)}.mbw_channelsCardBigLiveChatOnlineIcon__2fa3f755{color:var(--mbw-channels-card-live-chat-online-color,#62dd13)}.mbw_channelsCardBigLiveChatOfflineIcon__2fa3f755,.mbw_channelsCardBigLiveChatOnlineIcon__2fa3f755{height:var(--mbw-channels-card-big-icon-height,2rem);width:var(--mbw-channels-card-big-icon-width,2rem)}.mbw_channelsCardBigLiveChatOfflineIcon__2fa3f755{color:var(--mbw-channels-card-live-chat-offline-color,#7c7f89)}.mbw_channelsCardBigLiveChatBusyIcon__2fa3f755,.mbw_channelsCardBigVideoCallOnlineIcon__2fa3f755{height:var(--mbw-channels-card-big-icon-height,2rem);width:var(--mbw-channels-card-big-icon-width,2rem)}.mbw_channelsCardBigVideoCallOnlineIcon__2fa3f755{color:var(--mbw-channels-card-video-call-online-color,#1cb4ff)}.mbw_channelsCardBigVideoCallOfflineIcon__2fa3f755{color:var(--mbw-channels-card-video-call-offline-color,#7c7f89)}.mbw_channelsCardBigVideoCallBusyIcon__2fa3f755,.mbw_channelsCardBigVideoCallOfflineIcon__2fa3f755,.mbw_channelsCardBigVoiceCallOnlineIcon__2fa3f755{height:var(--mbw-channels-card-big-icon-height,2rem);width:var(--mbw-channels-card-big-icon-width,2rem)}.mbw_channelsCardBigVoiceCallOnlineIcon__2fa3f755{color:var(--mbw-channels-card-voice-call-online-color,#8755f4)}.mbw_channelsCardBigVoiceCallOfflineIcon__2fa3f755{color:var(--mbw-channels-card-voice-call-offline-color,#7c7f89)}.mbw_channelsCardBigVoiceCallBusyIcon__2fa3f755,.mbw_channelsCardBigVoiceCallOfflineIcon__2fa3f755{height:var(--mbw-channels-card-big-icon-height,2rem);width:var(--mbw-channels-card-big-icon-width,2rem)}.mbw_channelsCardMediumIconContainer__2fa3f755{background-color:#f7f7f7;border-radius:.625rem;display:flex;margin-left:var(--mbw-rating-medium-icon-margin-left,.438rem);padding:var(--mbw-rating-big-medium-padding,.438rem)}.mbw_channelsCardMediumIconContainer__2fa3f755:first-of-type{margin-left:0}.mbw_skeletonMedium__2fa3f755{height:calc(var(--mbw-channels-card-medium-icon-height, 1.2rem) + var(--mbw-rating-big-medium-padding, .438rem)*2);width:calc(var(--mbw-channels-card-medium-icon-width, 1.2rem) + var(--mbw-rating-big-medium-padding, .438rem)*2)}.mbw_channelsCardMediumLiveChatOnlineIcon__2fa3f755{color:var(--mbw-channels-card-live-chat-online-color,#62dd13)}.mbw_channelsCardMediumLiveChatOfflineIcon__2fa3f755,.mbw_channelsCardMediumLiveChatOnlineIcon__2fa3f755{height:var(--mbw-channels-card-medium-icon-height,1.2rem);width:var(--mbw-channels-card-medium-icon-width,1.2rem)}.mbw_channelsCardMediumLiveChatOfflineIcon__2fa3f755{color:var(--mbw-channels-card-live-chat-offline-color,#7c7f89)}.mbw_channelsCardMediumLiveChatBusyIcon__2fa3f755,.mbw_channelsCardMediumVideoCallOnlineIcon__2fa3f755{height:var(--mbw-channels-card-medium-icon-height,1.2rem);width:var(--mbw-channels-card-medium-icon-width,1.2rem)}.mbw_channelsCardMediumVideoCallOnlineIcon__2fa3f755{color:var(--mbw-channels-card-video-call-online-color,#1cb4ff)}.mbw_channelsCardMediumVideoCallOfflineIcon__2fa3f755{color:var(--mbw-channels-card-video-call-offline-color,#7c7f89)}.mbw_channelsCardMediumVideoCallBusyIcon__2fa3f755,.mbw_channelsCardMediumVideoCallOfflineIcon__2fa3f755,.mbw_channelsCardMediumVoiceCallOnlineIcon__2fa3f755{height:var(--mbw-channels-card-medium-icon-height,1.2rem);width:var(--mbw-channels-card-medium-icon-width,1.2rem)}.mbw_channelsCardMediumVoiceCallOnlineIcon__2fa3f755{color:var(--mbw-channels-card-voice-call-online-color,#8755f4)}.mbw_channelsCardMediumVoiceCallOfflineIcon__2fa3f755{color:var(--mbw-channels-card-voice-call-offline-color,#7c7f89)}.mbw_channelsCardMediumVoiceCallBusyIcon__2fa3f755,.mbw_channelsCardMediumVoiceCallOfflineIcon__2fa3f755{height:var(--mbw-channels-card-medium-icon-height,1.2rem);width:var(--mbw-channels-card-medium-icon-width,1.2rem)}.mbw_channelsCardSmallIconContainer__2fa3f755{background-color:#f7f7f7;border-radius:.625rem;display:flex;margin-left:var(--mbw-rating-small-icon-margin-left,.375rem);padding:var(--mbw-rating-big-small-padding,.313rem)}.mbw_channelsCardSmallIconContainer__2fa3f755:first-of-type{margin-left:0}.mbw_skeletonSmall__2fa3f755{height:calc(var(--mbw-channels-card-small-icon-height, 1.2rem) + var(--mbw-rating-big-small-padding, .313rem)*2);width:calc(var(--mbw-channels-card-small-icon-width, 1.2rem) + var(--mbw-rating-big-small-padding, .313rem)*2)}.mbw_channelsCardSmallLiveChatOnlineIcon__2fa3f755{color:var(--mbw-channels-card-live-chat-online-color,#62dd13)}.mbw_channelsCardSmallLiveChatOfflineIcon__2fa3f755,.mbw_channelsCardSmallLiveChatOnlineIcon__2fa3f755{height:var(--mbw-channels-card-small-icon-height,1.2rem);width:var(--mbw-channels-card-small-icon-width,1.2rem)}.mbw_channelsCardSmallLiveChatOfflineIcon__2fa3f755{color:var(--mbw-channels-card-live-chat-offline-color,#7c7f89)}.mbw_channelsCardSmallLiveChatBusyIcon__2fa3f755,.mbw_channelsCardSmallVideoCallOnlineIcon__2fa3f755{height:var(--mbw-channels-card-small-icon-height,1.2rem);width:var(--mbw-channels-card-small-icon-width,1.2rem)}.mbw_channelsCardSmallVideoCallOnlineIcon__2fa3f755{color:var(--mbw-channels-card-video-call-online-color,#1cb4ff)}.mbw_channelsCardSmallVideoCallOfflineIcon__2fa3f755{color:var(--mbw-channels-card-video-call-offline-color,#7c7f89)}.mbw_channelsCardSmallVideoCallBusyIcon__2fa3f755,.mbw_channelsCardSmallVideoCallOfflineIcon__2fa3f755,.mbw_channelsCardSmallVoiceCallOnlineIcon__2fa3f755{height:var(--mbw-channels-card-small-icon-height,1.2rem);width:var(--mbw-channels-card-small-icon-width,1.2rem)}.mbw_channelsCardSmallVoiceCallOnlineIcon__2fa3f755{color:var(--mbw-channels-card-voice-call-online-color,#8755f4)}.mbw_channelsCardSmallVoiceCallOfflineIcon__2fa3f755{color:var(--mbw-channels-card-voice-call-offline-color,#7c7f89)}.mbw_channelsCardSmallVoiceCallBusyIcon__2fa3f755,.mbw_channelsCardSmallVoiceCallOfflineIcon__2fa3f755{height:var(--mbw-channels-card-small-icon-height,1.2rem);width:var(--mbw-channels-card-small-icon-width,1.2rem)}\";\nvar modules_fbf318e2 = {\"skeleton\":\"mbw_skeleton__2fa3f755\",\"animation-bzdot9\":\"mbw_animationBzdot9__2fa3f755\",\"channels-card-container\":\"mbw_channelsCardContainer__2fa3f755\",\"channels-card-big-icon-container\":\"mbw_channelsCardBigIconContainer__2fa3f755\",\"skeleton-big\":\"mbw_skeletonBig__2fa3f755\",\"channels-card-big-live-chat-online-icon\":\"mbw_channelsCardBigLiveChatOnlineIcon__2fa3f755\",\"channels-card-big-live-chat-offline-icon\":\"mbw_channelsCardBigLiveChatOfflineIcon__2fa3f755\",\"channels-card-big-live-chat-busy-icon\":\"mbw_channelsCardBigLiveChatBusyIcon__2fa3f755\",\"channels-card-big-video-call-online-icon\":\"mbw_channelsCardBigVideoCallOnlineIcon__2fa3f755\",\"channels-card-big-video-call-offline-icon\":\"mbw_channelsCardBigVideoCallOfflineIcon__2fa3f755\",\"channels-card-big-video-call-busy-icon\":\"mbw_channelsCardBigVideoCallBusyIcon__2fa3f755\",\"channels-card-big-voice-call-online-icon\":\"mbw_channelsCardBigVoiceCallOnlineIcon__2fa3f755\",\"channels-card-big-voice-call-offline-icon\":\"mbw_channelsCardBigVoiceCallOfflineIcon__2fa3f755\",\"channels-card-big-voice-call-busy-icon\":\"mbw_channelsCardBigVoiceCallBusyIcon__2fa3f755\",\"channels-card-medium-icon-container\":\"mbw_channelsCardMediumIconContainer__2fa3f755\",\"skeleton-medium\":\"mbw_skeletonMedium__2fa3f755\",\"channels-card-medium-live-chat-online-icon\":\"mbw_channelsCardMediumLiveChatOnlineIcon__2fa3f755\",\"channels-card-medium-live-chat-offline-icon\":\"mbw_channelsCardMediumLiveChatOfflineIcon__2fa3f755\",\"channels-card-medium-live-chat-busy-icon\":\"mbw_channelsCardMediumLiveChatBusyIcon__2fa3f755\",\"channels-card-medium-video-call-online-icon\":\"mbw_channelsCardMediumVideoCallOnlineIcon__2fa3f755\",\"channels-card-medium-video-call-offline-icon\":\"mbw_channelsCardMediumVideoCallOfflineIcon__2fa3f755\",\"channels-card-medium-video-call-busy-icon\":\"mbw_channelsCardMediumVideoCallBusyIcon__2fa3f755\",\"channels-card-medium-voice-call-online-icon\":\"mbw_channelsCardMediumVoiceCallOnlineIcon__2fa3f755\",\"channels-card-medium-voice-call-offline-icon\":\"mbw_channelsCardMediumVoiceCallOfflineIcon__2fa3f755\",\"channels-card-medium-voice-call-busy-icon\":\"mbw_channelsCardMediumVoiceCallBusyIcon__2fa3f755\",\"channels-card-small-icon-container\":\"mbw_channelsCardSmallIconContainer__2fa3f755\",\"skeleton-small\":\"mbw_skeletonSmall__2fa3f755\",\"channels-card-small-live-chat-online-icon\":\"mbw_channelsCardSmallLiveChatOnlineIcon__2fa3f755\",\"channels-card-small-live-chat-offline-icon\":\"mbw_channelsCardSmallLiveChatOfflineIcon__2fa3f755\",\"channels-card-small-live-chat-busy-icon\":\"mbw_channelsCardSmallLiveChatBusyIcon__2fa3f755\",\"channels-card-small-video-call-online-icon\":\"mbw_channelsCardSmallVideoCallOnlineIcon__2fa3f755\",\"channels-card-small-video-call-offline-icon\":\"mbw_channelsCardSmallVideoCallOfflineIcon__2fa3f755\",\"channels-card-small-video-call-busy-icon\":\"mbw_channelsCardSmallVideoCallBusyIcon__2fa3f755\",\"channels-card-small-voice-call-online-icon\":\"mbw_channelsCardSmallVoiceCallOnlineIcon__2fa3f755\",\"channels-card-small-voice-call-offline-icon\":\"mbw_channelsCardSmallVoiceCallOfflineIcon__2fa3f755\",\"channels-card-small-voice-call-busy-icon\":\"mbw_channelsCardSmallVoiceCallBusyIcon__2fa3f755\"};\nn(css,{});\n\nexport { css, modules_fbf318e2 as default };\n//# sourceMappingURL=channels_card.module.scss.js.map\n","import React from 'react';\nimport Icon from '../icon/icon.js';\nimport { liveChat } from '../../organisms/my_orders_order_cell/img/live_chat.js';\nimport { videoCall } from '../../organisms/my_orders_order_cell/img/video_call.js';\nimport { voiceCall } from '../../organisms/my_orders_order_cell/img/voice_call.js';\nimport classNames from '../../classnames.js';\nimport modules_fbf318e2 from './channels_card.module.scss.js';\n\nconst ChannelsCard = ({ type, liveModes = [], loading }) => {\n const getChannelsCardIconContainerClassName = () => classNames(modules_fbf318e2[`channels-card-${type}-icon-container`], { [modules_fbf318e2.skeleton]: loading, [modules_fbf318e2[`skeleton-${type}`]]: loading });\n const getLiveModeIcon = (modeType, modeState, index, icon) => (React.createElement(\"div\", { className: getChannelsCardIconContainerClassName(), key: `channels-card-${type}-${modeType}-${modeState}-icon${index}` },\n React.createElement(Icon, { className: modules_fbf318e2[`channels-card-${type}-${modeType}-${modeState}-icon`], dataTestId: \"mbw-channels-card-icon\" }, icon)));\n const renderLiveModeIcon = (modeType, modeState, index) => {\n let orderIcon = null;\n switch (modeType) {\n case \"live-chat\":\n orderIcon = getLiveModeIcon(modeType, modeState, index, liveChat);\n break;\n case \"video-call\":\n orderIcon = getLiveModeIcon(modeType, modeState, index, videoCall);\n break;\n case \"voice-call\":\n orderIcon = getLiveModeIcon(modeType, modeState, index, voiceCall);\n break;\n default:\n orderIcon = null;\n }\n return orderIcon;\n };\n const getCorrectModeType = (mode) => {\n let modeType = null;\n switch (mode) {\n case \"chat\":\n modeType = \"live-chat\";\n break;\n case \"video\":\n modeType = \"video-call\";\n break;\n case \"voice\":\n modeType = \"voice-call\";\n break;\n default:\n modeType = null;\n }\n return modeType;\n };\n const renderLiveModesIcons = () => (liveModes.map((liveMode, index) => {\n const { mode, modeState } = liveMode;\n const correctModeType = getCorrectModeType(mode);\n return renderLiveModeIcon(correctModeType, modeState, index);\n }));\n const renderChannelsCard = () => (React.createElement(\"div\", { className: modules_fbf318e2[\"channels-card-container\"] }, renderLiveModesIcons()));\n return renderChannelsCard();\n};\n\nexport { ChannelsCard as default };\n//# sourceMappingURL=channels_card.js.map\n","import n from '../../node_modules/rollup-plugin-styles/dist/runtime/inject-css.js';\n\nvar css = \"@keyframes mbw_animationBzdot9__f62eced9{0%{background-position:-200px 0}to{background-position:calc(200px + 100%) 0}}.mbw_liveModesPricesBigContainer__f62eced9{align-items:flex-start;display:flex;flex-direction:column}.mbw_liveModesPricesMediumContainer__f62eced9{align-items:flex-start;display:flex;flex-direction:row}.mbw_liveModesPricesDefaultContainer__f62eced9,.mbw_liveModesPricesSmallContainer__f62eced9{align-items:flex-start;display:flex;flex-direction:column}@media (max-width:105rem){.mbw_liveModesPricesDefaultContainer__f62eced9{align-items:flex-start;display:flex;flex-direction:row}}@media (max-width:80rem){.mbw_liveModesPricesDefaultContainer__f62eced9{align-items:flex-start;display:flex;flex-direction:column}}.mbw_liveModesPricesFromAndCrosePriceContainer__f62eced9{align-items:center;display:flex;justify-content:center}.mbw_liveModesPricesCrosePriceContainer__f62eced9,.mbw_liveModesPricesFromContainer__f62eced9{margin-right:var(--mbw-live-modes-prices-price-margin-right,.313rem)}.mbw_liveModesPricesCrosePriceContainer__f62eced9{display:flex;text-decoration:line-through}.mbw_liveModesPricesPriceContainer__f62eced9{color:var(--mbw-live-modes-prices-price-color,var(--mbw-text-primary,#121212))}.mbw_liveModesSalesPricesPriceContainer__f62eced9{color:var(--mbw-live-modes-sales-prices-price-color,#62dd13)}\";\nvar modules_1229886e = {\"live-modes-prices-big-container\":\"mbw_liveModesPricesBigContainer__f62eced9\",\"live-modes-prices-medium-container\":\"mbw_liveModesPricesMediumContainer__f62eced9\",\"live-modes-prices-small-container\":\"mbw_liveModesPricesSmallContainer__f62eced9\",\"live-modes-prices-default-container\":\"mbw_liveModesPricesDefaultContainer__f62eced9\",\"live-modes-prices-from-and-crose-price-container\":\"mbw_liveModesPricesFromAndCrosePriceContainer__f62eced9\",\"live-modes-prices-from-container\":\"mbw_liveModesPricesFromContainer__f62eced9\",\"live-modes-prices-crose-price-container\":\"mbw_liveModesPricesCrosePriceContainer__f62eced9\",\"live-modes-prices-price-container\":\"mbw_liveModesPricesPriceContainer__f62eced9\",\"live-modes-sales-prices-price-container\":\"mbw_liveModesSalesPricesPriceContainer__f62eced9\",\"animation-bzdot9\":\"mbw_animationBzdot9__f62eced9\"};\nn(css,{});\n\nexport { css, modules_1229886e as default };\n//# sourceMappingURL=live_modes_prices.module.scss.js.map\n","import React from 'react';\nimport Title from '../title/title.js';\nimport modules_1229886e from './live_modes_prices.module.scss.js';\n\nconst LiveModesPrices = ({ type, liveModeMinPrices, loading }) => {\n const { liveModeMinPrice, liveModeMinSalesPrice, liveModeFromText, liveModeMinPriceTitle, liveModeMinSalesPriceTitle, liveModeFromTextFontStyle, liveModeMinPriceTitleFontStyle, liveModeMinPriceCrosePriceFontStyle } = liveModeMinPrices;\n const getFontStyleForFromText = () => {\n if (liveModeFromTextFontStyle)\n return liveModeFromTextFontStyle;\n return \"content-small\";\n };\n const renderFromText = () => (React.createElement(\"div\", { className: modules_1229886e[\"live-modes-prices-from-container\"], \"data-testid\": \"mbw-live-modes-prices-from-container\" },\n React.createElement(Title, { fontStyle: getFontStyleForFromText(), loading: loading }, liveModeFromText)));\n const getFontStyleForCrosePrice = () => {\n if (liveModeMinPriceCrosePriceFontStyle)\n return liveModeMinPriceCrosePriceFontStyle;\n return \"content-small\";\n };\n const renderCrosePrice = () => {\n if (!liveModeMinSalesPrice)\n return null;\n return (React.createElement(\"div\", { className: modules_1229886e[\"live-modes-prices-crose-price-container\"], \"data-testid\": \"mbw-live-modes-prices-crose-price-container\" },\n React.createElement(Title, { fontStyle: getFontStyleForCrosePrice(), loading: loading }, `$${liveModeMinPrice}`)));\n };\n const getFontStyleForPrice = () => {\n if (liveModeMinPriceTitleFontStyle)\n return liveModeMinPriceTitleFontStyle;\n return \"content-small\";\n };\n const renderPrice = () => {\n let priceValue = liveModeMinPriceTitle;\n let priceClassName = modules_1229886e[\"live-modes-prices-price-container\"];\n if (liveModeMinSalesPrice) {\n priceValue = liveModeMinSalesPriceTitle;\n priceClassName = modules_1229886e[\"live-modes-sales-prices-price-container\"];\n }\n return (React.createElement(\"div\", { className: priceClassName, \"data-testid\": \"mbw-live-modes-prices-price-container\" },\n React.createElement(Title, { fontStyle: getFontStyleForPrice(), bold: true, loading: loading }, priceValue)));\n };\n const renderLiveModesPrices = () => (React.createElement(\"div\", { className: modules_1229886e[`live-modes-prices-${type}-container`], \"data-testid\": \"mbw-live-modes-prices-container\" },\n React.createElement(\"div\", { className: modules_1229886e[\"live-modes-prices-from-and-crose-price-container\"] },\n renderFromText(),\n renderCrosePrice()),\n React.createElement(\"div\", null, renderPrice())));\n return renderLiveModesPrices();\n};\n\nexport { LiveModesPrices as default };\n//# sourceMappingURL=live_modes_prices.js.map\n","import n from '../../node_modules/rollup-plugin-styles/dist/runtime/inject-css.js';\n\nvar css = \".mbw_readingSinceAndCountContainer__9c284ef7{align-items:center;display:flex;justify-content:flex-start}.mbw_readingSinceAndCountReadingsCountContainer__9c284ef7{color:var(--mbw-text-primary,#121212)}.mbw_readingSinceAndCountYearJoinedContainer__9c284ef7{color:var(--mbw-text-secondary,#636570);margin-left:.313rem}\";\nvar modules_4204a613 = {\"reading-since-and-count-container\":\"mbw_readingSinceAndCountContainer__9c284ef7\",\"reading-since-and-count-readings-count-container\":\"mbw_readingSinceAndCountReadingsCountContainer__9c284ef7\",\"reading-since-and-count-year-joined-container\":\"mbw_readingSinceAndCountYearJoinedContainer__9c284ef7\"};\nn(css,{});\n\nexport { css, modules_4204a613 as default };\n//# sourceMappingURL=reading_since_and_count.module.scss.js.map\n","import React from 'react';\nimport Title from '../title/title.js';\nimport modules_4204a613 from './reading_since_and_count.module.scss.js';\n\nconst ReadingSinceAndCount = ({ type, readingData, loading }) => {\n const { readingsCount, yearJoined } = readingData;\n const getFontStyle = () => {\n if (type === \"big\")\n return \"heading-h5\";\n if (type === \"medium\")\n return \"heading-h4\";\n if (type === \"default\")\n return \"content-default\";\n if (type === \"small\")\n return \"content-small\";\n return \"caption-1\";\n };\n const renderReadingSinceAndCount = () => (React.createElement(\"div\", { className: modules_4204a613[\"reading-since-and-count-container\"] },\n React.createElement(\"div\", { className: modules_4204a613[\"reading-since-and-count-readings-count-container\"], \"data-testid\": \"mbw-reading-since-and-count-readings-count-container\" },\n React.createElement(Title, { fontStyle: getFontStyle(), bold: true, loading: loading }, readingsCount)),\n React.createElement(\"div\", { className: modules_4204a613[\"reading-since-and-count-year-joined-container\"], \"data-testid\": \"mbw-reading-since-and-count-year-joined-container\" },\n React.createElement(Title, { fontStyle: getFontStyle(), bold: true, loading: loading, ellipsis: true }, yearJoined))));\n return renderReadingSinceAndCount();\n};\n\nexport { ReadingSinceAndCount as default };\n//# sourceMappingURL=reading_since_and_count.js.map\n","import React from 'react';\nimport Title from '../../atoms/title/title.js';\nimport Avatar from '../../molecules/avatar/avatar.js';\nimport ChannelsCard from '../../atoms/channels_card/channels_card.js';\nimport LiveModesPrices from '../../atoms/live_modes_prices/live_modes_prices.js';\nimport ReadingSinceAndCount from '../../atoms/reading_since_and_count/reading_since_and_count.js';\nimport PlayButton from '../../atoms/play_button/play_button.js';\nimport Rating from '../../atoms/rating/rating.js';\n\nconst StaffPickSmall = ({ imgSrc, rating, playButtonOnClick, advisorName, advisorServiceName, liveModes = [], liveModeMinPrices, readingData, staffPickText, loading }) => {\n const renderStaffPickSmallAvatar = () => (React.createElement(Avatar, { type: 'rectangle', imgSrc: imgSrc, topOverlayContainer: React.createElement(\"div\", { className: \"mbw-staff-pick-rating-and-play-button-container\" },\n React.createElement(Rating, { type: \"default\", rating: rating, loading: loading }),\n React.createElement(PlayButton, { type: 'default', onClick: playButtonOnClick, loading: loading })), bottomOverlayContainer: React.createElement(\"div\", { className: \"mbw-staff-pick-advisor-name-and-service-container\" },\n React.createElement(\"div\", { className: \"mbw-staff-pick-advisor-name-container\", \"data-testid\": \"mbw-staff-pick-small-advisor-name-container\" },\n React.createElement(Title, { fontStyle: \"heading-h4\", ellipsis: true, bold: true, loading: loading }, advisorName)),\n React.createElement(\"div\", { className: \"mbw-staff-pick-advisor-service-name-container\", \"data-testid\": \"mbw-staff-pick-small-service-name-container\" },\n React.createElement(Title, { fontStyle: \"heading-h6\", ellipsis: true, loading: loading }, advisorServiceName))), hideBorders: { leftBottom: true, rightBottom: true } }));\n const renderReadingSinceAndCount = () => (React.createElement(\"div\", { className: \"mbw-staff-pick-small-reading-since-and-count-container\" },\n React.createElement(ReadingSinceAndCount, { type: \"default\", readingData: readingData, loading: loading })));\n const renderStaffPickText = () => (React.createElement(\"div\", { className: \"mbw-staff-pick-small-text-container\" },\n React.createElement(Title, { fontStyle: \"content-medium\", ellipsis: true, maxRows: 6, loading: loading }, staffPickText)));\n const renderChannelsCardAndLiveModesPrices = () => (React.createElement(\"div\", { className: \"mbw-staff-pick-small-channels-card-and-live-modes-prices-container\" },\n React.createElement(\"div\", { className: \"mbw-staff-pick-small-channels-card-container\" },\n React.createElement(ChannelsCard, { type: \"small\", liveModes: liveModes, loading: loading })),\n React.createElement(\"div\", { className: \"mbw-staff-pick-small-live-modes-prices-container\" },\n React.createElement(LiveModesPrices, { type: \"small\", liveModeMinPrices: {\n ...liveModeMinPrices,\n liveModeFromTextFontStyle: \"content-default\",\n liveModeMinPriceTitleFontStyle: \"content-default\",\n liveModeMinPriceCrosePriceFontStyle: \"content-default\"\n }, loading: loading }))));\n const renderStaffPickSmallContent = () => (React.createElement(\"div\", { className: \"mbw-staff-pick-small-content-container\" },\n renderReadingSinceAndCount(),\n renderStaffPickText(),\n renderChannelsCardAndLiveModesPrices()));\n const renderStaffPickSmall = () => (React.createElement(\"div\", { className: \"mbw-staff-pick-small-container\" },\n renderStaffPickSmallAvatar(),\n renderStaffPickSmallContent()));\n return renderStaffPickSmall();\n};\n\nexport { StaffPickSmall as default };\n//# sourceMappingURL=staff_pick_small.js.map\n","import React from 'react';\nimport Title from '../../atoms/title/title.js';\nimport Avatar from '../../molecules/avatar/avatar.js';\nimport ChannelsCard from '../../atoms/channels_card/channels_card.js';\nimport LiveModesPrices from '../../atoms/live_modes_prices/live_modes_prices.js';\nimport ReadingSinceAndCount from '../../atoms/reading_since_and_count/reading_since_and_count.js';\nimport Rating from '../../atoms/rating/rating.js';\n\nconst StaffPickBig = ({ imgSrc, rating, advisorName, advisorServiceName, liveModes = [], liveModeMinPrices, readingData, staffPickText, loading }) => {\n const renderStaffPickSmallAvatar = () => (React.createElement(\"div\", { className: \"mbw-staff-pick-big-advisor-avatar-container\" },\n React.createElement(Avatar, { type: 'rectangle', imgSrc: imgSrc, hideBorders: { rightTop: true, rightBottom: true } })));\n const renderAdvisorName = () => (React.createElement(\"div\", { className: \"mbw-staff-pick-big-advisor-name-and-service-container\" },\n React.createElement(\"div\", { className: \"mbw-staff-pick-big-advisor-name-container\", \"data-testid\": \"mbw-staff-pick-big-advisor-name-container\" },\n React.createElement(Title, { fontStyle: \"heading-h2\", bold: true, ellipsis: true, loading: loading }, advisorName)),\n React.createElement(\"div\", { className: \"mbw-staff-pick-big-advisor-service-name-container\", \"data-testid\": \"mbw-staff-pick-big-advisor-service-name-container\" },\n React.createElement(Title, { fontStyle: \"heading-h5\", ellipsis: true, loading: loading }, advisorServiceName))));\n const renderRating = () => (React.createElement(Rating, { type: \"default\", rating: rating, withBorder: true, loading: loading }));\n const renderAdvisorNameAndRating = () => (React.createElement(\"div\", { className: \"mbw-staff-pick-big-advisor-name-and-rating-container\" },\n renderAdvisorName(),\n renderRating()));\n const renderStaffPickText = () => (React.createElement(\"div\", { className: \"mbw-staff-pick-big-text-container\" },\n React.createElement(Title, { fontStyle: \"heading-h5\", ellipsis: true, maxRows: 6, loading: loading }, staffPickText)));\n const renderChannelsCardAndLiveModesPrices = () => (React.createElement(\"div\", { className: \"mbw-staff-pick-big-channels-card-and-live-modes-prices-container\" },\n React.createElement(\"div\", { className: \"mbw-staff-pick-big-channels-card-container\" },\n React.createElement(ChannelsCard, { type: \"big\", liveModes: liveModes, loading: loading })),\n React.createElement(\"div\", { className: \"mbw-staff-pick-big-live-modes-prices-container\" },\n React.createElement(LiveModesPrices, { type: \"big\", liveModeMinPrices: {\n ...liveModeMinPrices,\n liveModeFromTextFontStyle: \"content-default\",\n liveModeMinPriceTitleFontStyle: \"heading-h4\",\n liveModeMinPriceCrosePriceFontStyle: \"content-default\"\n }, loading: loading }))));\n const renderReadingSinceAndCount = () => (React.createElement(\"div\", { className: \"mbw-staff-pick-big-reading-since-and-count-container\" },\n React.createElement(ReadingSinceAndCount, { type: \"medium\", readingData: readingData, loading: loading })));\n const renderChannelsCardAndReadingSince = () => (React.createElement(\"div\", { className: \"mbw-staff-pick-big-channels-card-and-reading-since-container\" },\n renderChannelsCardAndLiveModesPrices(),\n renderReadingSinceAndCount()));\n const renderStaffPickSmallContent = () => (React.createElement(\"div\", { className: \"mbw-staff-pick-big-content-container\" },\n React.createElement(\"div\", { className: \"mbw-staff-pick-big-advisor-name-and-staff-pick-text-container\" },\n renderAdvisorNameAndRating(),\n renderStaffPickText()),\n renderChannelsCardAndReadingSince()));\n const renderStaffPickBig = () => (React.createElement(\"div\", { className: \"mbw-staff-pick-big-container\" },\n renderStaffPickSmallAvatar(),\n renderStaffPickSmallContent()));\n return renderStaffPickBig();\n};\n\nexport { StaffPickBig as default };\n//# sourceMappingURL=staff_pick_big.js.map\n","import React from 'react';\nimport StaffPickSmall from './staff_pick_small.js';\nimport StaffPickBig from './staff_pick_big.js';\n\nconst StaffPick = ({ statusIndicatorStatus, rating, playButtonOnClick, imgSrc, advisorName = \"Advisor Name\", advisorServiceName = \"Advisor Service Name\", liveModes = [], liveModeMinPrices, readingData, staffPickText, loading }) => {\n const renderStaffPickSmall = () => (React.createElement(StaffPickSmall, { statusIndicatorStatus: statusIndicatorStatus, rating: rating, playButtonOnClick: playButtonOnClick, imgSrc: imgSrc, advisorName: advisorName, advisorServiceName: advisorServiceName, liveModes: liveModes, liveModeMinPrices: liveModeMinPrices, readingData: readingData, staffPickText: staffPickText, loading: loading }));\n const renderStaffPickBig = () => (React.createElement(StaffPickBig, { statusIndicatorStatus: statusIndicatorStatus, rating: rating, playButtonOnClick: playButtonOnClick, imgSrc: imgSrc, advisorName: advisorName, advisorServiceName: advisorServiceName, liveModes: liveModes, liveModeMinPrices: liveModeMinPrices, readingData: readingData, staffPickText: staffPickText, loading: loading }));\n const renderStaffPick = () => (React.createElement(\"div\", { className: \"mbw-staff-pick-holder\", \"data-testid\": \"mbw-staff-pick-holder\" },\n renderStaffPickSmall(),\n renderStaffPickBig()));\n return renderStaffPick();\n};\n\nexport { StaffPick as default };\n//# sourceMappingURL=staff_pick.js.map\n","import React from 'react';\n\nconst rightArrowIcon = React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"20\", height: \"20\", viewBox: \"0 0 20 20\", fill: \"none\" },\n React.createElement(\"path\", { d: \"M7.5 15.8334L12.5 10L7.5 4.16671\", stroke: \"#121212\", strokeWidth: \"1.5\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }));\n\nexport { rightArrowIcon };\n//# sourceMappingURL=right_arrow_icon.js.map\n","import React from 'react';\n\nconst hourglassIcon = React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"20\", height: \"20\", viewBox: \"0 0 20 20\", fill: \"none\" },\n React.createElement(\"path\", { d: \"M10.0013 10.0001L7.53655 12.4409C5.10114 14.8526 3.88344 16.0584 4.22435 17.0988C4.25365 17.1883 4.29004 17.2753 4.33318 17.359C4.83502 18.3334 6.55711 18.3334 10.0013 18.3334C13.4455 18.3334 15.1676 18.3334 15.6694 17.359C15.7126 17.2753 15.749 17.1883 15.7783 17.0988C16.1192 16.0584 14.9015 14.8526 12.466 12.4409L10.0013 10.0001ZM10.0013 10.0001L12.4661 7.5593C14.9015 5.14758 16.1192 3.94172 15.7783 2.90132C15.749 2.81189 15.7126 2.72489 15.6694 2.64113C15.1676 1.66675 13.4455 1.66675 10.0013 1.66675C6.55711 1.66675 4.83502 1.66675 4.33318 2.64113C4.29004 2.72489 4.25365 2.81189 4.22435 2.90132C3.88344 3.94172 5.10115 5.14758 7.53655 7.55931L10.0013 10.0001Z\", stroke: \"#7C7F89\", strokeWidth: \"1.5\" }),\n React.createElement(\"path\", { d: \"M8.33203 4.58325H11.6654\", stroke: \"#7C7F89\", strokeWidth: \"1.5\", strokeLinecap: \"round\" }),\n React.createElement(\"path\", { d: \"M8.33203 15.4167H11.6654\", stroke: \"#7C7F89\", strokeWidth: \"1.5\", strokeLinecap: \"round\" }));\n\nexport { hourglassIcon };\n//# sourceMappingURL=hourglass_icon.js.map\n","import React from 'react';\n\nconst refreshIcon = React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"20\", height: \"20\", viewBox: \"0 0 20 20\", fill: \"none\" },\n React.createElement(\"path\", { d: \"M3.06781 9.44444H2.31781H3.06781ZM3.06781 10.8333L2.53957 11.3657C2.83198 11.6559 3.30365 11.6559 3.59605 11.3657L3.06781 10.8333ZM4.9959 9.97685C5.28994 9.68511 5.2918 9.21024 5.00006 8.9162C4.70832 8.62216 4.23345 8.6203 3.93941 8.91204L4.9959 9.97685ZM2.19621 8.91204C1.90217 8.6203 1.4273 8.62216 1.13556 8.9162C0.843819 9.21024 0.845684 9.68511 1.13973 9.97685L2.19621 8.91204ZM15.4078 6.22612C15.6247 6.57899 16.0866 6.68918 16.4395 6.47225C16.7924 6.25532 16.9026 5.79341 16.6856 5.44054L15.4078 6.22612ZM10.067 1.75C5.79282 1.75 2.31781 5.18938 2.31781 9.44444H3.81781C3.81781 6.02889 6.61011 3.25 10.067 3.25V1.75ZM2.31781 9.44444L2.31781 10.8333H3.81781L3.81781 9.44444L2.31781 9.44444ZM3.59605 11.3657L4.9959 9.97685L3.93941 8.91204L2.53957 10.3009L3.59605 11.3657ZM3.59605 10.3009L2.19621 8.91204L1.13973 9.97685L2.53957 11.3657L3.59605 10.3009ZM16.6856 5.44054C15.325 3.22738 12.869 1.75 10.067 1.75V3.25C12.3301 3.25 14.3107 4.44155 15.4078 6.22612L16.6856 5.44054Z\", fill: \"#FF5A5A\" }),\n React.createElement(\"path\", { d: \"M16.9269 9.16699L17.4542 8.63358C17.162 8.3448 16.6919 8.3448 16.3997 8.63358L16.9269 9.16699ZM14.9945 10.0225C14.6999 10.3136 14.6972 10.7885 14.9883 11.0831C15.2795 11.3777 15.7544 11.3805 16.049 11.0893L14.9945 10.0225ZM17.8049 11.0893C18.0995 11.3805 18.5744 11.3777 18.8656 11.0831C19.1567 10.7885 19.154 10.3136 18.8594 10.0225L17.8049 11.0893ZM4.53669 13.7731C4.31915 13.4206 3.85705 13.3112 3.50456 13.5287C3.15206 13.7463 3.04266 14.2084 3.26019 14.5609L4.53669 13.7731ZM9.90097 18.2503C14.1872 18.2503 17.6769 14.8136 17.6769 10.5559H16.1769C16.1769 13.9687 13.3754 16.7503 9.90097 16.7503V18.2503ZM17.6769 10.5559V9.16699H16.1769V10.5559H17.6769ZM16.3997 8.63358L14.9945 10.0225L16.049 11.0893L17.4542 9.70041L16.3997 8.63358ZM16.3997 9.70041L17.8049 11.0893L18.8594 10.0225L17.4542 8.63358L16.3997 9.70041ZM3.26019 14.5609C4.62609 16.7742 7.09071 18.2503 9.90097 18.2503V16.7503C7.62691 16.7503 5.63788 15.5575 4.53669 13.7731L3.26019 14.5609Z\", fill: \"#FF5A5A\" }));\n\nexport { refreshIcon };\n//# sourceMappingURL=refresh_icon.js.map\n","import React from 'react';\n\nconst checkmarkIcon = React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"20\", height: \"20\", viewBox: \"0 0 20 20\", fill: \"none\" },\n React.createElement(\"path\", { d: \"M3.33203 11.5L7.14155 15.8333L16.6654 5\", stroke: \"#62DD13\", strokeWidth: \"1.5\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }));\n\nexport { checkmarkIcon };\n//# sourceMappingURL=checkmark_icon.js.map\n","import React from 'react';\nimport Icon from '../../atoms/icon/icon.js';\nimport Title from '../../atoms/title/title.js';\nimport { rightArrowIcon } from './img/right_arrow_icon.js';\nimport { hourglassIcon } from './img/hourglass_icon.js';\nimport { refreshIcon } from './img/refresh_icon.js';\nimport { checkmarkIcon } from './img/checkmark_icon.js';\n\nconst MethodCell = ({ type, img, text, subText }) => {\n const renderIcon = () => {\n const className = `mbw-method-cell-${type}-icon`;\n if (img && typeof img === \"string\") {\n return React.createElement(\"img\", { src: img, className: className });\n }\n return (React.createElement(Icon, { className: className, dataTestId: \"mbw-method-cell-icon\" }, img));\n };\n const renderText = () => (React.createElement(\"div\", { className: \"mbw-method-cell-text-container\" },\n React.createElement(\"div\", { className: `mbw-method-cell-${type}-text`, \"data-testid\": \"mbw-method-cell-text\" },\n React.createElement(Title, { fontStyle: \"content-default\", bold: true }, text)),\n React.createElement(\"div\", { className: \"mbw-method-cell-sub-text\", \"data-testid\": \"mbw-method-cell-sub-text\" },\n React.createElement(Title, { fontStyle: \"content-small\" }, subText))));\n const renderIconAndText = () => (React.createElement(\"div\", { className: \"mbw-method-cell-icon-and-text-container\" },\n renderIcon(),\n renderText()));\n const getRightIcon = () => {\n let rightIcon = null;\n switch (type) {\n case \"default\":\n case \"highlighted\":\n rightIcon = rightArrowIcon;\n break;\n case \"disabled\":\n rightIcon = hourglassIcon;\n break;\n case \"error\":\n rightIcon = refreshIcon;\n break;\n case \"success\":\n rightIcon = checkmarkIcon;\n break;\n default:\n rightIcon = null;\n }\n return rightIcon;\n };\n const renderRightIcon = () => (React.createElement(Icon, { className: `mbw-method-cell-${type}-right-icon`, dataTestId: \"mbw-method-cell-right-icon\" }, getRightIcon()));\n const renderMethodCellContent = () => (React.createElement(\"div\", { className: 'mbw-method-cell-content-container' },\n renderIconAndText(),\n renderRightIcon()));\n const renderMethodCell = () => (React.createElement(\"div\", { className: `mbw-method-cell-${type}-container`, \"data-testid\": \"mbw-method-cell-container\" }, renderMethodCellContent()));\n return renderMethodCell();\n};\n\nexport { MethodCell as default };\n//# sourceMappingURL=method_cell.js.map\n","import React from 'react';\n\nconst deleteIcon = React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"20\", height: \"20\", viewBox: \"0 0 20 20\", fill: \"none\" },\n React.createElement(\"path\", { d: \"M17.0828 5H2.91602\", stroke: \"#121212\", strokeWidth: \"1.5\", strokeLinecap: \"round\" }),\n React.createElement(\"path\", { d: \"M15.6936 7.08301L15.3103 12.8323C15.1628 15.0447 15.0891 16.1509 14.3682 16.8253C13.6474 17.4997 12.5387 17.4997 10.3214 17.4997H9.6769C7.45956 17.4997 6.3509 17.4997 5.63005 16.8253C4.90921 16.1509 4.83547 15.0447 4.68797 12.8323L4.30469 7.08301\", stroke: \"#121212\", strokeWidth: \"1.5\", strokeLinecap: \"round\" }),\n React.createElement(\"path\", { d: \"M7.91602 9.16699L8.33268 13.3337\", stroke: \"#121212\", strokeWidth: \"1.5\", strokeLinecap: \"round\" }),\n React.createElement(\"path\", { d: \"M12.0827 9.16699L11.666 13.3337\", stroke: \"#121212\", strokeWidth: \"1.5\", strokeLinecap: \"round\" }),\n React.createElement(\"path\", { d: \"M5.41602 5C5.46258 5 5.48587 5 5.50697 4.99947C6.19318 4.98208 6.79854 4.54576 7.03203 3.90027C7.03921 3.88041 7.04657 3.85832 7.0613 3.81415L7.14221 3.57143C7.21127 3.36423 7.24581 3.26063 7.29161 3.17267C7.47436 2.82173 7.81247 2.57803 8.20319 2.51564C8.30112 2.5 8.41033 2.5 8.62873 2.5H11.37C11.5884 2.5 11.6976 2.5 11.7955 2.51564C12.1862 2.57803 12.5243 2.82173 12.7071 3.17267C12.7529 3.26063 12.7874 3.36423 12.8565 3.57143L12.9374 3.81415C12.9521 3.85826 12.9595 3.88042 12.9667 3.90027C13.2002 4.54576 13.8055 4.98208 14.4917 4.99947C14.5128 5 14.5361 5 14.5827 5\", stroke: \"#121212\", strokeWidth: \"1.5\" }));\n\nexport { deleteIcon };\n//# sourceMappingURL=delete_icon.js.map\n","import React from 'react';\nimport Icon from '../../atoms/icon/icon.js';\nimport { deleteIcon } from './img/delete_icon.js';\nimport Title from '../../atoms/title/title.js';\nimport Button from '../button/button.js';\n\nconst PaymentMethodDetails = ({ type, icon, kind, isDefault = false, onRemove, sourceTypeTitle, defaultTitle, last4, onMakeDefault, onlyPaymentSource = false, fullName, paypalBillingAgreementEmail, expiredTitle, deleteButtonText }) => {\n const defaultCardIcon = \"data:image/svg+xml;charset=UTF-8,%3csvg width='24' height='16' viewBox='0 0 24 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fillRule='evenodd' clipRule='evenodd' d='M16.8302 8.24144H20.6047C20.7967 8.2421 20.9809 8.31726 21.1167 8.4505C21.2525 8.58374 21.3291 8.76442 21.3298 8.95287V11.193C21.3284 11.3813 21.2517 11.5615 21.1159 11.6946C20.9802 11.8278 20.7966 11.9031 20.6047 11.9044H16.8302C16.638 11.9038 16.454 11.8286 16.3182 11.6954C16.1822 11.5621 16.1056 11.3815 16.1049 11.193V8.95285C16.1056 8.76442 16.1822 8.58373 16.3182 8.45049C16.454 8.31725 16.638 8.2421 16.8302 8.24144ZM2.39074 10.5042H7.38754V11.8946L2.39074 11.8945V10.5042ZM2.39074 8.24144H12.3843V9.63182H2.39074V8.24144ZM0 4.32685H24V0.980531C23.9993 0.720746 23.8938 0.471739 23.7066 0.288035C23.5193 0.104204 23.2655 0.000655964 23.0006 0H0.999476C0.734565 0.00065704 0.480768 0.104204 0.293534 0.288035C0.106303 0.471735 0.000764571 0.720736 9.6e-05 0.980531L0 4.32685ZM24 5.71723H0V15.0195C0.000669634 15.2794 0.106207 15.5284 0.293438 15.7121C0.480669 15.8958 0.734455 15.9993 0.999381 16H23.0005C23.2654 15.9993 23.5192 15.8958 23.7065 15.7121C23.8937 15.5284 23.9992 15.2794 23.9999 15.0195L24 5.71723Z' fill='%23BCBCBC'/%3e%3c/svg%3e\";\n const renderSourceIcon = () => React.createElement(\"img\", { src: icon || defaultCardIcon, className: \"mbw-payment-method-details-source-icon\" });\n const renderDeleteIcon = () => {\n if (isDefault && !onlyPaymentSource)\n return null;\n return (React.createElement(\"button\", { type: \"button\", className: `mbw-payment-method-details-delete-icon-container-${type}`, onClick: onRemove, \"data-testid\": \"mbw-payment-method-details-delete\" },\n React.createElement(Icon, { className: \"mbw-payment-method-details-delete-icon\" }, deleteIcon)));\n };\n const renderDetails = () => {\n if (kind === \"cc\") {\n return (React.createElement(\"div\", { className: \"mbw-payment-method-details-cc-container\" },\n React.createElement(\"div\", { \"data-testid\": \"mbw-payment-method-details-last4\" },\n React.createElement(Title, { fontStyle: \"heading-h4\", bold: true }, last4)),\n React.createElement(\"div\", { className: \"mbw-payment-method-details-cc\" },\n React.createElement(\"div\", { \"data-testid\": \"mbw-payment-method-details-name\", className: \"mbw-payment-method-details-name\" },\n React.createElement(Title, { fontStyle: \"content-small\", bold: true }, fullName)),\n React.createElement(\"div\", { \"data-testid\": \"mbw-payment-method-details-exp-date\", className: \"mbw-payment-method-details-exp-date\" },\n React.createElement(Title, { fontStyle: \"content-small\", bold: true, \"data-testid\": \"mbw-payment-method-details-exp-date\" }, expiredTitle)))));\n }\n return (React.createElement(\"div\", { className: \"mbw-payment-method-details-pp\", \"data-testid\": \"mbw-payment-method-details-pp\" },\n React.createElement(Title, { fontStyle: \"heading-h4\", bold: true }, paypalBillingAgreementEmail || \"PayPal\")));\n };\n const renderDefaultSection = () => {\n if (isDefault) {\n return (React.createElement(\"div\", { className: \"mbw-payment-method-details-default\", \"data-testid\": \"mbw-payment-method-details-default-text\" },\n React.createElement(Title, { fontStyle: \"content-small\", bold: true }, defaultTitle)));\n }\n return (React.createElement(\"button\", { type: \"button\", className: \"mbw-payment-method-details-set-default\", onClick: onMakeDefault, \"data-testid\": \"mbw-payment-method-details-header\" },\n React.createElement(\"div\", { className: `mbw-payment-method-details-set-default-text-${type}`, \"data-testid\": \"mbw-payment-method-details-default-text\" },\n React.createElement(Title, { fontStyle: \"content-small\", bold: true }, defaultTitle))));\n };\n const renderSourceDetailsHeader = () => (React.createElement(\"div\", { className: \"mbw-payment-method-details-header\" },\n React.createElement(\"div\", { \"data-testid\": \"mbw-payment-method-details-source-name\", className: \"mbw-payment-method-details-source-name\" },\n renderSourceIcon(),\n React.createElement(Title, { fontStyle: \"heading-h5\", bold: true }, sourceTypeTitle || \"Paypal\")),\n renderDeleteIcon()));\n const renderBottomButtons = () => (React.createElement(\"div\", { \"data-testid\": \"mbw-payment-method-details-buttons-container\", className: `mbw-payment-method-details-buttons-container-${type}` },\n React.createElement(\"div\", { \"data-testid\": \"mbw-payment-method-details-delete-button\", className: \"mbw-payment-method-details-bottom-button\" },\n React.createElement(Button, { type: \"secondary\", title: deleteButtonText, onClick: () => onRemove, icon: deleteIcon })),\n isDefault && !onlyPaymentSource ? null : React.createElement(\"div\", { \"data-testid\": \"mbw-payment-method-details-default-button\", className: \"mbw-payment-method-details-bottom-button\" },\n React.createElement(Button, { type: \"primary\", title: defaultTitle, onClick: () => onMakeDefault }))));\n const renderPaymentSourceContainer = () => (React.createElement(\"div\", { \"data-testid\": \"mbw-payment-method-details-container\", className: `mbw-payment-method-details-container-${type}` },\n React.createElement(\"div\", { \"data-testid\": \"mbw-payment-method-details\", className: `mbw-payment-method-details-${type}` },\n renderSourceDetailsHeader(),\n renderDefaultSection(),\n renderDetails()),\n renderBottomButtons()));\n return renderPaymentSourceContainer();\n};\n\nexport { PaymentMethodDetails as default };\n//# sourceMappingURL=payment_method_details.js.map\n","import React from 'react';\n\nconst ChatIcon = () => {\n return (React.createElement(\"svg\", { width: \"50\", height: \"50\", viewBox: \"0 0 50 50\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\" },\n React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M45.8327 25C45.8327 36.506 36.5053 45.8334 24.9993 45.8334C21.6667 45.8334 18.5168 45.0508 15.7234 43.6595C14.981 43.2897 14.1325 43.1667 13.3314 43.381L8.69382 44.6219C6.68063 45.1605 4.83884 43.3187 5.3775 41.3055L6.61835 36.668C6.8327 35.8668 6.70963 35.0183 6.33989 34.276C4.94855 31.4826 4.16602 28.3327 4.16602 25C4.16602 13.4941 13.4934 4.16669 24.9993 4.16669C36.5053 4.16669 45.8327 13.4941 45.8327 25ZM16.666 27.0834C15.5154 27.0834 14.5827 26.1506 14.5827 25C14.5827 23.8494 15.5154 22.9167 16.666 22.9167C17.8166 22.9167 18.7493 23.8494 18.7493 25C18.7493 26.1506 17.8166 27.0834 16.666 27.0834ZM22.916 25C22.916 26.1506 23.8488 27.0834 24.9993 27.0834C26.1499 27.0834 27.0827 26.1506 27.0827 25C27.0827 23.8494 26.1499 22.9167 24.9993 22.9167C23.8488 22.9167 22.916 23.8494 22.916 25ZM31.2493 25C31.2493 26.1506 32.1821 27.0834 33.3327 27.0834C34.4833 27.0834 35.416 26.1506 35.416 25C35.416 23.8494 34.4833 22.9167 33.3327 22.9167C32.1821 22.9167 31.2493 23.8494 31.2493 25Z\", fill: \"#62DD13\" })));\n};\n\nexport { ChatIcon as default };\n//# sourceMappingURL=chatIcon.js.map\n","import React from 'react';\n\nconst VoiceIcon = () => {\n return (React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"51\", height: \"50\", viewBox: \"0 0 51 50\", fill: \"none\" },\n React.createElement(\"path\", { d: \"M18.1506 11.0015L19.6717 13.7271C21.0445 16.1868 20.4934 19.4135 18.3313 21.5756C18.3313 21.5756 18.3313 21.5756 18.3313 21.5756C18.3312 21.5757 15.709 24.1982 20.4637 28.953C25.2178 33.707 27.8403 31.0862 27.8411 31.0853C27.8411 31.0853 27.8411 31.0853 27.8411 31.0853C30.0032 28.9233 33.2299 28.3722 35.6896 29.745L38.4152 31.2661C42.1294 33.3389 42.5681 38.5477 39.3034 41.8125C37.3416 43.7742 34.9384 45.3006 32.2818 45.4013C27.8096 45.5709 20.2147 44.439 12.5962 36.8205C4.97764 29.202 3.84582 21.6071 4.01536 17.1349C4.11607 14.4783 5.64251 12.0751 7.60423 10.1133C10.869 6.8486 16.0778 7.28724 18.1506 11.0015Z\", fill: \"#8755F4\" }),\n React.createElement(\"path\", { d: \"M24.8549 3.18605C25.0147 2.19967 25.9474 1.53055 26.934 1.69024C26.9951 1.70193 27.1916 1.73865 27.2946 1.76157C27.5005 1.80741 27.7877 1.87799 28.1458 1.98227C28.8619 2.1908 29.8624 2.53432 31.0631 3.08466C33.4672 4.1865 36.6664 6.11397 39.9862 9.43285C43.3061 12.7517 45.2341 15.95 46.3362 18.3534C46.8867 19.5538 47.2304 20.554 47.4389 21.2699C47.5433 21.6279 47.6139 21.915 47.6597 22.1209C47.6826 22.2238 47.6994 22.3064 47.7111 22.3675L47.725 22.4428C47.8847 23.4291 47.2215 24.4001 46.2348 24.5598C45.251 24.7191 44.3241 24.0532 44.1605 23.0714C44.1554 23.0451 44.1416 22.9742 44.1267 22.9075C44.097 22.7739 44.0455 22.562 43.9638 22.2818C43.8005 21.7213 43.5169 20.8883 43.046 19.8614C42.1053 17.8102 40.4138 14.9776 37.4268 11.9915C34.4398 9.00538 31.6065 7.31435 29.5547 6.37395C28.5275 5.90317 27.6942 5.61964 27.1336 5.45639C26.8533 5.37478 26.501 5.29394 26.3674 5.26418C25.3854 5.10057 24.6956 4.16961 24.8549 3.18605Z\", fill: \"#8755F4\" }),\n React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M25.4009 11.5073C25.6755 10.5465 26.6771 9.99019 27.6382 10.2647L27.141 12.0043C27.6382 10.2647 27.6382 10.2647 27.6382 10.2647L27.6417 10.2657L27.6454 10.2668L27.6534 10.2691L27.6721 10.2747L27.7198 10.2896C27.7562 10.3012 27.8017 10.3163 27.8558 10.3356C27.9642 10.374 28.1075 10.4287 28.2831 10.504C28.6347 10.6546 29.115 10.8872 29.705 11.2363C30.8861 11.9351 32.4985 13.0958 34.3926 14.9894C36.2868 16.8831 37.4479 18.4949 38.1469 19.6757C38.4961 20.2655 38.7287 20.7457 38.8794 21.0972C38.9547 21.2728 39.0094 21.416 39.0478 21.5243C39.0671 21.5785 39.0822 21.6239 39.0938 21.6603L39.1087 21.708L39.1143 21.7267L39.1166 21.7348L39.1177 21.7385C39.1177 21.7385 39.1187 21.7419 37.3786 22.239L39.1187 21.7419C39.3933 22.7027 38.8368 23.7041 37.8758 23.9786C36.9229 24.2508 35.93 23.7062 35.6456 22.7604L35.6367 22.7344C35.6238 22.6982 35.5972 22.6268 35.5525 22.5226C35.4632 22.3143 35.3013 21.9736 35.032 21.5187C34.494 20.6098 33.5222 19.2366 31.8332 17.5481C30.1442 15.8596 28.7706 14.8881 27.8615 14.3503C27.4065 14.081 27.0657 13.9191 26.8573 13.8299C26.7531 13.7852 26.6817 13.7586 26.6454 13.7457L26.6194 13.7368C25.6734 13.4525 25.1286 12.4599 25.4009 11.5073Z\", fill: \"#8755F4\" })));\n};\n\nexport { VoiceIcon as default };\n//# sourceMappingURL=voiceIcon.js.map\n","import React from 'react';\n\nconst VideoIcon = () => {\n return (React.createElement(\"svg\", { width: \"51\", height: \"50\", viewBox: \"0 0 51 50\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\" },\n React.createElement(\"path\", { d: \"M5.33398 13.75C5.33398 10.2982 8.13221 7.5 11.584 7.5H31.584C35.0358 7.5 37.834 10.2982 37.834 13.75V36.25C37.834 39.7018 35.0358 42.5 31.584 42.5H11.584C8.13221 42.5 5.33398 39.7018 5.33398 36.25V13.75Z\", fill: \"#1CB4FF\" }),\n React.createElement(\"path\", { d: \"M35.334 21.8641C35.334 21.1343 35.6529 20.4409 36.207 19.966L43.707 13.5374C45.3287 12.1474 47.834 13.2997 47.834 15.4356V34.5644C47.834 36.7003 45.3287 37.8526 43.707 36.4626L36.207 30.034C35.6529 29.5591 35.334 28.8657 35.334 28.1359V21.8641Z\", fill: \"#1CB4FF\" })));\n};\n\nexport { VideoIcon as default };\n//# sourceMappingURL=videoIcon.js.map\n","import React from 'react';\nimport Title from '../../atoms/title/title.js';\nimport ChatIcon from './assets/chatIcon.js';\nimport VoiceIcon from './assets/voiceIcon.js';\nimport VideoIcon from './assets/videoIcon.js';\n\nconst ChanelButton = ({ type, offline, busy, price, newPrice, titleText, startButtonText }) => {\n let className = `mbw-channel-${type}-button`;\n if (offline) {\n className = \"mbw-channel-offline-button\";\n }\n if (busy) {\n className = \"mbw-channel-busy-button\";\n }\n const profileChannelButtonImage = () => {\n switch (type) {\n case \"chat\":\n return React.createElement(ChatIcon, null);\n case \"voiceCall\":\n return React.createElement(VoiceIcon, null);\n case \"videoCall\":\n return React.createElement(VideoIcon, null);\n default:\n return null;\n }\n };\n return (React.createElement(\"div\", { className: className },\n profileChannelButtonImage(),\n React.createElement(\"div\", { className: \"mbw-channel-button-text\" },\n React.createElement(Title, { fontStyle: \"heading-h5\", bold: true }, titleText),\n React.createElement(\"br\", null),\n React.createElement(Title, { fontStyle: \"content-medium\" },\n React.createElement(\"span\", { className: newPrice && \"mbw-channel-button-old-price\" }, price)),\n React.createElement(\"br\", null),\n newPrice && React.createElement(Title, { bold: true, fontStyle: \"content-medium\" },\n React.createElement(\"span\", { className: \"mbw-channel-button-new-price\" }, newPrice))),\n React.createElement(\"div\", { className: \"mbw-channel-button-start\" },\n React.createElement(Title, { fontStyle: \"content-small\", bold: true }, startButtonText),\n React.createElement(\"svg\", { width: \"6\", height: \"14\", viewBox: \"0 0 6 14\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\" },\n React.createElement(\"path\", { d: \"M1.58398 11.083L5.08398 6.99967L1.58398 2.91634\", strokeWidth: \"1.5\", strokeLinecap: \"round\", strokeLinejoin: \"round\" })))));\n};\n\nexport { ChanelButton as default };\n//# sourceMappingURL=channel_button.js.map\n","import React from 'react';\n\nconst leftArrowIcon = React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", fill: \"none\" },\n React.createElement(\"path\", { d: \"M20 12H4M4 12L10 6M4 12L10 18\", stroke: \"#121212\", strokeWidth: \"1.5\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }));\n\nexport { leftArrowIcon };\n//# sourceMappingURL=left_arrow_icon.js.map\n","import React from 'react';\n\nconst rightArrowIcon = React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", fill: \"none\" },\n React.createElement(\"path\", { d: \"M4 12H20M20 12L14 6M20 12L14 18\", stroke: \"#121212\", strokeWidth: \"1.5\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }));\n\nexport { rightArrowIcon };\n//# sourceMappingURL=right_arrow_icon.js.map\n","import React, { useState, useRef, useEffect } from 'react';\nimport Icon from '../../atoms/icon/icon.js';\nimport { leftArrowIcon } from './img/left_arrow_icon.js';\nimport { rightArrowIcon } from './img/right_arrow_icon.js';\n\n/* eslint-disable @typescript-eslint/no-empty-function */\nconst scrollElementTypes = {\n left: \"left\",\n right: \"right\"\n};\nconst AdvisorSection = ({ advisorSectionId, advisorSectionTitle, advisorSectionShortDescriptions, advisorSectionContent = [], \n// loading=false,\nelementsCount = {}, needScrollOnBrowser = false }) => {\n const { maxElementsCount = null, elementsCountPhone = 2, elementsCountTablet = 4, elementsCountLaptop = 4, elementsCountDesktop = 4 } = elementsCount;\n const [windowInnerWidth, setWindowInnerWidth] = useState(window.innerWidth);\n const [showLeftScrollElement, setShowLeftScrollElement] = useState(true);\n const [showRightScrollElement, setShowRightScrollElement] = useState(true);\n const advisorsContainerRef = useRef(null);\n const advisorsContainerScrollerRef = useRef(null);\n const calcScrollElementContantWidth = (advisorSectionId) => {\n const contentContainer = document.getElementById(`${advisorSectionId}advisorsContainerScroller`);\n if (!contentContainer)\n return;\n const contentContainerChildrenArray = Array.from(contentContainer.children);\n let contentWidth = 0;\n contentContainerChildrenArray.forEach((el) => {\n const style = window.getComputedStyle(el);\n contentWidth += parseFloat(style.marginLeft) + parseFloat(style.width);\n });\n return { contentWidth, contentContainer }; //eslint-disable-line\n };\n const needShowScrollElement = ({ advisorSectionId, setShowLeftScrollElement, setShowRightScrollElement }) => {\n const data = calcScrollElementContantWidth(advisorSectionId);\n if (!data)\n return;\n const { contentWidth } = data;\n const mainScrollContainer = document.getElementById(`${advisorSectionId}advisorsContainer`);\n if (mainScrollContainer) {\n if (contentWidth <= mainScrollContainer.offsetWidth) {\n setShowLeftScrollElement(false);\n setShowRightScrollElement(false);\n return;\n }\n if (mainScrollContainer.scrollLeft === 0 && contentWidth > mainScrollContainer.offsetWidth) {\n setShowLeftScrollElement(false);\n setShowRightScrollElement(true);\n return;\n }\n if (mainScrollContainer.scrollLeft > 0 && contentWidth > mainScrollContainer.offsetWidth) {\n setShowLeftScrollElement(true);\n setShowRightScrollElement(true);\n }\n if (mainScrollContainer.scrollLeft > 0 && contentWidth > mainScrollContainer.offsetWidth\n && mainScrollContainer.scrollLeft + mainScrollContainer.offsetWidth\n >= mainScrollContainer.scrollWidth) {\n setShowLeftScrollElement(true);\n setShowRightScrollElement(false);\n }\n }\n };\n const handleResize = () => {\n setWindowInnerWidth(window.innerWidth);\n needShowScrollElement({ advisorSectionId, setShowLeftScrollElement, setShowRightScrollElement });\n };\n const handleScroll = () => {\n needShowScrollElement({ advisorSectionId, setShowLeftScrollElement, setShowRightScrollElement });\n };\n useEffect(() => {\n window.addEventListener(\"resize\", handleResize);\n return () => window.removeEventListener(\"resize\", handleResize);\n }, []);\n useEffect(() => {\n calcScrollElementContantWidth(advisorSectionId);\n needShowScrollElement({ advisorSectionId, setShowLeftScrollElement, setShowRightScrollElement });\n }, [advisorsContainerScrollerRef]);\n useEffect(() => {\n if (advisorsContainerRef.current) {\n const advisorsContainer = advisorsContainerRef.current;\n advisorsContainer.addEventListener(\"scroll\", handleScroll);\n return () => {\n advisorsContainer.removeEventListener(\"scroll\", handleScroll);\n };\n }\n return () => { };\n }, [windowInnerWidth, advisorsContainerRef.current]);\n const getElementsCount = (count) => {\n if (maxElementsCount)\n return maxElementsCount;\n return count;\n };\n const renderAdvisors = () => (advisorSectionContent.map((advisor, index) => (React.createElement(\"div\", { key: index, className: \"mbw-advisor-container\", \"data-testid\": \"mbw-advisor-container\", style: {\n \"--elementsCountPhone\": getElementsCount(elementsCountPhone),\n \"--elementsCountTablet\": getElementsCount(elementsCountTablet),\n \"--elementsCountLaptop\": getElementsCount(elementsCountLaptop),\n \"--elementsCountDesktop\": getElementsCount(elementsCountDesktop)\n } }, advisor))));\n const renderAdvisorSectionShortDescriptions = () => {\n if (!advisorSectionShortDescriptions)\n return null;\n return (React.createElement(\"div\", { className: \"mbw-advisor-section-short-descriptions-holder\" }, advisorSectionShortDescriptions));\n };\n const onScrollBtnClick = (e) => {\n const scrollContainer = document.getElementById(`${advisorSectionId}advisorsContainer`);\n if (!scrollContainer)\n return;\n if (e.currentTarget.id === scrollElementTypes.left) {\n scrollContainer.scrollTo({ left: scrollContainer.scrollLeft - scrollContainer.clientWidth, behavior: \"smooth\" });\n return;\n }\n scrollContainer.scrollTo({ left: scrollContainer.scrollLeft + scrollContainer.offsetWidth, behavior: \"smooth\" });\n };\n const getScrollElementClassName = (type) => {\n let className = `mbw-advisor-section-scroll-${type}-element-container`;\n if (needScrollOnBrowser)\n className = className + \" mbw-advisor-section-scroll-element-container-need-scroll-on-browser\";\n return className;\n };\n const renderScrollLeftElement = () => {\n if (!showLeftScrollElement)\n return null;\n return (React.createElement(\"div\", { className: getScrollElementClassName(scrollElementTypes.left) },\n React.createElement(\"button\", { id: scrollElementTypes.left, type: \"button\", className: \"mbw-advisor-section-scroll-element-icon-container\", onClick: onScrollBtnClick },\n React.createElement(Icon, { className: \"mbw-advisor-section-scroll-element-icon\", dataTestId: \"mbw-advisor-section-scroll-element-icon\" }, leftArrowIcon))));\n };\n const renderScrollRightElement = () => {\n if (!showRightScrollElement)\n return null;\n return (React.createElement(\"div\", { className: getScrollElementClassName(scrollElementTypes.right) },\n React.createElement(\"button\", { id: scrollElementTypes.right, type: \"button\", className: \"mbw-advisor-section-scroll-element-icon-container\", onClick: onScrollBtnClick },\n React.createElement(Icon, { className: \"mbw-advisor-section-scroll-element-icon\", dataTestId: \"mbw-advisor-section-scroll-element-icon\" }, rightArrowIcon))));\n };\n const renderScrollElements = () => (React.createElement(React.Fragment, null,\n renderScrollLeftElement(),\n renderScrollRightElement()));\n const getAdvisorsContainerClassName = () => {\n let className = \"mbw-advisors-container\";\n if (needScrollOnBrowser)\n className = className + \" mbw-advisors-container-need-scroll-on-browser\";\n return className;\n };\n const renderAdvisorSectionContent = () => {\n if (advisorSectionContent.length === 0)\n return null;\n return (React.createElement(\"div\", { className: \"mbw-section-main-container\" },\n renderScrollElements(),\n renderAdvisorSectionShortDescriptions(),\n React.createElement(\"div\", { id: `${advisorSectionId}advisorsContainer`, className: getAdvisorsContainerClassName(), ref: advisorsContainerRef },\n React.createElement(\"div\", { className: \"mbw-advisors-container-scroller\", id: `${advisorSectionId}advisorsContainerScroller`, ref: advisorsContainerScrollerRef }, renderAdvisors()))));\n };\n const renderAdvisorSectionTitle = () => {\n if (!advisorSectionTitle)\n return null;\n return (React.createElement(\"div\", { className: \"mbw-advisor-section-title-container\" }, advisorSectionTitle));\n };\n const renderAdvisorSection = () => (React.createElement(\"div\", { className: \"mbw-advisor-section-container\" },\n renderAdvisorSectionTitle(),\n renderAdvisorSectionContent()));\n return renderAdvisorSection();\n};\n\nexport { AdvisorSection as default };\n//# sourceMappingURL=advisor_section.js.map\n","import n from '../../node_modules/rollup-plugin-styles/dist/runtime/inject-css.js';\n\nvar css = \"@keyframes mbw_animationBzdot9__c2d6e9d6{0%{background-position:-200px 0}to{background-position:calc(200px + 100%) 0}}.mbw_skeleton__c2d6e9d6{display:flex;position:relative}.mbw_skeleton__c2d6e9d6:after{-webkit-animation:mbw_animationBzdot9__c2d6e9d6 1.2s ease-in-out infinite;animation:mbw_animationBzdot9__c2d6e9d6 1.2s ease-in-out infinite;background-color:#eee!important;background-image:linear-gradient(90deg,#eee,#f5f5f5,#eee);background-repeat:no-repeat;background-size:200px 100%;contain-intrinsic-size:auto 1px auto 1px;content:\\\"\\\";display:flex;height:100%;left:0;line-height:1;max-width:100%;pointer-events:none;position:absolute;top:0;width:100%}.mbw_advisorSectionTitleLabelContainer__c2d6e9d6{align-items:center;display:flex;justify-content:space-between}.mbw_advisorSectionTitleLabelIconAndTextContainer__c2d6e9d6{align-items:center;display:flex;justify-content:flex-start}.mbw_advisorSectionTitleLabeIcon__c2d6e9d6{display:flex;height:var(--mbw-advisor-section-title-labe-icon-height-desktop,2.25rem);width:var(--mbw-advisor-section-title-labe-icon-width-desktop,2.25rem)}@media (max-width:48rem){.mbw_advisorSectionTitleLabeIcon__c2d6e9d6{height:var(--mbw-advisor-section-title-labe-icon-height-phone,1.875rem);width:var(--mbw-advisor-section-title-labe-icon-width-phone,1.875rem)}}.mbw_advisorSectionTitleLabeTextContainer__c2d6e9d6{display:flex;margin-left:var(--mbw-advisor-section-title-labe-text-container-margin-left-desktop,.938rem)}@media (max-width:48rem){.mbw_advisorSectionTitleLabeTextContainer__c2d6e9d6{margin-left:var(--mbw-advisor-section-title-labe-text-container-margin-left-phone,.5rem)}}.mbw_advisorSectionSeeAllBtnContainer__c2d6e9d6{display:none}@media (max-width:48rem){.mbw_advisorSectionSeeAllBtnContainer__c2d6e9d6{color:var(--mbw-advisor-section-see-all-btn-color,#8755f4);cursor:pointer;display:flex}}\";\nvar modules_c8b79225 = {\"skeleton\":\"mbw_skeleton__c2d6e9d6\",\"animation-bzdot9\":\"mbw_animationBzdot9__c2d6e9d6\",\"advisor-section-title-label-container\":\"mbw_advisorSectionTitleLabelContainer__c2d6e9d6\",\"advisor-section-title-label-icon-and-text-container\":\"mbw_advisorSectionTitleLabelIconAndTextContainer__c2d6e9d6\",\"advisor-section-title-labe-icon\":\"mbw_advisorSectionTitleLabeIcon__c2d6e9d6\",\"advisor-section-title-labe-text-container\":\"mbw_advisorSectionTitleLabeTextContainer__c2d6e9d6\",\"advisor-section-see-all-btn-container\":\"mbw_advisorSectionSeeAllBtnContainer__c2d6e9d6\"};\nn(css,{});\n\nexport { css, modules_c8b79225 as default };\n//# sourceMappingURL=advisor_section_title_label.module.scss.js.map\n","import React from 'react';\nimport Title from '../title/title.js';\nimport classNames from '../../classnames.js';\nimport modules_c8b79225 from './advisor_section_title_label.module.scss.js';\n\nconst AdvisorSectionTitleLabel = ({ iconUrl, titleText, seeAllBtnOnClick, seeAllBtnText, loading }) => {\n const getIconContainerClassName = () => classNames({ [modules_c8b79225.skeleton]: loading });\n const renderIconAndText = () => (React.createElement(\"div\", { className: modules_c8b79225[\"advisor-section-title-label-icon-and-text-container\"] },\n React.createElement(\"div\", { className: getIconContainerClassName() },\n React.createElement(\"img\", { src: iconUrl, alt: \"\", className: modules_c8b79225[\"advisor-section-title-labe-icon\"], \"data-testid\": \"mbw-advisor-section-title-labe-icon\" })),\n React.createElement(\"div\", { className: modules_c8b79225[\"advisor-section-title-labe-text-container\"], \"data-testid\": \"mbw-advisor-section-title-labe-text-container\" },\n React.createElement(Title, { fontStyle: \"heading-h2\", bold: true, loading: loading }, titleText))));\n const renderSeeAllBtn = () => {\n if (!seeAllBtnOnClick || !seeAllBtnText)\n return null;\n return (React.createElement(\"div\", { className: modules_c8b79225[\"advisor-section-see-all-btn-container\"], \"data-testid\": \"mbw-advisor-section-see-all-btn-container\", onClick: seeAllBtnOnClick },\n React.createElement(Title, { fontStyle: \"content-default\", bold: true, loading: loading }, seeAllBtnText)));\n };\n const renderAdvisorSectionTitleLabel = () => (React.createElement(\"div\", { className: modules_c8b79225[\"advisor-section-title-label-container\"] },\n renderIconAndText(),\n renderSeeAllBtn()));\n return renderAdvisorSectionTitleLabel();\n};\n\nexport { AdvisorSectionTitleLabel as default };\n//# sourceMappingURL=advisor_section_title_label.js.map\n","import n from '../../node_modules/rollup-plugin-styles/dist/runtime/inject-css.js';\n\nvar css = \"@keyframes mbw_animationBzdot9__342ec25f{0%{background-position:-200px 0}to{background-position:calc(200px + 100%) 0}}.mbw_skeleton__342ec25f{display:flex;position:relative}.mbw_skeleton__342ec25f:after{-webkit-animation:mbw_animationBzdot9__342ec25f 1.2s ease-in-out infinite;animation:mbw_animationBzdot9__342ec25f 1.2s ease-in-out infinite;background-color:#eee!important;background-image:linear-gradient(90deg,#eee,#f5f5f5,#eee);background-repeat:no-repeat;background-size:200px 100%;contain-intrinsic-size:auto 1px auto 1px;content:\\\"\\\";display:flex;height:100%;left:0;line-height:1;max-width:100%;pointer-events:none;position:absolute;top:0;width:100%}.mbw_advisorSectionShortDescriptionsContainer__342ec25f{align-items:flex-start;display:flex;flex-direction:column;justify-content:flex-start;margin-right:var(--mbw-advisor-section-short-descriptions-container-margin-right,1.875rem)}.mbw_advisorSectionShortDescriptionsTextContainer__342ec25f{color:var(--mbw-advisor-section-short-descriptions-text-color,var(--mbw-text-primary,#121212));display:flex;margin-top:var(--mbw-advisor-section-short-descriptions-text-container-margin-top,1.875rem);width:100%}.mbw_advisorSectionShortDescriptionsSubTextContainer__342ec25f{color:var(--mbw-advisor-section-short-descriptions-sub-text-color,var(--mbw-text-secondary,#636570));display:flex;margin-top:var(--mbw-advisor-section-short-descriptions-sub-text-container-margin-top,1rem);width:100%}.mbw_advisorSectionShortDescriptionsSeeAllBtnContainer__342ec25f{align-items:center;border:var(--mbw-advisor-section-short-descriptions-see-all-btn-container-border-size,.063rem) solid var(--mbw-advisor-section-short-descriptions-see-all-btn-container-border-color,var(--mbw-default-border,#eaeaea));border-radius:var(--mbw-advisor-section-short-descriptions-see-all-btn-container-border-radius,.625rem);color:var(--mbw-advisor-section-short-descriptions-text-color,var(--mbw-text-primary,#121212));cursor:pointer;display:flex;justify-content:center;margin-top:var(--mbw-advisor-section-short-descriptions-see-all-btn-container-margin-top,2.5rem);padding:var(--mbw-advisor-section-short-descriptions-see-all-btn-container-padding,.813rem .625rem .813rem .625rem);width:var(--mbw-advisor-section-short-descriptions-see-all-btn-container-width,12.5rem)}\";\nvar modules_14c8d388 = {\"skeleton\":\"mbw_skeleton__342ec25f\",\"animation-bzdot9\":\"mbw_animationBzdot9__342ec25f\",\"advisor-section-short-descriptions-container\":\"mbw_advisorSectionShortDescriptionsContainer__342ec25f\",\"advisor-section-short-descriptions-text-container\":\"mbw_advisorSectionShortDescriptionsTextContainer__342ec25f\",\"advisor-section-short-descriptions-sub-text-container\":\"mbw_advisorSectionShortDescriptionsSubTextContainer__342ec25f\",\"advisor-section-short-descriptions-see-all-btn-container\":\"mbw_advisorSectionShortDescriptionsSeeAllBtnContainer__342ec25f\"};\nn(css,{});\n\nexport { css, modules_14c8d388 as default };\n//# sourceMappingURL=advisor_section_short_descriptions.module.scss.js.map\n","import React from 'react';\nimport Title from '../title/title.js';\nimport AdvisorSectionTitleLabel from '../advisor_section_title_label/advisor_section_title_label.js';\nimport classNames from '../../classnames.js';\nimport modules_14c8d388 from './advisor_section_short_descriptions.module.scss.js';\n\nconst AdvisorSectionShortDescriptions = ({ iconUrl, titleText, shortDescriptionsText, shortDescriptionsSubText, seeAllBtnOnClick, seeAllBtnText, loading }) => {\n const renderAdvisorSectionTitleLabel = () => (React.createElement(AdvisorSectionTitleLabel, { iconUrl: iconUrl, titleText: titleText, loading: loading }));\n const renderShortDescriptionsText = () => {\n if (!shortDescriptionsText && !loading)\n return null;\n return (React.createElement(\"div\", { className: modules_14c8d388[\"advisor-section-short-descriptions-text-container\"], \"data-testid\": \"mbw-advisor-section-short-descriptions-text-container\" },\n React.createElement(Title, { fontStyle: \"heading-h5\", ellipsis: true, maxRows: 5, loading: loading }, shortDescriptionsText)));\n };\n const renderShortDescriptionsSubText = () => {\n if (!shortDescriptionsSubText && !loading)\n return null;\n return (React.createElement(\"div\", { className: modules_14c8d388[\"advisor-section-short-descriptions-sub-text-container\"], \"data-testid\": \"mbw-advisor-section-short-descriptions-sub-text-container\" },\n React.createElement(Title, { fontStyle: \"heading-h6\", ellipsis: true, maxRows: 3, loading: loading }, shortDescriptionsSubText)));\n };\n const getSeeAllBtnContainerClassName = () => classNames(modules_14c8d388[\"advisor-section-short-descriptions-see-all-btn-container\"], { [modules_14c8d388.skeleton]: loading });\n const renderSeeAllBtn = () => {\n if ((!seeAllBtnOnClick || !seeAllBtnText) && !loading)\n return null;\n return (React.createElement(\"div\", { className: getSeeAllBtnContainerClassName(), \"data-testid\": \"mbw-advisor-section-short-descriptions-see-all-btn-container\", onClick: seeAllBtnOnClick },\n React.createElement(Title, { fontStyle: \"content-default\", bold: true, loading: loading }, seeAllBtnText)));\n };\n const renderAdvisorSectionShortDescriptions = () => (React.createElement(\"div\", { className: modules_14c8d388[\"advisor-section-short-descriptions-container\"] },\n renderAdvisorSectionTitleLabel(),\n renderShortDescriptionsText(),\n renderShortDescriptionsSubText(),\n renderSeeAllBtn()));\n return renderAdvisorSectionShortDescriptions();\n};\n\nexport { AdvisorSectionShortDescriptions as default };\n//# sourceMappingURL=advisor_section_short_descriptions.js.map\n","import React from 'react';\n\nconst Clock = () => {\n return (React.createElement(\"svg\", { width: \"30\", height: \"30\", viewBox: \"0 0 30 30\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\" },\n React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M15 27.5C21.9036 27.5 27.5 21.9036 27.5 15C27.5 8.09644 21.9036 2.5 15 2.5C8.09644 2.5 2.5 8.09644 2.5 15C2.5 21.9036 8.09644 27.5 15 27.5ZM15.9375 10C15.9375 9.48223 15.5178 9.0625 15 9.0625C14.4822 9.0625 14.0625 9.48223 14.0625 10V15C14.0625 15.2486 14.1613 15.4871 14.3371 15.6629L17.4621 18.7879C17.8282 19.154 18.4218 19.154 18.7879 18.7879C19.154 18.4218 19.154 17.8282 18.7879 17.4621L15.9375 14.6117V10Z\", fill: \"#121212\" })));\n};\n\nexport { Clock };\n//# sourceMappingURL=Clock.js.map\n","import React from 'react';\n\nconst Stars = () => {\n return (React.createElement(\"svg\", { width: \"50\", height: \"50\", viewBox: \"0 0 50 50\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\" },\n React.createElement(\"path\", { d: \"M20.813 34.3748L18.78 35.3626C14.6531 36.5034 12.5896 37.0738 11.4773 35.8732C10.365 34.6726 10.9405 32.496 12.0915 28.143L12.3893 27.0168C12.7164 25.7798 12.8799 25.1614 12.7977 24.548C12.7154 23.9347 12.3967 23.396 11.7593 22.3185L11.179 21.3375C8.93589 17.5459 7.81434 15.6501 8.5634 14.1416C9.31245 12.6331 11.436 12.511 15.6832 12.2668L16.782 12.2036C17.9889 12.1342 18.5924 12.0995 19.1186 11.8187C19.6448 11.5379 20.0342 11.0429 20.813 10.0528L21.5221 9.15139C24.2627 5.66721 25.633 3.92512 27.2083 4.19344C28.7835 4.46177 29.5205 6.56281 30.9943 10.7649L31.3757 11.852C31.7945 13.0461 32.0039 13.6432 32.4114 14.083C32.8188 14.5228 33.3782 14.7556 34.4969 15.2211L35.5155 15.645C39.4524 17.2833 41.4208 18.1024 41.6453 19.7768C41.8369 21.2052 40.6508 22.4491 38.2264 24.548\", stroke: \"#FF8717\", strokeWidth: \"1.5\" }),\n React.createElement(\"path\", { d: \"M31.7754 22.2687C29.72 19.8093 28.6922 18.5796 27.5108 18.769C26.3293 18.9584 25.7766 20.4415 24.6712 23.4077L24.3853 24.1751C24.0711 25.018 23.9141 25.4394 23.6085 25.7499C23.3029 26.0603 22.8833 26.2246 22.0443 26.5533L21.2804 26.8524C18.3277 28.0089 16.8514 28.5871 16.683 29.769C16.5146 30.9509 17.7657 31.9537 20.2679 33.9593L20.9153 34.4781C21.6263 35.0481 21.9818 35.333 22.1876 35.7231C22.3934 36.1131 22.4262 36.5641 22.4917 37.4661L22.5514 38.2873C22.782 41.4615 22.8973 43.0485 23.9747 43.5896C25.0521 44.1306 26.378 43.2673 29.0299 41.5406L29.7159 41.0939C30.4695 40.6033 30.8463 40.3579 31.2791 40.2886C31.7119 40.2192 32.1516 40.3336 33.0312 40.5624L33.832 40.7708C36.9272 41.576 38.4748 41.9787 39.309 41.1312C40.1433 40.2837 39.7116 38.7473 38.8484 35.6746L38.625 34.8797C38.3797 34.0065 38.257 33.5699 38.3187 33.137C38.3804 32.704 38.6194 32.3237 39.0975 31.5632L39.5327 30.8707C41.2151 28.1943 42.0562 26.856 41.4944 25.7912C40.9327 24.7264 39.34 24.6402 36.1546 24.4678L35.3305 24.4232C34.4253 24.3742 33.9727 24.3497 33.578 24.1515C33.1834 23.9534 32.8913 23.6039 32.3072 22.905L31.7754 22.2687Z\", fill: \"#FF8717\", fillOpacity: \"0.3\", stroke: \"#FF8717\", strokeWidth: \"1.5\" })));\n};\n\nexport { Stars };\n//# sourceMappingURL=Stars.js.map\n","import React from 'react';\n\nconst ChatTypeIcon = () => {\n return (React.createElement(\"svg\", { width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\" },\n React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M21.8032 12.0002C21.8032 17.4148 17.4138 21.8041 11.9992 21.8041C10.4309 21.8041 8.94861 21.4359 7.63406 20.7811C7.28473 20.6071 6.88544 20.5492 6.50843 20.6501L4.32604 21.234C3.37866 21.4875 2.51193 20.6208 2.76542 19.6734L3.34935 17.491C3.45022 17.114 3.39231 16.7147 3.21831 16.3654C2.56356 15.0508 2.19531 13.5685 2.19531 12.0002C2.19531 6.58565 6.58468 2.19629 11.9992 2.19629C17.4138 2.19629 21.8032 6.58565 21.8032 12.0002ZM8.07766 12.9806C7.53621 12.9806 7.09727 12.5417 7.09727 12.0002C7.09727 11.4588 7.53621 11.0198 8.07766 11.0198C8.61912 11.0198 9.05806 11.4588 9.05806 12.0002C9.05806 12.5417 8.61912 12.9806 8.07766 12.9806ZM11.0188 12.0002C11.0188 12.5417 11.4578 12.9806 11.9992 12.9806C12.5407 12.9806 12.9796 12.5417 12.9796 12.0002C12.9796 11.4588 12.5407 11.0198 11.9992 11.0198C11.4578 11.0198 11.0188 11.4588 11.0188 12.0002ZM14.9404 12.0002C14.9404 12.5417 15.3793 12.9806 15.9208 12.9806C16.4623 12.9806 16.9012 12.5417 16.9012 12.0002C16.9012 11.4588 16.4623 11.0198 15.9208 11.0198C15.3793 11.0198 14.9404 11.4588 14.9404 12.0002Z\", fill: \"white\" })));\n};\n\nexport { ChatTypeIcon };\n//# sourceMappingURL=ChatTypeIcon.js.map\n","import React from 'react';\nimport FilterTab from '../../molecules/filter_tab/filter_tab.js';\nimport Button from '../../molecules/button/button.js';\nimport Avatar from '../../molecules/avatar/avatar.js';\nimport Title from '../../atoms/title/title.js';\nimport { Clock } from './assets/Clock.js';\nimport { Stars } from './assets/Stars.js';\nimport { ChatTypeIcon } from './assets/ChatTypeIcon.js';\n\nconst MyOrdersDetailsItem = ({ avatarSrc, time, date, type, tabText, tabIcon, title, subTitle, buttonLinkText, buttonLinkIcon, buttonLinkCallBack }) => {\n return (React.createElement(\"div\", { \"data-test-id\": `${type}`, className: \"mbw-my-orders-details-item\" },\n React.createElement(\"div\", { className: \"mbw-my-orders-details-top-block\" },\n React.createElement(\"div\", { className: \"mbw-my-orders-details-flex\" },\n React.createElement(\"div\", { className: \"mbw-my-orders-details-avatar-block\" },\n React.createElement(Avatar, { imgSrc: avatarSrc, size: \"large\" }),\n React.createElement(Avatar, { imgSrc: avatarSrc, size: \"large\" }),\n React.createElement(\"div\", { className: `mbw-my-orders-details-avatar-middle-icon-${type}` },\n React.createElement(ChatTypeIcon, null))),\n React.createElement(\"div\", null,\n React.createElement(\"div\", { className: \"mbw-my-orders-details-flex\" },\n React.createElement(Clock, null),\n React.createElement(Title, { fontStyle: \"heading-h3\", bold: true }, time),\n React.createElement(\"br\", null)),\n React.createElement(Title, { fontStyle: \"content-default\" }, date))),\n React.createElement(FilterTab, { title: tabText, icon: tabIcon })),\n React.createElement(\"div\", { className: \"mbw-my-orders-details-bottom-block\" },\n React.createElement(\"div\", { className: \"mbw-my-orders-details-flex\" },\n React.createElement(Stars, null),\n React.createElement(\"div\", null,\n React.createElement(Title, { fontStyle: \"heading-h6\", bold: true }, title),\n React.createElement(\"br\", null),\n React.createElement(Title, { fontStyle: \"content-medium\" }, subTitle))),\n React.createElement(\"div\", null,\n React.createElement(Button, { type: \"link\", onClick: () => buttonLinkCallBack, title: buttonLinkText, icon: buttonLinkIcon })))));\n};\n\nexport { MyOrdersDetailsItem as default };\n//# sourceMappingURL=my_orders_details_item.js.map\n","import React from 'react';\nimport Title from '../../../atoms/title/title.js';\nimport Avatar from '../../../molecules/avatar/avatar.js';\nimport ChannelsCard from '../../../atoms/channels_card/channels_card.js';\nimport LiveModesPrices from '../../../atoms/live_modes_prices/live_modes_prices.js';\nimport ReadingSinceAndCount from '../../../atoms/reading_since_and_count/reading_since_and_count.js';\nimport Rating from '../../../atoms/rating/rating.js';\nimport PlayButton from '../../../atoms/play_button/play_button.js';\nimport StatusIndicator from '../../../atoms/status_indicator/status_indicator.js';\n\nconst AdvisorListCardPG = ({ statusIndicatorStatus, rating, playButtonOnClick, imgSrc, advisorName = \"Advisor Name\", advisorServiceName = \"Advisor Service Name\", liveModes = [], liveModeMinPrices, readingData, loading }) => {\n const renderAdvisorAvatar = () => (React.createElement(Avatar, { type: 'rectangle', imgSrc: imgSrc, topOverlayContainer: React.createElement(\"div\", { style: { display: \"flex\", width: \"100%\", alignItems: \"center\", justifyContent: \"space-between\" } },\n React.createElement(Rating, { type: \"default\", rating: rating, loading: loading }),\n React.createElement(PlayButton, { type: 'default', onClick: playButtonOnClick, loading: loading })), bottomOverlayContainer: React.createElement(React.Fragment, null,\n React.createElement(Title, { fontStyle: \"content-default\", bold: true, loading: loading }, \" dadadaw\")), transformContainer: React.createElement(StatusIndicator, { status: statusIndicatorStatus, size: \"default\", loading: loading }), hideBorders: { leftBottom: true, rightBottom: true } }));\n const renderAdvisorNameAndServiceName = () => (React.createElement(\"div\", { className: \"mbw-advisor-list-card-advisor-name-and-service-container\" },\n React.createElement(\"div\", { className: \"mbw-advisor-list-card-advisor-name-container\", \"data-testid\": \"mbw-advisor-list-card-advisor-name-container\" },\n React.createElement(Title, { fontStyle: 'heading-h4', bold: true, loading: loading, ellipsis: true }, advisorName)),\n React.createElement(\"div\", { className: \"mbw-advisor-list-card-advisor-service-mame-container\", \"data-testid\": \"mbw-advisor-list-card-advisor-service-name-container\" },\n React.createElement(Title, { fontStyle: \"content-default\", loading: loading, ellipsis: true }, advisorServiceName))));\n const renderChannelsCardAndLiveModesPricesContainer = () => (React.createElement(\"div\", { className: \"mbw-advisor-list-card-channels-card-and-live-modes-prices-container\" },\n React.createElement(\"div\", { className: \"mbw-advisor-list-card-channels-card-container\" },\n React.createElement(ChannelsCard, { type: \"medium\", liveModes: liveModes, loading: loading })),\n React.createElement(\"div\", { className: \"mbw-advisor-list-card-live-modes-prices-container\" },\n React.createElement(LiveModesPrices, { type: \"default\", liveModeMinPrices: liveModeMinPrices, loading: loading }))));\n const renderReadingSinceAndCount = () => (React.createElement(\"div\", { className: \"mbw-advisor-list-card-reading-since-and-count-container\" },\n React.createElement(\"div\", { className: \"mbw-advisor-list-card-reading-since-and-count-browser\" },\n React.createElement(ReadingSinceAndCount, { type: \"small\", readingData: readingData, loading: loading })),\n React.createElement(\"div\", { className: \"mbw-advisor-list-card-reading-since-and-count-mobile\" },\n React.createElement(ReadingSinceAndCount, { type: \"extra-small\", readingData: readingData, loading: loading }))));\n const renderDataContainer = () => (React.createElement(\"div\", { className: \"mbw-advisor-list-card-data-container\" },\n renderAdvisorNameAndServiceName(),\n renderChannelsCardAndLiveModesPricesContainer(),\n renderReadingSinceAndCount()));\n const renderAdvisorListCard = () => (React.createElement(\"div\", { className: \"mbw-advisor-list-card-container\", \"data-testid\": \"mbw-advisor-list-card-container\" },\n renderAdvisorAvatar(),\n renderDataContainer()));\n return renderAdvisorListCard();\n};\n\nexport { AdvisorListCardPG as default };\n//# sourceMappingURL=advisor_list_card_pg.js.map\n","import React from 'react';\nimport Title from '../../../atoms/title/title.js';\nimport Avatar from '../../../molecules/avatar/avatar.js';\nimport Rating from '../../../atoms/rating/rating.js';\nimport Icon from '../../../atoms/icon/icon.js';\nimport Button from '../../../molecules/button/button.js';\nimport StatusIndicator from '../../../atoms/status_indicator/status_indicator.js';\nimport { RatingIcon } from './assets/RatingIcon.js';\nimport { HeartIcon } from './assets/HeartIcon.js';\n\nconst AdvisorListCardKA = ({ statusIndicatorStatus, statusIndicatorText, rating, imgSrc, readingData, advisorName = \"Advisor Name\", advisorServiceName = \"Advisor Service Name\", loading, reviews, bonus, advisorDescription, liveModeMinPrices, playButtonOnClick }) => {\n const renderAdvisorAvatar = () => (React.createElement(Avatar, { type: 'rectangle', imgSrc: imgSrc, size: \"large\" }));\n const renderAdvisorNameAndServiceName = () => (React.createElement(\"div\", { className: \"mbw-advisor-list-card-advisor-name-and-service-container\" },\n React.createElement(\"div\", { className: \"mbw-advisor-list-card-advisor-name-container\", \"data-testid\": \"mbw-advisor-list-card-advisor-name-container\" },\n React.createElement(Title, { fontStyle: 'heading-h4', bold: true, loading: loading, ellipsis: true }, advisorName)),\n React.createElement(\"div\", { className: \"mbw-advisor-list-card-advisor-service-mame-container\", \"data-testid\": \"mbw-advisor-list-card-advisor-service-name-container\" },\n React.createElement(Title, { fontStyle: \"content-default\", loading: loading, ellipsis: true }, advisorServiceName)),\n React.createElement(\"div\", { className: \"mbw-advisor-list-card-advisor-ka-status\" },\n React.createElement(StatusIndicator, { status: statusIndicatorStatus, size: \"medium\" }),\n React.createElement(\"div\", { className: `mbw-status-indicator-${statusIndicatorStatus}-text` },\n React.createElement(Title, { fontStyle: \"content-medium\" }, statusIndicatorText)))));\n const renderAdvisorListCard = () => (React.createElement(\"div\", { className: \"mbw-advisor-list-card-ka-container\", \"data-testid\": \"mbw-advisor-list-card-container\" },\n React.createElement(\"div\", { className: \"mbw-advisor-list-card-name-wrapper-ka\" },\n renderAdvisorAvatar(),\n renderAdvisorNameAndServiceName(),\n React.createElement(\"div\", { className: \"mbw-advisor-list-card-heart-icon\" },\n React.createElement(Icon, { width: \"22\", height: \"20\" }, HeartIcon()))),\n React.createElement(\"div\", { className: \"mbw-advisor-list-card-button-ka-rating\" },\n React.createElement(\"div\", { className: \"mbw-advisor-list-card-button-ka-rating-child\" },\n React.createElement(Rating, { type: \"default\", rating: rating, loading: loading }),\n React.createElement(Title, { fontStyle: 'content-small', loading: loading, ellipsis: true }, reviews)),\n React.createElement(\"div\", { className: \"mbw-advisor-list-card-button-ka-rating-child\" },\n React.createElement(Title, { fontStyle: 'heading-h4', bold: true, loading: loading, ellipsis: true }, readingData?.readingsCount),\n React.createElement(Title, { fontStyle: 'content-small', loading: loading, ellipsis: true }, readingData?.yearJoined))),\n React.createElement(\"div\", { className: \"mbw-advisor-list-card-button-ka-description\" },\n React.createElement(Title, { fontStyle: \"content-default\", maxRows: 3, ellipsis: true }, advisorDescription)),\n React.createElement(\"div\", { className: \"mbw-advisor-list-card-button-ka\" },\n React.createElement(\"div\", { className: \"mbw-advisor-list-card-button-ka-price\" },\n bonus,\n React.createElement(Title, { fontStyle: 'heading-h4', bold: true, loading: loading, ellipsis: true }, liveModeMinPrices?.liveModeMinPriceTitle)),\n React.createElement(\"div\", { className: \"mbw-advisor-list-card-button-ka-rating-child\" },\n React.createElement(Button, { type: \"primary\", onClick: () => playButtonOnClick(), title: \"Chat now\", icon: RatingIcon() })))));\n return renderAdvisorListCard();\n};\n\nexport { AdvisorListCardKA as default };\n//# sourceMappingURL=advisor_list_card_ka.js.map\n","import React from 'react';\n\nconst HeartIcon = () => {\n return React.createElement(\"svg\", { width: \"22\", height: \"20\", viewBox: \"0 0 22 20\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\" },\n React.createElement(\"path\", { d: \"M7.96173 16.9111L8.42605 16.3221L7.96173 16.9111ZM11 3.50088L10.4596 4.02098C10.601 4.16787 10.7961 4.25088 11 4.25088C11.2039 4.25088 11.399 4.16787 11.5404 4.02098L11 3.50088ZM14.0383 16.9111L14.5026 17.5001L14.0383 16.9111ZM8.42605 16.3221C6.91039 15.1273 5.25307 13.9605 3.93829 12.48C2.64922 11.0285 1.75 9.33474 1.75 7.13734H0.25C0.25 9.80287 1.3605 11.8363 2.81672 13.476C4.24723 15.0868 6.07077 16.3755 7.49742 17.5001L8.42605 16.3221ZM1.75 7.13734C1.75 4.98647 2.96537 3.18277 4.62436 2.42444C6.23607 1.68772 8.40166 1.88282 10.4596 4.02098L11.5404 2.98078C9.0985 0.443765 6.26409 0.0256307 4.00076 1.0602C1.78471 2.07317 0.25 4.42527 0.25 7.13734H1.75ZM7.49742 17.5001C8.00965 17.9039 8.55954 18.3345 9.11682 18.6602C9.67386 18.9857 10.3096 19.2502 11 19.2502V17.7502C10.6904 17.7502 10.3261 17.6295 9.87361 17.3651C9.42132 17.1008 8.95208 16.7368 8.42605 16.3221L7.49742 17.5001ZM14.5026 17.5001C15.9292 16.3755 17.7528 15.0868 19.1833 13.476C20.6395 11.8363 21.75 9.80287 21.75 7.13734H20.25C20.25 9.33474 19.3508 11.0285 18.0617 12.48C16.7469 13.9605 15.0896 15.1273 13.574 16.3221L14.5026 17.5001ZM21.75 7.13734C21.75 4.42527 20.2153 2.07317 17.9992 1.0602C15.7359 0.0256307 12.9015 0.443765 10.4596 2.98078L11.5404 4.02098C13.5983 1.88282 15.7639 1.68772 17.3756 2.42444C19.0346 3.18277 20.25 4.98647 20.25 7.13734H21.75ZM13.574 16.3221C13.0479 16.7368 12.5787 17.1008 12.1264 17.3651C11.6739 17.6295 11.3096 17.7502 11 17.7502V19.2502C11.6904 19.2502 12.3261 18.9857 12.8832 18.6602C13.4405 18.3345 13.9903 17.9039 14.5026 17.5001L13.574 16.3221Z\", fill: \"#7C7F89\" }));\n};\n\nexport { HeartIcon };\n//# sourceMappingURL=HeartIcon.js.map\n","import React from 'react';\n\nconst RatingIcon = () => {\n return React.createElement(\"svg\", { width: \"20\", height: \"19\", viewBox: \"0 0 20 19\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\" },\n React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M10.9963 18.1051L11.4932 17.2655C11.8786 16.6143 12.0713 16.2887 12.3809 16.1087C12.6905 15.9287 13.0802 15.9219 13.8597 15.9085C15.0104 15.8887 15.7322 15.8182 16.3375 15.5675C17.4605 15.1023 18.3528 14.21 18.8179 13.087C19.1668 12.2447 19.1668 11.1769 19.1668 9.04134V8.12467C19.1668 5.12403 19.1668 3.62371 18.4914 2.52156C18.1135 1.90484 17.595 1.38633 16.9783 1.00841C15.8761 0.333008 14.3758 0.333008 11.3752 0.333008H8.62516C5.62452 0.333008 4.1242 0.333008 3.02204 1.00841C2.40533 1.38633 1.88682 1.90484 1.5089 2.52156C0.833496 3.62371 0.833496 5.12403 0.833496 8.12467V9.04134C0.833496 11.1769 0.833496 12.2447 1.18238 13.087C1.64756 14.21 2.53982 15.1023 3.66286 15.5675C4.26814 15.8182 4.98986 15.8887 6.14061 15.9085C6.92009 15.9219 7.30983 15.9287 7.61939 16.1087C7.92894 16.2887 8.12166 16.6143 8.5071 17.2655L9.00403 18.1051C9.44693 18.8533 10.5534 18.8533 10.9963 18.1051ZM13.6668 9.49967C14.1731 9.49967 14.5835 9.08927 14.5835 8.58301C14.5835 8.07675 14.1731 7.66634 13.6668 7.66634C13.1606 7.66634 12.7502 8.07675 12.7502 8.58301C12.7502 9.08927 13.1606 9.49967 13.6668 9.49967ZM10.9168 8.58301C10.9168 9.08927 10.5064 9.49967 10.0002 9.49967C9.4939 9.49967 9.0835 9.08927 9.0835 8.58301C9.0835 8.07675 9.4939 7.66634 10.0002 7.66634C10.5064 7.66634 10.9168 8.07675 10.9168 8.58301ZM6.3335 9.49967C6.83976 9.49967 7.25016 9.08927 7.25016 8.58301C7.25016 8.07675 6.83976 7.66634 6.3335 7.66634C5.82723 7.66634 5.41683 8.07675 5.41683 8.58301C5.41683 9.08927 5.82723 9.49967 6.3335 9.49967Z\", fill: \"white\" }));\n};\n\nexport { RatingIcon };\n//# sourceMappingURL=RatingIcon.js.map\n","import React from 'react';\nimport Avatar from '../avatar/avatar.js';\n\nconst TypingIndicator = ({ avatarSrc = null }) => (React.createElement(\"div\", { className: \"mbw-typing-indicator-wrapper\" },\n React.createElement(\"div\", { className: \"mbw-typing-indicator-avatar-container\" },\n React.createElement(Avatar, { imgSrc: avatarSrc, type: \"round\", size: \"small\" })),\n React.createElement(\"div\", { className: \"mbw-typing-indicator\" },\n React.createElement(\"div\", { \"data-testid\": \"typing-indicator\", className: \"mbw-typing-indicator-loader\" },\n React.createElement(\"div\", { className: \"mbw-typing-indicator-loader-circle\" }),\n React.createElement(\"div\", { className: \"mbw-typing-indicator-loader-circle\" }),\n React.createElement(\"div\", { className: \"mbw-typing-indicator-loader-circle\" })))));\n\nexport { TypingIndicator as default };\n//# sourceMappingURL=typing_indicator.js.map\n","import React from 'react';\nimport Title from '../../atoms/title/title.js';\n\nconst MarketingBanner = ({ offers, offerIcon }) => {\n const renderTitle = (offer) => {\n let wrapperClassName = \"mbw-marketing-banner-item-wrapper\";\n if (offers.length === 1) {\n wrapperClassName += \" mbw-marketing-banner-wraper-single-item\";\n }\n return (React.createElement(\"div\", { className: wrapperClassName },\n React.createElement(\"div\", { className: \"mbw-marketing-banner-title\" },\n React.createElement(Title, { fontStyle: \"heading-h4\" }, offer.title),\n React.createElement(Title, { fontStyle: \"content-small\" }, offer.subtitle))));\n };\n const contentHolderClass = \"mbw-marketing-banner-content-holder\";\n return (React.createElement(\"div\", { className: \"mbw-marketing-banner-wrapper\" },\n React.createElement(\"div\", { className: contentHolderClass },\n renderTitle(offers[0]),\n React.createElement(\"div\", { className: \"mbw-marketing-banner-icon\" }, offerIcon),\n offers[1] && renderTitle(offers[1]))));\n};\n\nexport { MarketingBanner as default };\n//# sourceMappingURL=marketing_banner.js.map\n","import React from 'react';\n\nconst closeIcon = (React.createElement(\"path\", { d: \"M19.4999 5.00006L5.5 19M5.49994 5L19.4999 18.9999\", stroke: \"#121212\", strokeWidth: \"1.5\", strokeLinecap: \"round\" }));\nconst backIcon = (React.createElement(\"path\", { d: \"M20 12H4M4 12L10 6M4 12L10 18\", stroke: \"#121212\", strokeWidth: \"1.5\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }));\n\nexport { backIcon, closeIcon };\n//# sourceMappingURL=icons.js.map\n","import React, { useRef, useEffect, useCallback } from 'react';\nimport { createPortal } from 'react-dom';\nimport Icon from '../../atoms/icon/icon.js';\nimport { backIcon, closeIcon } from './assets/icons.js';\n\nconst Popover = ({ isOpen, children, insertNode, width, closeOnBackdropClick, renderTitle, renderCloseButton, renderBackButton, renderTopOverlay, onCloseButtonClick, onBackButtonClick }) => {\n const dialogRef = useRef(null);\n useEffect(() => {\n isOpen ? dialogRef.current?.showModal() : dialogRef.current?.close();\n }, [isOpen]);\n const handleBackdropClick = useCallback((e) => {\n if (!e.currentTarget.matches(\"dialog\"))\n return;\n const { top, bottom, left, right } = e.currentTarget.getBoundingClientRect();\n const { clientX: mouseX, clientY: mouseY } = e;\n if (mouseX === 0 && mouseY === 0)\n return;\n const clickedOutsideOfModalBox = (mouseX <= left || mouseX >= right ||\n mouseY <= top || mouseY >= bottom);\n if (clickedOutsideOfModalBox)\n dialogRef.current?.close();\n }, [dialogRef]);\n const prepareBackButton = () => {\n if (renderBackButton)\n return renderBackButton();\n if (!onBackButtonClick)\n return null;\n return (React.createElement(\"div\", { className: \"mbw-popover-back-btn-container\", \"data-testid\": \"mbw-popover-back-btn-container\" },\n React.createElement(\"button\", { \"aria-label\": \"back\", className: \"mbw-popover-back-btn\", onClick: onBackButtonClick },\n React.createElement(Icon, null, backIcon))));\n };\n const prepareCloseButton = () => {\n if (renderCloseButton)\n return renderCloseButton();\n if (!onCloseButtonClick)\n return null;\n return (React.createElement(\"div\", { className: \"mbw-popover-close-btn-container\", \"data-testid\": \"mbw-popover-close-btn-container\" },\n React.createElement(\"button\", { \"aria-label\": \"close\", className: \"mbw-popover-close-btn\", onClick: onCloseButtonClick },\n React.createElement(Icon, null, closeIcon))));\n };\n return (React.createElement(React.Fragment, null, createPortal(React.createElement(\"dialog\", { ref: dialogRef, onClick: closeOnBackdropClick ? handleBackdropClick : undefined, className: \"mbw-popover-dialog\", \"data-testid\": \"mbw-popover-dialog\", style: { \"--mbw-popover-width\": width } },\n renderTopOverlay && (React.createElement(\"div\", { className: \"mbw-popover-top-overlay-container\", \"data-testid\": \"mbw-popover-top-overlay-container\" }, renderTopOverlay())),\n prepareCloseButton(),\n React.createElement(\"div\", { className: \"mbw-popover-title-container\", \"data-testid\": \"mbw-popover-title-container\" },\n prepareBackButton(),\n React.createElement(\"div\", { className: \"mbw-popover-title\", \"data-testid\": \"mbw-popover-title\" }, renderTitle())),\n React.createElement(\"div\", { className: \"mbw-popover-content\", \"data-testid\": \"mbw-popover-content\" }, children)), insertNode || document.body)));\n};\n\nexport { Popover as default };\n//# sourceMappingURL=popover.js.map\n","import React from 'react';\n\nconst arrowImg = (React.createElement(\"svg\", { width: \"24\", height: \"24\", viewBox: \"0 0 24 24\", fill: \"red\", xmlns: \"http://www.w3.org/2000/svg\" },\n React.createElement(\"path\", { d: \"M9 19L15 12L9 5\", stroke: \"white\", strokeWidth: \"1.5\", strokeLinecap: \"round\", strokeLinejoin: \"round\" })));\n\nexport { arrowImg };\n//# sourceMappingURL=arrow_img.js.map\n","import React from 'react';\nimport { arrowImg } from './img/arrow_img.js';\nimport Icon from '../icon/icon.js';\nimport Title from '../title/title.js';\n\nconst renderArrow = (active, couponType) => {\n if (active) {\n return (React.createElement(Icon, { className: `mbw-coupon-arrow-${couponType}`, dataTestId: \"mbw-coupon-arrow\" }, arrowImg));\n }\n return null;\n};\nconst Coupon = ({ couponType = \"small\", active = true, discountText, icon, description, badge }) => {\n const couponStyleByState = active ? \"mbw-coupon-active\" : \"mbw-coupon-inactive\";\n let titleByType;\n switch (couponType) {\n case \"large\":\n titleByType = \"heading-h4\";\n break;\n case \"medium\":\n titleByType = \"heading-h5\";\n break;\n case \"small\":\n titleByType = \"content-medium\";\n break;\n }\n const renderCoupon = () => (React.createElement(\"div\", { \"data-testid\": \"mbw-coupon-container\", className: `mbw-coupon-container-${couponType} ${couponStyleByState}` },\n badge && React.createElement(\"div\", { \"data-testid\": \"mbw-coupon-badge\", className: \"mbw-coupon-badge\" }, badge),\n React.createElement(\"div\", { \"data-testid\": \"mbw-coupon-content\", className: \"mbw-coupon-content\" },\n icon && React.createElement(Icon, { className: `mbw-coupon-icon-${couponType}`, dataTestId: \"mbw-coupon-icon\" }, icon),\n React.createElement(\"div\", { className: \"mbw-coupon-info-container\", \"data-testid\": \"mbw-coupon-info-container\" },\n React.createElement(\"div\", { className: `mbw-coupon-info-${couponType}`, \"data-testid\": \"mbw-coupon-info\" },\n React.createElement(Title, { fontStyle: titleByType, bold: true }, discountText),\n description && React.createElement(Title, { fontStyle: \"caption-1\" }, description)),\n renderArrow(active, couponType)))));\n return renderCoupon();\n};\n\nexport { Coupon as default };\n//# sourceMappingURL=coupon.js.map\n","import n from '../node_modules/rollup-plugin-styles/dist/runtime/inject-css.js';\n\nvar css = \":root{--mbw-general-light:#fff;--mbw-general-dark:#27292f;--mbw-background-primary:#fff;--mbw-background-secondary:#f7f7f7;--mbw-text-primary:#121212;--mbw-text-secondary:#636570;--mbw-text-tertiary:#fff;--mbw-default-border:var(--mbw-default-border,#eaeaea);--mbw-icon-primarym:#121212;--mbw-icon-secondary:#636570;--mbw-icon-tertiary:#fff;--mbw-button-primary:#8755f4;--mbw-button-primary-hover:#a479ff;--mbw-button-primary-dissabled:#c3c5ca;--mbw-button-secondary:#121212;--mbw-button-secondary-hover:#8755f4;--mbw-button-secondary-disabled:#636570;--mbw-button-link:#8755f4;--mbw-button-link-hover:rgba(135,85,244,.102);--mbw-button-link-disabled:#f7f7f7;--mbw-red:#ff5a5a;--mbw-orange:#ff8717;--mbw-yellow:#ffb222;--mbw-green:#62dd13;--mbw-sky-blue:#1cb4ff;--mbw-blue:#4f60ff;--mbw-purple:#8755f4;--mbw-bg-psychic-readings:#e9dded;--mbw-bg-love-readings:#f1dede;--mbw-bg-tarot-readings:#dae7f1;--mbw-bg-palm-readings:#dbebdd;--mbw-bg-oracle-guidence:#f0ebd2;--mbw-bg-astrology-horoscopes:#d8ecee;--mbw-bg-angel-insights:#f2dcec;--mbw-bg-dream-analysis:#e2e2fa;--mbw-bg-spiritual-medium:#dbebdd;--mbw-psychic-readings:#9356a5;--mbw-love-readings:#ba5a5a;--mbw-tarot-readings:#4787b9;--mbw-palm-readings:#499c56;--mbw-oracle-guidence:#b69d1e;--mbw-astrology-horoscopes:#3e9ea8;--mbw-angel-insight:#bf50a0;--mbw-dream-analysis:#7070e5;--mbw-spiritual-medium:#499c56;--mbw-bg-psychic-readings-gradient:#9356a50a;--mbw-bg-love-readings-gradient:#ba5a5a0a;--mbw-bg-tarot-readings-gradient:#4787b90a;--mbw-bg-palm-readings-gradient:#499c560a;--mbw-bg-oracle-guidence-gradient:#b69d1e0a;--mbw-bg-astrology-horoscopes-gradient:#3e9ea80a;--mbw-bg-angel-insights-gradient:#bf50a00a;--mbw-bg-dream-analysis-gradient:#7070e50a;--mbw-switch-background-color:#d0d0d0;--mbw-switch-background-color-before:#fff;--mbw-switch-background-color-checked:#62dd13;--mbw-chat-color:#62dd13;--mbw-voice-color:#8755f4;--mbw-video-color:#1cb4ff;--mbw-default-shadow-color:#f7f7f7;--mbw-input-shadow-color:rgba(0,0,0,.08);--mbw-line-height-small:1.3;--mbw-line-height-medium:1.4;--mbw-line-height-large:1.5;--mbw-fs-jumbo-lg:4rem;--mbw-fs-h1-lg:3rem;--mbw-fs-h2-lg:2.125rem;--mbw-fs-h3-lg:1.75rem;--mbw-fs-h4-lg:1.375rem;--mbw-fs-h5-lg:1.2rem;--mbw-fs-h6-lg:1.125rem;--mbw-fs-default-lg:1.063rem;--mbw-fs-medium-lg:0.938rem;--mbw-fs-small-lg:0.875rem;--mbw-fs-caption-1-lg:0.75rem;--mbw-fs-caption-2-lg:0.625rem;--mbw-fs-jumbo-md:3.375rem;--mbw-fs-h1-md:2.375rem;--mbw-fs-h2-md:1.75rem;--mbw-fs-h3-md:1.5rem;--mbw-fs-h4-md:1.2rem;--mbw-fs-h5-md:1.125rem;--mbw-fs-h6-md:1.063rem;--mbw-fs-default-md:1rem;--mbw-fs-medium-md:0.938rem;--mbw-fs-small-md:0.875rem;--mbw-fs-caption-1-md:0.75rem;--mbw-fs-caption-2-md:0.625rem;--mbw-fs-jumbo-sm:1.75rem;--mbw-fs-h1-sm:1.75rem;--mbw-fs-h2-sm:1.5rem;--mbw-fs-h3-sm:1.375rem;--mbw-fs-h4-sm:1.125rem;--mbw-fs-h5-sm:1rem;--mbw-fs-h6-sm:0.938rem;--mbw-fs-default-sm:0.938rem;--mbw-fs-medium-sm:0.875rem;--mbw-fs-small-sm:0.813rem;--mbw-fs-caption-1-sm:0.75rem;--mbw-fs-caption-2-sm:0.625rem;--mbw-duration-item-selected-bg-color:rgba(135,85,244,.102);--mbw-duration-item-selected-fg-color:#8755f4;--mbw-duration-item-new-user-mobile-selected-price-bg-color:#62dd13}*,:after,:before{box-sizing:border-box}\";\nn(css,{});\n\nexport { css };\n//# sourceMappingURL=global.scss.js.map\n","const pemMapping = {\n \"41px\": \"41px\",\n \"34px\": \"34px\",\n \"28px\": \"28px\",\n \"25px\": \"25px\",\n \"22px\": \"22px\",\n \"20px\": \"20px\",\n \"18px\": \"18px\",\n \"17px\": \"17px\",\n \"16px\": \"16px\",\n \"15px\": \"15px\",\n \"14px\": \"14px\",\n \"13px\": \"13px\",\n \"12px\": \"12px\",\n \"10px\": \"10px\",\n \"none\": \"none\"\n};\nvar pem_mapping = Object.freeze(pemMapping);\n\nexport { pem_mapping as default };\n//# sourceMappingURL=pem_mapping.js.map\n","const FontStyling = {\n \"heading-jumbo\": \"heading-jumbo\",\n \"heading-h1\": \"heading-h1\",\n \"heading-h2\": \"heading-h2\",\n \"heading-h3\": \"heading-h3\",\n \"heading-h4\": \"headline\",\n \"heading-h5\": \"heading-h5\",\n \"heading-h6\": \"heading-h6\",\n \"content-default\": \"content-default\",\n \"content-medium\": \"content-medium\",\n \"content-small\": \"content-small\",\n \"caption-1\": \"caption-1\",\n \"caption-2\": \"caption-2\"\n};\nvar font_styling = Object.freeze(FontStyling);\n\nexport { font_styling as default };\n//# sourceMappingURL=font_styling.js.map\n","const ButtonTypes = {\n \"primary\": \"primary\",\n \"secondary\": \"secondary\",\n \"link\": \"link\",\n \"title\": \"title\"\n};\nvar button = Object.freeze(ButtonTypes);\n\nexport { button as default };\n//# sourceMappingURL=button.js.map\n","const AvatarTypes = Object.freeze({\n \"round\": \"round\",\n \"rectangle\": \"rectangle\"\n});\nconst AvatarSize = Object.freeze({\n \"large\": \"large\",\n \"medium\": \"medium\",\n \"small\": \"small\",\n \"extra-small\": \"extra-small\"\n});\nvar AvatarProps = { AvatarTypes, AvatarSize };\n\nexport { AvatarProps as default };\n//# sourceMappingURL=avatar.js.map\n","const StatusIndicatorStatus = Object.freeze({\n \"online\": \"online\",\n \"offline\": \"offline\",\n \"busy\": \"busy\"\n});\nconst StatusIndicatorSizes = Object.freeze({\n \"big\": \"big\",\n \"default\": \"default\",\n \"medium\": \"medium\",\n \"small\": \"small\",\n \"extra-small\": \"extra-small\",\n \"extra-small-1\": \"extra-small-1\"\n});\nvar StatusIndicatorProps = { StatusIndicatorStatus, StatusIndicatorSizes };\n\nexport { StatusIndicatorProps as default };\n//# sourceMappingURL=status_indicator.js.map\n","const SpecialityTypes = Object.freeze({\n \"standard\": \"standard\",\n \"button\": \"button\",\n \"advisor-profile\": \"advisor-profile\"\n});\nconst SpecialityKinds = Object.freeze({\n \"love_readings\": \"love-readings\",\n \"psychic_readings\": \"psychic-readings\",\n \"tarot_readings\": \"tarot-readings\",\n \"astrology_horoscopes\": \"astrology-horoscopes\",\n \"palm_readings\": \"palm-readings\",\n \"angel_insights\": \"angel-insights\",\n \"oracle_guidance\": \"oracle-guidance\",\n \"dream_analysis\": \"dream-analysis\",\n \"spiritual_medium\": \"spiritual-medium\"\n});\nvar SpecialityProps = { SpecialityTypes, SpecialityKinds };\n\nexport { SpecialityProps as default };\n//# sourceMappingURL=speciality.js.map\n","const MyOrdersAdvisorCellTypes = {\n \"completed\": \"completed\",\n \"need-review\": \"need-review\"\n};\nvar my_orders_advisor_cell_types = Object.freeze(MyOrdersAdvisorCellTypes);\n\nexport { my_orders_advisor_cell_types as default };\n//# sourceMappingURL=my_orders_advisor_cell_types.js.map\n","const ReviewTypes = {\n \"positive\": \"positive\",\n \"negative\": \"negative\"\n};\nvar review_type = Object.freeze(ReviewTypes);\n\nexport { review_type as default };\n//# sourceMappingURL=review_type.js.map\n","const LabelTypes = {\n \"default\": \"default\",\n \"red\": \"red\",\n \"green\": \"green\",\n \"purple\": \"purple\",\n \"gray\": \"gray\"\n};\nvar label_types = Object.freeze(LabelTypes);\n\nexport { label_types as default };\n//# sourceMappingURL=label_types.js.map\n","const LabelSizings = {\n \"small\": \"small\",\n \"large\": \"large\"\n};\nvar label_sizings = Object.freeze(LabelSizings);\n\nexport { label_sizings as default };\n//# sourceMappingURL=label_sizings.js.map\n","const OrderTypes = {\n \"live-chat\": \"live-chat\",\n \"video-call\": \"video-call\",\n \"voice-call\": \"voice-call\"\n};\nvar order = Object.freeze(OrderTypes);\n\nexport { order as default };\n//# sourceMappingURL=order.js.map\n","const FilterTabTypes = {\n \"filter\": \"filter\",\n \"hero\": \"hero\"\n};\nvar filter_tab = Object.freeze(FilterTabTypes);\n\nexport { filter_tab as default };\n//# sourceMappingURL=filter_tab.js.map\n","const PlayButtonTypes = {\n \"default\": \"default\",\n \"big\": \"big\"\n};\nvar play_button = Object.freeze(PlayButtonTypes);\n\nexport { play_button as default };\n//# sourceMappingURL=play_button.js.map\n","const RatingTypes = {\n \"big\": \"big\",\n \"medium\": \"medium\",\n \"small\": \"small\",\n \"large\": \"large\",\n \"default\": \"default\"\n};\nvar rating = Object.freeze(RatingTypes);\n\nexport { rating as default };\n//# sourceMappingURL=rating.js.map\n","const ChannelsCardTypes = {\n \"big\": \"big\",\n \"medium\": \"medium\",\n \"small\": \"small\"\n};\nvar channels_card = Object.freeze(ChannelsCardTypes);\n\nexport { channels_card as default };\n//# sourceMappingURL=channels_card.js.map\n","const AdvisorListCardTypes = {\n \"large\": \"large\",\n \"medium\": \"medium\",\n \"small\": \"small\"\n};\nvar advisor_list_card = Object.freeze(AdvisorListCardTypes);\n\nexport { advisor_list_card as default };\n//# sourceMappingURL=advisor_list_card.js.map\n","const LiveModesPricesTypes = {\n \"big\": \"big\",\n \"medium\": \"medium\",\n \"small\": \"small\",\n \"default\": \"default\"\n};\nvar live_modes_prices = Object.freeze(LiveModesPricesTypes);\n\nexport { live_modes_prices as default };\n//# sourceMappingURL=live_modes_prices.js.map\n","const ReadingSinceAndCountTypes = {\n \"big\": \"big\",\n \"medium\": \"medium\",\n \"default\": \"default\",\n \"small\": \"small\",\n \"extra-small\": \"extra-small\"\n};\nvar reading_since_and_count = Object.freeze(ReadingSinceAndCountTypes);\n\nexport { reading_since_and_count as default };\n//# sourceMappingURL=reading_since_and_count.js.map\n","const StaffPickTypes = {\n \"large\": \"large\",\n \"small\": \"small\"\n};\nvar staff_pick = Object.freeze(StaffPickTypes);\n\nexport { staff_pick as default };\n//# sourceMappingURL=staff_pick.js.map\n","const MethodCelleTypes = {\n \"disabled\": \"disabled\",\n \"default\": \"default\",\n \"highlighted\": \"highlighted\",\n \"error\": \"error\",\n \"success\": \"success\"\n};\nvar method_cell = Object.freeze(MethodCelleTypes);\n\nexport { method_cell as default };\n//# sourceMappingURL=method_cell.js.map\n","const MyOrdersDetailsItemTypes = {\n \"chat\": \"chat\",\n \"voice\": \"voice\"\n};\nvar my_orders_details_item_type = Object.freeze(MyOrdersDetailsItemTypes);\n\nexport { my_orders_details_item_type as default };\n//# sourceMappingURL=my_orders_details_item_type.js.map\n","const PaymentMethodDetailsTypes = {\n \"web\": \"web\",\n \"mobile-app\": \"mobile-app\"\n};\nvar payment_method_details = Object.freeze(PaymentMethodDetailsTypes);\n\nexport { payment_method_details as default };\n//# sourceMappingURL=payment_method_details.js.map\n","const CouponTypes = {\n \"small\": \"small\",\n \"medium\": \"medium\",\n \"large\": \"large\"\n};\nvar coupon_types = Object.freeze(CouponTypes);\n\nexport { coupon_types as default };\n//# sourceMappingURL=coupon_types.js.map\n","const ChannelButtonTypes = {\n \"chat\": \"chat\",\n \"voiceCall\": \"voiceCall\",\n \"videoCall\": \"videoCall\"\n};\nvar profile_channel_button = Object.freeze(ChannelButtonTypes);\n\nexport { profile_channel_button as default };\n//# sourceMappingURL=profile_channel_button.js.map\n","export { default as PemMapping } from './pem_papping/pem_mapping.js';\nexport { default as FontStyling } from './font/font_styling.js';\nexport { default as ButtonTypes } from './button/button.js';\nimport AvatarProps from './avatar/avatar.js';\nimport StatusIndicatorProps from './status_indicator/status_indicator.js';\nimport SpecialityProps from './speciality/speciality.js';\nexport { default as MyOrdersAdvisorCellTypes } from './my_orders_advisor_cell_types/my_orders_advisor_cell_types.js';\nexport { default as ReviewTypes } from './review_type/review_type.js';\nexport { default as LabelTypes } from './label/label_types.js';\nexport { default as LabelSizings } from './label/label_sizings.js';\nexport { default as OrderTypes } from './order/order.js';\nexport { default as FilterTabTypes } from './filter_tab/filter_tab.js';\nexport { default as PlayButtonTypes } from './play_button/play_button.js';\nexport { default as RatingTypes } from './rating/rating.js';\nexport { default as ChannelsCardTypes } from './channels_card/channels_card.js';\nexport { default as AdvisorListCardTypes } from './advisor_list_card/advisor_list_card.js';\nexport { default as LiveModesPricesTypes } from './live_modes_prices/live_modes_prices.js';\nexport { default as ReadingSinceAndCountTypes } from './reading_since_and_count/reading_since_and_count.js';\nexport { default as StaffPickTypes } from './staff_pick/staff_pick.js';\nexport { default as MethodCelleTypes } from './method_cell/method_cell.js';\nexport { default as MyOrdersDetailsItemTypes } from './my_orders_details_item/my_orders_details_item_type.js';\nexport { default as PaymentMethodDetailsTypes } from './payment_method_details/payment_method_details.js';\nexport { default as CouponTypes } from './coupon/coupon_types.js';\nexport { default as ChannelButtonTypes } from './profile_channel_button/profile_channel_button.js';\n\nconst AvatarTypes = AvatarProps.AvatarTypes;\nconst AvatarSizes = AvatarProps.AvatarSize;\nconst StatusIndicatorStatus = StatusIndicatorProps.StatusIndicatorStatus;\nconst StatusIndicatorSizes = StatusIndicatorProps.StatusIndicatorSizes;\nconst SpecialityTypes = SpecialityProps.SpecialityTypes;\nconst SpecialityKinds = SpecialityProps.SpecialityKinds;\n\nexport { AvatarSizes, AvatarTypes, SpecialityKinds, SpecialityTypes, StatusIndicatorSizes, StatusIndicatorStatus };\n//# sourceMappingURL=index.js.map\n","(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.Bugsnag = f()}})(function(){var define,module,exports;\nvar _$breadcrumbTypes_8 = ['navigation', 'request', 'process', 'log', 'user', 'state', 'error', 'manual'];\n\n// Array#reduce\nvar _$reduce_17 = function (arr, fn, accum) {\n var val = accum;\n\n for (var i = 0, len = arr.length; i < len; i++) {\n val = fn(val, arr[i], i, arr);\n }\n\n return val;\n};\n\n/* removed: var _$reduce_17 = require('./reduce'); */; // Array#filter\n\n\nvar _$filter_12 = function (arr, fn) {\n return _$reduce_17(arr, function (accum, item, i, arr) {\n return !fn(item, i, arr) ? accum : accum.concat(item);\n }, []);\n};\n\n/* removed: var _$reduce_17 = require('./reduce'); */; // Array#includes\n\n\nvar _$includes_13 = function (arr, x) {\n return _$reduce_17(arr, function (accum, item, i, arr) {\n return accum === true || item === x;\n }, false);\n};\n\n// Array#isArray\nvar _$isArray_14 = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n};\n\n/* eslint-disable-next-line no-prototype-builtins */\nvar _hasDontEnumBug = !{\n toString: null\n}.propertyIsEnumerable('toString');\n\nvar _dontEnums = ['toString', 'toLocaleString', 'valueOf', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'constructor']; // Object#keys\n\nvar _$keys_15 = function (obj) {\n // stripped down version of\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/Keys\n var result = [];\n var prop;\n\n for (prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) result.push(prop);\n }\n\n if (!_hasDontEnumBug) return result;\n\n for (var i = 0, len = _dontEnums.length; i < len; i++) {\n if (Object.prototype.hasOwnProperty.call(obj, _dontEnums[i])) result.push(_dontEnums[i]);\n }\n\n return result;\n};\n\nvar _$intRange_24 = function (min, max) {\n if (min === void 0) {\n min = 1;\n }\n\n if (max === void 0) {\n max = Infinity;\n }\n\n return function (value) {\n return typeof value === 'number' && parseInt('' + value, 10) === value && value >= min && value <= max;\n };\n};\n\n/* removed: var _$filter_12 = require('../es-utils/filter'); */;\n\n/* removed: var _$isArray_14 = require('../es-utils/is-array'); */;\n\nvar _$listOfFunctions_25 = function (value) {\n return typeof value === 'function' || _$isArray_14(value) && _$filter_12(value, function (f) {\n return typeof f === 'function';\n }).length === value.length;\n};\n\nvar _$stringWithLength_26 = function (value) {\n return typeof value === 'string' && !!value.length;\n};\n\nvar _$config_5 = {};\n/* removed: var _$filter_12 = require('./lib/es-utils/filter'); */;\n\n/* removed: var _$reduce_17 = require('./lib/es-utils/reduce'); */;\n\n/* removed: var _$keys_15 = require('./lib/es-utils/keys'); */;\n\n/* removed: var _$isArray_14 = require('./lib/es-utils/is-array'); */;\n\n/* removed: var _$includes_13 = require('./lib/es-utils/includes'); */;\n\n/* removed: var _$intRange_24 = require('./lib/validators/int-range'); */;\n\n/* removed: var _$stringWithLength_26 = require('./lib/validators/string-with-length'); */;\n\n/* removed: var _$listOfFunctions_25 = require('./lib/validators/list-of-functions'); */;\n\n/* removed: var _$breadcrumbTypes_8 = require('./lib/breadcrumb-types'); */;\n\nvar defaultErrorTypes = function () {\n return {\n unhandledExceptions: true,\n unhandledRejections: true\n };\n};\n\n_$config_5.schema = {\n apiKey: {\n defaultValue: function () {\n return null;\n },\n message: 'is required',\n validate: _$stringWithLength_26\n },\n appVersion: {\n defaultValue: function () {\n return undefined;\n },\n message: 'should be a string',\n validate: function (value) {\n return value === undefined || _$stringWithLength_26(value);\n }\n },\n appType: {\n defaultValue: function () {\n return undefined;\n },\n message: 'should be a string',\n validate: function (value) {\n return value === undefined || _$stringWithLength_26(value);\n }\n },\n autoDetectErrors: {\n defaultValue: function () {\n return true;\n },\n message: 'should be true|false',\n validate: function (value) {\n return value === true || value === false;\n }\n },\n enabledErrorTypes: {\n defaultValue: function () {\n return defaultErrorTypes();\n },\n message: 'should be an object containing the flags { unhandledExceptions:true|false, unhandledRejections:true|false }',\n allowPartialObject: true,\n validate: function (value) {\n // ensure we have an object\n if (typeof value !== 'object' || !value) return false;\n var providedKeys = _$keys_15(value);\n var defaultKeys = _$keys_15(defaultErrorTypes()); // ensure it only has a subset of the allowed keys\n\n if (_$filter_12(providedKeys, function (k) {\n return _$includes_13(defaultKeys, k);\n }).length < providedKeys.length) return false; // ensure all of the values are boolean\n\n if (_$filter_12(_$keys_15(value), function (k) {\n return typeof value[k] !== 'boolean';\n }).length > 0) return false;\n return true;\n }\n },\n onError: {\n defaultValue: function () {\n return [];\n },\n message: 'should be a function or array of functions',\n validate: _$listOfFunctions_25\n },\n onSession: {\n defaultValue: function () {\n return [];\n },\n message: 'should be a function or array of functions',\n validate: _$listOfFunctions_25\n },\n onBreadcrumb: {\n defaultValue: function () {\n return [];\n },\n message: 'should be a function or array of functions',\n validate: _$listOfFunctions_25\n },\n endpoints: {\n defaultValue: function () {\n return {\n notify: 'https://notify.bugsnag.com',\n sessions: 'https://sessions.bugsnag.com'\n };\n },\n message: 'should be an object containing endpoint URLs { notify, sessions }',\n validate: function (val) {\n return (// first, ensure it's an object\n val && typeof val === 'object' && // notify and sessions must always be set\n _$stringWithLength_26(val.notify) && _$stringWithLength_26(val.sessions) && // ensure no keys other than notify/session are set on endpoints object\n _$filter_12(_$keys_15(val), function (k) {\n return !_$includes_13(['notify', 'sessions'], k);\n }).length === 0\n );\n }\n },\n autoTrackSessions: {\n defaultValue: function (val) {\n return true;\n },\n message: 'should be true|false',\n validate: function (val) {\n return val === true || val === false;\n }\n },\n enabledReleaseStages: {\n defaultValue: function () {\n return null;\n },\n message: 'should be an array of strings',\n validate: function (value) {\n return value === null || _$isArray_14(value) && _$filter_12(value, function (f) {\n return typeof f === 'string';\n }).length === value.length;\n }\n },\n releaseStage: {\n defaultValue: function () {\n return 'production';\n },\n message: 'should be a string',\n validate: function (value) {\n return typeof value === 'string' && value.length;\n }\n },\n maxBreadcrumbs: {\n defaultValue: function () {\n return 25;\n },\n message: 'should be a number ≤100',\n validate: function (value) {\n return _$intRange_24(0, 100)(value);\n }\n },\n enabledBreadcrumbTypes: {\n defaultValue: function () {\n return _$breadcrumbTypes_8;\n },\n message: \"should be null or a list of available breadcrumb types (\" + _$breadcrumbTypes_8.join(',') + \")\",\n validate: function (value) {\n return value === null || _$isArray_14(value) && _$reduce_17(value, function (accum, maybeType) {\n if (accum === false) return accum;\n return _$includes_13(_$breadcrumbTypes_8, maybeType);\n }, true);\n }\n },\n context: {\n defaultValue: function () {\n return undefined;\n },\n message: 'should be a string',\n validate: function (value) {\n return value === undefined || typeof value === 'string';\n }\n },\n user: {\n defaultValue: function () {\n return {};\n },\n message: 'should be an object with { id, email, name } properties',\n validate: function (value) {\n return value === null || value && _$reduce_17(_$keys_15(value), function (accum, key) {\n return accum && _$includes_13(['id', 'email', 'name'], key);\n }, true);\n }\n },\n metadata: {\n defaultValue: function () {\n return {};\n },\n message: 'should be an object',\n validate: function (value) {\n return typeof value === 'object' && value !== null;\n }\n },\n logger: {\n defaultValue: function () {\n return undefined;\n },\n message: 'should be null or an object with methods { debug, info, warn, error }',\n validate: function (value) {\n return !value || value && _$reduce_17(['debug', 'info', 'warn', 'error'], function (accum, method) {\n return accum && typeof value[method] === 'function';\n }, true);\n }\n },\n redactedKeys: {\n defaultValue: function () {\n return ['password'];\n },\n message: 'should be an array of strings|regexes',\n validate: function (value) {\n return _$isArray_14(value) && value.length === _$filter_12(value, function (s) {\n return typeof s === 'string' || s && typeof s.test === 'function';\n }).length;\n }\n },\n plugins: {\n defaultValue: function () {\n return [];\n },\n message: 'should be an array of plugin objects',\n validate: function (value) {\n return _$isArray_14(value) && value.length === _$filter_12(value, function (p) {\n return p && typeof p === 'object' && typeof p.load === 'function';\n }).length;\n }\n },\n featureFlags: {\n defaultValue: function () {\n return [];\n },\n message: 'should be an array of objects that have a \"name\" property',\n validate: function (value) {\n return _$isArray_14(value) && value.length === _$filter_12(value, function (feature) {\n return feature && typeof feature === 'object' && typeof feature.name === 'string';\n }).length;\n }\n }\n};\n\n// extends helper from babel\n// https://github.com/babel/babel/blob/916429b516e6466fd06588ee820e40e025d7f3a3/packages/babel-helpers/src/helpers.js#L377-L393\nvar _$assign_11 = function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/* removed: var _$reduce_17 = require('./reduce'); */; // Array#map\n\n\nvar _$map_16 = function (arr, fn) {\n return _$reduce_17(arr, function (accum, item, i, arr) {\n return accum.concat(fn(item, i, arr));\n }, []);\n};\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nvar schema = _$config_5.schema;\n\n/* removed: var _$map_16 = require('@bugsnag/core/lib/es-utils/map'); */;\n\n/* removed: var _$assign_11 = require('@bugsnag/core/lib/es-utils/assign'); */;\n\nvar _$config_1 = {\n releaseStage: _$assign_11({}, schema.releaseStage, {\n defaultValue: function () {\n if (/^localhost(:\\d+)?$/.test(window.location.host)) return 'development';\n return 'production';\n }\n }),\n appType: _extends({}, schema.appType, {\n defaultValue: function () {\n return 'browser';\n }\n }),\n logger: _$assign_11({}, schema.logger, {\n defaultValue: function () {\n return (// set logger based on browser capability\n typeof console !== 'undefined' && typeof console.debug === 'function' ? getPrefixedConsole() : undefined\n );\n }\n })\n};\n\nvar getPrefixedConsole = function () {\n var logger = {};\n var consoleLog = console.log;\n _$map_16(['debug', 'info', 'warn', 'error'], function (method) {\n var consoleMethod = console[method];\n logger[method] = typeof consoleMethod === 'function' ? consoleMethod.bind(console, '[bugsnag]') : consoleLog.bind(console, '[bugsnag]');\n });\n return logger;\n};\n\nvar Breadcrumb = /*#__PURE__*/function () {\n function Breadcrumb(message, metadata, type, timestamp) {\n if (timestamp === void 0) {\n timestamp = new Date();\n }\n\n this.type = type;\n this.message = message;\n this.metadata = metadata;\n this.timestamp = timestamp;\n }\n\n var _proto = Breadcrumb.prototype;\n\n _proto.toJSON = function toJSON() {\n return {\n type: this.type,\n name: this.message,\n timestamp: this.timestamp,\n metaData: this.metadata\n };\n };\n\n return Breadcrumb;\n}();\n\nvar _$Breadcrumb_3 = Breadcrumb;\n\nvar _$stackframe_34 = {};\n(function (root, factory) {\n 'use strict'; // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n\n if (typeof define === 'function' && define.amd) {\n define('stackframe', [], factory);\n } else if (typeof _$stackframe_34 === 'object') {\n _$stackframe_34 = factory();\n } else {\n root.StackFrame = factory();\n }\n})(this, function () {\n 'use strict';\n\n function _isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n }\n\n function _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.substring(1);\n }\n\n function _getter(p) {\n return function () {\n return this[p];\n };\n }\n\n var booleanProps = ['isConstructor', 'isEval', 'isNative', 'isToplevel'];\n var numericProps = ['columnNumber', 'lineNumber'];\n var stringProps = ['fileName', 'functionName', 'source'];\n var arrayProps = ['args'];\n var props = booleanProps.concat(numericProps, stringProps, arrayProps);\n\n function StackFrame(obj) {\n if (obj instanceof Object) {\n for (var i = 0; i < props.length; i++) {\n if (obj.hasOwnProperty(props[i]) && obj[props[i]] !== undefined) {\n this['set' + _capitalize(props[i])](obj[props[i]]);\n }\n }\n }\n }\n\n StackFrame.prototype = {\n getArgs: function () {\n return this.args;\n },\n setArgs: function (v) {\n if (Object.prototype.toString.call(v) !== '[object Array]') {\n throw new TypeError('Args must be an Array');\n }\n\n this.args = v;\n },\n getEvalOrigin: function () {\n return this.evalOrigin;\n },\n setEvalOrigin: function (v) {\n if (v instanceof StackFrame) {\n this.evalOrigin = v;\n } else if (v instanceof Object) {\n this.evalOrigin = new StackFrame(v);\n } else {\n throw new TypeError('Eval Origin must be an Object or StackFrame');\n }\n },\n toString: function () {\n var functionName = this.getFunctionName() || '{anonymous}';\n var args = '(' + (this.getArgs() || []).join(',') + ')';\n var fileName = this.getFileName() ? '@' + this.getFileName() : '';\n var lineNumber = _isNumber(this.getLineNumber()) ? ':' + this.getLineNumber() : '';\n var columnNumber = _isNumber(this.getColumnNumber()) ? ':' + this.getColumnNumber() : '';\n return functionName + args + fileName + lineNumber + columnNumber;\n }\n };\n\n for (var i = 0; i < booleanProps.length; i++) {\n StackFrame.prototype['get' + _capitalize(booleanProps[i])] = _getter(booleanProps[i]);\n\n StackFrame.prototype['set' + _capitalize(booleanProps[i])] = function (p) {\n return function (v) {\n this[p] = Boolean(v);\n };\n }(booleanProps[i]);\n }\n\n for (var j = 0; j < numericProps.length; j++) {\n StackFrame.prototype['get' + _capitalize(numericProps[j])] = _getter(numericProps[j]);\n\n StackFrame.prototype['set' + _capitalize(numericProps[j])] = function (p) {\n return function (v) {\n if (!_isNumber(v)) {\n throw new TypeError(p + ' must be a Number');\n }\n\n this[p] = Number(v);\n };\n }(numericProps[j]);\n }\n\n for (var k = 0; k < stringProps.length; k++) {\n StackFrame.prototype['get' + _capitalize(stringProps[k])] = _getter(stringProps[k]);\n\n StackFrame.prototype['set' + _capitalize(stringProps[k])] = function (p) {\n return function (v) {\n this[p] = String(v);\n };\n }(stringProps[k]);\n }\n\n return StackFrame;\n});\n\nvar _$errorStackParser_31 = {};\n(function (root, factory) {\n 'use strict'; // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n\n if (typeof define === 'function' && define.amd) {\n define('error-stack-parser', ['stackframe'], factory);\n } else if (typeof _$errorStackParser_31 === 'object') {\n _$errorStackParser_31 = factory(_$stackframe_34);\n } else {\n root.ErrorStackParser = factory(root.StackFrame);\n }\n})(this, function ErrorStackParser(StackFrame) {\n 'use strict';\n\n var FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+\\:\\d+/;\n var CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+\\:\\d+|\\(native\\))/m;\n var SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code\\])?$/;\n return {\n /**\n * Given an Error object, extract the most information from it.\n *\n * @param {Error} error object\n * @return {Array} of StackFrames\n */\n parse: function ErrorStackParser$$parse(error) {\n if (typeof error.stacktrace !== 'undefined' || typeof error['opera#sourceloc'] !== 'undefined') {\n return this.parseOpera(error);\n } else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) {\n return this.parseV8OrIE(error);\n } else if (error.stack) {\n return this.parseFFOrSafari(error);\n } else {\n throw new Error('Cannot parse given Error object');\n }\n },\n // Separate line and column numbers from a string of the form: (URI:Line:Column)\n extractLocation: function ErrorStackParser$$extractLocation(urlLike) {\n // Fail-fast but return locations like \"(native)\"\n if (urlLike.indexOf(':') === -1) {\n return [urlLike];\n }\n\n var regExp = /(.+?)(?:\\:(\\d+))?(?:\\:(\\d+))?$/;\n var parts = regExp.exec(urlLike.replace(/[\\(\\)]/g, ''));\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\n },\n parseV8OrIE: function ErrorStackParser$$parseV8OrIE(error) {\n var filtered = error.stack.split('\\n').filter(function (line) {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }, this);\n return filtered.map(function (line) {\n if (line.indexOf('(eval ') > -1) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n line = line.replace(/eval code/g, 'eval').replace(/(\\(eval at [^\\()]*)|(\\)\\,.*$)/g, '');\n }\n\n var sanitizedLine = line.replace(/^\\s+/, '').replace(/\\(eval code/g, '('); // capture and preseve the parenthesized location \"(/foo/my bar.js:12:87)\" in\n // case it has spaces in it, as the string is split on \\s+ later on\n\n var location = sanitizedLine.match(/ (\\((.+):(\\d+):(\\d+)\\)$)/); // remove the parenthesized location from the line, if it was matched\n\n sanitizedLine = location ? sanitizedLine.replace(location[0], '') : sanitizedLine;\n var tokens = sanitizedLine.split(/\\s+/).slice(1); // if a location was matched, pass it to extractLocation() otherwise pop the last token\n\n var locationParts = this.extractLocation(location ? location[1] : tokens.pop());\n var functionName = tokens.join(' ') || undefined;\n var fileName = ['eval', ''].indexOf(locationParts[0]) > -1 ? undefined : locationParts[0];\n return new StackFrame({\n functionName: functionName,\n fileName: fileName,\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n },\n parseFFOrSafari: function ErrorStackParser$$parseFFOrSafari(error) {\n var filtered = error.stack.split('\\n').filter(function (line) {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }, this);\n return filtered.map(function (line) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n if (line.indexOf(' > eval') > -1) {\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval\\:\\d+\\:\\d+/g, ':$1');\n }\n\n if (line.indexOf('@') === -1 && line.indexOf(':') === -1) {\n // Safari eval frames only have function names and nothing else\n return new StackFrame({\n functionName: line\n });\n } else {\n var functionNameRegex = /((.*\".+\"[^@]*)?[^@]*)(?:@)/;\n var matches = line.match(functionNameRegex);\n var functionName = matches && matches[1] ? matches[1] : undefined;\n var locationParts = this.extractLocation(line.replace(functionNameRegex, ''));\n return new StackFrame({\n functionName: functionName,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }\n }, this);\n },\n parseOpera: function ErrorStackParser$$parseOpera(e) {\n if (!e.stacktrace || e.message.indexOf('\\n') > -1 && e.message.split('\\n').length > e.stacktrace.split('\\n').length) {\n return this.parseOpera9(e);\n } else if (!e.stack) {\n return this.parseOpera10(e);\n } else {\n return this.parseOpera11(e);\n }\n },\n parseOpera9: function ErrorStackParser$$parseOpera9(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n var lines = e.message.split('\\n');\n var result = [];\n\n for (var i = 2, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n\n if (match) {\n result.push(new StackFrame({\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n }));\n }\n }\n\n return result;\n },\n parseOpera10: function ErrorStackParser$$parseOpera10(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n var lines = e.stacktrace.split('\\n');\n var result = [];\n\n for (var i = 0, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n\n if (match) {\n result.push(new StackFrame({\n functionName: match[3] || undefined,\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n }));\n }\n }\n\n return result;\n },\n // Opera 10.65+ Error.stack very similar to FF/Safari\n parseOpera11: function ErrorStackParser$$parseOpera11(error) {\n var filtered = error.stack.split('\\n').filter(function (line) {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }, this);\n return filtered.map(function (line) {\n var tokens = line.split('@');\n var locationParts = this.extractLocation(tokens.pop());\n var functionCall = tokens.shift() || '';\n var functionName = functionCall.replace(//, '$2').replace(/\\([^\\)]*\\)/g, '') || undefined;\n var argsRaw;\n\n if (functionCall.match(/\\(([^\\)]*)\\)/)) {\n argsRaw = functionCall.replace(/^[^\\(]+\\(([^\\)]*)\\)$/, '$1');\n }\n\n var args = argsRaw === undefined || argsRaw === '[arguments not available]' ? undefined : argsRaw.split(',');\n return new StackFrame({\n functionName: functionName,\n args: args,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n }\n };\n});\n\nvar _$errorStackParser_10 = _$errorStackParser_31;\n\nvar _$safeJsonStringify_30 = function (data, replacer, space, opts) {\n var redactedKeys = opts && opts.redactedKeys ? opts.redactedKeys : [];\n var redactedPaths = opts && opts.redactedPaths ? opts.redactedPaths : [];\n return JSON.stringify(prepareObjForSerialization(data, redactedKeys, redactedPaths), replacer, space);\n};\n\nvar MAX_DEPTH = 20;\nvar MAX_EDGES = 25000;\nvar MIN_PRESERVED_DEPTH = 8;\nvar REPLACEMENT_NODE = '...';\n\nfunction isError(o) {\n return o instanceof Error || /^\\[object (Error|(Dom)?Exception)\\]$/.test(Object.prototype.toString.call(o));\n}\n\nfunction throwsMessage(err) {\n return '[Throws: ' + (err ? err.message : '?') + ']';\n}\n\nfunction find(haystack, needle) {\n for (var i = 0, len = haystack.length; i < len; i++) {\n if (haystack[i] === needle) return true;\n }\n\n return false;\n} // returns true if the string `path` starts with any of the provided `paths`\n\n\nfunction isDescendent(paths, path) {\n for (var i = 0, len = paths.length; i < len; i++) {\n if (path.indexOf(paths[i]) === 0) return true;\n }\n\n return false;\n}\n\nfunction shouldRedact(patterns, key) {\n for (var i = 0, len = patterns.length; i < len; i++) {\n if (typeof patterns[i] === 'string' && patterns[i].toLowerCase() === key.toLowerCase()) return true;\n if (patterns[i] && typeof patterns[i].test === 'function' && patterns[i].test(key)) return true;\n }\n\n return false;\n}\n\nfunction __isArray_30(obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n}\n\nfunction safelyGetProp(obj, prop) {\n try {\n return obj[prop];\n } catch (err) {\n return throwsMessage(err);\n }\n}\n\nfunction prepareObjForSerialization(obj, redactedKeys, redactedPaths) {\n var seen = []; // store references to objects we have seen before\n\n var edges = 0;\n\n function visit(obj, path) {\n function edgesExceeded() {\n return path.length > MIN_PRESERVED_DEPTH && edges > MAX_EDGES;\n }\n\n edges++;\n if (path.length > MAX_DEPTH) return REPLACEMENT_NODE;\n if (edgesExceeded()) return REPLACEMENT_NODE;\n if (obj === null || typeof obj !== 'object') return obj;\n if (find(seen, obj)) return '[Circular]';\n seen.push(obj);\n\n if (typeof obj.toJSON === 'function') {\n try {\n // we're not going to count this as an edge because it\n // replaces the value of the currently visited object\n edges--;\n var fResult = visit(obj.toJSON(), path);\n seen.pop();\n return fResult;\n } catch (err) {\n return throwsMessage(err);\n }\n }\n\n var er = isError(obj);\n\n if (er) {\n edges--;\n var eResult = visit({\n name: obj.name,\n message: obj.message\n }, path);\n seen.pop();\n return eResult;\n }\n\n if (__isArray_30(obj)) {\n var aResult = [];\n\n for (var i = 0, len = obj.length; i < len; i++) {\n if (edgesExceeded()) {\n aResult.push(REPLACEMENT_NODE);\n break;\n }\n\n aResult.push(visit(obj[i], path.concat('[]')));\n }\n\n seen.pop();\n return aResult;\n }\n\n var result = {};\n\n try {\n for (var prop in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, prop)) continue;\n\n if (isDescendent(redactedPaths, path.join('.')) && shouldRedact(redactedKeys, prop)) {\n result[prop] = '[REDACTED]';\n continue;\n }\n\n if (edgesExceeded()) {\n result[prop] = REPLACEMENT_NODE;\n break;\n }\n\n result[prop] = visit(safelyGetProp(obj, prop), path.concat(prop));\n }\n } catch (e) {}\n\n seen.pop();\n return result;\n }\n\n return visit(obj, []);\n}\n\n/* removed: var _$map_16 = require('./es-utils/map'); */;\n\n/* removed: var _$filter_12 = require('./es-utils/filter'); */;\n\n/* removed: var _$isArray_14 = require('./es-utils/is-array'); */;\n\n/* removed: var _$safeJsonStringify_30 = require('@bugsnag/safe-json-stringify'); */;\n\nfunction add(existingFeatures, existingFeatureKeys, name, variant) {\n if (typeof name !== 'string') {\n return;\n }\n\n if (variant === undefined) {\n variant = null;\n } else if (variant !== null && typeof variant !== 'string') {\n variant = _$safeJsonStringify_30(variant);\n }\n\n var existingIndex = existingFeatureKeys[name];\n\n if (typeof existingIndex === 'number') {\n existingFeatures[existingIndex] = {\n name: name,\n variant: variant\n };\n return;\n }\n\n existingFeatures.push({\n name: name,\n variant: variant\n });\n existingFeatureKeys[name] = existingFeatures.length - 1;\n}\n\nfunction merge(existingFeatures, newFeatures, existingFeatureKeys) {\n if (!_$isArray_14(newFeatures)) {\n return;\n }\n\n for (var i = 0; i < newFeatures.length; ++i) {\n var feature = newFeatures[i];\n\n if (feature === null || typeof feature !== 'object') {\n continue;\n } // 'add' will handle if 'name' doesn't exist & 'variant' is optional\n\n\n add(existingFeatures, existingFeatureKeys, feature.name, feature.variant);\n }\n\n return existingFeatures;\n} // convert feature flags from a map of 'name -> variant' into the format required\n// by the Bugsnag Event API:\n// [{ featureFlag: 'name', variant: 'variant' }, { featureFlag: 'name 2' }]\n\n\nfunction toEventApi(featureFlags) {\n return _$map_16(_$filter_12(featureFlags, Boolean), function (_ref) {\n var name = _ref.name,\n variant = _ref.variant;\n var flag = {\n featureFlag: name\n }; // don't add a 'variant' property unless there's actually a value\n\n if (typeof variant === 'string') {\n flag.variant = variant;\n }\n\n return flag;\n });\n}\n\nfunction clear(features, featuresIndex, name) {\n var existingIndex = featuresIndex[name];\n\n if (typeof existingIndex === 'number') {\n features[existingIndex] = null;\n delete featuresIndex[name];\n }\n}\n\nvar _$featureFlagDelegate_18 = {\n add: add,\n clear: clear,\n merge: merge,\n toEventApi: toEventApi\n};\n\n// Given `err` which may be an error, does it have a stack property which is a string?\nvar _$hasStack_19 = function (err) {\n return !!err && (!!err.stack || !!err.stacktrace || !!err['opera#sourceloc']) && typeof (err.stack || err.stacktrace || err['opera#sourceloc']) === 'string' && err.stack !== err.name + \": \" + err.message;\n};\n\n/**\n * Expose `isError`.\n */\nvar _$isError_32 = __isError_32;\n/**\n * Test whether `value` is error object.\n *\n * @param {*} value\n * @returns {boolean}\n */\n\nfunction __isError_32(value) {\n switch (Object.prototype.toString.call(value)) {\n case '[object Error]':\n return true;\n\n case '[object Exception]':\n return true;\n\n case '[object DOMException]':\n return true;\n\n default:\n return value instanceof Error;\n }\n}\n\nvar _$iserror_20 = _$isError_32;\n\n/* removed: var _$assign_11 = require('./es-utils/assign'); */;\n\nvar __add_22 = function (state, section, keyOrObj, maybeVal) {\n var _updates;\n\n if (!section) return;\n var updates; // addMetadata(\"section\", null) -> clears section\n\n if (keyOrObj === null) return __clear_22(state, section); // normalise the two supported input types into object form\n\n if (typeof keyOrObj === 'object') updates = keyOrObj;\n if (typeof keyOrObj === 'string') updates = (_updates = {}, _updates[keyOrObj] = maybeVal, _updates); // exit if we don't have an updates object at this point\n\n if (!updates) return; // ensure a section with this name exists\n\n if (!state[section]) state[section] = {}; // merge the updates with the existing section\n\n state[section] = _$assign_11({}, state[section], updates);\n};\n\nvar get = function (state, section, key) {\n if (typeof section !== 'string') return undefined;\n\n if (!key) {\n return state[section];\n }\n\n if (state[section]) {\n return state[section][key];\n }\n\n return undefined;\n};\n\nvar __clear_22 = function (state, section, key) {\n if (typeof section !== 'string') return; // clear an entire section\n\n if (!key) {\n delete state[section];\n return;\n } // clear a single value from a section\n\n\n if (state[section]) {\n delete state[section][key];\n }\n};\n\nvar _$metadataDelegate_22 = {\n add: __add_22,\n get: get,\n clear: __clear_22\n};\n\nvar _$stackGenerator_33 = {};\n(function (root, factory) {\n 'use strict'; // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n\n if (typeof define === 'function' && define.amd) {\n define('stack-generator', ['stackframe'], factory);\n } else if (typeof _$stackGenerator_33 === 'object') {\n _$stackGenerator_33 = factory(_$stackframe_34);\n } else {\n root.StackGenerator = factory(root.StackFrame);\n }\n})(this, function (StackFrame) {\n return {\n backtrace: function StackGenerator$$backtrace(opts) {\n var stack = [];\n var maxStackSize = 10;\n\n if (typeof opts === 'object' && typeof opts.maxStackSize === 'number') {\n maxStackSize = opts.maxStackSize;\n }\n\n var curr = arguments.callee;\n\n while (curr && stack.length < maxStackSize && curr['arguments']) {\n // Allow V8 optimizations\n var args = new Array(curr['arguments'].length);\n\n for (var i = 0; i < args.length; ++i) {\n args[i] = curr['arguments'][i];\n }\n\n if (/function(?:\\s+([\\w$]+))+\\s*\\(/.test(curr.toString())) {\n stack.push(new StackFrame({\n functionName: RegExp.$1 || undefined,\n args: args\n }));\n } else {\n stack.push(new StackFrame({\n args: args\n }));\n }\n\n try {\n curr = curr.caller;\n } catch (e) {\n break;\n }\n }\n\n return stack;\n }\n };\n});\n\n/* removed: var _$errorStackParser_10 = require('./lib/error-stack-parser'); */;\n\n/* removed: var _$stackGenerator_33 = require('stack-generator'); */;\n\n/* removed: var _$hasStack_19 = require('./lib/has-stack'); */;\n\n/* removed: var _$map_16 = require('./lib/es-utils/map'); */;\n\n/* removed: var _$reduce_17 = require('./lib/es-utils/reduce'); */;\n\n/* removed: var _$filter_12 = require('./lib/es-utils/filter'); */;\n\n/* removed: var _$assign_11 = require('./lib/es-utils/assign'); */;\n\n/* removed: var _$metadataDelegate_22 = require('./lib/metadata-delegate'); */;\n\n/* removed: var _$featureFlagDelegate_18 = require('./lib/feature-flag-delegate'); */;\n\n/* removed: var _$iserror_20 = require('./lib/iserror'); */;\n\nvar Event = /*#__PURE__*/function () {\n function Event(errorClass, errorMessage, stacktrace, handledState, originalError) {\n if (stacktrace === void 0) {\n stacktrace = [];\n }\n\n if (handledState === void 0) {\n handledState = defaultHandledState();\n }\n\n this.apiKey = undefined;\n this.context = undefined;\n this.groupingHash = undefined;\n this.originalError = originalError;\n this._handledState = handledState;\n this.severity = this._handledState.severity;\n this.unhandled = this._handledState.unhandled;\n this.app = {};\n this.device = {};\n this.request = {};\n this.breadcrumbs = [];\n this.threads = [];\n this._metadata = {};\n this._features = [];\n this._featuresIndex = {};\n this._user = {};\n this._session = undefined;\n this.errors = [createBugsnagError(errorClass, errorMessage, Event.__type, stacktrace)]; // Flags.\n // Note these are not initialised unless they are used\n // to save unnecessary bytes in the browser bundle\n\n /* this.attemptImmediateDelivery, default: true */\n }\n\n var _proto = Event.prototype;\n\n _proto.addMetadata = function addMetadata(section, keyOrObj, maybeVal) {\n return _$metadataDelegate_22.add(this._metadata, section, keyOrObj, maybeVal);\n };\n\n _proto.getMetadata = function getMetadata(section, key) {\n return _$metadataDelegate_22.get(this._metadata, section, key);\n };\n\n _proto.clearMetadata = function clearMetadata(section, key) {\n return _$metadataDelegate_22.clear(this._metadata, section, key);\n };\n\n _proto.addFeatureFlag = function addFeatureFlag(name, variant) {\n if (variant === void 0) {\n variant = null;\n }\n\n _$featureFlagDelegate_18.add(this._features, this._featuresIndex, name, variant);\n };\n\n _proto.addFeatureFlags = function addFeatureFlags(featureFlags) {\n _$featureFlagDelegate_18.merge(this._features, featureFlags, this._featuresIndex);\n };\n\n _proto.getFeatureFlags = function getFeatureFlags() {\n return _$featureFlagDelegate_18.toEventApi(this._features);\n };\n\n _proto.clearFeatureFlag = function clearFeatureFlag(name) {\n _$featureFlagDelegate_18.clear(this._features, this._featuresIndex, name);\n };\n\n _proto.clearFeatureFlags = function clearFeatureFlags() {\n this._features = [];\n this._featuresIndex = {};\n };\n\n _proto.getUser = function getUser() {\n return this._user;\n };\n\n _proto.setUser = function setUser(id, email, name) {\n this._user = {\n id: id,\n email: email,\n name: name\n };\n };\n\n _proto.toJSON = function toJSON() {\n return {\n payloadVersion: '4',\n exceptions: _$map_16(this.errors, function (er) {\n return _$assign_11({}, er, {\n message: er.errorMessage\n });\n }),\n severity: this.severity,\n unhandled: this._handledState.unhandled,\n severityReason: this._handledState.severityReason,\n app: this.app,\n device: this.device,\n request: this.request,\n breadcrumbs: this.breadcrumbs,\n context: this.context,\n groupingHash: this.groupingHash,\n metaData: this._metadata,\n user: this._user,\n session: this._session,\n featureFlags: this.getFeatureFlags()\n };\n };\n\n return Event;\n}(); // takes a stacktrace.js style stackframe (https://github.com/stacktracejs/stackframe)\n// and returns a Bugsnag compatible stackframe (https://docs.bugsnag.com/api/error-reporting/#json-payload)\n\n\nvar formatStackframe = function (frame) {\n var f = {\n file: frame.fileName,\n method: normaliseFunctionName(frame.functionName),\n lineNumber: frame.lineNumber,\n columnNumber: frame.columnNumber,\n code: undefined,\n inProject: undefined\n }; // Some instances result in no file:\n // - calling notify() from chrome's terminal results in no file/method.\n // - non-error exception thrown from global code in FF\n // This adds one.\n\n if (f.lineNumber > -1 && !f.file && !f.method) {\n f.file = 'global code';\n }\n\n return f;\n};\n\nvar normaliseFunctionName = function (name) {\n return /^global code$/i.test(name) ? 'global code' : name;\n};\n\nvar defaultHandledState = function () {\n return {\n unhandled: false,\n severity: 'warning',\n severityReason: {\n type: 'handledException'\n }\n };\n};\n\nvar ensureString = function (str) {\n return typeof str === 'string' ? str : '';\n};\n\nfunction createBugsnagError(errorClass, errorMessage, type, stacktrace) {\n return {\n errorClass: ensureString(errorClass),\n errorMessage: ensureString(errorMessage),\n type: type,\n stacktrace: _$reduce_17(stacktrace, function (accum, frame) {\n var f = formatStackframe(frame); // don't include a stackframe if none of its properties are defined\n\n try {\n if (JSON.stringify(f) === '{}') return accum;\n return accum.concat(f);\n } catch (e) {\n return accum;\n }\n }, [])\n };\n}\n\nfunction getCauseStack(error) {\n if (error.cause) {\n return [error].concat(getCauseStack(error.cause));\n } else {\n return [error];\n }\n} // Helpers\n\n\nEvent.getStacktrace = function (error, errorFramesToSkip, backtraceFramesToSkip) {\n if (_$hasStack_19(error)) return _$errorStackParser_10.parse(error).slice(errorFramesToSkip); // error wasn't provided or didn't have a stacktrace so try to walk the callstack\n\n try {\n return _$filter_12(_$stackGenerator_33.backtrace(), function (frame) {\n return (frame.functionName || '').indexOf('StackGenerator$$') === -1;\n }).slice(1 + backtraceFramesToSkip);\n } catch (e) {\n return [];\n }\n};\n\nEvent.create = function (maybeError, tolerateNonErrors, handledState, component, errorFramesToSkip, logger) {\n if (errorFramesToSkip === void 0) {\n errorFramesToSkip = 0;\n }\n\n var _normaliseError = normaliseError(maybeError, tolerateNonErrors, component, logger),\n error = _normaliseError[0],\n internalFrames = _normaliseError[1];\n\n var event;\n\n try {\n var stacktrace = Event.getStacktrace(error, // if an error was created/throw in the normaliseError() function, we need to\n // tell the getStacktrace() function to skip the number of frames we know will\n // be from our own functions. This is added to the number of frames deep we\n // were told about\n internalFrames > 0 ? 1 + internalFrames + errorFramesToSkip : 0, // if there's no stacktrace, the callstack may be walked to generated one.\n // this is how many frames should be removed because they come from our library\n 1 + errorFramesToSkip);\n event = new Event(error.name, error.message, stacktrace, handledState, maybeError);\n } catch (e) {\n event = new Event(error.name, error.message, [], handledState, maybeError);\n }\n\n if (error.name === 'InvalidError') {\n event.addMetadata(\"\" + component, 'non-error parameter', makeSerialisable(maybeError));\n }\n\n if (error.cause) {\n var _event$errors;\n\n var causes = getCauseStack(error).slice(1);\n var normalisedCauses = _$map_16(causes, function (cause) {\n // Only get stacktrace for error causes that are a valid JS Error and already have a stack\n var stacktrace = _$iserror_20(cause) && _$hasStack_19(cause) ? _$errorStackParser_10.parse(cause) : [];\n\n var _normaliseError2 = normaliseError(cause, true, 'error cause'),\n error = _normaliseError2[0];\n\n if (error.name === 'InvalidError') event.addMetadata('error cause', makeSerialisable(cause));\n return createBugsnagError(error.name, error.message, Event.__type, stacktrace);\n });\n\n (_event$errors = event.errors).push.apply(_event$errors, normalisedCauses);\n }\n\n return event;\n};\n\nvar makeSerialisable = function (err) {\n if (err === null) return 'null';\n if (err === undefined) return 'undefined';\n return err;\n};\n\nvar normaliseError = function (maybeError, tolerateNonErrors, component, logger) {\n var error;\n var internalFrames = 0;\n\n var createAndLogInputError = function (reason) {\n var verb = component === 'error cause' ? 'was' : 'received';\n if (logger) logger.warn(component + \" \" + verb + \" a non-error: \\\"\" + reason + \"\\\"\");\n var err = new Error(component + \" \" + verb + \" a non-error. See \\\"\" + component + \"\\\" tab for more detail.\");\n err.name = 'InvalidError';\n return err;\n }; // In some cases:\n //\n // - the promise rejection handler (both in the browser and node)\n // - the node uncaughtException handler\n //\n // We are really limited in what we can do to get a stacktrace. So we use the\n // tolerateNonErrors option to ensure that the resulting error communicates as\n // such.\n\n\n if (!tolerateNonErrors) {\n if (_$iserror_20(maybeError)) {\n error = maybeError;\n } else {\n error = createAndLogInputError(typeof maybeError);\n internalFrames += 2;\n }\n } else {\n switch (typeof maybeError) {\n case 'string':\n case 'number':\n case 'boolean':\n error = new Error(String(maybeError));\n internalFrames += 1;\n break;\n\n case 'function':\n error = createAndLogInputError('function');\n internalFrames += 2;\n break;\n\n case 'object':\n if (maybeError !== null && _$iserror_20(maybeError)) {\n error = maybeError;\n } else if (maybeError !== null && hasNecessaryFields(maybeError)) {\n error = new Error(maybeError.message || maybeError.errorMessage);\n error.name = maybeError.name || maybeError.errorClass;\n internalFrames += 1;\n } else {\n error = createAndLogInputError(maybeError === null ? 'null' : 'unsupported object');\n internalFrames += 2;\n }\n\n break;\n\n default:\n error = createAndLogInputError('nothing');\n internalFrames += 2;\n }\n }\n\n if (!_$hasStack_19(error)) {\n // in IE10/11 a new Error() doesn't have a stacktrace until you throw it, so try that here\n try {\n throw error;\n } catch (e) {\n if (_$hasStack_19(e)) {\n error = e; // if the error only got a stacktrace after we threw it here, we know it\n // will only have one extra internal frame from this function, regardless\n // of whether it went through createAndLogInputError() or not\n\n internalFrames = 1;\n }\n }\n }\n\n return [error, internalFrames];\n}; // default value for stacktrace.type\n\n\nEvent.__type = 'browserjs';\n\nvar hasNecessaryFields = function (error) {\n return (typeof error.name === 'string' || typeof error.errorClass === 'string') && (typeof error.message === 'string' || typeof error.errorMessage === 'string');\n};\n\nvar _$Event_6 = Event;\n\n// This is a heavily modified/simplified version of\n// https://github.com/othiym23/async-some\n// with the logic flipped so that it is akin to the\n// synchronous \"every\" method instead of \"some\".\n// run the asynchronous test function (fn) over each item in the array (arr)\n// in series until:\n// - fn(item, cb) => calls cb(null, false)\n// - or the end of the array is reached\n// the callback (cb) will be passed (null, false) if any of the items in arr\n// caused fn to call back with false, otherwise it will be passed (null, true)\nvar _$asyncEvery_7 = function (arr, fn, cb) {\n var index = 0;\n\n var next = function () {\n if (index >= arr.length) return cb(null, true);\n fn(arr[index], function (err, result) {\n if (err) return cb(err);\n if (result === false) return cb(null, false);\n index++;\n next();\n });\n };\n\n next();\n};\n\n/* removed: var _$asyncEvery_7 = require('./async-every'); */;\n\nvar _$callbackRunner_9 = function (callbacks, event, onCallbackError, cb) {\n // This function is how we support different kinds of callback:\n // - synchronous - return value\n // - node-style async with callback - cb(err, value)\n // - promise/thenable - resolve(value)\n // It normalises each of these into the lowest common denominator – a node-style callback\n var runMaybeAsyncCallback = function (fn, cb) {\n if (typeof fn !== 'function') return cb(null);\n\n try {\n // if function appears sync…\n if (fn.length !== 2) {\n var ret = fn(event); // check if it returned a \"thenable\" (promise)\n\n if (ret && typeof ret.then === 'function') {\n return ret.then( // resolve\n function (val) {\n return setTimeout(function () {\n return cb(null, val);\n });\n }, // reject\n function (err) {\n setTimeout(function () {\n onCallbackError(err);\n return cb(null, true);\n });\n });\n }\n\n return cb(null, ret);\n } // if function is async…\n\n\n fn(event, function (err, result) {\n if (err) {\n onCallbackError(err);\n return cb(null);\n }\n\n cb(null, result);\n });\n } catch (e) {\n onCallbackError(e);\n cb(null);\n }\n };\n\n _$asyncEvery_7(callbacks, runMaybeAsyncCallback, cb);\n};\n\nvar _$syncCallbackRunner_23 = function (callbacks, callbackArg, callbackType, logger) {\n var ignore = false;\n var cbs = callbacks.slice();\n\n while (!ignore) {\n if (!cbs.length) break;\n\n try {\n ignore = cbs.pop()(callbackArg) === false;\n } catch (e) {\n logger.error(\"Error occurred in \" + callbackType + \" callback, continuing anyway\\u2026\");\n logger.error(e);\n }\n }\n\n return ignore;\n};\n\nvar _$pad_29 = function pad(num, size) {\n var s = '000000000' + num;\n return s.substr(s.length - size);\n};\n\n/* removed: var _$pad_29 = require('./pad.js'); */;\n\nvar env = typeof window === 'object' ? window : self;\nvar globalCount = 0;\n\nfor (var prop in env) {\n if (Object.hasOwnProperty.call(env, prop)) globalCount++;\n}\n\nvar mimeTypesLength = navigator.mimeTypes ? navigator.mimeTypes.length : 0;\nvar clientId = _$pad_29((mimeTypesLength + navigator.userAgent.length).toString(36) + globalCount.toString(36), 4);\n\nvar _$fingerprint_28 = function fingerprint() {\n return clientId;\n};\n\n/**\n * cuid.js\n * Collision-resistant UID generator for browsers and node.\n * Sequential for fast db lookups and recency sorting.\n * Safe for element IDs and server-side lookups.\n *\n * Extracted from CLCTR\n *\n * Copyright (c) Eric Elliott 2012\n * MIT License\n */\n/* removed: var _$fingerprint_28 = require('./lib/fingerprint.js'); */;\n\n/* removed: var _$pad_29 = require('./lib/pad.js'); */;\n\nvar c = 0,\n blockSize = 4,\n base = 36,\n discreteValues = Math.pow(base, blockSize);\n\nfunction randomBlock() {\n return _$pad_29((Math.random() * discreteValues << 0).toString(base), blockSize);\n}\n\nfunction safeCounter() {\n c = c < discreteValues ? c : 0;\n c++; // this is not subliminal\n\n return c - 1;\n}\n\nfunction cuid() {\n // Starting with a lowercase letter makes\n // it HTML element ID friendly.\n var letter = 'c',\n // hard-coded allows for sequential access\n // timestamp\n // warning: this exposes the exact date and time\n // that the uid was created.\n timestamp = new Date().getTime().toString(base),\n // Prevent same-machine collisions.\n counter = _$pad_29(safeCounter().toString(base), blockSize),\n // A few chars to generate distinct ids for different\n // clients (so different computers are far less\n // likely to generate the same id)\n print = _$fingerprint_28(),\n // Grab some more chars from Math.random()\n random = randomBlock() + randomBlock();\n return letter + timestamp + counter + print + random;\n}\n\ncuid.fingerprint = _$fingerprint_28;\nvar _$cuid_27 = cuid;\n\n/* removed: var _$cuid_27 = require('@bugsnag/cuid'); */;\n\nvar Session = /*#__PURE__*/function () {\n function Session() {\n this.id = _$cuid_27();\n this.startedAt = new Date();\n this._handled = 0;\n this._unhandled = 0;\n this._user = {};\n this.app = {};\n this.device = {};\n }\n\n var _proto = Session.prototype;\n\n _proto.getUser = function getUser() {\n return this._user;\n };\n\n _proto.setUser = function setUser(id, email, name) {\n this._user = {\n id: id,\n email: email,\n name: name\n };\n };\n\n _proto.toJSON = function toJSON() {\n return {\n id: this.id,\n startedAt: this.startedAt,\n events: {\n handled: this._handled,\n unhandled: this._unhandled\n }\n };\n };\n\n _proto._track = function _track(event) {\n this[event._handledState.unhandled ? '_unhandled' : '_handled'] += 1;\n };\n\n return Session;\n}();\n\nvar _$Session_35 = Session;\n\n/* removed: var _$config_5 = require('./config'); */;\n\n/* removed: var _$Event_6 = require('./event'); */;\n\n/* removed: var _$Breadcrumb_3 = require('./breadcrumb'); */;\n\n/* removed: var _$Session_35 = require('./session'); */;\n\n/* removed: var _$map_16 = require('./lib/es-utils/map'); */;\n\n/* removed: var _$includes_13 = require('./lib/es-utils/includes'); */;\n\n/* removed: var _$filter_12 = require('./lib/es-utils/filter'); */;\n\n/* removed: var _$reduce_17 = require('./lib/es-utils/reduce'); */;\n\n/* removed: var _$keys_15 = require('./lib/es-utils/keys'); */;\n\n/* removed: var _$assign_11 = require('./lib/es-utils/assign'); */;\n\n/* removed: var _$callbackRunner_9 = require('./lib/callback-runner'); */;\n\n/* removed: var _$metadataDelegate_22 = require('./lib/metadata-delegate'); */;\n\n/* removed: var _$syncCallbackRunner_23 = require('./lib/sync-callback-runner'); */;\n\n/* removed: var _$breadcrumbTypes_8 = require('./lib/breadcrumb-types'); */;\n\nvar __add_4 = _$featureFlagDelegate_18.add,\n __clear_4 = _$featureFlagDelegate_18.clear,\n __merge_4 = _$featureFlagDelegate_18.merge;\n\nvar noop = function () {};\n\nvar Client = /*#__PURE__*/function () {\n function Client(configuration, schema, internalPlugins, notifier) {\n var _this = this;\n\n if (schema === void 0) {\n schema = _$config_5.schema;\n }\n\n if (internalPlugins === void 0) {\n internalPlugins = [];\n }\n\n // notifier id\n this._notifier = notifier; // intialise opts and config\n\n this._config = {};\n this._schema = schema; // i/o\n\n this._delivery = {\n sendSession: noop,\n sendEvent: noop\n };\n this._logger = {\n debug: noop,\n info: noop,\n warn: noop,\n error: noop\n }; // plugins\n\n this._plugins = {}; // state\n\n this._breadcrumbs = [];\n this._session = null;\n this._metadata = {};\n this._featuresIndex = {};\n this._features = [];\n this._context = undefined;\n this._user = {}; // callbacks:\n // e: onError\n // s: onSession\n // sp: onSessionPayload\n // b: onBreadcrumb\n // (note these names are minified by hand because object\n // properties are not safe to minify automatically)\n\n this._cbs = {\n e: [],\n s: [],\n sp: [],\n b: []\n }; // expose internal constructors\n\n this.Client = Client;\n this.Event = _$Event_6;\n this.Breadcrumb = _$Breadcrumb_3;\n this.Session = _$Session_35;\n this._config = this._configure(configuration, internalPlugins);\n _$map_16(internalPlugins.concat(this._config.plugins), function (pl) {\n if (pl) _this._loadPlugin(pl);\n }); // when notify() is called we need to know how many frames are from our own source\n // this inital value is 1 not 0 because we wrap notify() to ensure it is always\n // bound to have the client as its `this` value – see below.\n\n this._depth = 1;\n var self = this;\n var notify = this.notify;\n\n this.notify = function () {\n return notify.apply(self, arguments);\n };\n }\n\n var _proto = Client.prototype;\n\n _proto.addMetadata = function addMetadata(section, keyOrObj, maybeVal) {\n return _$metadataDelegate_22.add(this._metadata, section, keyOrObj, maybeVal);\n };\n\n _proto.getMetadata = function getMetadata(section, key) {\n return _$metadataDelegate_22.get(this._metadata, section, key);\n };\n\n _proto.clearMetadata = function clearMetadata(section, key) {\n return _$metadataDelegate_22.clear(this._metadata, section, key);\n };\n\n _proto.addFeatureFlag = function addFeatureFlag(name, variant) {\n if (variant === void 0) {\n variant = null;\n }\n\n __add_4(this._features, this._featuresIndex, name, variant);\n };\n\n _proto.addFeatureFlags = function addFeatureFlags(featureFlags) {\n __merge_4(this._features, featureFlags, this._featuresIndex);\n };\n\n _proto.clearFeatureFlag = function clearFeatureFlag(name) {\n __clear_4(this._features, this._featuresIndex, name);\n };\n\n _proto.clearFeatureFlags = function clearFeatureFlags() {\n this._features = [];\n this._featuresIndex = {};\n };\n\n _proto.getContext = function getContext() {\n return this._context;\n };\n\n _proto.setContext = function setContext(c) {\n this._context = c;\n };\n\n _proto._configure = function _configure(opts, internalPlugins) {\n var schema = _$reduce_17(internalPlugins, function (schema, plugin) {\n if (plugin && plugin.configSchema) return _$assign_11({}, schema, plugin.configSchema);\n return schema;\n }, this._schema); // accumulate configuration and error messages\n\n var _reduce = _$reduce_17(_$keys_15(schema), function (accum, key) {\n var defaultValue = schema[key].defaultValue(opts[key]);\n\n if (opts[key] !== undefined) {\n var valid = schema[key].validate(opts[key]);\n\n if (!valid) {\n accum.errors[key] = schema[key].message;\n accum.config[key] = defaultValue;\n } else {\n if (schema[key].allowPartialObject) {\n accum.config[key] = _$assign_11(defaultValue, opts[key]);\n } else {\n accum.config[key] = opts[key];\n }\n }\n } else {\n accum.config[key] = defaultValue;\n }\n\n return accum;\n }, {\n errors: {},\n config: {}\n }),\n errors = _reduce.errors,\n config = _reduce.config;\n\n if (schema.apiKey) {\n // missing api key is the only fatal error\n if (!config.apiKey) throw new Error('No Bugsnag API Key set'); // warn about an apikey that is not of the expected format\n\n if (!/^[0-9a-f]{32}$/i.test(config.apiKey)) errors.apiKey = 'should be a string of 32 hexadecimal characters';\n } // update and elevate some options\n\n\n this._metadata = _$assign_11({}, config.metadata);\n __merge_4(this._features, config.featureFlags, this._featuresIndex);\n this._user = _$assign_11({}, config.user);\n this._context = config.context;\n if (config.logger) this._logger = config.logger; // add callbacks\n\n if (config.onError) this._cbs.e = this._cbs.e.concat(config.onError);\n if (config.onBreadcrumb) this._cbs.b = this._cbs.b.concat(config.onBreadcrumb);\n if (config.onSession) this._cbs.s = this._cbs.s.concat(config.onSession); // finally warn about any invalid config where we fell back to the default\n\n if (_$keys_15(errors).length) {\n this._logger.warn(generateConfigErrorMessage(errors, opts));\n }\n\n return config;\n };\n\n _proto.getUser = function getUser() {\n return this._user;\n };\n\n _proto.setUser = function setUser(id, email, name) {\n this._user = {\n id: id,\n email: email,\n name: name\n };\n };\n\n _proto._loadPlugin = function _loadPlugin(plugin) {\n var result = plugin.load(this); // JS objects are not the safest way to store arbitrarily keyed values,\n // so bookend the key with some characters that prevent tampering with\n // stuff like __proto__ etc. (only store the result if the plugin had a\n // name)\n\n if (plugin.name) this._plugins[\"~\" + plugin.name + \"~\"] = result;\n return this;\n };\n\n _proto.getPlugin = function getPlugin(name) {\n return this._plugins[\"~\" + name + \"~\"];\n };\n\n _proto._setDelivery = function _setDelivery(d) {\n this._delivery = d(this);\n };\n\n _proto.startSession = function startSession() {\n var session = new _$Session_35();\n session.app.releaseStage = this._config.releaseStage;\n session.app.version = this._config.appVersion;\n session.app.type = this._config.appType;\n session._user = _$assign_11({}, this._user); // run onSession callbacks\n\n var ignore = _$syncCallbackRunner_23(this._cbs.s, session, 'onSession', this._logger);\n\n if (ignore) {\n this._logger.debug('Session not started due to onSession callback');\n\n return this;\n }\n\n return this._sessionDelegate.startSession(this, session);\n };\n\n _proto.addOnError = function addOnError(fn, front) {\n if (front === void 0) {\n front = false;\n }\n\n this._cbs.e[front ? 'unshift' : 'push'](fn);\n };\n\n _proto.removeOnError = function removeOnError(fn) {\n this._cbs.e = _$filter_12(this._cbs.e, function (f) {\n return f !== fn;\n });\n };\n\n _proto._addOnSessionPayload = function _addOnSessionPayload(fn) {\n this._cbs.sp.push(fn);\n };\n\n _proto.addOnSession = function addOnSession(fn) {\n this._cbs.s.push(fn);\n };\n\n _proto.removeOnSession = function removeOnSession(fn) {\n this._cbs.s = _$filter_12(this._cbs.s, function (f) {\n return f !== fn;\n });\n };\n\n _proto.addOnBreadcrumb = function addOnBreadcrumb(fn, front) {\n if (front === void 0) {\n front = false;\n }\n\n this._cbs.b[front ? 'unshift' : 'push'](fn);\n };\n\n _proto.removeOnBreadcrumb = function removeOnBreadcrumb(fn) {\n this._cbs.b = _$filter_12(this._cbs.b, function (f) {\n return f !== fn;\n });\n };\n\n _proto.pauseSession = function pauseSession() {\n return this._sessionDelegate.pauseSession(this);\n };\n\n _proto.resumeSession = function resumeSession() {\n return this._sessionDelegate.resumeSession(this);\n };\n\n _proto.leaveBreadcrumb = function leaveBreadcrumb(message, metadata, type) {\n // coerce bad values so that the defaults get set\n message = typeof message === 'string' ? message : '';\n type = typeof type === 'string' && _$includes_13(_$breadcrumbTypes_8, type) ? type : 'manual';\n metadata = typeof metadata === 'object' && metadata !== null ? metadata : {}; // if no message, discard\n\n if (!message) return;\n var crumb = new _$Breadcrumb_3(message, metadata, type); // run onBreadcrumb callbacks\n\n var ignore = _$syncCallbackRunner_23(this._cbs.b, crumb, 'onBreadcrumb', this._logger);\n\n if (ignore) {\n this._logger.debug('Breadcrumb not attached due to onBreadcrumb callback');\n\n return;\n } // push the valid crumb onto the queue and maintain the length\n\n\n this._breadcrumbs.push(crumb);\n\n if (this._breadcrumbs.length > this._config.maxBreadcrumbs) {\n this._breadcrumbs = this._breadcrumbs.slice(this._breadcrumbs.length - this._config.maxBreadcrumbs);\n }\n };\n\n _proto._isBreadcrumbTypeEnabled = function _isBreadcrumbTypeEnabled(type) {\n var types = this._config.enabledBreadcrumbTypes;\n return types === null || _$includes_13(types, type);\n };\n\n _proto.notify = function notify(maybeError, onError, postReportCallback) {\n if (postReportCallback === void 0) {\n postReportCallback = noop;\n }\n\n var event = _$Event_6.create(maybeError, true, undefined, 'notify()', this._depth + 1, this._logger);\n\n this._notify(event, onError, postReportCallback);\n };\n\n _proto._notify = function _notify(event, onError, postReportCallback) {\n var _this2 = this;\n\n if (postReportCallback === void 0) {\n postReportCallback = noop;\n }\n\n event.app = _$assign_11({}, event.app, {\n releaseStage: this._config.releaseStage,\n version: this._config.appVersion,\n type: this._config.appType\n });\n event.context = event.context || this._context;\n event._metadata = _$assign_11({}, event._metadata, this._metadata);\n event._user = _$assign_11({}, event._user, this._user);\n event.breadcrumbs = this._breadcrumbs.slice();\n __merge_4(event._features, this._features, event._featuresIndex); // exit early if events should not be sent on the current releaseStage\n\n if (this._config.enabledReleaseStages !== null && !_$includes_13(this._config.enabledReleaseStages, this._config.releaseStage)) {\n this._logger.warn('Event not sent due to releaseStage/enabledReleaseStages configuration');\n\n return postReportCallback(null, event);\n }\n\n var originalSeverity = event.severity;\n\n var onCallbackError = function (err) {\n // errors in callbacks are tolerated but we want to log them out\n _this2._logger.error('Error occurred in onError callback, continuing anyway…');\n\n _this2._logger.error(err);\n };\n\n var callbacks = [].concat(this._cbs.e).concat(onError);\n _$callbackRunner_9(callbacks, event, onCallbackError, function (err, shouldSend) {\n if (err) onCallbackError(err);\n\n if (!shouldSend) {\n _this2._logger.debug('Event not sent due to onError callback');\n\n return postReportCallback(null, event);\n }\n\n if (_this2._isBreadcrumbTypeEnabled('error')) {\n // only leave a crumb for the error if actually got sent\n Client.prototype.leaveBreadcrumb.call(_this2, event.errors[0].errorClass, {\n errorClass: event.errors[0].errorClass,\n errorMessage: event.errors[0].errorMessage,\n severity: event.severity\n }, 'error');\n }\n\n if (originalSeverity !== event.severity) {\n event._handledState.severityReason = {\n type: 'userCallbackSetSeverity'\n };\n }\n\n if (event.unhandled !== event._handledState.unhandled) {\n event._handledState.severityReason.unhandledOverridden = true;\n event._handledState.unhandled = event.unhandled;\n }\n\n if (_this2._session) {\n _this2._session._track(event);\n\n event._session = _this2._session;\n }\n\n _this2._delivery.sendEvent({\n apiKey: event.apiKey || _this2._config.apiKey,\n notifier: _this2._notifier,\n events: [event]\n }, function (err) {\n return postReportCallback(err, event);\n });\n });\n };\n\n return Client;\n}();\n\nvar generateConfigErrorMessage = function (errors, rawInput) {\n var er = new Error(\"Invalid configuration\\n\" + _$map_16(_$keys_15(errors), function (key) {\n return \" - \" + key + \" \" + errors[key] + \", got \" + stringify(rawInput[key]);\n }).join('\\n\\n'));\n return er;\n};\n\nvar stringify = function (val) {\n switch (typeof val) {\n case 'string':\n case 'number':\n case 'object':\n return JSON.stringify(val);\n\n default:\n return String(val);\n }\n};\n\nvar _$Client_4 = Client;\n\nvar _$jsonPayload_21 = {};\n/* removed: var _$safeJsonStringify_30 = require('@bugsnag/safe-json-stringify'); */;\n\nvar EVENT_REDACTION_PATHS = ['events.[].metaData', 'events.[].breadcrumbs.[].metaData', 'events.[].request'];\n\n_$jsonPayload_21.event = function (event, redactedKeys) {\n var payload = _$safeJsonStringify_30(event, null, null, {\n redactedPaths: EVENT_REDACTION_PATHS,\n redactedKeys: redactedKeys\n });\n\n if (payload.length > 10e5) {\n event.events[0]._metadata = {\n notifier: \"WARNING!\\nSerialized payload was \" + payload.length / 10e5 + \"MB (limit = 1MB)\\nmetadata was removed\"\n };\n payload = _$safeJsonStringify_30(event, null, null, {\n redactedPaths: EVENT_REDACTION_PATHS,\n redactedKeys: redactedKeys\n });\n }\n\n return payload;\n};\n\n_$jsonPayload_21.session = function (session, redactedKeys) {\n var payload = _$safeJsonStringify_30(session, null, null);\n return payload;\n};\n\nvar _$delivery_36 = {};\n/* removed: var _$jsonPayload_21 = require('@bugsnag/core/lib/json-payload'); */;\n\n_$delivery_36 = function (client, win) {\n if (win === void 0) {\n win = window;\n }\n\n return {\n sendEvent: function (event, cb) {\n if (cb === void 0) {\n cb = function () {};\n }\n\n var url = getApiUrl(client._config, 'notify', '4', win);\n var body = _$jsonPayload_21.event(event, client._config.redactedKeys);\n var req = new win.XDomainRequest();\n\n req.onload = function () {\n cb(null);\n };\n\n req.onerror = function () {\n var err = new Error('Event failed to send');\n\n client._logger.error('Event failed to send…', err);\n\n if (body.length > 10e5) {\n client._logger.warn(\"Event oversized (\" + (body.length / 10e5).toFixed(2) + \" MB)\");\n }\n\n cb(err);\n };\n\n req.open('POST', url);\n setTimeout(function () {\n try {\n req.send(body);\n } catch (e) {\n client._logger.error(e);\n\n cb(e);\n }\n }, 0);\n },\n sendSession: function (session, cb) {\n if (cb === void 0) {\n cb = function () {};\n }\n\n var url = getApiUrl(client._config, 'sessions', '1', win);\n var req = new win.XDomainRequest();\n\n req.onload = function () {\n cb(null);\n };\n\n req.open('POST', url);\n setTimeout(function () {\n try {\n req.send(_$jsonPayload_21.session(session, client._config.redactedKeys));\n } catch (e) {\n client._logger.error(e);\n\n cb(e);\n }\n }, 0);\n }\n };\n};\n\nvar getApiUrl = function (config, endpoint, version, win) {\n // IE8 doesn't support Date.prototype.toISOstring(), but it does convert a date\n // to an ISO string when you use JSON stringify. Simply parsing the result of\n // JSON.stringify is smaller than using a toISOstring() polyfill.\n var isoDate = JSON.parse(JSON.stringify(new Date()));\n var url = matchPageProtocol(config.endpoints[endpoint], win.location.protocol);\n return url + \"?apiKey=\" + encodeURIComponent(config.apiKey) + \"&payloadVersion=\" + version + \"&sentAt=\" + encodeURIComponent(isoDate);\n};\n\nvar matchPageProtocol = _$delivery_36._matchPageProtocol = function (endpoint, pageProtocol) {\n return pageProtocol === 'http:' ? endpoint.replace(/^https:/, 'http:') : endpoint;\n};\n\n/* removed: var _$jsonPayload_21 = require('@bugsnag/core/lib/json-payload'); */;\n\nvar _$delivery_37 = function (client, win) {\n if (win === void 0) {\n win = window;\n }\n\n return {\n sendEvent: function (event, cb) {\n if (cb === void 0) {\n cb = function () {};\n }\n\n try {\n var url = client._config.endpoints.notify;\n var req = new win.XMLHttpRequest();\n var body = _$jsonPayload_21.event(event, client._config.redactedKeys);\n\n req.onreadystatechange = function () {\n if (req.readyState === win.XMLHttpRequest.DONE) {\n var status = req.status;\n\n if (status === 0 || status >= 400) {\n var err = new Error(\"Request failed with status \" + status);\n\n client._logger.error('Event failed to send…', err);\n\n if (body.length > 10e5) {\n client._logger.warn(\"Event oversized (\" + (body.length / 10e5).toFixed(2) + \" MB)\");\n }\n\n cb(err);\n } else {\n cb(null);\n }\n }\n };\n\n req.open('POST', url);\n req.setRequestHeader('Content-Type', 'application/json');\n req.setRequestHeader('Bugsnag-Api-Key', event.apiKey || client._config.apiKey);\n req.setRequestHeader('Bugsnag-Payload-Version', '4');\n req.setRequestHeader('Bugsnag-Sent-At', new Date().toISOString());\n req.send(body);\n } catch (e) {\n client._logger.error(e);\n }\n },\n sendSession: function (session, cb) {\n if (cb === void 0) {\n cb = function () {};\n }\n\n try {\n var url = client._config.endpoints.sessions;\n var req = new win.XMLHttpRequest();\n\n req.onreadystatechange = function () {\n if (req.readyState === win.XMLHttpRequest.DONE) {\n var status = req.status;\n\n if (status === 0 || status >= 400) {\n var err = new Error(\"Request failed with status \" + status);\n\n client._logger.error('Session failed to send…', err);\n\n cb(err);\n } else {\n cb(null);\n }\n }\n };\n\n req.open('POST', url);\n req.setRequestHeader('Content-Type', 'application/json');\n req.setRequestHeader('Bugsnag-Api-Key', client._config.apiKey);\n req.setRequestHeader('Bugsnag-Payload-Version', '1');\n req.setRequestHeader('Bugsnag-Sent-At', new Date().toISOString());\n req.send(_$jsonPayload_21.session(session, client._config.redactedKeys));\n } catch (e) {\n client._logger.error(e);\n }\n }\n };\n};\n\nvar appStart = new Date();\n\nvar reset = function () {\n appStart = new Date();\n};\n\nvar _$app_38 = {\n name: 'appDuration',\n load: function (client) {\n client.addOnError(function (event) {\n var now = new Date();\n event.app.duration = now - appStart;\n }, true);\n return {\n reset: reset\n };\n }\n};\n\n/*\n * Sets the default context to be the current URL\n */\nvar _$context_39 = function (win) {\n if (win === void 0) {\n win = window;\n }\n\n return {\n load: function (client) {\n client.addOnError(function (event) {\n if (event.context !== undefined) return;\n event.context = win.location.pathname;\n }, true);\n }\n };\n};\n\nvar _$pad_43 = function pad(num, size) {\n var s = '000000000' + num;\n return s.substr(s.length - size);\n};\n\n/* removed: var _$pad_43 = require('./pad.js'); */;\n\nvar __env_42 = typeof window === 'object' ? window : self;\nvar __globalCount_42 = 0;\n\nfor (var __prop_42 in __env_42) {\n if (Object.hasOwnProperty.call(__env_42, __prop_42)) __globalCount_42++;\n}\n\nvar __mimeTypesLength_42 = navigator.mimeTypes ? navigator.mimeTypes.length : 0;\nvar __clientId_42 = _$pad_43((__mimeTypesLength_42 + navigator.userAgent.length).toString(36) + __globalCount_42.toString(36), 4);\n\nvar _$fingerprint_42 = function fingerprint() {\n return __clientId_42;\n};\n\n/**\n * cuid.js\n * Collision-resistant UID generator for browsers and node.\n * Sequential for fast db lookups and recency sorting.\n * Safe for element IDs and server-side lookups.\n *\n * Extracted from CLCTR\n *\n * Copyright (c) Eric Elliott 2012\n * MIT License\n */\n/* removed: var _$fingerprint_42 = require('./lib/fingerprint.js'); */;\n\n/* removed: var _$pad_43 = require('./lib/pad.js'); */;\n\nvar __c_41 = 0,\n __blockSize_41 = 4,\n __base_41 = 36,\n __discreteValues_41 = Math.pow(__base_41, __blockSize_41);\n\nfunction __randomBlock_41() {\n return _$pad_43((Math.random() * __discreteValues_41 << 0).toString(__base_41), __blockSize_41);\n}\n\nfunction __safeCounter_41() {\n __c_41 = __c_41 < __discreteValues_41 ? __c_41 : 0;\n __c_41++; // this is not subliminal\n\n return __c_41 - 1;\n}\n\nfunction __cuid_41() {\n // Starting with a lowercase letter makes\n // it HTML element ID friendly.\n var letter = 'c',\n // hard-coded allows for sequential access\n // timestamp\n // warning: this exposes the exact date and time\n // that the uid was created.\n timestamp = new Date().getTime().toString(__base_41),\n // Prevent same-machine collisions.\n counter = _$pad_43(__safeCounter_41().toString(__base_41), __blockSize_41),\n // A few chars to generate distinct ids for different\n // clients (so different computers are far less\n // likely to generate the same id)\n print = _$fingerprint_42(),\n // Grab some more chars from Math.random()\n random = __randomBlock_41() + __randomBlock_41();\n return letter + timestamp + counter + print + random;\n}\n\n__cuid_41.fingerprint = _$fingerprint_42;\nvar _$cuid_41 = __cuid_41;\n\n/* removed: var _$assign_11 = require('@bugsnag/core/lib/es-utils/assign'); */;\n\nvar BUGSNAG_ANONYMOUS_ID_KEY = 'bugsnag-anonymous-id';\n\nvar getDeviceId = function (win) {\n try {\n var storage = win.localStorage;\n var id = storage.getItem(BUGSNAG_ANONYMOUS_ID_KEY); // If we get an ID, make sure it looks like a valid cuid. The length can\n // fluctuate slightly, so some leeway is built in\n\n if (id && /^c[a-z0-9]{20,32}$/.test(id)) {\n return id;\n }\n\n /* removed: var _$cuid_41 = require('@bugsnag/cuid'); */;\n\n id = _$cuid_41();\n storage.setItem(BUGSNAG_ANONYMOUS_ID_KEY, id);\n return id;\n } catch (err) {// If localStorage is not available (e.g. because it's disabled) then give up\n }\n};\n/*\n * Automatically detects browser device details\n */\n\n\nvar _$device_40 = function (nav, win) {\n if (nav === void 0) {\n nav = navigator;\n }\n\n if (win === void 0) {\n win = window;\n }\n\n return {\n load: function (client) {\n var device = {\n locale: nav.browserLanguage || nav.systemLanguage || nav.userLanguage || nav.language,\n userAgent: nav.userAgent\n };\n\n if (win && win.screen && win.screen.orientation && win.screen.orientation.type) {\n device.orientation = win.screen.orientation.type;\n } else if (win && win.document) {\n device.orientation = win.document.documentElement.clientWidth > win.document.documentElement.clientHeight ? 'landscape' : 'portrait';\n }\n\n if (client._config.generateAnonymousId) {\n device.id = getDeviceId(win);\n }\n\n client.addOnSession(function (session) {\n session.device = _$assign_11({}, session.device, device); // only set device id if collectUserIp is false\n\n if (!client._config.collectUserIp) setDefaultUserId(session);\n }); // add time just as the event is sent\n\n client.addOnError(function (event) {\n event.device = _$assign_11({}, event.device, device, {\n time: new Date()\n });\n if (!client._config.collectUserIp) setDefaultUserId(event);\n }, true);\n },\n configSchema: {\n generateAnonymousId: {\n validate: function (value) {\n return value === true || value === false;\n },\n defaultValue: function () {\n return true;\n },\n message: 'should be true|false'\n }\n }\n };\n};\n\nvar setDefaultUserId = function (eventOrSession) {\n // device id is also used to populate the user id field, if it's not already set\n var user = eventOrSession.getUser();\n\n if (!user || !user.id) {\n eventOrSession.setUser(eventOrSession.device.id);\n }\n};\n\n/* removed: var _$assign_11 = require('@bugsnag/core/lib/es-utils/assign'); */;\n/*\n * Sets the event request: { url } to be the current href\n */\n\n\nvar _$request_44 = function (win) {\n if (win === void 0) {\n win = window;\n }\n\n return {\n load: function (client) {\n client.addOnError(function (event) {\n if (event.request && event.request.url) return;\n event.request = _$assign_11({}, event.request, {\n url: win.location.href\n });\n }, true);\n }\n };\n};\n\n/* removed: var _$includes_13 = require('@bugsnag/core/lib/es-utils/includes'); */;\n\nvar _$session_45 = {\n load: function (client) {\n client._sessionDelegate = sessionDelegate;\n }\n};\nvar sessionDelegate = {\n startSession: function (client, session) {\n var sessionClient = client;\n sessionClient._session = session;\n sessionClient._pausedSession = null; // exit early if the current releaseStage is not enabled\n\n if (sessionClient._config.enabledReleaseStages !== null && !_$includes_13(sessionClient._config.enabledReleaseStages, sessionClient._config.releaseStage)) {\n sessionClient._logger.warn('Session not sent due to releaseStage/enabledReleaseStages configuration');\n\n return sessionClient;\n }\n\n sessionClient._delivery.sendSession({\n notifier: sessionClient._notifier,\n device: session.device,\n app: session.app,\n sessions: [{\n id: session.id,\n startedAt: session.startedAt,\n user: session._user\n }]\n });\n\n return sessionClient;\n },\n resumeSession: function (client) {\n // Do nothing if there's already an active session\n if (client._session) {\n return client;\n } // If we have a paused session then make it the active session\n\n\n if (client._pausedSession) {\n client._session = client._pausedSession;\n client._pausedSession = null;\n return client;\n } // Otherwise start a new session\n\n\n return client.startSession();\n },\n pauseSession: function (client) {\n client._pausedSession = client._session;\n client._session = null;\n }\n};\n\n/* removed: var _$assign_11 = require('@bugsnag/core/lib/es-utils/assign'); */;\n/*\n * Prevent collection of user IPs\n */\n\n\nvar _$clientIp_46 = {\n load: function (client) {\n if (client._config.collectUserIp) return;\n client.addOnError(function (event) {\n // If user.id is explicitly undefined, it will be missing from the payload. It needs\n // removing so that the following line replaces it\n if (event._user && typeof event._user.id === 'undefined') delete event._user.id;\n event._user = _$assign_11({\n id: '[REDACTED]'\n }, event._user);\n event.request = _$assign_11({\n clientIp: '[REDACTED]'\n }, event.request);\n });\n },\n configSchema: {\n collectUserIp: {\n defaultValue: function () {\n return true;\n },\n message: 'should be true|false',\n validate: function (value) {\n return value === true || value === false;\n }\n }\n }\n};\n\nvar _$consoleBreadcrumbs_47 = {};\n/* removed: var _$map_16 = require('@bugsnag/core/lib/es-utils/map'); */;\n\n/* removed: var _$reduce_17 = require('@bugsnag/core/lib/es-utils/reduce'); */;\n\n/* removed: var _$filter_12 = require('@bugsnag/core/lib/es-utils/filter'); */;\n/*\n * Leaves breadcrumbs when console log methods are called\n */\n\n\n_$consoleBreadcrumbs_47.load = function (client) {\n var isDev = /^(local-)?dev(elopment)?$/.test(client._config.releaseStage);\n if (isDev || !client._isBreadcrumbTypeEnabled('log')) return;\n _$map_16(CONSOLE_LOG_METHODS, function (method) {\n var original = console[method];\n\n console[method] = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n client.leaveBreadcrumb('Console output', _$reduce_17(args, function (accum, arg, i) {\n // do the best/simplest stringification of each argument\n var stringified = '[Unknown value]'; // this may fail if the input is:\n // - an object whose [[Prototype]] is null (no toString)\n // - an object with a broken toString or @@toPrimitive implementation\n\n try {\n stringified = String(arg);\n } catch (e) {} // if it stringifies to [object Object] attempt to JSON stringify\n\n\n if (stringified === '[object Object]') {\n // catch stringify errors and fallback to [object Object]\n try {\n stringified = JSON.stringify(arg);\n } catch (e) {}\n }\n\n accum[\"[\" + i + \"]\"] = stringified;\n return accum;\n }, {\n severity: method.indexOf('group') === 0 ? 'log' : method\n }), 'log');\n original.apply(console, args);\n };\n\n console[method]._restore = function () {\n console[method] = original;\n };\n });\n};\n\nif (\"production\" !== 'production') {\n _$consoleBreadcrumbs_47.destroy = function () {\n return CONSOLE_LOG_METHODS.forEach(function (method) {\n if (typeof console[method]._restore === 'function') console[method]._restore();\n });\n };\n}\n\nvar CONSOLE_LOG_METHODS = _$filter_12(['log', 'debug', 'info', 'warn', 'error'], function (method) {\n return typeof console !== 'undefined' && typeof console[method] === 'function';\n});\n\n/* removed: var _$map_16 = require('@bugsnag/core/lib/es-utils/map'); */;\n\n/* removed: var _$reduce_17 = require('@bugsnag/core/lib/es-utils/reduce'); */;\n\n/* removed: var _$filter_12 = require('@bugsnag/core/lib/es-utils/filter'); */;\n\nvar MAX_LINE_LENGTH = 200;\nvar MAX_SCRIPT_LENGTH = 500000;\n\nvar _$inlineScriptContent_48 = function (doc, win) {\n if (doc === void 0) {\n doc = document;\n }\n\n if (win === void 0) {\n win = window;\n }\n\n return {\n load: function (client) {\n if (!client._config.trackInlineScripts) return;\n var originalLocation = win.location.href;\n var html = ''; // in IE8-10 the 'interactive' state can fire too soon (before scripts have finished executing), so in those\n // we wait for the 'complete' state before assuming that synchronous scripts are no longer executing\n\n var isOldIe = !!doc.attachEvent;\n var DOMContentLoaded = isOldIe ? doc.readyState === 'complete' : doc.readyState !== 'loading';\n\n var getHtml = function () {\n return doc.documentElement.outerHTML;\n }; // get whatever HTML exists at this point in time\n\n\n html = getHtml();\n var prev = doc.onreadystatechange; // then update it when the DOM content has loaded\n\n doc.onreadystatechange = function () {\n // IE8 compatible alternative to document#DOMContentLoaded\n if (doc.readyState === 'interactive') {\n html = getHtml();\n DOMContentLoaded = true;\n }\n\n try {\n prev.apply(this, arguments);\n } catch (e) {}\n };\n\n var _lastScript = null;\n\n var updateLastScript = function (script) {\n _lastScript = script;\n };\n\n var getCurrentScript = function () {\n var script = doc.currentScript || _lastScript;\n\n if (!script && !DOMContentLoaded) {\n var scripts = doc.scripts || doc.getElementsByTagName('script');\n script = scripts[scripts.length - 1];\n }\n\n return script;\n };\n\n var addSurroundingCode = function (lineNumber) {\n // get whatever html has rendered at this point\n if (!DOMContentLoaded || !html) html = getHtml(); // simulate the raw html\n\n var htmlLines = [''].concat(html.split('\\n'));\n var zeroBasedLine = lineNumber - 1;\n var start = Math.max(zeroBasedLine - 3, 0);\n var end = Math.min(zeroBasedLine + 3, htmlLines.length);\n return _$reduce_17(htmlLines.slice(start, end), function (accum, line, i) {\n accum[start + 1 + i] = line.length <= MAX_LINE_LENGTH ? line : line.substr(0, MAX_LINE_LENGTH);\n return accum;\n }, {});\n };\n\n client.addOnError(function (event) {\n // remove any of our own frames that may be part the stack this\n // happens before the inline script check as it happens for all errors\n event.errors[0].stacktrace = _$filter_12(event.errors[0].stacktrace, function (f) {\n return !/__trace__$/.test(f.method);\n });\n var frame = event.errors[0].stacktrace[0]; // remove hash and query string from url\n\n var cleanUrl = function (url) {\n return url.replace(/#.*$/, '').replace(/\\?.*$/, '');\n }; // if frame.file exists and is not the original location of the page, this can't be an inline script\n\n\n if (frame && frame.file && cleanUrl(frame.file) !== cleanUrl(originalLocation)) return; // grab the last script known to have run\n\n var currentScript = getCurrentScript();\n\n if (currentScript) {\n var content = currentScript.innerHTML;\n event.addMetadata('script', 'content', content.length <= MAX_SCRIPT_LENGTH ? content : content.substr(0, MAX_SCRIPT_LENGTH)); // only attempt to grab some surrounding code if we have a line number\n\n if (frame && frame.lineNumber) {\n frame.code = addSurroundingCode(frame.lineNumber);\n }\n }\n }, true); // Proxy all the timer functions whose callback is their 0th argument.\n // Keep a reference to the original setTimeout because we need it later\n\n var _map = _$map_16(['setTimeout', 'setInterval', 'setImmediate', 'requestAnimationFrame'], function (fn) {\n return __proxy(win, fn, function (original) {\n return __traceOriginalScript(original, function (args) {\n return {\n get: function () {\n return args[0];\n },\n replace: function (fn) {\n args[0] = fn;\n }\n };\n });\n });\n }),\n _setTimeout = _map[0]; // Proxy all the host objects whose prototypes have an addEventListener function\n\n\n _$map_16(['EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode', 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase', 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow', 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList', 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload'], function (o) {\n if (!win[o] || !win[o].prototype || !Object.prototype.hasOwnProperty.call(win[o].prototype, 'addEventListener')) return;\n\n __proxy(win[o].prototype, 'addEventListener', function (original) {\n return __traceOriginalScript(original, eventTargetCallbackAccessor);\n });\n\n __proxy(win[o].prototype, 'removeEventListener', function (original) {\n return __traceOriginalScript(original, eventTargetCallbackAccessor, true);\n });\n });\n\n function __traceOriginalScript(fn, callbackAccessor, alsoCallOriginal) {\n if (alsoCallOriginal === void 0) {\n alsoCallOriginal = false;\n }\n\n return function () {\n // this is required for removeEventListener to remove anything added with\n // addEventListener before the functions started being wrapped by Bugsnag\n var args = [].slice.call(arguments);\n\n try {\n var cba = callbackAccessor(args);\n var cb = cba.get();\n if (alsoCallOriginal) fn.apply(this, args);\n if (typeof cb !== 'function') return fn.apply(this, args);\n\n if (cb.__trace__) {\n cba.replace(cb.__trace__);\n } else {\n var script = getCurrentScript(); // this function mustn't be annonymous due to a bug in the stack\n // generation logic, meaning it gets tripped up\n // see: https://github.com/stacktracejs/stack-generator/issues/6\n\n cb.__trace__ = function __trace__() {\n // set the script that called this function\n updateLastScript(script); // immediately unset the currentScript synchronously below, however\n // if this cb throws an error the line after will not get run so schedule\n // an almost-immediate aysnc update too\n\n _setTimeout(function () {\n updateLastScript(null);\n }, 0);\n\n var ret = cb.apply(this, arguments);\n updateLastScript(null);\n return ret;\n };\n\n cb.__trace__.__trace__ = cb.__trace__;\n cba.replace(cb.__trace__);\n }\n } catch (e) {// swallow these errors on Selenium:\n // Permission denied to access property '__trace__'\n // WebDriverException: Message: Permission denied to access property \"handleEvent\"\n } // IE8 doesn't let you call .apply() on setTimeout/setInterval\n\n\n if (fn.apply) return fn.apply(this, args);\n\n switch (args.length) {\n case 1:\n return fn(args[0]);\n\n case 2:\n return fn(args[0], args[1]);\n\n default:\n return fn();\n }\n };\n }\n },\n configSchema: {\n trackInlineScripts: {\n validate: function (value) {\n return value === true || value === false;\n },\n defaultValue: function () {\n return true;\n },\n message: 'should be true|false'\n }\n }\n };\n};\n\nfunction __proxy(host, name, replacer) {\n var original = host[name];\n if (!original) return original;\n var replacement = replacer(original);\n host[name] = replacement;\n return original;\n}\n\nfunction eventTargetCallbackAccessor(args) {\n var isEventHandlerObj = !!args[1] && typeof args[1].handleEvent === 'function';\n return {\n get: function () {\n return isEventHandlerObj ? args[1].handleEvent : args[1];\n },\n replace: function (fn) {\n if (isEventHandlerObj) {\n args[1].handleEvent = fn;\n } else {\n args[1] = fn;\n }\n }\n };\n}\n\n/*\n * Leaves breadcrumbs when the user interacts with the DOM\n */\nvar _$interactionBreadcrumbs_49 = function (win) {\n if (win === void 0) {\n win = window;\n }\n\n return {\n load: function (client) {\n if (!('addEventListener' in win)) return;\n if (!client._isBreadcrumbTypeEnabled('user')) return;\n win.addEventListener('click', function (event) {\n var targetText, targetSelector;\n\n try {\n targetText = getNodeText(event.target);\n targetSelector = getNodeSelector(event.target, win);\n } catch (e) {\n targetText = '[hidden]';\n targetSelector = '[hidden]';\n\n client._logger.error('Cross domain error when tracking click event. See docs: https://tinyurl.com/yy3rn63z');\n }\n\n client.leaveBreadcrumb('UI click', {\n targetText: targetText,\n targetSelector: targetSelector\n }, 'user');\n }, true);\n }\n };\n};\n\nvar trimStart = /^\\s+/;\nvar trimEnd = /(^|[^\\s])\\s+$/;\n\nfunction getNodeText(el) {\n var text = el.textContent || el.innerText || '';\n\n if (!text && (el.type === 'submit' || el.type === 'button')) {\n text = el.value;\n }\n\n text = text.replace(trimStart, '').replace(trimEnd, '$1');\n\n if (text.length > 140) {\n return text.slice(0, 135) + '(...)';\n }\n\n return text;\n} // Create a label from tagname, id and css class of the element\n\n\nfunction getNodeSelector(el, win) {\n var parts = [el.tagName];\n if (el.id) parts.push('#' + el.id);\n if (el.className && el.className.length) parts.push(\".\" + el.className.split(' ').join('.')); // Can't get much more advanced with the current browser\n\n if (!win.document.querySelectorAll || !Array.prototype.indexOf) return parts.join('');\n\n try {\n if (win.document.querySelectorAll(parts.join('')).length === 1) return parts.join('');\n } catch (e) {\n // Sometimes the query selector can be invalid just return it as-is\n return parts.join('');\n } // try to get a more specific selector if this one matches more than one element\n\n\n if (el.parentNode.childNodes.length > 1) {\n var index = Array.prototype.indexOf.call(el.parentNode.childNodes, el) + 1;\n parts.push(\":nth-child(\" + index + \")\");\n }\n\n if (win.document.querySelectorAll(parts.join('')).length === 1) return parts.join(''); // try prepending the parent node selector\n\n if (el.parentNode) return getNodeSelector(el.parentNode, win) + \" > \" + parts.join('');\n return parts.join('');\n}\n\nvar _$navigationBreadcrumbs_50 = {};\n/*\n* Leaves breadcrumbs when navigation methods are called or events are emitted\n*/\n_$navigationBreadcrumbs_50 = function (win) {\n if (win === void 0) {\n win = window;\n }\n\n var plugin = {\n load: function (client) {\n if (!('addEventListener' in win)) return;\n if (!client._isBreadcrumbTypeEnabled('navigation')) return; // returns a function that will drop a breadcrumb with a given name\n\n var drop = function (name) {\n return function () {\n return client.leaveBreadcrumb(name, {}, 'navigation');\n };\n }; // simple drops – just names, no meta\n\n\n win.addEventListener('pagehide', drop('Page hidden'), true);\n win.addEventListener('pageshow', drop('Page shown'), true);\n win.addEventListener('load', drop('Page loaded'), true);\n win.document.addEventListener('DOMContentLoaded', drop('DOMContentLoaded'), true); // some browsers like to emit popstate when the page loads, so only add the popstate listener after that\n\n win.addEventListener('load', function () {\n return win.addEventListener('popstate', drop('Navigated back'), true);\n }); // hashchange has some metadata that we care about\n\n win.addEventListener('hashchange', function (event) {\n var metadata = event.oldURL ? {\n from: relativeLocation(event.oldURL, win),\n to: relativeLocation(event.newURL, win),\n state: getCurrentState(win)\n } : {\n to: relativeLocation(win.location.href, win)\n };\n client.leaveBreadcrumb('Hash changed', metadata, 'navigation');\n }, true); // the only way to know about replaceState/pushState is to wrap them… >_<\n\n if (win.history.replaceState) wrapHistoryFn(client, win.history, 'replaceState', win);\n if (win.history.pushState) wrapHistoryFn(client, win.history, 'pushState', win);\n }\n };\n\n if (\"production\" !== 'production') {\n plugin.destroy = function (win) {\n if (win === void 0) {\n win = window;\n }\n\n win.history.replaceState._restore();\n\n win.history.pushState._restore();\n };\n }\n\n return plugin;\n};\n\nif (\"production\" !== 'production') {\n _$navigationBreadcrumbs_50.destroy = function (win) {\n if (win === void 0) {\n win = window;\n }\n\n win.history.replaceState._restore();\n\n win.history.pushState._restore();\n };\n} // takes a full url like http://foo.com:1234/pages/01.html?yes=no#section-2 and returns\n// just the path and hash parts, e.g. /pages/01.html?yes=no#section-2\n\n\nvar relativeLocation = function (url, win) {\n var a = win.document.createElement('A');\n a.href = url;\n return \"\" + a.pathname + a.search + a.hash;\n};\n\nvar stateChangeToMetadata = function (win, state, title, url) {\n var currentPath = relativeLocation(win.location.href, win);\n return {\n title: title,\n state: state,\n prevState: getCurrentState(win),\n to: url || currentPath,\n from: currentPath\n };\n};\n\nvar wrapHistoryFn = function (client, target, fn, win) {\n var orig = target[fn];\n\n target[fn] = function (state, title, url) {\n client.leaveBreadcrumb(\"History \" + fn, stateChangeToMetadata(win, state, title, url), 'navigation'); // if throttle plugin is in use, reset the event sent count\n\n if (typeof client.resetEventCount === 'function') client.resetEventCount(); // if the client is operating in auto session-mode, a new route should trigger a new session\n\n if (client._config.autoTrackSessions) client.startSession(); // Internet Explorer will convert `undefined` to a string when passed, causing an unintended redirect\n // to '/undefined'. therefore we only pass the url if it's not undefined.\n\n orig.apply(target, [state, title].concat(url !== undefined ? url : []));\n };\n\n if (\"production\" !== 'production') {\n target[fn]._restore = function () {\n target[fn] = orig;\n };\n }\n};\n\nvar getCurrentState = function (win) {\n try {\n return win.history.state;\n } catch (e) {}\n};\n\nvar BREADCRUMB_TYPE = 'request';\n\n/* removed: var _$includes_13 = require('@bugsnag/core/lib/es-utils/includes'); */;\n/*\n * Leaves breadcrumbs when network requests occur\n */\n\n\nvar _$networkBreadcrumbs_51 = function (_ignoredUrls, win) {\n if (_ignoredUrls === void 0) {\n _ignoredUrls = [];\n }\n\n if (win === void 0) {\n win = window;\n }\n\n var restoreFunctions = [];\n var plugin = {\n load: function (client) {\n if (!client._isBreadcrumbTypeEnabled('request')) return;\n var ignoredUrls = [client._config.endpoints.notify, client._config.endpoints.sessions].concat(_ignoredUrls);\n monkeyPatchXMLHttpRequest();\n monkeyPatchFetch(); // XMLHttpRequest monkey patch\n\n function monkeyPatchXMLHttpRequest() {\n if (!('addEventListener' in win.XMLHttpRequest.prototype)) return;\n var nativeOpen = win.XMLHttpRequest.prototype.open; // override native open()\n\n win.XMLHttpRequest.prototype.open = function open(method, url) {\n var _this = this;\n\n var requestSetupKey = false;\n\n var error = function () {\n return handleXHRError(method, url);\n };\n\n var load = function () {\n return handleXHRLoad(method, url, _this.status);\n }; // if we have already setup listeners, it means open() was called twice, we need to remove\n // the listeners and recreate them\n\n\n if (requestSetupKey) {\n this.removeEventListener('load', load);\n this.removeEventListener('error', error);\n } // attach load event listener\n\n\n this.addEventListener('load', load); // attach error event listener\n\n this.addEventListener('error', error);\n requestSetupKey = true;\n nativeOpen.apply(this, arguments);\n };\n\n if (\"production\" !== 'production') {\n restoreFunctions.push(function () {\n win.XMLHttpRequest.prototype.open = nativeOpen;\n });\n }\n }\n\n function handleXHRLoad(method, url, status) {\n if (url === undefined) {\n client._logger.warn('The request URL is no longer present on this XMLHttpRequest. A breadcrumb cannot be left for this request.');\n\n return;\n } // an XMLHttpRequest's URL can be an object as long as its 'toString'\n // returns a URL, e.g. a HTMLAnchorElement\n\n\n if (typeof url === 'string' && _$includes_13(ignoredUrls, url.replace(/\\?.*$/, ''))) {\n // don't leave a network breadcrumb from bugsnag notify calls\n return;\n }\n\n var metadata = {\n status: status,\n request: method + \" \" + url\n };\n\n if (status >= 400) {\n // contacted server but got an error response\n client.leaveBreadcrumb('XMLHttpRequest failed', metadata, BREADCRUMB_TYPE);\n } else {\n client.leaveBreadcrumb('XMLHttpRequest succeeded', metadata, BREADCRUMB_TYPE);\n }\n }\n\n function handleXHRError(method, url) {\n if (url === undefined) {\n client._logger.warn('The request URL is no longer present on this XMLHttpRequest. A breadcrumb cannot be left for this request.');\n\n return;\n }\n\n if (typeof url === 'string' && _$includes_13(ignoredUrls, url.replace(/\\?.*$/, ''))) {\n // don't leave a network breadcrumb from bugsnag notify calls\n return;\n } // failed to contact server\n\n\n client.leaveBreadcrumb('XMLHttpRequest error', {\n request: method + \" \" + url\n }, BREADCRUMB_TYPE);\n } // window.fetch monkey patch\n\n\n function monkeyPatchFetch() {\n // only patch it if it exists and if it is not a polyfill (patching a polyfilled\n // fetch() results in duplicate breadcrumbs for the same request because the\n // implementation uses XMLHttpRequest which is also patched)\n if (!('fetch' in win) || win.fetch.polyfill) return;\n var oldFetch = win.fetch;\n\n win.fetch = function fetch() {\n var _arguments = arguments;\n var urlOrRequest = arguments[0];\n var options = arguments[1];\n var method;\n var url = null;\n\n if (urlOrRequest && typeof urlOrRequest === 'object') {\n url = urlOrRequest.url;\n\n if (options && 'method' in options) {\n method = options.method;\n } else if (urlOrRequest && 'method' in urlOrRequest) {\n method = urlOrRequest.method;\n }\n } else {\n url = urlOrRequest;\n\n if (options && 'method' in options) {\n method = options.method;\n }\n }\n\n if (method === undefined) {\n method = 'GET';\n }\n\n return new Promise(function (resolve, reject) {\n // pass through to native fetch\n oldFetch.apply(void 0, _arguments).then(function (response) {\n handleFetchSuccess(response, method, url);\n resolve(response);\n })[\"catch\"](function (error) {\n handleFetchError(method, url);\n reject(error);\n });\n });\n };\n\n if (\"production\" !== 'production') {\n restoreFunctions.push(function () {\n win.fetch = oldFetch;\n });\n }\n }\n\n var handleFetchSuccess = function (response, method, url) {\n var metadata = {\n status: response.status,\n request: method + \" \" + url\n };\n\n if (response.status >= 400) {\n // when the request comes back with a 4xx or 5xx status it does not reject the fetch promise,\n client.leaveBreadcrumb('fetch() failed', metadata, BREADCRUMB_TYPE);\n } else {\n client.leaveBreadcrumb('fetch() succeeded', metadata, BREADCRUMB_TYPE);\n }\n };\n\n var handleFetchError = function (method, url) {\n client.leaveBreadcrumb('fetch() error', {\n request: method + \" \" + url\n }, BREADCRUMB_TYPE);\n };\n }\n };\n\n if (\"production\" !== 'production') {\n plugin.destroy = function () {\n restoreFunctions.forEach(function (fn) {\n return fn();\n });\n restoreFunctions = [];\n };\n }\n\n return plugin;\n};\n\n/* removed: var _$intRange_24 = require('@bugsnag/core/lib/validators/int-range'); */;\n/*\n * Throttles and dedupes events\n */\n\n\nvar _$throttle_52 = {\n load: function (client) {\n // track sent events for each init of the plugin\n var n = 0; // add onError hook\n\n client.addOnError(function (event) {\n // have max events been sent already?\n if (n >= client._config.maxEvents) {\n client._logger.warn(\"Cancelling event send due to maxEvents per session limit of \" + client._config.maxEvents + \" being reached\");\n\n return false;\n }\n\n n++;\n });\n\n client.resetEventCount = function () {\n n = 0;\n };\n },\n configSchema: {\n maxEvents: {\n defaultValue: function () {\n return 10;\n },\n message: 'should be a positive integer ≤100',\n validate: function (val) {\n return _$intRange_24(1, 100)(val);\n }\n }\n }\n};\n\nvar _$stripQueryString_53 = {};\n/*\n * Remove query strings (and fragments) from stacktraces\n */\n/* removed: var _$map_16 = require('@bugsnag/core/lib/es-utils/map'); */;\n\n/* removed: var _$reduce_17 = require('@bugsnag/core/lib/es-utils/reduce'); */;\n\n_$stripQueryString_53 = {\n load: function (client) {\n client.addOnError(function (event) {\n var allFrames = _$reduce_17(event.errors, function (accum, er) {\n return accum.concat(er.stacktrace);\n }, []);\n _$map_16(allFrames, function (frame) {\n frame.file = strip(frame.file);\n });\n });\n }\n};\n\nvar strip = _$stripQueryString_53._strip = function (str) {\n return typeof str === 'string' ? str.replace(/\\?.*$/, '').replace(/#.*$/, '') : str;\n};\n\n/*\n * Automatically notifies Bugsnag when window.onerror is called\n */\nvar _$onerror_54 = function (win, component) {\n if (win === void 0) {\n win = window;\n }\n\n if (component === void 0) {\n component = 'window onerror';\n }\n\n return {\n load: function (client) {\n if (!client._config.autoDetectErrors) return;\n if (!client._config.enabledErrorTypes.unhandledExceptions) return;\n\n function onerror(messageOrEvent, url, lineNo, charNo, error) {\n // Ignore errors with no info due to CORS settings\n if (lineNo === 0 && /Script error\\.?/.test(messageOrEvent)) {\n client._logger.warn('Ignoring cross-domain or eval script error. See docs: https://tinyurl.com/yy3rn63z');\n } else {\n // any error sent to window.onerror is unhandled and has severity=error\n var handledState = {\n severity: 'error',\n unhandled: true,\n severityReason: {\n type: 'unhandledException'\n }\n };\n var event; // window.onerror can be called in a number of ways. This big if-else is how we\n // figure out which arguments were supplied, and what kind of values it received.\n\n if (error) {\n // if the last parameter (error) was supplied, this is a modern browser's\n // way of saying \"this value was thrown and not caught\"\n event = client.Event.create(error, true, handledState, component, 1);\n decorateStack(event.errors[0].stacktrace, url, lineNo, charNo);\n } else if ( // This complex case detects \"error\" events that are typically synthesised\n // by jquery's trigger method (although can be created in other ways). In\n // order to detect this:\n // - the first argument (message) must exist and be an object (most likely it's a jQuery event)\n // - the second argument (url) must either not exist or be something other than a string (if it\n // exists and is not a string, it'll be the extraParameters argument from jQuery's trigger()\n // function)\n // - the third, fourth and fifth arguments must not exist (lineNo, charNo and error)\n typeof messageOrEvent === 'object' && messageOrEvent !== null && (!url || typeof url !== 'string') && !lineNo && !charNo && !error) {\n // The jQuery event may have a \"type\" property, if so use it as part of the error message\n var name = messageOrEvent.type ? \"Event: \" + messageOrEvent.type : 'Error'; // attempt to find a message from one of the conventional properties, but\n // default to empty string (the event will fill it with a placeholder)\n\n var message = messageOrEvent.message || messageOrEvent.detail || '';\n event = client.Event.create({\n name: name,\n message: message\n }, true, handledState, component, 1); // provide the original thing onerror received – not our error-like object we passed to _notify\n\n event.originalError = messageOrEvent; // include the raw input as metadata – it might contain more info than we extracted\n\n event.addMetadata(component, {\n event: messageOrEvent,\n extraParameters: url\n });\n } else {\n // Lastly, if there was no \"error\" parameter this event was probably from an old\n // browser that doesn't support that. Instead we need to generate a stacktrace.\n event = client.Event.create(messageOrEvent, true, handledState, component, 1);\n decorateStack(event.errors[0].stacktrace, url, lineNo, charNo);\n }\n\n client._notify(event);\n }\n\n if (typeof prevOnError === 'function') prevOnError.apply(this, arguments);\n }\n\n var prevOnError = win.onerror;\n win.onerror = onerror;\n }\n };\n}; // Sometimes the stacktrace has less information than was passed to window.onerror.\n// This function will augment the first stackframe with any useful info that was\n// received as arguments to the onerror callback.\n\n\nvar decorateStack = function (stack, url, lineNo, charNo) {\n if (!stack[0]) stack.push({});\n var culprit = stack[0];\n if (!culprit.file && typeof url === 'string') culprit.file = url;\n if (!culprit.lineNumber && isActualNumber(lineNo)) culprit.lineNumber = lineNo;\n\n if (!culprit.columnNumber) {\n if (isActualNumber(charNo)) {\n culprit.columnNumber = charNo;\n } else if (window.event && isActualNumber(window.event.errorCharacter)) {\n culprit.columnNumber = window.event.errorCharacter;\n }\n }\n};\n\nvar isActualNumber = function (n) {\n return typeof n === 'number' && String.call(n) !== 'NaN';\n};\n\n/* removed: var _$map_16 = require('@bugsnag/core/lib/es-utils/map'); */;\n\n/* removed: var _$iserror_20 = require('@bugsnag/core/lib/iserror'); */;\n\nvar _listener;\n/*\n * Automatically notifies Bugsnag when window.onunhandledrejection is called\n */\n\n\nvar _$unhandledRejection_55 = function (win) {\n if (win === void 0) {\n win = window;\n }\n\n var plugin = {\n load: function (client) {\n if (!client._config.autoDetectErrors || !client._config.enabledErrorTypes.unhandledRejections) return;\n\n var listener = function (evt) {\n var error = evt.reason;\n var isBluebird = false; // accessing properties on evt.detail can throw errors (see #394)\n\n try {\n if (evt.detail && evt.detail.reason) {\n error = evt.detail.reason;\n isBluebird = true;\n }\n } catch (e) {}\n\n var event = client.Event.create(error, false, {\n severity: 'error',\n unhandled: true,\n severityReason: {\n type: 'unhandledPromiseRejection'\n }\n }, 'unhandledrejection handler', 1, client._logger);\n\n if (isBluebird) {\n _$map_16(event.errors[0].stacktrace, fixBluebirdStacktrace(error));\n }\n\n client._notify(event, function (event) {\n if (_$iserror_20(event.originalError) && !event.originalError.stack) {\n var _event$addMetadata;\n\n event.addMetadata('unhandledRejection handler', (_event$addMetadata = {}, _event$addMetadata[Object.prototype.toString.call(event.originalError)] = {\n name: event.originalError.name,\n message: event.originalError.message,\n code: event.originalError.code\n }, _event$addMetadata));\n }\n });\n };\n\n if ('addEventListener' in win) {\n win.addEventListener('unhandledrejection', listener);\n } else {\n win.onunhandledrejection = function (reason, promise) {\n listener({\n detail: {\n reason: reason,\n promise: promise\n }\n });\n };\n }\n\n _listener = listener;\n }\n };\n\n if (\"production\" !== 'production') {\n plugin.destroy = function (win) {\n if (win === void 0) {\n win = window;\n }\n\n if (_listener) {\n if ('addEventListener' in win) {\n win.removeEventListener('unhandledrejection', _listener);\n } else {\n win.onunhandledrejection = null;\n }\n }\n\n _listener = null;\n };\n }\n\n return plugin;\n}; // The stack parser on bluebird stacks in FF get a suprious first frame:\n//\n// Error: derp\n// b@http://localhost:5000/bluebird.html:22:24\n// a@http://localhost:5000/bluebird.html:18:9\n// @http://localhost:5000/bluebird.html:14:9\n//\n// results in\n// […]\n// 0: Object { file: \"Error: derp\", method: undefined, lineNumber: undefined, … }\n// 1: Object { file: \"http://localhost:5000/bluebird.html\", method: \"b\", lineNumber: 22, … }\n// 2: Object { file: \"http://localhost:5000/bluebird.html\", method: \"a\", lineNumber: 18, … }\n// 3: Object { file: \"http://localhost:5000/bluebird.html\", lineNumber: 14, columnNumber: 9, … }\n//\n// so the following reduce/accumulator function removes such frames\n//\n// Bluebird pads method names with spaces so trim that too…\n// https://github.com/petkaantonov/bluebird/blob/b7f21399816d02f979fe434585334ce901dcaf44/src/debuggability.js#L568-L571\n\n\nvar fixBluebirdStacktrace = function (error) {\n return function (frame) {\n if (frame.file === error.toString()) return;\n\n if (frame.method) {\n frame.method = frame.method.replace(/^\\s+/, '');\n }\n };\n};\n\nvar _$notifier_2 = {};\nvar name = 'Bugsnag JavaScript';\nvar version = '7.20.2';\nvar url = 'https://github.com/bugsnag/bugsnag-js';\n\n/* removed: var _$Client_4 = require('@bugsnag/core/client'); */;\n\n/* removed: var _$Event_6 = require('@bugsnag/core/event'); */;\n\n/* removed: var _$Session_35 = require('@bugsnag/core/session'); */;\n\n/* removed: var _$Breadcrumb_3 = require('@bugsnag/core/breadcrumb'); */;\n\n/* removed: var _$map_16 = require('@bugsnag/core/lib/es-utils/map'); */;\n\n/* removed: var _$keys_15 = require('@bugsnag/core/lib/es-utils/keys'); */;\n\n/* removed: var _$assign_11 = require('@bugsnag/core/lib/es-utils/assign'); */; // extend the base config schema with some browser-specific options\n\n\nvar __schema_2 = _$assign_11({}, _$config_5.schema, _$config_1);\n\n/* removed: var _$onerror_54 = require('@bugsnag/plugin-window-onerror'); */;\n\n/* removed: var _$unhandledRejection_55 = require('@bugsnag/plugin-window-unhandled-rejection'); */;\n\n/* removed: var _$app_38 = require('@bugsnag/plugin-app-duration'); */;\n\n/* removed: var _$device_40 = require('@bugsnag/plugin-browser-device'); */;\n\n/* removed: var _$context_39 = require('@bugsnag/plugin-browser-context'); */;\n\n/* removed: var _$request_44 = require('@bugsnag/plugin-browser-request'); */;\n\n/* removed: var _$throttle_52 = require('@bugsnag/plugin-simple-throttle'); */;\n\n/* removed: var _$consoleBreadcrumbs_47 = require('@bugsnag/plugin-console-breadcrumbs'); */;\n\n/* removed: var _$networkBreadcrumbs_51 = require('@bugsnag/plugin-network-breadcrumbs'); */;\n\n/* removed: var _$navigationBreadcrumbs_50 = require('@bugsnag/plugin-navigation-breadcrumbs'); */;\n\n/* removed: var _$interactionBreadcrumbs_49 = require('@bugsnag/plugin-interaction-breadcrumbs'); */;\n\n/* removed: var _$inlineScriptContent_48 = require('@bugsnag/plugin-inline-script-content'); */;\n\n/* removed: var _$session_45 = require('@bugsnag/plugin-browser-session'); */;\n\n/* removed: var _$clientIp_46 = require('@bugsnag/plugin-client-ip'); */;\n\n/* removed: var _$stripQueryString_53 = require('@bugsnag/plugin-strip-query-string'); */; // delivery mechanisms\n\n\n/* removed: var _$delivery_36 = require('@bugsnag/delivery-x-domain-request'); */;\n\n/* removed: var _$delivery_37 = require('@bugsnag/delivery-xml-http-request'); */;\n\nvar Bugsnag = {\n _client: null,\n createClient: function (opts) {\n // handle very simple use case where user supplies just the api key as a string\n if (typeof opts === 'string') opts = {\n apiKey: opts\n };\n if (!opts) opts = {};\n var internalPlugins = [// add browser-specific plugins\n _$app_38, _$device_40(), _$context_39(), _$request_44(), _$throttle_52, _$session_45, _$clientIp_46, _$stripQueryString_53, _$onerror_54(), _$unhandledRejection_55(), _$navigationBreadcrumbs_50(), _$interactionBreadcrumbs_49(), _$networkBreadcrumbs_51(), _$consoleBreadcrumbs_47, // this one added last to avoid wrapping functionality before bugsnag uses it\n _$inlineScriptContent_48()]; // configure a client with user supplied options\n\n var bugsnag = new _$Client_4(opts, __schema_2, internalPlugins, {\n name: name,\n version: version,\n url: url\n }); // set delivery based on browser capability (IE 8+9 have an XDomainRequest object)\n\n bugsnag._setDelivery(window.XDomainRequest ? _$delivery_36 : _$delivery_37);\n\n bugsnag._logger.debug('Loaded!');\n\n bugsnag.leaveBreadcrumb('Bugsnag loaded', {}, 'state');\n return bugsnag._config.autoTrackSessions ? bugsnag.startSession() : bugsnag;\n },\n start: function (opts) {\n if (Bugsnag._client) {\n Bugsnag._client._logger.warn('Bugsnag.start() was called more than once. Ignoring.');\n\n return Bugsnag._client;\n }\n\n Bugsnag._client = Bugsnag.createClient(opts);\n return Bugsnag._client;\n },\n isStarted: function () {\n return Bugsnag._client != null;\n }\n};\n_$map_16(['resetEventCount'].concat(_$keys_15(_$Client_4.prototype)), function (m) {\n if (/^_/.test(m)) return;\n\n Bugsnag[m] = function () {\n if (!Bugsnag._client) return console.log(\"Bugsnag.\" + m + \"() was called before Bugsnag.start()\");\n Bugsnag._client._depth += 1;\n\n var ret = Bugsnag._client[m].apply(Bugsnag._client, arguments);\n\n Bugsnag._client._depth -= 1;\n return ret;\n };\n});\n_$notifier_2 = Bugsnag;\n_$notifier_2.Client = _$Client_4;\n_$notifier_2.Event = _$Event_6;\n_$notifier_2.Session = _$Session_35;\n_$notifier_2.Breadcrumb = _$Breadcrumb_3; // Export a \"default\" property for compatibility with ESM imports\n\n_$notifier_2[\"default\"] = Bugsnag;\n\nreturn _$notifier_2;\n\n});\n//# sourceMappingURL=bugsnag.js.map\n","module.exports = require('@bugsnag/browser')\n","(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.BugsnagPluginReact = f()}})(function(){var define,module,exports;\nvar _$src_1 = {};\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n_$src_1 = /*#__PURE__*/function () {\n function BugsnagPluginReact() {\n // Fetch React from the window object, if it exists\n var globalReact = typeof window !== 'undefined' && window.React;\n this.name = 'react';\n this.lazy = arguments.length === 0 && !globalReact;\n\n if (!this.lazy) {\n this.React = (arguments.length <= 0 ? undefined : arguments[0]) || globalReact;\n if (!this.React) throw new Error('@bugsnag/plugin-react reference to `React` was undefined');\n }\n }\n\n var _proto = BugsnagPluginReact.prototype;\n\n _proto.load = function load(client) {\n if (!this.lazy) {\n var ErrorBoundary = createClass(this.React, client);\n\n ErrorBoundary.createErrorBoundary = function () {\n return ErrorBoundary;\n };\n\n return ErrorBoundary;\n }\n\n var BugsnagPluginReactLazyInitializer = function () {\n throw new Error(\"@bugsnag/plugin-react was used incorrectly. Valid usage is as follows:\\nPass React to the plugin constructor\\n\\n `Bugsnag.start({ plugins: [new BugsnagPluginReact(React)] })`\\nand then call `const ErrorBoundary = Bugsnag.getPlugin('react').createErrorBoundary()`\\n\\nOr if React is not available until after Bugsnag has started,\\nconstruct the plugin with no arguments\\n `Bugsnag.start({ plugins: [new BugsnagPluginReact()] })`,\\nthen pass in React when available to construct your error boundary\\n `const ErrorBoundary = Bugsnag.getPlugin('react').createErrorBoundary(React)`\");\n };\n\n BugsnagPluginReactLazyInitializer.createErrorBoundary = function (React) {\n if (!React) throw new Error('@bugsnag/plugin-react reference to `React` was undefined');\n return createClass(React, client);\n };\n\n return BugsnagPluginReactLazyInitializer;\n };\n\n return BugsnagPluginReact;\n}();\n\nvar formatComponentStack = function (str) {\n var lines = str.split(/\\s*\\n\\s*/g);\n var ret = '';\n\n for (var line = 0, len = lines.length; line < len; line++) {\n if (lines[line].length) ret += \"\" + (ret.length ? '\\n' : '') + lines[line];\n }\n\n return ret;\n};\n\nvar createClass = function (React, client) {\n return /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(ErrorBoundary, _React$Component);\n\n function ErrorBoundary(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.state = {\n error: null,\n info: null\n };\n _this.handleClearError = _this.handleClearError.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto2 = ErrorBoundary.prototype;\n\n _proto2.handleClearError = function handleClearError() {\n this.setState({\n error: null,\n info: null\n });\n };\n\n _proto2.componentDidCatch = function componentDidCatch(error, info) {\n var onError = this.props.onError;\n var handledState = {\n severity: 'error',\n unhandled: true,\n severityReason: {\n type: 'unhandledException'\n }\n };\n var event = client.Event.create(error, true, handledState, 1);\n if (info && info.componentStack) info.componentStack = formatComponentStack(info.componentStack);\n event.addMetadata('react', info);\n\n client._notify(event, onError);\n\n this.setState({\n error: error,\n info: info\n });\n };\n\n _proto2.render = function render() {\n var error = this.state.error;\n\n if (error) {\n var FallbackComponent = this.props.FallbackComponent;\n if (FallbackComponent) return React.createElement(FallbackComponent, _extends({}, this.state, {\n clearError: this.handleClearError\n }));\n return null;\n }\n\n return this.props.children;\n };\n\n return ErrorBoundary;\n }(React.Component);\n};\n\n_$src_1.formatComponentStack = formatComponentStack;\n_$src_1[\"default\"] = _$src_1;\n\nreturn _$src_1;\n\n});\n//# sourceMappingURL=bugsnag-react.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Firebase constants. Some of these (@defines) can be overridden at compile-time.\n */\nconst CONSTANTS = {\n /**\n * @define {boolean} Whether this is the client Node.js SDK.\n */\n NODE_CLIENT: false,\n /**\n * @define {boolean} Whether this is the Admin Node.js SDK.\n */\n NODE_ADMIN: false,\n /**\n * Firebase SDK Version\n */\n SDK_VERSION: '${JSCORE_VERSION}'\n};\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Throws an error if the provided assertion is falsy\n */\nconst assert = function (assertion, message) {\n if (!assertion) {\n throw assertionError(message);\n }\n};\n/**\n * Returns an Error object suitable for throwing.\n */\nconst assertionError = function (message) {\n return new Error('Firebase Database (' +\n CONSTANTS.SDK_VERSION +\n ') INTERNAL ASSERT FAILED: ' +\n message);\n};\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst stringToByteArray$1 = function (str) {\n // TODO(user): Use native implementations if/when available\n const out = [];\n let p = 0;\n for (let i = 0; i < str.length; i++) {\n let c = str.charCodeAt(i);\n if (c < 128) {\n out[p++] = c;\n }\n else if (c < 2048) {\n out[p++] = (c >> 6) | 192;\n out[p++] = (c & 63) | 128;\n }\n else if ((c & 0xfc00) === 0xd800 &&\n i + 1 < str.length &&\n (str.charCodeAt(i + 1) & 0xfc00) === 0xdc00) {\n // Surrogate Pair\n c = 0x10000 + ((c & 0x03ff) << 10) + (str.charCodeAt(++i) & 0x03ff);\n out[p++] = (c >> 18) | 240;\n out[p++] = ((c >> 12) & 63) | 128;\n out[p++] = ((c >> 6) & 63) | 128;\n out[p++] = (c & 63) | 128;\n }\n else {\n out[p++] = (c >> 12) | 224;\n out[p++] = ((c >> 6) & 63) | 128;\n out[p++] = (c & 63) | 128;\n }\n }\n return out;\n};\n/**\n * Turns an array of numbers into the string given by the concatenation of the\n * characters to which the numbers correspond.\n * @param bytes Array of numbers representing characters.\n * @return Stringification of the array.\n */\nconst byteArrayToString = function (bytes) {\n // TODO(user): Use native implementations if/when available\n const out = [];\n let pos = 0, c = 0;\n while (pos < bytes.length) {\n const c1 = bytes[pos++];\n if (c1 < 128) {\n out[c++] = String.fromCharCode(c1);\n }\n else if (c1 > 191 && c1 < 224) {\n const c2 = bytes[pos++];\n out[c++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));\n }\n else if (c1 > 239 && c1 < 365) {\n // Surrogate Pair\n const c2 = bytes[pos++];\n const c3 = bytes[pos++];\n const c4 = bytes[pos++];\n const u = (((c1 & 7) << 18) | ((c2 & 63) << 12) | ((c3 & 63) << 6) | (c4 & 63)) -\n 0x10000;\n out[c++] = String.fromCharCode(0xd800 + (u >> 10));\n out[c++] = String.fromCharCode(0xdc00 + (u & 1023));\n }\n else {\n const c2 = bytes[pos++];\n const c3 = bytes[pos++];\n out[c++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\n }\n }\n return out.join('');\n};\n// We define it as an object literal instead of a class because a class compiled down to es5 can't\n// be treeshaked. https://github.com/rollup/rollup/issues/1691\n// Static lookup maps, lazily populated by init_()\n// TODO(dlarocque): Define this as a class, since we no longer target ES5.\nconst base64 = {\n /**\n * Maps bytes to characters.\n */\n byteToCharMap_: null,\n /**\n * Maps characters to bytes.\n */\n charToByteMap_: null,\n /**\n * Maps bytes to websafe characters.\n * @private\n */\n byteToCharMapWebSafe_: null,\n /**\n * Maps websafe characters to bytes.\n * @private\n */\n charToByteMapWebSafe_: null,\n /**\n * Our default alphabet, shared between\n * ENCODED_VALS and ENCODED_VALS_WEBSAFE\n */\n ENCODED_VALS_BASE: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + 'abcdefghijklmnopqrstuvwxyz' + '0123456789',\n /**\n * Our default alphabet. Value 64 (=) is special; it means \"nothing.\"\n */\n get ENCODED_VALS() {\n return this.ENCODED_VALS_BASE + '+/=';\n },\n /**\n * Our websafe alphabet.\n */\n get ENCODED_VALS_WEBSAFE() {\n return this.ENCODED_VALS_BASE + '-_.';\n },\n /**\n * Whether this browser supports the atob and btoa functions. This extension\n * started at Mozilla but is now implemented by many browsers. We use the\n * ASSUME_* variables to avoid pulling in the full useragent detection library\n * but still allowing the standard per-browser compilations.\n *\n */\n HAS_NATIVE_SUPPORT: typeof atob === 'function',\n /**\n * Base64-encode an array of bytes.\n *\n * @param input An array of bytes (numbers with\n * value in [0, 255]) to encode.\n * @param webSafe Boolean indicating we should use the\n * alternative alphabet.\n * @return The base64 encoded string.\n */\n encodeByteArray(input, webSafe) {\n if (!Array.isArray(input)) {\n throw Error('encodeByteArray takes an array as a parameter');\n }\n this.init_();\n const byteToCharMap = webSafe\n ? this.byteToCharMapWebSafe_\n : this.byteToCharMap_;\n const output = [];\n for (let i = 0; i < input.length; i += 3) {\n const byte1 = input[i];\n const haveByte2 = i + 1 < input.length;\n const byte2 = haveByte2 ? input[i + 1] : 0;\n const haveByte3 = i + 2 < input.length;\n const byte3 = haveByte3 ? input[i + 2] : 0;\n const outByte1 = byte1 >> 2;\n const outByte2 = ((byte1 & 0x03) << 4) | (byte2 >> 4);\n let outByte3 = ((byte2 & 0x0f) << 2) | (byte3 >> 6);\n let outByte4 = byte3 & 0x3f;\n if (!haveByte3) {\n outByte4 = 64;\n if (!haveByte2) {\n outByte3 = 64;\n }\n }\n output.push(byteToCharMap[outByte1], byteToCharMap[outByte2], byteToCharMap[outByte3], byteToCharMap[outByte4]);\n }\n return output.join('');\n },\n /**\n * Base64-encode a string.\n *\n * @param input A string to encode.\n * @param webSafe If true, we should use the\n * alternative alphabet.\n * @return The base64 encoded string.\n */\n encodeString(input, webSafe) {\n // Shortcut for Mozilla browsers that implement\n // a native base64 encoder in the form of \"btoa/atob\"\n if (this.HAS_NATIVE_SUPPORT && !webSafe) {\n return btoa(input);\n }\n return this.encodeByteArray(stringToByteArray$1(input), webSafe);\n },\n /**\n * Base64-decode a string.\n *\n * @param input to decode.\n * @param webSafe True if we should use the\n * alternative alphabet.\n * @return string representing the decoded value.\n */\n decodeString(input, webSafe) {\n // Shortcut for Mozilla browsers that implement\n // a native base64 encoder in the form of \"btoa/atob\"\n if (this.HAS_NATIVE_SUPPORT && !webSafe) {\n return atob(input);\n }\n return byteArrayToString(this.decodeStringToByteArray(input, webSafe));\n },\n /**\n * Base64-decode a string.\n *\n * In base-64 decoding, groups of four characters are converted into three\n * bytes. If the encoder did not apply padding, the input length may not\n * be a multiple of 4.\n *\n * In this case, the last group will have fewer than 4 characters, and\n * padding will be inferred. If the group has one or two characters, it decodes\n * to one byte. If the group has three characters, it decodes to two bytes.\n *\n * @param input Input to decode.\n * @param webSafe True if we should use the web-safe alphabet.\n * @return bytes representing the decoded value.\n */\n decodeStringToByteArray(input, webSafe) {\n this.init_();\n const charToByteMap = webSafe\n ? this.charToByteMapWebSafe_\n : this.charToByteMap_;\n const output = [];\n for (let i = 0; i < input.length;) {\n const byte1 = charToByteMap[input.charAt(i++)];\n const haveByte2 = i < input.length;\n const byte2 = haveByte2 ? charToByteMap[input.charAt(i)] : 0;\n ++i;\n const haveByte3 = i < input.length;\n const byte3 = haveByte3 ? charToByteMap[input.charAt(i)] : 64;\n ++i;\n const haveByte4 = i < input.length;\n const byte4 = haveByte4 ? charToByteMap[input.charAt(i)] : 64;\n ++i;\n if (byte1 == null || byte2 == null || byte3 == null || byte4 == null) {\n throw new DecodeBase64StringError();\n }\n const outByte1 = (byte1 << 2) | (byte2 >> 4);\n output.push(outByte1);\n if (byte3 !== 64) {\n const outByte2 = ((byte2 << 4) & 0xf0) | (byte3 >> 2);\n output.push(outByte2);\n if (byte4 !== 64) {\n const outByte3 = ((byte3 << 6) & 0xc0) | byte4;\n output.push(outByte3);\n }\n }\n }\n return output;\n },\n /**\n * Lazy static initialization function. Called before\n * accessing any of the static map variables.\n * @private\n */\n init_() {\n if (!this.byteToCharMap_) {\n this.byteToCharMap_ = {};\n this.charToByteMap_ = {};\n this.byteToCharMapWebSafe_ = {};\n this.charToByteMapWebSafe_ = {};\n // We want quick mappings back and forth, so we precompute two maps.\n for (let i = 0; i < this.ENCODED_VALS.length; i++) {\n this.byteToCharMap_[i] = this.ENCODED_VALS.charAt(i);\n this.charToByteMap_[this.byteToCharMap_[i]] = i;\n this.byteToCharMapWebSafe_[i] = this.ENCODED_VALS_WEBSAFE.charAt(i);\n this.charToByteMapWebSafe_[this.byteToCharMapWebSafe_[i]] = i;\n // Be forgiving when decoding and correctly decode both encodings.\n if (i >= this.ENCODED_VALS_BASE.length) {\n this.charToByteMap_[this.ENCODED_VALS_WEBSAFE.charAt(i)] = i;\n this.charToByteMapWebSafe_[this.ENCODED_VALS.charAt(i)] = i;\n }\n }\n }\n }\n};\n/**\n * An error encountered while decoding base64 string.\n */\nclass DecodeBase64StringError extends Error {\n constructor() {\n super(...arguments);\n this.name = 'DecodeBase64StringError';\n }\n}\n/**\n * URL-safe base64 encoding\n */\nconst base64Encode = function (str) {\n const utf8Bytes = stringToByteArray$1(str);\n return base64.encodeByteArray(utf8Bytes, true);\n};\n/**\n * URL-safe base64 encoding (without \".\" padding in the end).\n * e.g. Used in JSON Web Token (JWT) parts.\n */\nconst base64urlEncodeWithoutPadding = function (str) {\n // Use base64url encoding and remove padding in the end (dot characters).\n return base64Encode(str).replace(/\\./g, '');\n};\n/**\n * URL-safe base64 decoding\n *\n * NOTE: DO NOT use the global atob() function - it does NOT support the\n * base64Url variant encoding.\n *\n * @param str To be decoded\n * @return Decoded result, if possible\n */\nconst base64Decode = function (str) {\n try {\n return base64.decodeString(str, true);\n }\n catch (e) {\n console.error('base64Decode failed: ', e);\n }\n return null;\n};\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Do a deep-copy of basic JavaScript Objects or Arrays.\n */\nfunction deepCopy(value) {\n return deepExtend(undefined, value);\n}\n/**\n * Copy properties from source to target (recursively allows extension\n * of Objects and Arrays). Scalar values in the target are over-written.\n * If target is undefined, an object of the appropriate type will be created\n * (and returned).\n *\n * We recursively copy all child properties of plain Objects in the source- so\n * that namespace- like dictionaries are merged.\n *\n * Note that the target can be a function, in which case the properties in\n * the source Object are copied onto it as static properties of the Function.\n *\n * Note: we don't merge __proto__ to prevent prototype pollution\n */\nfunction deepExtend(target, source) {\n if (!(source instanceof Object)) {\n return source;\n }\n switch (source.constructor) {\n case Date:\n // Treat Dates like scalars; if the target date object had any child\n // properties - they will be lost!\n const dateValue = source;\n return new Date(dateValue.getTime());\n case Object:\n if (target === undefined) {\n target = {};\n }\n break;\n case Array:\n // Always copy the array source and overwrite the target.\n target = [];\n break;\n default:\n // Not a plain Object - treat it as a scalar.\n return source;\n }\n for (const prop in source) {\n // use isValidKey to guard against prototype pollution. See https://snyk.io/vuln/SNYK-JS-LODASH-450202\n if (!source.hasOwnProperty(prop) || !isValidKey(prop)) {\n continue;\n }\n target[prop] = deepExtend(target[prop], source[prop]);\n }\n return target;\n}\nfunction isValidKey(key) {\n return key !== '__proto__';\n}\n\n/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Polyfill for `globalThis` object.\n * @returns the `globalThis` object for the given environment.\n * @public\n */\nfunction getGlobal() {\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n throw new Error('Unable to locate global object.');\n}\n\n/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst getDefaultsFromGlobal = () => getGlobal().__FIREBASE_DEFAULTS__;\n/**\n * Attempt to read defaults from a JSON string provided to\n * process(.)env(.)__FIREBASE_DEFAULTS__ or a JSON file whose path is in\n * process(.)env(.)__FIREBASE_DEFAULTS_PATH__\n * The dots are in parens because certain compilers (Vite?) cannot\n * handle seeing that variable in comments.\n * See https://github.com/firebase/firebase-js-sdk/issues/6838\n */\nconst getDefaultsFromEnvVariable = () => {\n if (typeof process === 'undefined' || typeof process.env === 'undefined') {\n return;\n }\n const defaultsJsonString = process.env.__FIREBASE_DEFAULTS__;\n if (defaultsJsonString) {\n return JSON.parse(defaultsJsonString);\n }\n};\nconst getDefaultsFromCookie = () => {\n if (typeof document === 'undefined') {\n return;\n }\n let match;\n try {\n match = document.cookie.match(/__FIREBASE_DEFAULTS__=([^;]+)/);\n }\n catch (e) {\n // Some environments such as Angular Universal SSR have a\n // `document` object but error on accessing `document.cookie`.\n return;\n }\n const decoded = match && base64Decode(match[1]);\n return decoded && JSON.parse(decoded);\n};\n/**\n * Get the __FIREBASE_DEFAULTS__ object. It checks in order:\n * (1) if such an object exists as a property of `globalThis`\n * (2) if such an object was provided on a shell environment variable\n * (3) if such an object exists in a cookie\n * @public\n */\nconst getDefaults = () => {\n try {\n return (getDefaultsFromGlobal() ||\n getDefaultsFromEnvVariable() ||\n getDefaultsFromCookie());\n }\n catch (e) {\n /**\n * Catch-all for being unable to get __FIREBASE_DEFAULTS__ due\n * to any environment case we have not accounted for. Log to\n * info instead of swallowing so we can find these unknown cases\n * and add paths for them if needed.\n */\n console.info(`Unable to get __FIREBASE_DEFAULTS__ due to: ${e}`);\n return;\n }\n};\n/**\n * Returns emulator host stored in the __FIREBASE_DEFAULTS__ object\n * for the given product.\n * @returns a URL host formatted like `127.0.0.1:9999` or `[::1]:4000` if available\n * @public\n */\nconst getDefaultEmulatorHost = (productName) => { var _a, _b; return (_b = (_a = getDefaults()) === null || _a === void 0 ? void 0 : _a.emulatorHosts) === null || _b === void 0 ? void 0 : _b[productName]; };\n/**\n * Returns emulator hostname and port stored in the __FIREBASE_DEFAULTS__ object\n * for the given product.\n * @returns a pair of hostname and port like `[\"::1\", 4000]` if available\n * @public\n */\nconst getDefaultEmulatorHostnameAndPort = (productName) => {\n const host = getDefaultEmulatorHost(productName);\n if (!host) {\n return undefined;\n }\n const separatorIndex = host.lastIndexOf(':'); // Finding the last since IPv6 addr also has colons.\n if (separatorIndex <= 0 || separatorIndex + 1 === host.length) {\n throw new Error(`Invalid host ${host} with no separate hostname and port!`);\n }\n // eslint-disable-next-line no-restricted-globals\n const port = parseInt(host.substring(separatorIndex + 1), 10);\n if (host[0] === '[') {\n // Bracket-quoted `[ipv6addr]:port` => return \"ipv6addr\" (without brackets).\n return [host.substring(1, separatorIndex - 1), port];\n }\n else {\n return [host.substring(0, separatorIndex), port];\n }\n};\n/**\n * Returns Firebase app config stored in the __FIREBASE_DEFAULTS__ object.\n * @public\n */\nconst getDefaultAppConfig = () => { var _a; return (_a = getDefaults()) === null || _a === void 0 ? void 0 : _a.config; };\n/**\n * Returns an experimental setting on the __FIREBASE_DEFAULTS__ object (properties\n * prefixed by \"_\")\n * @public\n */\nconst getExperimentalSetting = (name) => { var _a; return (_a = getDefaults()) === null || _a === void 0 ? void 0 : _a[`_${name}`]; };\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nclass Deferred {\n constructor() {\n this.reject = () => { };\n this.resolve = () => { };\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n /**\n * Our API internals are not promisified and cannot because our callback APIs have subtle expectations around\n * invoking promises inline, which Promises are forbidden to do. This method accepts an optional node-style callback\n * and returns a node-style callback which will resolve or reject the Deferred's promise.\n */\n wrapCallback(callback) {\n return (error, value) => {\n if (error) {\n this.reject(error);\n }\n else {\n this.resolve(value);\n }\n if (typeof callback === 'function') {\n // Attaching noop handler just in case developer wasn't expecting\n // promises\n this.promise.catch(() => { });\n // Some of our callbacks don't expect a value and our own tests\n // assert that the parameter length is 1\n if (callback.length === 1) {\n callback(error);\n }\n else {\n callback(error, value);\n }\n }\n };\n }\n}\n\n/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction createMockUserToken(token, projectId) {\n if (token.uid) {\n throw new Error('The \"uid\" field is no longer supported by mockUserToken. Please use \"sub\" instead for Firebase Auth User ID.');\n }\n // Unsecured JWTs use \"none\" as the algorithm.\n const header = {\n alg: 'none',\n type: 'JWT'\n };\n const project = projectId || 'demo-project';\n const iat = token.iat || 0;\n const sub = token.sub || token.user_id;\n if (!sub) {\n throw new Error(\"mockUserToken must contain 'sub' or 'user_id' field!\");\n }\n const payload = Object.assign({ \n // Set all required fields to decent defaults\n iss: `https://securetoken.google.com/${project}`, aud: project, iat, exp: iat + 3600, auth_time: iat, sub, user_id: sub, firebase: {\n sign_in_provider: 'custom',\n identities: {}\n } }, token);\n // Unsecured JWTs use the empty string as a signature.\n const signature = '';\n return [\n base64urlEncodeWithoutPadding(JSON.stringify(header)),\n base64urlEncodeWithoutPadding(JSON.stringify(payload)),\n signature\n ].join('.');\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Returns navigator.userAgent string or '' if it's not defined.\n * @return user agent string\n */\nfunction getUA() {\n if (typeof navigator !== 'undefined' &&\n typeof navigator['userAgent'] === 'string') {\n return navigator['userAgent'];\n }\n else {\n return '';\n }\n}\n/**\n * Detect Cordova / PhoneGap / Ionic frameworks on a mobile device.\n *\n * Deliberately does not rely on checking `file://` URLs (as this fails PhoneGap\n * in the Ripple emulator) nor Cordova `onDeviceReady`, which would normally\n * wait for a callback.\n */\nfunction isMobileCordova() {\n return (typeof window !== 'undefined' &&\n // @ts-ignore Setting up an broadly applicable index signature for Window\n // just to deal with this case would probably be a bad idea.\n !!(window['cordova'] || window['phonegap'] || window['PhoneGap']) &&\n /ios|iphone|ipod|ipad|android|blackberry|iemobile/i.test(getUA()));\n}\n/**\n * Detect Node.js.\n *\n * @return true if Node.js environment is detected or specified.\n */\n// Node detection logic from: https://github.com/iliakan/detect-node/\nfunction isNode() {\n var _a;\n const forceEnvironment = (_a = getDefaults()) === null || _a === void 0 ? void 0 : _a.forceEnvironment;\n if (forceEnvironment === 'node') {\n return true;\n }\n else if (forceEnvironment === 'browser') {\n return false;\n }\n try {\n return (Object.prototype.toString.call(global.process) === '[object process]');\n }\n catch (e) {\n return false;\n }\n}\n/**\n * Detect Browser Environment.\n * Note: This will return true for certain test frameworks that are incompletely\n * mimicking a browser, and should not lead to assuming all browser APIs are\n * available.\n */\nfunction isBrowser() {\n return typeof window !== 'undefined' || isWebWorker();\n}\n/**\n * Detect Web Worker context.\n */\nfunction isWebWorker() {\n return (typeof WorkerGlobalScope !== 'undefined' &&\n typeof self !== 'undefined' &&\n self instanceof WorkerGlobalScope);\n}\n/**\n * Detect Cloudflare Worker context.\n */\nfunction isCloudflareWorker() {\n return (typeof navigator !== 'undefined' &&\n navigator.userAgent === 'Cloudflare-Workers');\n}\nfunction isBrowserExtension() {\n const runtime = typeof chrome === 'object'\n ? chrome.runtime\n : typeof browser === 'object'\n ? browser.runtime\n : undefined;\n return typeof runtime === 'object' && runtime.id !== undefined;\n}\n/**\n * Detect React Native.\n *\n * @return true if ReactNative environment is detected.\n */\nfunction isReactNative() {\n return (typeof navigator === 'object' && navigator['product'] === 'ReactNative');\n}\n/** Detects Electron apps. */\nfunction isElectron() {\n return getUA().indexOf('Electron/') >= 0;\n}\n/** Detects Internet Explorer. */\nfunction isIE() {\n const ua = getUA();\n return ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\n}\n/** Detects Universal Windows Platform apps. */\nfunction isUWP() {\n return getUA().indexOf('MSAppHost/') >= 0;\n}\n/**\n * Detect whether the current SDK build is the Node version.\n *\n * @return true if it's the Node SDK build.\n */\nfunction isNodeSdk() {\n return CONSTANTS.NODE_CLIENT === true || CONSTANTS.NODE_ADMIN === true;\n}\n/** Returns true if we are running in Safari. */\nfunction isSafari() {\n return (!isNode() &&\n !!navigator.userAgent &&\n navigator.userAgent.includes('Safari') &&\n !navigator.userAgent.includes('Chrome'));\n}\n/**\n * This method checks if indexedDB is supported by current browser/service worker context\n * @return true if indexedDB is supported by current browser/service worker context\n */\nfunction isIndexedDBAvailable() {\n try {\n return typeof indexedDB === 'object';\n }\n catch (e) {\n return false;\n }\n}\n/**\n * This method validates browser/sw context for indexedDB by opening a dummy indexedDB database and reject\n * if errors occur during the database open operation.\n *\n * @throws exception if current browser/sw context can't run idb.open (ex: Safari iframe, Firefox\n * private browsing)\n */\nfunction validateIndexedDBOpenable() {\n return new Promise((resolve, reject) => {\n try {\n let preExist = true;\n const DB_CHECK_NAME = 'validate-browser-context-for-indexeddb-analytics-module';\n const request = self.indexedDB.open(DB_CHECK_NAME);\n request.onsuccess = () => {\n request.result.close();\n // delete database only when it doesn't pre-exist\n if (!preExist) {\n self.indexedDB.deleteDatabase(DB_CHECK_NAME);\n }\n resolve(true);\n };\n request.onupgradeneeded = () => {\n preExist = false;\n };\n request.onerror = () => {\n var _a;\n reject(((_a = request.error) === null || _a === void 0 ? void 0 : _a.message) || '');\n };\n }\n catch (error) {\n reject(error);\n }\n });\n}\n/**\n *\n * This method checks whether cookie is enabled within current browser\n * @return true if cookie is enabled within current browser\n */\nfunction areCookiesEnabled() {\n if (typeof navigator === 'undefined' || !navigator.cookieEnabled) {\n return false;\n }\n return true;\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Standardized Firebase Error.\n *\n * Usage:\n *\n * // TypeScript string literals for type-safe codes\n * type Err =\n * 'unknown' |\n * 'object-not-found'\n * ;\n *\n * // Closure enum for type-safe error codes\n * // at-enum {string}\n * var Err = {\n * UNKNOWN: 'unknown',\n * OBJECT_NOT_FOUND: 'object-not-found',\n * }\n *\n * let errors: Map = {\n * 'generic-error': \"Unknown error\",\n * 'file-not-found': \"Could not find file: {$file}\",\n * };\n *\n * // Type-safe function - must pass a valid error code as param.\n * let error = new ErrorFactory('service', 'Service', errors);\n *\n * ...\n * throw error.create(Err.GENERIC);\n * ...\n * throw error.create(Err.FILE_NOT_FOUND, {'file': fileName});\n * ...\n * // Service: Could not file file: foo.txt (service/file-not-found).\n *\n * catch (e) {\n * assert(e.message === \"Could not find file: foo.txt.\");\n * if ((e as FirebaseError)?.code === 'service/file-not-found') {\n * console.log(\"Could not read file: \" + e['file']);\n * }\n * }\n */\nconst ERROR_NAME = 'FirebaseError';\n// Based on code from:\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Custom_Error_Types\nclass FirebaseError extends Error {\n constructor(\n /** The error code for this error. */\n code, message, \n /** Custom data for this error. */\n customData) {\n super(message);\n this.code = code;\n this.customData = customData;\n /** The custom name for all FirebaseErrors. */\n this.name = ERROR_NAME;\n // Fix For ES5\n // https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\n // TODO(dlarocque): Replace this with `new.target`: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-2.html#support-for-newtarget\n // which we can now use since we no longer target ES5.\n Object.setPrototypeOf(this, FirebaseError.prototype);\n // Maintains proper stack trace for where our error was thrown.\n // Only available on V8.\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, ErrorFactory.prototype.create);\n }\n }\n}\nclass ErrorFactory {\n constructor(service, serviceName, errors) {\n this.service = service;\n this.serviceName = serviceName;\n this.errors = errors;\n }\n create(code, ...data) {\n const customData = data[0] || {};\n const fullCode = `${this.service}/${code}`;\n const template = this.errors[code];\n const message = template ? replaceTemplate(template, customData) : 'Error';\n // Service Name: Error message (service/code).\n const fullMessage = `${this.serviceName}: ${message} (${fullCode}).`;\n const error = new FirebaseError(fullCode, fullMessage, customData);\n return error;\n }\n}\nfunction replaceTemplate(template, data) {\n return template.replace(PATTERN, (_, key) => {\n const value = data[key];\n return value != null ? String(value) : `<${key}?>`;\n });\n}\nconst PATTERN = /\\{\\$([^}]+)}/g;\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Evaluates a JSON string into a javascript object.\n *\n * @param {string} str A string containing JSON.\n * @return {*} The javascript object representing the specified JSON.\n */\nfunction jsonEval(str) {\n return JSON.parse(str);\n}\n/**\n * Returns JSON representing a javascript object.\n * @param {*} data JavaScript object to be stringified.\n * @return {string} The JSON contents of the object.\n */\nfunction stringify(data) {\n return JSON.stringify(data);\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Decodes a Firebase auth. token into constituent parts.\n *\n * Notes:\n * - May return with invalid / incomplete claims if there's no native base64 decoding support.\n * - Doesn't check if the token is actually valid.\n */\nconst decode = function (token) {\n let header = {}, claims = {}, data = {}, signature = '';\n try {\n const parts = token.split('.');\n header = jsonEval(base64Decode(parts[0]) || '');\n claims = jsonEval(base64Decode(parts[1]) || '');\n signature = parts[2];\n data = claims['d'] || {};\n delete claims['d'];\n }\n catch (e) { }\n return {\n header,\n claims,\n data,\n signature\n };\n};\n/**\n * Decodes a Firebase auth. token and checks the validity of its time-based claims. Will return true if the\n * token is within the time window authorized by the 'nbf' (not-before) and 'iat' (issued-at) claims.\n *\n * Notes:\n * - May return a false negative if there's no native base64 decoding support.\n * - Doesn't check if the token is actually valid.\n */\nconst isValidTimestamp = function (token) {\n const claims = decode(token).claims;\n const now = Math.floor(new Date().getTime() / 1000);\n let validSince = 0, validUntil = 0;\n if (typeof claims === 'object') {\n if (claims.hasOwnProperty('nbf')) {\n validSince = claims['nbf'];\n }\n else if (claims.hasOwnProperty('iat')) {\n validSince = claims['iat'];\n }\n if (claims.hasOwnProperty('exp')) {\n validUntil = claims['exp'];\n }\n else {\n // token will expire after 24h by default\n validUntil = validSince + 86400;\n }\n }\n return (!!now &&\n !!validSince &&\n !!validUntil &&\n now >= validSince &&\n now <= validUntil);\n};\n/**\n * Decodes a Firebase auth. token and returns its issued at time if valid, null otherwise.\n *\n * Notes:\n * - May return null if there's no native base64 decoding support.\n * - Doesn't check if the token is actually valid.\n */\nconst issuedAtTime = function (token) {\n const claims = decode(token).claims;\n if (typeof claims === 'object' && claims.hasOwnProperty('iat')) {\n return claims['iat'];\n }\n return null;\n};\n/**\n * Decodes a Firebase auth. token and checks the validity of its format. Expects a valid issued-at time.\n *\n * Notes:\n * - May return a false negative if there's no native base64 decoding support.\n * - Doesn't check if the token is actually valid.\n */\nconst isValidFormat = function (token) {\n const decoded = decode(token), claims = decoded.claims;\n return !!claims && typeof claims === 'object' && claims.hasOwnProperty('iat');\n};\n/**\n * Attempts to peer into an auth token and determine if it's an admin auth token by looking at the claims portion.\n *\n * Notes:\n * - May return a false negative if there's no native base64 decoding support.\n * - Doesn't check if the token is actually valid.\n */\nconst isAdmin = function (token) {\n const claims = decode(token).claims;\n return typeof claims === 'object' && claims['admin'] === true;\n};\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction contains(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\nfunction safeGet(obj, key) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n return obj[key];\n }\n else {\n return undefined;\n }\n}\nfunction isEmpty(obj) {\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n return false;\n }\n }\n return true;\n}\nfunction map(obj, fn, contextObj) {\n const res = {};\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n res[key] = fn.call(contextObj, obj[key], key, obj);\n }\n }\n return res;\n}\n/**\n * Deep equal two objects. Support Arrays and Objects.\n */\nfunction deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n for (const k of aKeys) {\n if (!bKeys.includes(k)) {\n return false;\n }\n const aProp = a[k];\n const bProp = b[k];\n if (isObject(aProp) && isObject(bProp)) {\n if (!deepEqual(aProp, bProp)) {\n return false;\n }\n }\n else if (aProp !== bProp) {\n return false;\n }\n }\n for (const k of bKeys) {\n if (!aKeys.includes(k)) {\n return false;\n }\n }\n return true;\n}\nfunction isObject(thing) {\n return thing !== null && typeof thing === 'object';\n}\n\n/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Rejects if the given promise doesn't resolve in timeInMS milliseconds.\n * @internal\n */\nfunction promiseWithTimeout(promise, timeInMS = 2000) {\n const deferredPromise = new Deferred();\n setTimeout(() => deferredPromise.reject('timeout!'), timeInMS);\n promise.then(deferredPromise.resolve, deferredPromise.reject);\n return deferredPromise.promise;\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Returns a querystring-formatted string (e.g. &arg=val&arg2=val2) from a\n * params object (e.g. {arg: 'val', arg2: 'val2'})\n * Note: You must prepend it with ? when adding it to a URL.\n */\nfunction querystring(querystringParams) {\n const params = [];\n for (const [key, value] of Object.entries(querystringParams)) {\n if (Array.isArray(value)) {\n value.forEach(arrayVal => {\n params.push(encodeURIComponent(key) + '=' + encodeURIComponent(arrayVal));\n });\n }\n else {\n params.push(encodeURIComponent(key) + '=' + encodeURIComponent(value));\n }\n }\n return params.length ? '&' + params.join('&') : '';\n}\n/**\n * Decodes a querystring (e.g. ?arg=val&arg2=val2) into a params object\n * (e.g. {arg: 'val', arg2: 'val2'})\n */\nfunction querystringDecode(querystring) {\n const obj = {};\n const tokens = querystring.replace(/^\\?/, '').split('&');\n tokens.forEach(token => {\n if (token) {\n const [key, value] = token.split('=');\n obj[decodeURIComponent(key)] = decodeURIComponent(value);\n }\n });\n return obj;\n}\n/**\n * Extract the query string part of a URL, including the leading question mark (if present).\n */\nfunction extractQuerystring(url) {\n const queryStart = url.indexOf('?');\n if (!queryStart) {\n return '';\n }\n const fragmentStart = url.indexOf('#', queryStart);\n return url.substring(queryStart, fragmentStart > 0 ? fragmentStart : undefined);\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview SHA-1 cryptographic hash.\n * Variable names follow the notation in FIPS PUB 180-3:\n * http://csrc.nist.gov/publications/fips/fips180-3/fips180-3_final.pdf.\n *\n * Usage:\n * var sha1 = new sha1();\n * sha1.update(bytes);\n * var hash = sha1.digest();\n *\n * Performance:\n * Chrome 23: ~400 Mbit/s\n * Firefox 16: ~250 Mbit/s\n *\n */\n/**\n * SHA-1 cryptographic hash constructor.\n *\n * The properties declared here are discussed in the above algorithm document.\n * @constructor\n * @final\n * @struct\n */\nclass Sha1 {\n constructor() {\n /**\n * Holds the previous values of accumulated variables a-e in the compress_\n * function.\n * @private\n */\n this.chain_ = [];\n /**\n * A buffer holding the partially computed hash result.\n * @private\n */\n this.buf_ = [];\n /**\n * An array of 80 bytes, each a part of the message to be hashed. Referred to\n * as the message schedule in the docs.\n * @private\n */\n this.W_ = [];\n /**\n * Contains data needed to pad messages less than 64 bytes.\n * @private\n */\n this.pad_ = [];\n /**\n * @private {number}\n */\n this.inbuf_ = 0;\n /**\n * @private {number}\n */\n this.total_ = 0;\n this.blockSize = 512 / 8;\n this.pad_[0] = 128;\n for (let i = 1; i < this.blockSize; ++i) {\n this.pad_[i] = 0;\n }\n this.reset();\n }\n reset() {\n this.chain_[0] = 0x67452301;\n this.chain_[1] = 0xefcdab89;\n this.chain_[2] = 0x98badcfe;\n this.chain_[3] = 0x10325476;\n this.chain_[4] = 0xc3d2e1f0;\n this.inbuf_ = 0;\n this.total_ = 0;\n }\n /**\n * Internal compress helper function.\n * @param buf Block to compress.\n * @param offset Offset of the block in the buffer.\n * @private\n */\n compress_(buf, offset) {\n if (!offset) {\n offset = 0;\n }\n const W = this.W_;\n // get 16 big endian words\n if (typeof buf === 'string') {\n for (let i = 0; i < 16; i++) {\n // TODO(user): [bug 8140122] Recent versions of Safari for Mac OS and iOS\n // have a bug that turns the post-increment ++ operator into pre-increment\n // during JIT compilation. We have code that depends heavily on SHA-1 for\n // correctness and which is affected by this bug, so I've removed all uses\n // of post-increment ++ in which the result value is used. We can revert\n // this change once the Safari bug\n // (https://bugs.webkit.org/show_bug.cgi?id=109036) has been fixed and\n // most clients have been updated.\n W[i] =\n (buf.charCodeAt(offset) << 24) |\n (buf.charCodeAt(offset + 1) << 16) |\n (buf.charCodeAt(offset + 2) << 8) |\n buf.charCodeAt(offset + 3);\n offset += 4;\n }\n }\n else {\n for (let i = 0; i < 16; i++) {\n W[i] =\n (buf[offset] << 24) |\n (buf[offset + 1] << 16) |\n (buf[offset + 2] << 8) |\n buf[offset + 3];\n offset += 4;\n }\n }\n // expand to 80 words\n for (let i = 16; i < 80; i++) {\n const t = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n W[i] = ((t << 1) | (t >>> 31)) & 0xffffffff;\n }\n let a = this.chain_[0];\n let b = this.chain_[1];\n let c = this.chain_[2];\n let d = this.chain_[3];\n let e = this.chain_[4];\n let f, k;\n // TODO(user): Try to unroll this loop to speed up the computation.\n for (let i = 0; i < 80; i++) {\n if (i < 40) {\n if (i < 20) {\n f = d ^ (b & (c ^ d));\n k = 0x5a827999;\n }\n else {\n f = b ^ c ^ d;\n k = 0x6ed9eba1;\n }\n }\n else {\n if (i < 60) {\n f = (b & c) | (d & (b | c));\n k = 0x8f1bbcdc;\n }\n else {\n f = b ^ c ^ d;\n k = 0xca62c1d6;\n }\n }\n const t = (((a << 5) | (a >>> 27)) + f + e + k + W[i]) & 0xffffffff;\n e = d;\n d = c;\n c = ((b << 30) | (b >>> 2)) & 0xffffffff;\n b = a;\n a = t;\n }\n this.chain_[0] = (this.chain_[0] + a) & 0xffffffff;\n this.chain_[1] = (this.chain_[1] + b) & 0xffffffff;\n this.chain_[2] = (this.chain_[2] + c) & 0xffffffff;\n this.chain_[3] = (this.chain_[3] + d) & 0xffffffff;\n this.chain_[4] = (this.chain_[4] + e) & 0xffffffff;\n }\n update(bytes, length) {\n // TODO(johnlenz): tighten the function signature and remove this check\n if (bytes == null) {\n return;\n }\n if (length === undefined) {\n length = bytes.length;\n }\n const lengthMinusBlock = length - this.blockSize;\n let n = 0;\n // Using local instead of member variables gives ~5% speedup on Firefox 16.\n const buf = this.buf_;\n let inbuf = this.inbuf_;\n // The outer while loop should execute at most twice.\n while (n < length) {\n // When we have no data in the block to top up, we can directly process the\n // input buffer (assuming it contains sufficient data). This gives ~25%\n // speedup on Chrome 23 and ~15% speedup on Firefox 16, but requires that\n // the data is provided in large chunks (or in multiples of 64 bytes).\n if (inbuf === 0) {\n while (n <= lengthMinusBlock) {\n this.compress_(bytes, n);\n n += this.blockSize;\n }\n }\n if (typeof bytes === 'string') {\n while (n < length) {\n buf[inbuf] = bytes.charCodeAt(n);\n ++inbuf;\n ++n;\n if (inbuf === this.blockSize) {\n this.compress_(buf);\n inbuf = 0;\n // Jump to the outer loop so we use the full-block optimization.\n break;\n }\n }\n }\n else {\n while (n < length) {\n buf[inbuf] = bytes[n];\n ++inbuf;\n ++n;\n if (inbuf === this.blockSize) {\n this.compress_(buf);\n inbuf = 0;\n // Jump to the outer loop so we use the full-block optimization.\n break;\n }\n }\n }\n }\n this.inbuf_ = inbuf;\n this.total_ += length;\n }\n /** @override */\n digest() {\n const digest = [];\n let totalBits = this.total_ * 8;\n // Add pad 0x80 0x00*.\n if (this.inbuf_ < 56) {\n this.update(this.pad_, 56 - this.inbuf_);\n }\n else {\n this.update(this.pad_, this.blockSize - (this.inbuf_ - 56));\n }\n // Add # bits.\n for (let i = this.blockSize - 1; i >= 56; i--) {\n this.buf_[i] = totalBits & 255;\n totalBits /= 256; // Don't use bit-shifting here!\n }\n this.compress_(this.buf_);\n let n = 0;\n for (let i = 0; i < 5; i++) {\n for (let j = 24; j >= 0; j -= 8) {\n digest[n] = (this.chain_[i] >> j) & 255;\n ++n;\n }\n }\n return digest;\n }\n}\n\n/**\n * Helper to make a Subscribe function (just like Promise helps make a\n * Thenable).\n *\n * @param executor Function which can make calls to a single Observer\n * as a proxy.\n * @param onNoObservers Callback when count of Observers goes to zero.\n */\nfunction createSubscribe(executor, onNoObservers) {\n const proxy = new ObserverProxy(executor, onNoObservers);\n return proxy.subscribe.bind(proxy);\n}\n/**\n * Implement fan-out for any number of Observers attached via a subscribe\n * function.\n */\nclass ObserverProxy {\n /**\n * @param executor Function which can make calls to a single Observer\n * as a proxy.\n * @param onNoObservers Callback when count of Observers goes to zero.\n */\n constructor(executor, onNoObservers) {\n this.observers = [];\n this.unsubscribes = [];\n this.observerCount = 0;\n // Micro-task scheduling by calling task.then().\n this.task = Promise.resolve();\n this.finalized = false;\n this.onNoObservers = onNoObservers;\n // Call the executor asynchronously so subscribers that are called\n // synchronously after the creation of the subscribe function\n // can still receive the very first value generated in the executor.\n this.task\n .then(() => {\n executor(this);\n })\n .catch(e => {\n this.error(e);\n });\n }\n next(value) {\n this.forEachObserver((observer) => {\n observer.next(value);\n });\n }\n error(error) {\n this.forEachObserver((observer) => {\n observer.error(error);\n });\n this.close(error);\n }\n complete() {\n this.forEachObserver((observer) => {\n observer.complete();\n });\n this.close();\n }\n /**\n * Subscribe function that can be used to add an Observer to the fan-out list.\n *\n * - We require that no event is sent to a subscriber synchronously to their\n * call to subscribe().\n */\n subscribe(nextOrObserver, error, complete) {\n let observer;\n if (nextOrObserver === undefined &&\n error === undefined &&\n complete === undefined) {\n throw new Error('Missing Observer.');\n }\n // Assemble an Observer object when passed as callback functions.\n if (implementsAnyMethods(nextOrObserver, [\n 'next',\n 'error',\n 'complete'\n ])) {\n observer = nextOrObserver;\n }\n else {\n observer = {\n next: nextOrObserver,\n error,\n complete\n };\n }\n if (observer.next === undefined) {\n observer.next = noop;\n }\n if (observer.error === undefined) {\n observer.error = noop;\n }\n if (observer.complete === undefined) {\n observer.complete = noop;\n }\n const unsub = this.unsubscribeOne.bind(this, this.observers.length);\n // Attempt to subscribe to a terminated Observable - we\n // just respond to the Observer with the final error or complete\n // event.\n if (this.finalized) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.task.then(() => {\n try {\n if (this.finalError) {\n observer.error(this.finalError);\n }\n else {\n observer.complete();\n }\n }\n catch (e) {\n // nothing\n }\n return;\n });\n }\n this.observers.push(observer);\n return unsub;\n }\n // Unsubscribe is synchronous - we guarantee that no events are sent to\n // any unsubscribed Observer.\n unsubscribeOne(i) {\n if (this.observers === undefined || this.observers[i] === undefined) {\n return;\n }\n delete this.observers[i];\n this.observerCount -= 1;\n if (this.observerCount === 0 && this.onNoObservers !== undefined) {\n this.onNoObservers(this);\n }\n }\n forEachObserver(fn) {\n if (this.finalized) {\n // Already closed by previous event....just eat the additional values.\n return;\n }\n // Since sendOne calls asynchronously - there is no chance that\n // this.observers will become undefined.\n for (let i = 0; i < this.observers.length; i++) {\n this.sendOne(i, fn);\n }\n }\n // Call the Observer via one of it's callback function. We are careful to\n // confirm that the observe has not been unsubscribed since this asynchronous\n // function had been queued.\n sendOne(i, fn) {\n // Execute the callback asynchronously\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.task.then(() => {\n if (this.observers !== undefined && this.observers[i] !== undefined) {\n try {\n fn(this.observers[i]);\n }\n catch (e) {\n // Ignore exceptions raised in Observers or missing methods of an\n // Observer.\n // Log error to console. b/31404806\n if (typeof console !== 'undefined' && console.error) {\n console.error(e);\n }\n }\n }\n });\n }\n close(err) {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n if (err !== undefined) {\n this.finalError = err;\n }\n // Proxy is no longer needed - garbage collect references\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.task.then(() => {\n this.observers = undefined;\n this.onNoObservers = undefined;\n });\n }\n}\n/** Turn synchronous function into one called asynchronously. */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction async(fn, onError) {\n return (...args) => {\n Promise.resolve(true)\n .then(() => {\n fn(...args);\n })\n .catch((error) => {\n if (onError) {\n onError(error);\n }\n });\n };\n}\n/**\n * Return true if the object passed in implements any of the named methods.\n */\nfunction implementsAnyMethods(obj, methods) {\n if (typeof obj !== 'object' || obj === null) {\n return false;\n }\n for (const method of methods) {\n if (method in obj && typeof obj[method] === 'function') {\n return true;\n }\n }\n return false;\n}\nfunction noop() {\n // do nothing\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Check to make sure the appropriate number of arguments are provided for a public function.\n * Throws an error if it fails.\n *\n * @param fnName The function name\n * @param minCount The minimum number of arguments to allow for the function call\n * @param maxCount The maximum number of argument to allow for the function call\n * @param argCount The actual number of arguments provided.\n */\nconst validateArgCount = function (fnName, minCount, maxCount, argCount) {\n let argError;\n if (argCount < minCount) {\n argError = 'at least ' + minCount;\n }\n else if (argCount > maxCount) {\n argError = maxCount === 0 ? 'none' : 'no more than ' + maxCount;\n }\n if (argError) {\n const error = fnName +\n ' failed: Was called with ' +\n argCount +\n (argCount === 1 ? ' argument.' : ' arguments.') +\n ' Expects ' +\n argError +\n '.';\n throw new Error(error);\n }\n};\n/**\n * Generates a string to prefix an error message about failed argument validation\n *\n * @param fnName The function name\n * @param argName The name of the argument\n * @return The prefix to add to the error thrown for validation.\n */\nfunction errorPrefix(fnName, argName) {\n return `${fnName} failed: ${argName} argument `;\n}\n/**\n * @param fnName\n * @param argumentNumber\n * @param namespace\n * @param optional\n */\nfunction validateNamespace(fnName, namespace, optional) {\n if (optional && !namespace) {\n return;\n }\n if (typeof namespace !== 'string') {\n //TODO: I should do more validation here. We only allow certain chars in namespaces.\n throw new Error(errorPrefix(fnName, 'namespace') + 'must be a valid firebase namespace.');\n }\n}\nfunction validateCallback(fnName, argumentName, \n// eslint-disable-next-line @typescript-eslint/ban-types\ncallback, optional) {\n if (optional && !callback) {\n return;\n }\n if (typeof callback !== 'function') {\n throw new Error(errorPrefix(fnName, argumentName) + 'must be a valid function.');\n }\n}\nfunction validateContextObject(fnName, argumentName, context, optional) {\n if (optional && !context) {\n return;\n }\n if (typeof context !== 'object' || context === null) {\n throw new Error(errorPrefix(fnName, argumentName) + 'must be a valid context object.');\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// Code originally came from goog.crypt.stringToUtf8ByteArray, but for some reason they\n// automatically replaced '\\r\\n' with '\\n', and they didn't handle surrogate pairs,\n// so it's been modified.\n// Note that not all Unicode characters appear as single characters in JavaScript strings.\n// fromCharCode returns the UTF-16 encoding of a character - so some Unicode characters\n// use 2 characters in JavaScript. All 4-byte UTF-8 characters begin with a first\n// character in the range 0xD800 - 0xDBFF (the first character of a so-called surrogate\n// pair).\n// See http://www.ecma-international.org/ecma-262/5.1/#sec-15.1.3\n/**\n * @param {string} str\n * @return {Array}\n */\nconst stringToByteArray = function (str) {\n const out = [];\n let p = 0;\n for (let i = 0; i < str.length; i++) {\n let c = str.charCodeAt(i);\n // Is this the lead surrogate in a surrogate pair?\n if (c >= 0xd800 && c <= 0xdbff) {\n const high = c - 0xd800; // the high 10 bits.\n i++;\n assert(i < str.length, 'Surrogate pair missing trail surrogate.');\n const low = str.charCodeAt(i) - 0xdc00; // the low 10 bits.\n c = 0x10000 + (high << 10) + low;\n }\n if (c < 128) {\n out[p++] = c;\n }\n else if (c < 2048) {\n out[p++] = (c >> 6) | 192;\n out[p++] = (c & 63) | 128;\n }\n else if (c < 65536) {\n out[p++] = (c >> 12) | 224;\n out[p++] = ((c >> 6) & 63) | 128;\n out[p++] = (c & 63) | 128;\n }\n else {\n out[p++] = (c >> 18) | 240;\n out[p++] = ((c >> 12) & 63) | 128;\n out[p++] = ((c >> 6) & 63) | 128;\n out[p++] = (c & 63) | 128;\n }\n }\n return out;\n};\n/**\n * Calculate length without actually converting; useful for doing cheaper validation.\n * @param {string} str\n * @return {number}\n */\nconst stringLength = function (str) {\n let p = 0;\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\n if (c < 128) {\n p++;\n }\n else if (c < 2048) {\n p += 2;\n }\n else if (c >= 0xd800 && c <= 0xdbff) {\n // Lead surrogate of a surrogate pair. The pair together will take 4 bytes to represent.\n p += 4;\n i++; // skip trail surrogate.\n }\n else {\n p += 3;\n }\n }\n return p;\n};\n\n/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Copied from https://stackoverflow.com/a/2117523\n * Generates a new uuid.\n * @public\n */\nconst uuidv4 = function () {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\n const r = (Math.random() * 16) | 0, v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n};\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * The amount of milliseconds to exponentially increase.\n */\nconst DEFAULT_INTERVAL_MILLIS = 1000;\n/**\n * The factor to backoff by.\n * Should be a number greater than 1.\n */\nconst DEFAULT_BACKOFF_FACTOR = 2;\n/**\n * The maximum milliseconds to increase to.\n *\n *

Visible for testing\n */\nconst MAX_VALUE_MILLIS = 4 * 60 * 60 * 1000; // Four hours, like iOS and Android.\n/**\n * The percentage of backoff time to randomize by.\n * See\n * http://go/safe-client-behavior#step-1-determine-the-appropriate-retry-interval-to-handle-spike-traffic\n * for context.\n *\n *

Visible for testing\n */\nconst RANDOM_FACTOR = 0.5;\n/**\n * Based on the backoff method from\n * https://github.com/google/closure-library/blob/master/closure/goog/math/exponentialbackoff.js.\n * Extracted here so we don't need to pass metadata and a stateful ExponentialBackoff object around.\n */\nfunction calculateBackoffMillis(backoffCount, intervalMillis = DEFAULT_INTERVAL_MILLIS, backoffFactor = DEFAULT_BACKOFF_FACTOR) {\n // Calculates an exponentially increasing value.\n // Deviation: calculates value from count and a constant interval, so we only need to save value\n // and count to restore state.\n const currBaseValue = intervalMillis * Math.pow(backoffFactor, backoffCount);\n // A random \"fuzz\" to avoid waves of retries.\n // Deviation: randomFactor is required.\n const randomWait = Math.round(\n // A fraction of the backoff value to add/subtract.\n // Deviation: changes multiplication order to improve readability.\n RANDOM_FACTOR *\n currBaseValue *\n // A random float (rounded to int by Math.round above) in the range [-1, 1]. Determines\n // if we add or subtract.\n (Math.random() - 0.5) *\n 2);\n // Limits backoff to max to avoid effectively permanent backoff.\n return Math.min(MAX_VALUE_MILLIS, currBaseValue + randomWait);\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Provide English ordinal letters after a number\n */\nfunction ordinal(i) {\n if (!Number.isFinite(i)) {\n return `${i}`;\n }\n return i + indicator(i);\n}\nfunction indicator(i) {\n i = Math.abs(i);\n const cent = i % 100;\n if (cent >= 10 && cent <= 20) {\n return 'th';\n }\n const dec = i % 10;\n if (dec === 1) {\n return 'st';\n }\n if (dec === 2) {\n return 'nd';\n }\n if (dec === 3) {\n return 'rd';\n }\n return 'th';\n}\n\n/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction getModularInstance(service) {\n if (service && service._delegate) {\n return service._delegate;\n }\n else {\n return service;\n }\n}\n\nexport { CONSTANTS, DecodeBase64StringError, Deferred, ErrorFactory, FirebaseError, MAX_VALUE_MILLIS, RANDOM_FACTOR, Sha1, areCookiesEnabled, assert, assertionError, async, base64, base64Decode, base64Encode, base64urlEncodeWithoutPadding, calculateBackoffMillis, contains, createMockUserToken, createSubscribe, decode, deepCopy, deepEqual, deepExtend, errorPrefix, extractQuerystring, getDefaultAppConfig, getDefaultEmulatorHost, getDefaultEmulatorHostnameAndPort, getDefaults, getExperimentalSetting, getGlobal, getModularInstance, getUA, isAdmin, isBrowser, isBrowserExtension, isCloudflareWorker, isElectron, isEmpty, isIE, isIndexedDBAvailable, isMobileCordova, isNode, isNodeSdk, isReactNative, isSafari, isUWP, isValidFormat, isValidTimestamp, isWebWorker, issuedAtTime, jsonEval, map, ordinal, promiseWithTimeout, querystring, querystringDecode, safeGet, stringLength, stringToByteArray, stringify, uuidv4, validateArgCount, validateCallback, validateContextObject, validateIndexedDBOpenable, validateNamespace };\n//# sourceMappingURL=index.esm2017.js.map\n","function n(n){for(var r=arguments.length,t=Array(r>1?r-1:0),e=1;e3?r.i-4:r.i:Array.isArray(n)?1:s(n)?2:v(n)?3:0}function u(n,r){return 2===o(n)?n.has(r):Object.prototype.hasOwnProperty.call(n,r)}function a(n,r){return 2===o(n)?n.get(r):n[r]}function f(n,r,t){var e=o(n);2===e?n.set(r,t):3===e?n.add(t):n[r]=t}function c(n,r){return n===r?0!==n||1/n==1/r:n!=n&&r!=r}function s(n){return X&&n instanceof Map}function v(n){return q&&n instanceof Set}function p(n){return n.o||n.t}function l(n){if(Array.isArray(n))return Array.prototype.slice.call(n);var r=rn(n);delete r[Q];for(var t=nn(r),e=0;e1&&(n.set=n.add=n.clear=n.delete=h),Object.freeze(n),e&&i(n,(function(n,r){return d(r,!0)}),!0)),n}function h(){n(2)}function y(n){return null==n||\"object\"!=typeof n||Object.isFrozen(n)}function b(r){var t=tn[r];return t||n(18,r),t}function m(n,r){tn[n]||(tn[n]=r)}function _(){return\"production\"===process.env.NODE_ENV||U||n(0),U}function j(n,r){r&&(b(\"Patches\"),n.u=[],n.s=[],n.v=r)}function g(n){O(n),n.p.forEach(S),n.p=null}function O(n){n===U&&(U=n.l)}function w(n){return U={p:[],l:U,h:n,m:!0,_:0}}function S(n){var r=n[Q];0===r.i||1===r.i?r.j():r.g=!0}function P(r,e){e._=e.p.length;var i=e.p[0],o=void 0!==r&&r!==i;return e.h.O||b(\"ES5\").S(e,r,o),o?(i[Q].P&&(g(e),n(4)),t(r)&&(r=M(e,r),e.l||x(e,r)),e.u&&b(\"Patches\").M(i[Q].t,r,e.u,e.s)):r=M(e,i,[]),g(e),e.u&&e.v(e.u,e.s),r!==H?r:void 0}function M(n,r,t){if(y(r))return r;var e=r[Q];if(!e)return i(r,(function(i,o){return A(n,e,r,i,o,t)}),!0),r;if(e.A!==n)return r;if(!e.P)return x(n,e.t,!0),e.t;if(!e.I){e.I=!0,e.A._--;var o=4===e.i||5===e.i?e.o=l(e.k):e.o,u=o,a=!1;3===e.i&&(u=new Set(o),o.clear(),a=!0),i(u,(function(r,i){return A(n,e,o,r,i,t,a)})),x(n,o,!1),t&&n.u&&b(\"Patches\").N(e,t,n.u,n.s)}return e.o}function A(e,i,o,a,c,s,v){if(\"production\"!==process.env.NODE_ENV&&c===o&&n(5),r(c)){var p=M(e,c,s&&i&&3!==i.i&&!u(i.R,a)?s.concat(a):void 0);if(f(o,a,p),!r(p))return;e.m=!1}else v&&o.add(c);if(t(c)&&!y(c)){if(!e.h.D&&e._<1)return;M(e,c),i&&i.A.l||x(e,c)}}function x(n,r,t){void 0===t&&(t=!1),!n.l&&n.h.D&&n.m&&d(r,t)}function z(n,r){var t=n[Q];return(t?p(t):n)[r]}function I(n,r){if(r in n)for(var t=Object.getPrototypeOf(n);t;){var e=Object.getOwnPropertyDescriptor(t,r);if(e)return e;t=Object.getPrototypeOf(t)}}function k(n){n.P||(n.P=!0,n.l&&k(n.l))}function E(n){n.o||(n.o=l(n.t))}function N(n,r,t){var e=s(r)?b(\"MapSet\").F(r,t):v(r)?b(\"MapSet\").T(r,t):n.O?function(n,r){var t=Array.isArray(n),e={i:t?1:0,A:r?r.A:_(),P:!1,I:!1,R:{},l:r,t:n,k:null,o:null,j:null,C:!1},i=e,o=en;t&&(i=[e],o=on);var u=Proxy.revocable(i,o),a=u.revoke,f=u.proxy;return e.k=f,e.j=a,f}(r,t):b(\"ES5\").J(r,t);return(t?t.A:_()).p.push(e),e}function R(e){return r(e)||n(22,e),function n(r){if(!t(r))return r;var e,u=r[Q],c=o(r);if(u){if(!u.P&&(u.i<4||!b(\"ES5\").K(u)))return u.t;u.I=!0,e=D(r,c),u.I=!1}else e=D(r,c);return i(e,(function(r,t){u&&a(u.t,r)===t||f(e,r,n(t))})),3===c?new Set(e):e}(e)}function D(n,r){switch(r){case 2:return new Map(n);case 3:return Array.from(n)}return l(n)}function F(){function t(n,r){var t=s[n];return t?t.enumerable=r:s[n]=t={configurable:!0,enumerable:r,get:function(){var r=this[Q];return\"production\"!==process.env.NODE_ENV&&f(r),en.get(r,n)},set:function(r){var t=this[Q];\"production\"!==process.env.NODE_ENV&&f(t),en.set(t,n,r)}},t}function e(n){for(var r=n.length-1;r>=0;r--){var t=n[r][Q];if(!t.P)switch(t.i){case 5:a(t)&&k(t);break;case 4:o(t)&&k(t)}}}function o(n){for(var r=n.t,t=n.k,e=nn(t),i=e.length-1;i>=0;i--){var o=e[i];if(o!==Q){var a=r[o];if(void 0===a&&!u(r,o))return!0;var f=t[o],s=f&&f[Q];if(s?s.t!==a:!c(f,a))return!0}}var v=!!r[Q];return e.length!==nn(r).length+(v?0:1)}function a(n){var r=n.k;if(r.length!==n.t.length)return!0;var t=Object.getOwnPropertyDescriptor(r,r.length-1);if(t&&!t.get)return!0;for(var e=0;e1?t-1:0),o=1;o1?t-1:0),o=1;o=0;e--){var i=t[e];if(0===i.path.length&&\"replace\"===i.op){n=i.value;break}}e>-1&&(t=t.slice(e+1));var o=b(\"Patches\").$;return r(n)?o(n,t):this.produce(n,(function(n){return o(n,t)}))},e}(),an=new un,fn=an.produce,cn=an.produceWithPatches.bind(an),sn=an.setAutoFreeze.bind(an),vn=an.setUseProxies.bind(an),pn=an.applyPatches.bind(an),ln=an.createDraft.bind(an),dn=an.finishDraft.bind(an);export default fn;export{un as Immer,pn as applyPatches,K as castDraft,$ as castImmutable,ln as createDraft,R as current,J as enableAllPlugins,F as enableES5,C as enableMapSet,T as enablePatches,dn as finishDraft,d as freeze,L as immerable,r as isDraft,t as isDraftable,H as nothing,e as original,fn as produce,cn as produceWithPatches,sn as setAutoFreeze,vn as setUseProxies};\n//# sourceMappingURL=immer.esm.js.map\n","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n};\r\nvar __defProp = Object.defineProperty;\r\nvar __defProps = Object.defineProperties;\r\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\r\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\r\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\r\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\r\nvar __defNormalProp = function (obj, key, value) { return key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value: value }) : obj[key] = value; };\r\nvar __spreadValues = function (a, b) {\r\n for (var prop in b || (b = {}))\r\n if (__hasOwnProp.call(b, prop))\r\n __defNormalProp(a, prop, b[prop]);\r\n if (__getOwnPropSymbols)\r\n for (var _i = 0, _c = __getOwnPropSymbols(b); _i < _c.length; _i++) {\r\n var prop = _c[_i];\r\n if (__propIsEnum.call(b, prop))\r\n __defNormalProp(a, prop, b[prop]);\r\n }\r\n return a;\r\n};\r\nvar __spreadProps = function (a, b) { return __defProps(a, __getOwnPropDescs(b)); };\r\nvar __async = function (__this, __arguments, generator) {\r\n return new Promise(function (resolve, reject) {\r\n var fulfilled = function (value) {\r\n try {\r\n step(generator.next(value));\r\n }\r\n catch (e) {\r\n reject(e);\r\n }\r\n };\r\n var rejected = function (value) {\r\n try {\r\n step(generator.throw(value));\r\n }\r\n catch (e) {\r\n reject(e);\r\n }\r\n };\r\n var step = function (x) { return x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); };\r\n step((generator = generator.apply(__this, __arguments)).next());\r\n });\r\n};\r\n// src/index.ts\r\nimport { enableES5 } from \"immer\";\r\nexport * from \"redux\";\r\nimport { default as default2, current as current2, freeze, original, isDraft as isDraft4 } from \"immer\";\r\nimport { createSelector as createSelector2 } from \"reselect\";\r\n// src/createDraftSafeSelector.ts\r\nimport { current, isDraft } from \"immer\";\r\nimport { createSelector } from \"reselect\";\r\nvar createDraftSafeSelector = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var selector = createSelector.apply(void 0, args);\r\n var wrappedSelector = function (value) {\r\n var rest = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n rest[_i - 1] = arguments[_i];\r\n }\r\n return selector.apply(void 0, __spreadArray([isDraft(value) ? current(value) : value], rest));\r\n };\r\n return wrappedSelector;\r\n};\r\n// src/configureStore.ts\r\nimport { createStore, compose as compose2, applyMiddleware, combineReducers } from \"redux\";\r\n// src/devtoolsExtension.ts\r\nimport { compose } from \"redux\";\r\nvar composeWithDevTools = typeof window !== \"undefined\" && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ : function () {\r\n if (arguments.length === 0)\r\n return void 0;\r\n if (typeof arguments[0] === \"object\")\r\n return compose;\r\n return compose.apply(null, arguments);\r\n};\r\nvar devToolsEnhancer = typeof window !== \"undefined\" && window.__REDUX_DEVTOOLS_EXTENSION__ ? window.__REDUX_DEVTOOLS_EXTENSION__ : function () {\r\n return function (noop2) {\r\n return noop2;\r\n };\r\n};\r\n// src/isPlainObject.ts\r\nfunction isPlainObject(value) {\r\n if (typeof value !== \"object\" || value === null)\r\n return false;\r\n var proto = Object.getPrototypeOf(value);\r\n if (proto === null)\r\n return true;\r\n var baseProto = proto;\r\n while (Object.getPrototypeOf(baseProto) !== null) {\r\n baseProto = Object.getPrototypeOf(baseProto);\r\n }\r\n return proto === baseProto;\r\n}\r\n// src/getDefaultMiddleware.ts\r\nimport thunkMiddleware from \"redux-thunk\";\r\n// src/tsHelpers.ts\r\nvar hasMatchFunction = function (v) {\r\n return v && typeof v.match === \"function\";\r\n};\r\n// src/createAction.ts\r\nfunction createAction(type, prepareAction) {\r\n function actionCreator() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n if (prepareAction) {\r\n var prepared = prepareAction.apply(void 0, args);\r\n if (!prepared) {\r\n throw new Error(\"prepareAction did not return an object\");\r\n }\r\n return __spreadValues(__spreadValues({\r\n type: type,\r\n payload: prepared.payload\r\n }, \"meta\" in prepared && { meta: prepared.meta }), \"error\" in prepared && { error: prepared.error });\r\n }\r\n return { type: type, payload: args[0] };\r\n }\r\n actionCreator.toString = function () { return \"\" + type; };\r\n actionCreator.type = type;\r\n actionCreator.match = function (action) { return action.type === type; };\r\n return actionCreator;\r\n}\r\nfunction isAction(action) {\r\n return isPlainObject(action) && \"type\" in action;\r\n}\r\nfunction isActionCreator(action) {\r\n return typeof action === \"function\" && \"type\" in action && hasMatchFunction(action);\r\n}\r\nfunction isFSA(action) {\r\n return isAction(action) && typeof action.type === \"string\" && Object.keys(action).every(isValidKey);\r\n}\r\nfunction isValidKey(key) {\r\n return [\"type\", \"payload\", \"error\", \"meta\"].indexOf(key) > -1;\r\n}\r\nfunction getType(actionCreator) {\r\n return \"\" + actionCreator;\r\n}\r\n// src/actionCreatorInvariantMiddleware.ts\r\nfunction getMessage(type) {\r\n var splitType = type ? (\"\" + type).split(\"/\") : [];\r\n var actionName = splitType[splitType.length - 1] || \"actionCreator\";\r\n return \"Detected an action creator with type \\\"\" + (type || \"unknown\") + \"\\\" being dispatched. \\nMake sure you're calling the action creator before dispatching, i.e. `dispatch(\" + actionName + \"())` instead of `dispatch(\" + actionName + \")`. This is necessary even if the action has no payload.\";\r\n}\r\nfunction createActionCreatorInvariantMiddleware(options) {\r\n if (options === void 0) { options = {}; }\r\n if (process.env.NODE_ENV === \"production\") {\r\n return function () { return function (next) { return function (action) { return next(action); }; }; };\r\n }\r\n var _c = options.isActionCreator, isActionCreator2 = _c === void 0 ? isActionCreator : _c;\r\n return function () { return function (next) { return function (action) {\r\n if (isActionCreator2(action)) {\r\n console.warn(getMessage(action.type));\r\n }\r\n return next(action);\r\n }; }; };\r\n}\r\n// src/utils.ts\r\nimport createNextState, { isDraftable } from \"immer\";\r\nfunction getTimeMeasureUtils(maxDelay, fnName) {\r\n var elapsed = 0;\r\n return {\r\n measureTime: function (fn) {\r\n var started = Date.now();\r\n try {\r\n return fn();\r\n }\r\n finally {\r\n var finished = Date.now();\r\n elapsed += finished - started;\r\n }\r\n },\r\n warnIfExceeded: function () {\r\n if (elapsed > maxDelay) {\r\n console.warn(fnName + \" took \" + elapsed + \"ms, which is more than the warning threshold of \" + maxDelay + \"ms. \\nIf your state or actions are very large, you may want to disable the middleware as it might cause too much of a slowdown in development mode. See https://redux-toolkit.js.org/api/getDefaultMiddleware for instructions.\\nIt is disabled in production builds, so you don't need to worry about that.\");\r\n }\r\n }\r\n };\r\n}\r\nvar MiddlewareArray = /** @class */ (function (_super) {\r\n __extends(MiddlewareArray, _super);\r\n function MiddlewareArray() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var _this = _super.apply(this, args) || this;\r\n Object.setPrototypeOf(_this, MiddlewareArray.prototype);\r\n return _this;\r\n }\r\n Object.defineProperty(MiddlewareArray, Symbol.species, {\r\n get: function () {\r\n return MiddlewareArray;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n MiddlewareArray.prototype.concat = function () {\r\n var arr = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n arr[_i] = arguments[_i];\r\n }\r\n return _super.prototype.concat.apply(this, arr);\r\n };\r\n MiddlewareArray.prototype.prepend = function () {\r\n var arr = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n arr[_i] = arguments[_i];\r\n }\r\n if (arr.length === 1 && Array.isArray(arr[0])) {\r\n return new (MiddlewareArray.bind.apply(MiddlewareArray, __spreadArray([void 0], arr[0].concat(this))))();\r\n }\r\n return new (MiddlewareArray.bind.apply(MiddlewareArray, __spreadArray([void 0], arr.concat(this))))();\r\n };\r\n return MiddlewareArray;\r\n}(Array));\r\nvar EnhancerArray = /** @class */ (function (_super) {\r\n __extends(EnhancerArray, _super);\r\n function EnhancerArray() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var _this = _super.apply(this, args) || this;\r\n Object.setPrototypeOf(_this, EnhancerArray.prototype);\r\n return _this;\r\n }\r\n Object.defineProperty(EnhancerArray, Symbol.species, {\r\n get: function () {\r\n return EnhancerArray;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n EnhancerArray.prototype.concat = function () {\r\n var arr = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n arr[_i] = arguments[_i];\r\n }\r\n return _super.prototype.concat.apply(this, arr);\r\n };\r\n EnhancerArray.prototype.prepend = function () {\r\n var arr = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n arr[_i] = arguments[_i];\r\n }\r\n if (arr.length === 1 && Array.isArray(arr[0])) {\r\n return new (EnhancerArray.bind.apply(EnhancerArray, __spreadArray([void 0], arr[0].concat(this))))();\r\n }\r\n return new (EnhancerArray.bind.apply(EnhancerArray, __spreadArray([void 0], arr.concat(this))))();\r\n };\r\n return EnhancerArray;\r\n}(Array));\r\nfunction freezeDraftable(val) {\r\n return isDraftable(val) ? createNextState(val, function () {\r\n }) : val;\r\n}\r\n// src/immutableStateInvariantMiddleware.ts\r\nvar isProduction = process.env.NODE_ENV === \"production\";\r\nvar prefix = \"Invariant failed\";\r\nfunction invariant(condition, message) {\r\n if (condition) {\r\n return;\r\n }\r\n if (isProduction) {\r\n throw new Error(prefix);\r\n }\r\n throw new Error(prefix + \": \" + (message || \"\"));\r\n}\r\nfunction stringify(obj, serializer, indent, decycler) {\r\n return JSON.stringify(obj, getSerialize(serializer, decycler), indent);\r\n}\r\nfunction getSerialize(serializer, decycler) {\r\n var stack = [], keys = [];\r\n if (!decycler)\r\n decycler = function (_, value) {\r\n if (stack[0] === value)\r\n return \"[Circular ~]\";\r\n return \"[Circular ~.\" + keys.slice(0, stack.indexOf(value)).join(\".\") + \"]\";\r\n };\r\n return function (key, value) {\r\n if (stack.length > 0) {\r\n var thisPos = stack.indexOf(this);\r\n ~thisPos ? stack.splice(thisPos + 1) : stack.push(this);\r\n ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key);\r\n if (~stack.indexOf(value))\r\n value = decycler.call(this, key, value);\r\n }\r\n else\r\n stack.push(value);\r\n return serializer == null ? value : serializer.call(this, key, value);\r\n };\r\n}\r\nfunction isImmutableDefault(value) {\r\n return typeof value !== \"object\" || value == null || Object.isFrozen(value);\r\n}\r\nfunction trackForMutations(isImmutable, ignorePaths, obj) {\r\n var trackedProperties = trackProperties(isImmutable, ignorePaths, obj);\r\n return {\r\n detectMutations: function () {\r\n return detectMutations(isImmutable, ignorePaths, trackedProperties, obj);\r\n }\r\n };\r\n}\r\nfunction trackProperties(isImmutable, ignorePaths, obj, path, checkedObjects) {\r\n if (ignorePaths === void 0) { ignorePaths = []; }\r\n if (path === void 0) { path = \"\"; }\r\n if (checkedObjects === void 0) { checkedObjects = new Set(); }\r\n var tracked = { value: obj };\r\n if (!isImmutable(obj) && !checkedObjects.has(obj)) {\r\n checkedObjects.add(obj);\r\n tracked.children = {};\r\n for (var key in obj) {\r\n var childPath = path ? path + \".\" + key : key;\r\n if (ignorePaths.length && ignorePaths.indexOf(childPath) !== -1) {\r\n continue;\r\n }\r\n tracked.children[key] = trackProperties(isImmutable, ignorePaths, obj[key], childPath);\r\n }\r\n }\r\n return tracked;\r\n}\r\nfunction detectMutations(isImmutable, ignoredPaths, trackedProperty, obj, sameParentRef, path) {\r\n if (ignoredPaths === void 0) { ignoredPaths = []; }\r\n if (sameParentRef === void 0) { sameParentRef = false; }\r\n if (path === void 0) { path = \"\"; }\r\n var prevObj = trackedProperty ? trackedProperty.value : void 0;\r\n var sameRef = prevObj === obj;\r\n if (sameParentRef && !sameRef && !Number.isNaN(obj)) {\r\n return { wasMutated: true, path: path };\r\n }\r\n if (isImmutable(prevObj) || isImmutable(obj)) {\r\n return { wasMutated: false };\r\n }\r\n var keysToDetect = {};\r\n for (var key in trackedProperty.children) {\r\n keysToDetect[key] = true;\r\n }\r\n for (var key in obj) {\r\n keysToDetect[key] = true;\r\n }\r\n var hasIgnoredPaths = ignoredPaths.length > 0;\r\n var _loop_1 = function (key) {\r\n var nestedPath = path ? path + \".\" + key : key;\r\n if (hasIgnoredPaths) {\r\n var hasMatches = ignoredPaths.some(function (ignored) {\r\n if (ignored instanceof RegExp) {\r\n return ignored.test(nestedPath);\r\n }\r\n return nestedPath === ignored;\r\n });\r\n if (hasMatches) {\r\n return \"continue\";\r\n }\r\n }\r\n var result = detectMutations(isImmutable, ignoredPaths, trackedProperty.children[key], obj[key], sameRef, nestedPath);\r\n if (result.wasMutated) {\r\n return { value: result };\r\n }\r\n };\r\n for (var key in keysToDetect) {\r\n var state_1 = _loop_1(key);\r\n if (typeof state_1 === \"object\")\r\n return state_1.value;\r\n }\r\n return { wasMutated: false };\r\n}\r\nfunction createImmutableStateInvariantMiddleware(options) {\r\n if (options === void 0) { options = {}; }\r\n if (process.env.NODE_ENV === \"production\") {\r\n return function () { return function (next) { return function (action) { return next(action); }; }; };\r\n }\r\n var _c = options.isImmutable, isImmutable = _c === void 0 ? isImmutableDefault : _c, ignoredPaths = options.ignoredPaths, _d = options.warnAfter, warnAfter = _d === void 0 ? 32 : _d, ignore = options.ignore;\r\n ignoredPaths = ignoredPaths || ignore;\r\n var track = trackForMutations.bind(null, isImmutable, ignoredPaths);\r\n return function (_c) {\r\n var getState = _c.getState;\r\n var state = getState();\r\n var tracker = track(state);\r\n var result;\r\n return function (next) { return function (action) {\r\n var measureUtils = getTimeMeasureUtils(warnAfter, \"ImmutableStateInvariantMiddleware\");\r\n measureUtils.measureTime(function () {\r\n state = getState();\r\n result = tracker.detectMutations();\r\n tracker = track(state);\r\n invariant(!result.wasMutated, \"A state mutation was detected between dispatches, in the path '\" + (result.path || \"\") + \"'. This may cause incorrect behavior. (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)\");\r\n });\r\n var dispatchedAction = next(action);\r\n measureUtils.measureTime(function () {\r\n state = getState();\r\n result = tracker.detectMutations();\r\n tracker = track(state);\r\n result.wasMutated && invariant(!result.wasMutated, \"A state mutation was detected inside a dispatch, in the path: \" + (result.path || \"\") + \". Take a look at the reducer(s) handling the action \" + stringify(action) + \". (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)\");\r\n });\r\n measureUtils.warnIfExceeded();\r\n return dispatchedAction;\r\n }; };\r\n };\r\n}\r\n// src/serializableStateInvariantMiddleware.ts\r\nfunction isPlain(val) {\r\n var type = typeof val;\r\n return val == null || type === \"string\" || type === \"boolean\" || type === \"number\" || Array.isArray(val) || isPlainObject(val);\r\n}\r\nfunction findNonSerializableValue(value, path, isSerializable, getEntries, ignoredPaths, cache) {\r\n if (path === void 0) { path = \"\"; }\r\n if (isSerializable === void 0) { isSerializable = isPlain; }\r\n if (ignoredPaths === void 0) { ignoredPaths = []; }\r\n var foundNestedSerializable;\r\n if (!isSerializable(value)) {\r\n return {\r\n keyPath: path || \"\",\r\n value: value\r\n };\r\n }\r\n if (typeof value !== \"object\" || value === null) {\r\n return false;\r\n }\r\n if (cache == null ? void 0 : cache.has(value))\r\n return false;\r\n var entries = getEntries != null ? getEntries(value) : Object.entries(value);\r\n var hasIgnoredPaths = ignoredPaths.length > 0;\r\n var _loop_2 = function (key, nestedValue) {\r\n var nestedPath = path ? path + \".\" + key : key;\r\n if (hasIgnoredPaths) {\r\n var hasMatches = ignoredPaths.some(function (ignored) {\r\n if (ignored instanceof RegExp) {\r\n return ignored.test(nestedPath);\r\n }\r\n return nestedPath === ignored;\r\n });\r\n if (hasMatches) {\r\n return \"continue\";\r\n }\r\n }\r\n if (!isSerializable(nestedValue)) {\r\n return { value: {\r\n keyPath: nestedPath,\r\n value: nestedValue\r\n } };\r\n }\r\n if (typeof nestedValue === \"object\") {\r\n foundNestedSerializable = findNonSerializableValue(nestedValue, nestedPath, isSerializable, getEntries, ignoredPaths, cache);\r\n if (foundNestedSerializable) {\r\n return { value: foundNestedSerializable };\r\n }\r\n }\r\n };\r\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\r\n var _c = entries_1[_i], key = _c[0], nestedValue = _c[1];\r\n var state_2 = _loop_2(key, nestedValue);\r\n if (typeof state_2 === \"object\")\r\n return state_2.value;\r\n }\r\n if (cache && isNestedFrozen(value))\r\n cache.add(value);\r\n return false;\r\n}\r\nfunction isNestedFrozen(value) {\r\n if (!Object.isFrozen(value))\r\n return false;\r\n for (var _i = 0, _c = Object.values(value); _i < _c.length; _i++) {\r\n var nestedValue = _c[_i];\r\n if (typeof nestedValue !== \"object\" || nestedValue === null)\r\n continue;\r\n if (!isNestedFrozen(nestedValue))\r\n return false;\r\n }\r\n return true;\r\n}\r\nfunction createSerializableStateInvariantMiddleware(options) {\r\n if (options === void 0) { options = {}; }\r\n if (process.env.NODE_ENV === \"production\") {\r\n return function () { return function (next) { return function (action) { return next(action); }; }; };\r\n }\r\n var _c = options.isSerializable, isSerializable = _c === void 0 ? isPlain : _c, getEntries = options.getEntries, _d = options.ignoredActions, ignoredActions = _d === void 0 ? [] : _d, _e = options.ignoredActionPaths, ignoredActionPaths = _e === void 0 ? [\"meta.arg\", \"meta.baseQueryMeta\"] : _e, _f = options.ignoredPaths, ignoredPaths = _f === void 0 ? [] : _f, _g = options.warnAfter, warnAfter = _g === void 0 ? 32 : _g, _h = options.ignoreState, ignoreState = _h === void 0 ? false : _h, _j = options.ignoreActions, ignoreActions = _j === void 0 ? false : _j, _k = options.disableCache, disableCache = _k === void 0 ? false : _k;\r\n var cache = !disableCache && WeakSet ? new WeakSet() : void 0;\r\n return function (storeAPI) { return function (next) { return function (action) {\r\n var result = next(action);\r\n var measureUtils = getTimeMeasureUtils(warnAfter, \"SerializableStateInvariantMiddleware\");\r\n if (!ignoreActions && !(ignoredActions.length && ignoredActions.indexOf(action.type) !== -1)) {\r\n measureUtils.measureTime(function () {\r\n var foundActionNonSerializableValue = findNonSerializableValue(action, \"\", isSerializable, getEntries, ignoredActionPaths, cache);\r\n if (foundActionNonSerializableValue) {\r\n var keyPath = foundActionNonSerializableValue.keyPath, value = foundActionNonSerializableValue.value;\r\n console.error(\"A non-serializable value was detected in an action, in the path: `\" + keyPath + \"`. Value:\", value, \"\\nTake a look at the logic that dispatched this action: \", action, \"\\n(See https://redux.js.org/faq/actions#why-should-type-be-a-string-or-at-least-serializable-why-should-my-action-types-be-constants)\", \"\\n(To allow non-serializable values see: https://redux-toolkit.js.org/usage/usage-guide#working-with-non-serializable-data)\");\r\n }\r\n });\r\n }\r\n if (!ignoreState) {\r\n measureUtils.measureTime(function () {\r\n var state = storeAPI.getState();\r\n var foundStateNonSerializableValue = findNonSerializableValue(state, \"\", isSerializable, getEntries, ignoredPaths, cache);\r\n if (foundStateNonSerializableValue) {\r\n var keyPath = foundStateNonSerializableValue.keyPath, value = foundStateNonSerializableValue.value;\r\n console.error(\"A non-serializable value was detected in the state, in the path: `\" + keyPath + \"`. Value:\", value, \"\\nTake a look at the reducer(s) handling this action type: \" + action.type + \".\\n(See https://redux.js.org/faq/organizing-state#can-i-put-functions-promises-or-other-non-serializable-items-in-my-store-state)\");\r\n }\r\n });\r\n measureUtils.warnIfExceeded();\r\n }\r\n return result;\r\n }; }; };\r\n}\r\n// src/getDefaultMiddleware.ts\r\nfunction isBoolean(x) {\r\n return typeof x === \"boolean\";\r\n}\r\nfunction curryGetDefaultMiddleware() {\r\n return function curriedGetDefaultMiddleware(options) {\r\n return getDefaultMiddleware(options);\r\n };\r\n}\r\nfunction getDefaultMiddleware(options) {\r\n if (options === void 0) { options = {}; }\r\n var _c = options.thunk, thunk = _c === void 0 ? true : _c, _d = options.immutableCheck, immutableCheck = _d === void 0 ? true : _d, _e = options.serializableCheck, serializableCheck = _e === void 0 ? true : _e, _f = options.actionCreatorCheck, actionCreatorCheck = _f === void 0 ? true : _f;\r\n var middlewareArray = new MiddlewareArray();\r\n if (thunk) {\r\n if (isBoolean(thunk)) {\r\n middlewareArray.push(thunkMiddleware);\r\n }\r\n else {\r\n middlewareArray.push(thunkMiddleware.withExtraArgument(thunk.extraArgument));\r\n }\r\n }\r\n if (process.env.NODE_ENV !== \"production\") {\r\n if (immutableCheck) {\r\n var immutableOptions = {};\r\n if (!isBoolean(immutableCheck)) {\r\n immutableOptions = immutableCheck;\r\n }\r\n middlewareArray.unshift(createImmutableStateInvariantMiddleware(immutableOptions));\r\n }\r\n if (serializableCheck) {\r\n var serializableOptions = {};\r\n if (!isBoolean(serializableCheck)) {\r\n serializableOptions = serializableCheck;\r\n }\r\n middlewareArray.push(createSerializableStateInvariantMiddleware(serializableOptions));\r\n }\r\n if (actionCreatorCheck) {\r\n var actionCreatorOptions = {};\r\n if (!isBoolean(actionCreatorCheck)) {\r\n actionCreatorOptions = actionCreatorCheck;\r\n }\r\n middlewareArray.unshift(createActionCreatorInvariantMiddleware(actionCreatorOptions));\r\n }\r\n }\r\n return middlewareArray;\r\n}\r\n// src/configureStore.ts\r\nvar IS_PRODUCTION = process.env.NODE_ENV === \"production\";\r\nfunction configureStore(options) {\r\n var curriedGetDefaultMiddleware = curryGetDefaultMiddleware();\r\n var _c = options || {}, _d = _c.reducer, reducer = _d === void 0 ? void 0 : _d, _e = _c.middleware, middleware = _e === void 0 ? curriedGetDefaultMiddleware() : _e, _f = _c.devTools, devTools = _f === void 0 ? true : _f, _g = _c.preloadedState, preloadedState = _g === void 0 ? void 0 : _g, _h = _c.enhancers, enhancers = _h === void 0 ? void 0 : _h;\r\n var rootReducer;\r\n if (typeof reducer === \"function\") {\r\n rootReducer = reducer;\r\n }\r\n else if (isPlainObject(reducer)) {\r\n rootReducer = combineReducers(reducer);\r\n }\r\n else {\r\n throw new Error('\"reducer\" is a required argument, and must be a function or an object of functions that can be passed to combineReducers');\r\n }\r\n var finalMiddleware = middleware;\r\n if (typeof finalMiddleware === \"function\") {\r\n finalMiddleware = finalMiddleware(curriedGetDefaultMiddleware);\r\n if (!IS_PRODUCTION && !Array.isArray(finalMiddleware)) {\r\n throw new Error(\"when using a middleware builder function, an array of middleware must be returned\");\r\n }\r\n }\r\n if (!IS_PRODUCTION && finalMiddleware.some(function (item) { return typeof item !== \"function\"; })) {\r\n throw new Error(\"each middleware provided to configureStore must be a function\");\r\n }\r\n var middlewareEnhancer = applyMiddleware.apply(void 0, finalMiddleware);\r\n var finalCompose = compose2;\r\n if (devTools) {\r\n finalCompose = composeWithDevTools(__spreadValues({\r\n trace: !IS_PRODUCTION\r\n }, typeof devTools === \"object\" && devTools));\r\n }\r\n var defaultEnhancers = new EnhancerArray(middlewareEnhancer);\r\n var storeEnhancers = defaultEnhancers;\r\n if (Array.isArray(enhancers)) {\r\n storeEnhancers = __spreadArray([middlewareEnhancer], enhancers);\r\n }\r\n else if (typeof enhancers === \"function\") {\r\n storeEnhancers = enhancers(defaultEnhancers);\r\n }\r\n var composedEnhancer = finalCompose.apply(void 0, storeEnhancers);\r\n return createStore(rootReducer, preloadedState, composedEnhancer);\r\n}\r\n// src/createReducer.ts\r\nimport createNextState2, { isDraft as isDraft2, isDraftable as isDraftable2 } from \"immer\";\r\n// src/mapBuilders.ts\r\nfunction executeReducerBuilderCallback(builderCallback) {\r\n var actionsMap = {};\r\n var actionMatchers = [];\r\n var defaultCaseReducer;\r\n var builder = {\r\n addCase: function (typeOrActionCreator, reducer) {\r\n if (process.env.NODE_ENV !== \"production\") {\r\n if (actionMatchers.length > 0) {\r\n throw new Error(\"`builder.addCase` should only be called before calling `builder.addMatcher`\");\r\n }\r\n if (defaultCaseReducer) {\r\n throw new Error(\"`builder.addCase` should only be called before calling `builder.addDefaultCase`\");\r\n }\r\n }\r\n var type = typeof typeOrActionCreator === \"string\" ? typeOrActionCreator : typeOrActionCreator.type;\r\n if (!type) {\r\n throw new Error(\"`builder.addCase` cannot be called with an empty action type\");\r\n }\r\n if (type in actionsMap) {\r\n throw new Error(\"`builder.addCase` cannot be called with two reducers for the same action type\");\r\n }\r\n actionsMap[type] = reducer;\r\n return builder;\r\n },\r\n addMatcher: function (matcher, reducer) {\r\n if (process.env.NODE_ENV !== \"production\") {\r\n if (defaultCaseReducer) {\r\n throw new Error(\"`builder.addMatcher` should only be called before calling `builder.addDefaultCase`\");\r\n }\r\n }\r\n actionMatchers.push({ matcher: matcher, reducer: reducer });\r\n return builder;\r\n },\r\n addDefaultCase: function (reducer) {\r\n if (process.env.NODE_ENV !== \"production\") {\r\n if (defaultCaseReducer) {\r\n throw new Error(\"`builder.addDefaultCase` can only be called once\");\r\n }\r\n }\r\n defaultCaseReducer = reducer;\r\n return builder;\r\n }\r\n };\r\n builderCallback(builder);\r\n return [actionsMap, actionMatchers, defaultCaseReducer];\r\n}\r\n// src/createReducer.ts\r\nfunction isStateFunction(x) {\r\n return typeof x === \"function\";\r\n}\r\nvar hasWarnedAboutObjectNotation = false;\r\nfunction createReducer(initialState, mapOrBuilderCallback, actionMatchers, defaultCaseReducer) {\r\n if (actionMatchers === void 0) { actionMatchers = []; }\r\n if (process.env.NODE_ENV !== \"production\") {\r\n if (typeof mapOrBuilderCallback === \"object\") {\r\n if (!hasWarnedAboutObjectNotation) {\r\n hasWarnedAboutObjectNotation = true;\r\n console.warn(\"The object notation for `createReducer` is deprecated, and will be removed in RTK 2.0. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createReducer\");\r\n }\r\n }\r\n }\r\n var _c = typeof mapOrBuilderCallback === \"function\" ? executeReducerBuilderCallback(mapOrBuilderCallback) : [mapOrBuilderCallback, actionMatchers, defaultCaseReducer], actionsMap = _c[0], finalActionMatchers = _c[1], finalDefaultCaseReducer = _c[2];\r\n var getInitialState;\r\n if (isStateFunction(initialState)) {\r\n getInitialState = function () { return freezeDraftable(initialState()); };\r\n }\r\n else {\r\n var frozenInitialState_1 = freezeDraftable(initialState);\r\n getInitialState = function () { return frozenInitialState_1; };\r\n }\r\n function reducer(state, action) {\r\n if (state === void 0) { state = getInitialState(); }\r\n var caseReducers = __spreadArray([\r\n actionsMap[action.type]\r\n ], finalActionMatchers.filter(function (_c) {\r\n var matcher = _c.matcher;\r\n return matcher(action);\r\n }).map(function (_c) {\r\n var reducer2 = _c.reducer;\r\n return reducer2;\r\n }));\r\n if (caseReducers.filter(function (cr) { return !!cr; }).length === 0) {\r\n caseReducers = [finalDefaultCaseReducer];\r\n }\r\n return caseReducers.reduce(function (previousState, caseReducer) {\r\n if (caseReducer) {\r\n if (isDraft2(previousState)) {\r\n var draft = previousState;\r\n var result = caseReducer(draft, action);\r\n if (result === void 0) {\r\n return previousState;\r\n }\r\n return result;\r\n }\r\n else if (!isDraftable2(previousState)) {\r\n var result = caseReducer(previousState, action);\r\n if (result === void 0) {\r\n if (previousState === null) {\r\n return previousState;\r\n }\r\n throw Error(\"A case reducer on a non-draftable value must not return undefined\");\r\n }\r\n return result;\r\n }\r\n else {\r\n return createNextState2(previousState, function (draft) {\r\n return caseReducer(draft, action);\r\n });\r\n }\r\n }\r\n return previousState;\r\n }, state);\r\n }\r\n reducer.getInitialState = getInitialState;\r\n return reducer;\r\n}\r\n// src/createSlice.ts\r\nvar hasWarnedAboutObjectNotation2 = false;\r\nfunction getType2(slice, actionKey) {\r\n return slice + \"/\" + actionKey;\r\n}\r\nfunction createSlice(options) {\r\n var name = options.name;\r\n if (!name) {\r\n throw new Error(\"`name` is a required option for createSlice\");\r\n }\r\n if (typeof process !== \"undefined\" && process.env.NODE_ENV === \"development\") {\r\n if (options.initialState === void 0) {\r\n console.error(\"You must provide an `initialState` value that is not `undefined`. You may have misspelled `initialState`\");\r\n }\r\n }\r\n var initialState = typeof options.initialState == \"function\" ? options.initialState : freezeDraftable(options.initialState);\r\n var reducers = options.reducers || {};\r\n var reducerNames = Object.keys(reducers);\r\n var sliceCaseReducersByName = {};\r\n var sliceCaseReducersByType = {};\r\n var actionCreators = {};\r\n reducerNames.forEach(function (reducerName) {\r\n var maybeReducerWithPrepare = reducers[reducerName];\r\n var type = getType2(name, reducerName);\r\n var caseReducer;\r\n var prepareCallback;\r\n if (\"reducer\" in maybeReducerWithPrepare) {\r\n caseReducer = maybeReducerWithPrepare.reducer;\r\n prepareCallback = maybeReducerWithPrepare.prepare;\r\n }\r\n else {\r\n caseReducer = maybeReducerWithPrepare;\r\n }\r\n sliceCaseReducersByName[reducerName] = caseReducer;\r\n sliceCaseReducersByType[type] = caseReducer;\r\n actionCreators[reducerName] = prepareCallback ? createAction(type, prepareCallback) : createAction(type);\r\n });\r\n function buildReducer() {\r\n if (process.env.NODE_ENV !== \"production\") {\r\n if (typeof options.extraReducers === \"object\") {\r\n if (!hasWarnedAboutObjectNotation2) {\r\n hasWarnedAboutObjectNotation2 = true;\r\n console.warn(\"The object notation for `createSlice.extraReducers` is deprecated, and will be removed in RTK 2.0. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createSlice\");\r\n }\r\n }\r\n }\r\n var _c = typeof options.extraReducers === \"function\" ? executeReducerBuilderCallback(options.extraReducers) : [options.extraReducers], _d = _c[0], extraReducers = _d === void 0 ? {} : _d, _e = _c[1], actionMatchers = _e === void 0 ? [] : _e, _f = _c[2], defaultCaseReducer = _f === void 0 ? void 0 : _f;\r\n var finalCaseReducers = __spreadValues(__spreadValues({}, extraReducers), sliceCaseReducersByType);\r\n return createReducer(initialState, function (builder) {\r\n for (var key in finalCaseReducers) {\r\n builder.addCase(key, finalCaseReducers[key]);\r\n }\r\n for (var _i = 0, actionMatchers_1 = actionMatchers; _i < actionMatchers_1.length; _i++) {\r\n var m = actionMatchers_1[_i];\r\n builder.addMatcher(m.matcher, m.reducer);\r\n }\r\n if (defaultCaseReducer) {\r\n builder.addDefaultCase(defaultCaseReducer);\r\n }\r\n });\r\n }\r\n var _reducer;\r\n return {\r\n name: name,\r\n reducer: function (state, action) {\r\n if (!_reducer)\r\n _reducer = buildReducer();\r\n return _reducer(state, action);\r\n },\r\n actions: actionCreators,\r\n caseReducers: sliceCaseReducersByName,\r\n getInitialState: function () {\r\n if (!_reducer)\r\n _reducer = buildReducer();\r\n return _reducer.getInitialState();\r\n }\r\n };\r\n}\r\n// src/entities/entity_state.ts\r\nfunction getInitialEntityState() {\r\n return {\r\n ids: [],\r\n entities: {}\r\n };\r\n}\r\nfunction createInitialStateFactory() {\r\n function getInitialState(additionalState) {\r\n if (additionalState === void 0) { additionalState = {}; }\r\n return Object.assign(getInitialEntityState(), additionalState);\r\n }\r\n return { getInitialState: getInitialState };\r\n}\r\n// src/entities/state_selectors.ts\r\nfunction createSelectorsFactory() {\r\n function getSelectors(selectState) {\r\n var selectIds = function (state) { return state.ids; };\r\n var selectEntities = function (state) { return state.entities; };\r\n var selectAll = createDraftSafeSelector(selectIds, selectEntities, function (ids, entities) { return ids.map(function (id) { return entities[id]; }); });\r\n var selectId = function (_, id) { return id; };\r\n var selectById = function (entities, id) { return entities[id]; };\r\n var selectTotal = createDraftSafeSelector(selectIds, function (ids) { return ids.length; });\r\n if (!selectState) {\r\n return {\r\n selectIds: selectIds,\r\n selectEntities: selectEntities,\r\n selectAll: selectAll,\r\n selectTotal: selectTotal,\r\n selectById: createDraftSafeSelector(selectEntities, selectId, selectById)\r\n };\r\n }\r\n var selectGlobalizedEntities = createDraftSafeSelector(selectState, selectEntities);\r\n return {\r\n selectIds: createDraftSafeSelector(selectState, selectIds),\r\n selectEntities: selectGlobalizedEntities,\r\n selectAll: createDraftSafeSelector(selectState, selectAll),\r\n selectTotal: createDraftSafeSelector(selectState, selectTotal),\r\n selectById: createDraftSafeSelector(selectGlobalizedEntities, selectId, selectById)\r\n };\r\n }\r\n return { getSelectors: getSelectors };\r\n}\r\n// src/entities/state_adapter.ts\r\nimport createNextState3, { isDraft as isDraft3 } from \"immer\";\r\nfunction createSingleArgumentStateOperator(mutator) {\r\n var operator = createStateOperator(function (_, state) { return mutator(state); });\r\n return function operation(state) {\r\n return operator(state, void 0);\r\n };\r\n}\r\nfunction createStateOperator(mutator) {\r\n return function operation(state, arg) {\r\n function isPayloadActionArgument(arg2) {\r\n return isFSA(arg2);\r\n }\r\n var runMutator = function (draft) {\r\n if (isPayloadActionArgument(arg)) {\r\n mutator(arg.payload, draft);\r\n }\r\n else {\r\n mutator(arg, draft);\r\n }\r\n };\r\n if (isDraft3(state)) {\r\n runMutator(state);\r\n return state;\r\n }\r\n else {\r\n return createNextState3(state, runMutator);\r\n }\r\n };\r\n}\r\n// src/entities/utils.ts\r\nfunction selectIdValue(entity, selectId) {\r\n var key = selectId(entity);\r\n if (process.env.NODE_ENV !== \"production\" && key === void 0) {\r\n console.warn(\"The entity passed to the `selectId` implementation returned undefined.\", \"You should probably provide your own `selectId` implementation.\", \"The entity that was passed:\", entity, \"The `selectId` implementation:\", selectId.toString());\r\n }\r\n return key;\r\n}\r\nfunction ensureEntitiesArray(entities) {\r\n if (!Array.isArray(entities)) {\r\n entities = Object.values(entities);\r\n }\r\n return entities;\r\n}\r\nfunction splitAddedUpdatedEntities(newEntities, selectId, state) {\r\n newEntities = ensureEntitiesArray(newEntities);\r\n var added = [];\r\n var updated = [];\r\n for (var _i = 0, newEntities_1 = newEntities; _i < newEntities_1.length; _i++) {\r\n var entity = newEntities_1[_i];\r\n var id = selectIdValue(entity, selectId);\r\n if (id in state.entities) {\r\n updated.push({ id: id, changes: entity });\r\n }\r\n else {\r\n added.push(entity);\r\n }\r\n }\r\n return [added, updated];\r\n}\r\n// src/entities/unsorted_state_adapter.ts\r\nfunction createUnsortedStateAdapter(selectId) {\r\n function addOneMutably(entity, state) {\r\n var key = selectIdValue(entity, selectId);\r\n if (key in state.entities) {\r\n return;\r\n }\r\n state.ids.push(key);\r\n state.entities[key] = entity;\r\n }\r\n function addManyMutably(newEntities, state) {\r\n newEntities = ensureEntitiesArray(newEntities);\r\n for (var _i = 0, newEntities_2 = newEntities; _i < newEntities_2.length; _i++) {\r\n var entity = newEntities_2[_i];\r\n addOneMutably(entity, state);\r\n }\r\n }\r\n function setOneMutably(entity, state) {\r\n var key = selectIdValue(entity, selectId);\r\n if (!(key in state.entities)) {\r\n state.ids.push(key);\r\n }\r\n state.entities[key] = entity;\r\n }\r\n function setManyMutably(newEntities, state) {\r\n newEntities = ensureEntitiesArray(newEntities);\r\n for (var _i = 0, newEntities_3 = newEntities; _i < newEntities_3.length; _i++) {\r\n var entity = newEntities_3[_i];\r\n setOneMutably(entity, state);\r\n }\r\n }\r\n function setAllMutably(newEntities, state) {\r\n newEntities = ensureEntitiesArray(newEntities);\r\n state.ids = [];\r\n state.entities = {};\r\n addManyMutably(newEntities, state);\r\n }\r\n function removeOneMutably(key, state) {\r\n return removeManyMutably([key], state);\r\n }\r\n function removeManyMutably(keys, state) {\r\n var didMutate = false;\r\n keys.forEach(function (key) {\r\n if (key in state.entities) {\r\n delete state.entities[key];\r\n didMutate = true;\r\n }\r\n });\r\n if (didMutate) {\r\n state.ids = state.ids.filter(function (id) { return id in state.entities; });\r\n }\r\n }\r\n function removeAllMutably(state) {\r\n Object.assign(state, {\r\n ids: [],\r\n entities: {}\r\n });\r\n }\r\n function takeNewKey(keys, update, state) {\r\n var original2 = state.entities[update.id];\r\n var updated = Object.assign({}, original2, update.changes);\r\n var newKey = selectIdValue(updated, selectId);\r\n var hasNewKey = newKey !== update.id;\r\n if (hasNewKey) {\r\n keys[update.id] = newKey;\r\n delete state.entities[update.id];\r\n }\r\n state.entities[newKey] = updated;\r\n return hasNewKey;\r\n }\r\n function updateOneMutably(update, state) {\r\n return updateManyMutably([update], state);\r\n }\r\n function updateManyMutably(updates, state) {\r\n var newKeys = {};\r\n var updatesPerEntity = {};\r\n updates.forEach(function (update) {\r\n if (update.id in state.entities) {\r\n updatesPerEntity[update.id] = {\r\n id: update.id,\r\n changes: __spreadValues(__spreadValues({}, updatesPerEntity[update.id] ? updatesPerEntity[update.id].changes : null), update.changes)\r\n };\r\n }\r\n });\r\n updates = Object.values(updatesPerEntity);\r\n var didMutateEntities = updates.length > 0;\r\n if (didMutateEntities) {\r\n var didMutateIds = updates.filter(function (update) { return takeNewKey(newKeys, update, state); }).length > 0;\r\n if (didMutateIds) {\r\n state.ids = Object.keys(state.entities);\r\n }\r\n }\r\n }\r\n function upsertOneMutably(entity, state) {\r\n return upsertManyMutably([entity], state);\r\n }\r\n function upsertManyMutably(newEntities, state) {\r\n var _c = splitAddedUpdatedEntities(newEntities, selectId, state), added = _c[0], updated = _c[1];\r\n updateManyMutably(updated, state);\r\n addManyMutably(added, state);\r\n }\r\n return {\r\n removeAll: createSingleArgumentStateOperator(removeAllMutably),\r\n addOne: createStateOperator(addOneMutably),\r\n addMany: createStateOperator(addManyMutably),\r\n setOne: createStateOperator(setOneMutably),\r\n setMany: createStateOperator(setManyMutably),\r\n setAll: createStateOperator(setAllMutably),\r\n updateOne: createStateOperator(updateOneMutably),\r\n updateMany: createStateOperator(updateManyMutably),\r\n upsertOne: createStateOperator(upsertOneMutably),\r\n upsertMany: createStateOperator(upsertManyMutably),\r\n removeOne: createStateOperator(removeOneMutably),\r\n removeMany: createStateOperator(removeManyMutably)\r\n };\r\n}\r\n// src/entities/sorted_state_adapter.ts\r\nfunction createSortedStateAdapter(selectId, sort) {\r\n var _c = createUnsortedStateAdapter(selectId), removeOne = _c.removeOne, removeMany = _c.removeMany, removeAll = _c.removeAll;\r\n function addOneMutably(entity, state) {\r\n return addManyMutably([entity], state);\r\n }\r\n function addManyMutably(newEntities, state) {\r\n newEntities = ensureEntitiesArray(newEntities);\r\n var models = newEntities.filter(function (model) { return !(selectIdValue(model, selectId) in state.entities); });\r\n if (models.length !== 0) {\r\n merge(models, state);\r\n }\r\n }\r\n function setOneMutably(entity, state) {\r\n return setManyMutably([entity], state);\r\n }\r\n function setManyMutably(newEntities, state) {\r\n newEntities = ensureEntitiesArray(newEntities);\r\n if (newEntities.length !== 0) {\r\n merge(newEntities, state);\r\n }\r\n }\r\n function setAllMutably(newEntities, state) {\r\n newEntities = ensureEntitiesArray(newEntities);\r\n state.entities = {};\r\n state.ids = [];\r\n addManyMutably(newEntities, state);\r\n }\r\n function updateOneMutably(update, state) {\r\n return updateManyMutably([update], state);\r\n }\r\n function updateManyMutably(updates, state) {\r\n var appliedUpdates = false;\r\n for (var _i = 0, updates_1 = updates; _i < updates_1.length; _i++) {\r\n var update = updates_1[_i];\r\n var entity = state.entities[update.id];\r\n if (!entity) {\r\n continue;\r\n }\r\n appliedUpdates = true;\r\n Object.assign(entity, update.changes);\r\n var newId = selectId(entity);\r\n if (update.id !== newId) {\r\n delete state.entities[update.id];\r\n state.entities[newId] = entity;\r\n }\r\n }\r\n if (appliedUpdates) {\r\n resortEntities(state);\r\n }\r\n }\r\n function upsertOneMutably(entity, state) {\r\n return upsertManyMutably([entity], state);\r\n }\r\n function upsertManyMutably(newEntities, state) {\r\n var _c = splitAddedUpdatedEntities(newEntities, selectId, state), added = _c[0], updated = _c[1];\r\n updateManyMutably(updated, state);\r\n addManyMutably(added, state);\r\n }\r\n function areArraysEqual(a, b) {\r\n if (a.length !== b.length) {\r\n return false;\r\n }\r\n for (var i = 0; i < a.length && i < b.length; i++) {\r\n if (a[i] === b[i]) {\r\n continue;\r\n }\r\n return false;\r\n }\r\n return true;\r\n }\r\n function merge(models, state) {\r\n models.forEach(function (model) {\r\n state.entities[selectId(model)] = model;\r\n });\r\n resortEntities(state);\r\n }\r\n function resortEntities(state) {\r\n var allEntities = Object.values(state.entities);\r\n allEntities.sort(sort);\r\n var newSortedIds = allEntities.map(selectId);\r\n var ids = state.ids;\r\n if (!areArraysEqual(ids, newSortedIds)) {\r\n state.ids = newSortedIds;\r\n }\r\n }\r\n return {\r\n removeOne: removeOne,\r\n removeMany: removeMany,\r\n removeAll: removeAll,\r\n addOne: createStateOperator(addOneMutably),\r\n updateOne: createStateOperator(updateOneMutably),\r\n upsertOne: createStateOperator(upsertOneMutably),\r\n setOne: createStateOperator(setOneMutably),\r\n setMany: createStateOperator(setManyMutably),\r\n setAll: createStateOperator(setAllMutably),\r\n addMany: createStateOperator(addManyMutably),\r\n updateMany: createStateOperator(updateManyMutably),\r\n upsertMany: createStateOperator(upsertManyMutably)\r\n };\r\n}\r\n// src/entities/create_adapter.ts\r\nfunction createEntityAdapter(options) {\r\n if (options === void 0) { options = {}; }\r\n var _c = __spreadValues({\r\n sortComparer: false,\r\n selectId: function (instance) { return instance.id; }\r\n }, options), selectId = _c.selectId, sortComparer = _c.sortComparer;\r\n var stateFactory = createInitialStateFactory();\r\n var selectorsFactory = createSelectorsFactory();\r\n var stateAdapter = sortComparer ? createSortedStateAdapter(selectId, sortComparer) : createUnsortedStateAdapter(selectId);\r\n return __spreadValues(__spreadValues(__spreadValues({\r\n selectId: selectId,\r\n sortComparer: sortComparer\r\n }, stateFactory), selectorsFactory), stateAdapter);\r\n}\r\n// src/nanoid.ts\r\nvar urlAlphabet = \"ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW\";\r\nvar nanoid = function (size) {\r\n if (size === void 0) { size = 21; }\r\n var id = \"\";\r\n var i = size;\r\n while (i--) {\r\n id += urlAlphabet[Math.random() * 64 | 0];\r\n }\r\n return id;\r\n};\r\n// src/createAsyncThunk.ts\r\nvar commonProperties = [\r\n \"name\",\r\n \"message\",\r\n \"stack\",\r\n \"code\"\r\n];\r\nvar RejectWithValue = /** @class */ (function () {\r\n function RejectWithValue(payload, meta) {\r\n this.payload = payload;\r\n this.meta = meta;\r\n }\r\n return RejectWithValue;\r\n}());\r\nvar FulfillWithMeta = /** @class */ (function () {\r\n function FulfillWithMeta(payload, meta) {\r\n this.payload = payload;\r\n this.meta = meta;\r\n }\r\n return FulfillWithMeta;\r\n}());\r\nvar miniSerializeError = function (value) {\r\n if (typeof value === \"object\" && value !== null) {\r\n var simpleError = {};\r\n for (var _i = 0, commonProperties_1 = commonProperties; _i < commonProperties_1.length; _i++) {\r\n var property = commonProperties_1[_i];\r\n if (typeof value[property] === \"string\") {\r\n simpleError[property] = value[property];\r\n }\r\n }\r\n return simpleError;\r\n }\r\n return { message: String(value) };\r\n};\r\nvar createAsyncThunk = (function () {\r\n function createAsyncThunk2(typePrefix, payloadCreator, options) {\r\n var fulfilled = createAction(typePrefix + \"/fulfilled\", function (payload, requestId, arg, meta) { return ({\r\n payload: payload,\r\n meta: __spreadProps(__spreadValues({}, meta || {}), {\r\n arg: arg,\r\n requestId: requestId,\r\n requestStatus: \"fulfilled\"\r\n })\r\n }); });\r\n var pending = createAction(typePrefix + \"/pending\", function (requestId, arg, meta) { return ({\r\n payload: void 0,\r\n meta: __spreadProps(__spreadValues({}, meta || {}), {\r\n arg: arg,\r\n requestId: requestId,\r\n requestStatus: \"pending\"\r\n })\r\n }); });\r\n var rejected = createAction(typePrefix + \"/rejected\", function (error, requestId, arg, payload, meta) { return ({\r\n payload: payload,\r\n error: (options && options.serializeError || miniSerializeError)(error || \"Rejected\"),\r\n meta: __spreadProps(__spreadValues({}, meta || {}), {\r\n arg: arg,\r\n requestId: requestId,\r\n rejectedWithValue: !!payload,\r\n requestStatus: \"rejected\",\r\n aborted: (error == null ? void 0 : error.name) === \"AbortError\",\r\n condition: (error == null ? void 0 : error.name) === \"ConditionError\"\r\n })\r\n }); });\r\n var displayedWarning = false;\r\n var AC = typeof AbortController !== \"undefined\" ? AbortController : /** @class */ (function () {\r\n function class_1() {\r\n this.signal = {\r\n aborted: false,\r\n addEventListener: function () {\r\n },\r\n dispatchEvent: function () {\r\n return false;\r\n },\r\n onabort: function () {\r\n },\r\n removeEventListener: function () {\r\n },\r\n reason: void 0,\r\n throwIfAborted: function () {\r\n }\r\n };\r\n }\r\n class_1.prototype.abort = function () {\r\n if (process.env.NODE_ENV !== \"production\") {\r\n if (!displayedWarning) {\r\n displayedWarning = true;\r\n console.info(\"This platform does not implement AbortController. \\nIf you want to use the AbortController to react to `abort` events, please consider importing a polyfill like 'abortcontroller-polyfill/dist/abortcontroller-polyfill-only'.\");\r\n }\r\n }\r\n };\r\n return class_1;\r\n }());\r\n function actionCreator(arg) {\r\n return function (dispatch, getState, extra) {\r\n var requestId = (options == null ? void 0 : options.idGenerator) ? options.idGenerator(arg) : nanoid();\r\n var abortController = new AC();\r\n var abortReason;\r\n var started = false;\r\n function abort(reason) {\r\n abortReason = reason;\r\n abortController.abort();\r\n }\r\n var promise2 = function () {\r\n return __async(this, null, function () {\r\n var _a, _b, finalAction, conditionResult, abortedPromise, err_1, skipDispatch;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n _c.trys.push([0, 4, , 5]);\r\n conditionResult = (_a = options == null ? void 0 : options.condition) == null ? void 0 : _a.call(options, arg, { getState: getState, extra: extra });\r\n if (!isThenable(conditionResult)) return [3 /*break*/, 2];\r\n return [4 /*yield*/, conditionResult];\r\n case 1:\r\n conditionResult = _c.sent();\r\n _c.label = 2;\r\n case 2:\r\n if (conditionResult === false || abortController.signal.aborted) {\r\n throw {\r\n name: \"ConditionError\",\r\n message: \"Aborted due to condition callback returning false.\"\r\n };\r\n }\r\n started = true;\r\n abortedPromise = new Promise(function (_, reject) { return abortController.signal.addEventListener(\"abort\", function () { return reject({\r\n name: \"AbortError\",\r\n message: abortReason || \"Aborted\"\r\n }); }); });\r\n dispatch(pending(requestId, arg, (_b = options == null ? void 0 : options.getPendingMeta) == null ? void 0 : _b.call(options, { requestId: requestId, arg: arg }, { getState: getState, extra: extra })));\r\n return [4 /*yield*/, Promise.race([\r\n abortedPromise,\r\n Promise.resolve(payloadCreator(arg, {\r\n dispatch: dispatch,\r\n getState: getState,\r\n extra: extra,\r\n requestId: requestId,\r\n signal: abortController.signal,\r\n abort: abort,\r\n rejectWithValue: function (value, meta) {\r\n return new RejectWithValue(value, meta);\r\n },\r\n fulfillWithValue: function (value, meta) {\r\n return new FulfillWithMeta(value, meta);\r\n }\r\n })).then(function (result) {\r\n if (result instanceof RejectWithValue) {\r\n throw result;\r\n }\r\n if (result instanceof FulfillWithMeta) {\r\n return fulfilled(result.payload, requestId, arg, result.meta);\r\n }\r\n return fulfilled(result, requestId, arg);\r\n })\r\n ])];\r\n case 3:\r\n finalAction = _c.sent();\r\n return [3 /*break*/, 5];\r\n case 4:\r\n err_1 = _c.sent();\r\n finalAction = err_1 instanceof RejectWithValue ? rejected(null, requestId, arg, err_1.payload, err_1.meta) : rejected(err_1, requestId, arg);\r\n return [3 /*break*/, 5];\r\n case 5:\r\n skipDispatch = options && !options.dispatchConditionRejection && rejected.match(finalAction) && finalAction.meta.condition;\r\n if (!skipDispatch) {\r\n dispatch(finalAction);\r\n }\r\n return [2 /*return*/, finalAction];\r\n }\r\n });\r\n });\r\n }();\r\n return Object.assign(promise2, {\r\n abort: abort,\r\n requestId: requestId,\r\n arg: arg,\r\n unwrap: function () {\r\n return promise2.then(unwrapResult);\r\n }\r\n });\r\n };\r\n }\r\n return Object.assign(actionCreator, {\r\n pending: pending,\r\n rejected: rejected,\r\n fulfilled: fulfilled,\r\n typePrefix: typePrefix\r\n });\r\n }\r\n createAsyncThunk2.withTypes = function () { return createAsyncThunk2; };\r\n return createAsyncThunk2;\r\n})();\r\nfunction unwrapResult(action) {\r\n if (action.meta && action.meta.rejectedWithValue) {\r\n throw action.payload;\r\n }\r\n if (action.error) {\r\n throw action.error;\r\n }\r\n return action.payload;\r\n}\r\nfunction isThenable(value) {\r\n return value !== null && typeof value === \"object\" && typeof value.then === \"function\";\r\n}\r\n// src/matchers.ts\r\nvar matches = function (matcher, action) {\r\n if (hasMatchFunction(matcher)) {\r\n return matcher.match(action);\r\n }\r\n else {\r\n return matcher(action);\r\n }\r\n};\r\nfunction isAnyOf() {\r\n var matchers = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n matchers[_i] = arguments[_i];\r\n }\r\n return function (action) {\r\n return matchers.some(function (matcher) { return matches(matcher, action); });\r\n };\r\n}\r\nfunction isAllOf() {\r\n var matchers = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n matchers[_i] = arguments[_i];\r\n }\r\n return function (action) {\r\n return matchers.every(function (matcher) { return matches(matcher, action); });\r\n };\r\n}\r\nfunction hasExpectedRequestMetadata(action, validStatus) {\r\n if (!action || !action.meta)\r\n return false;\r\n var hasValidRequestId = typeof action.meta.requestId === \"string\";\r\n var hasValidRequestStatus = validStatus.indexOf(action.meta.requestStatus) > -1;\r\n return hasValidRequestId && hasValidRequestStatus;\r\n}\r\nfunction isAsyncThunkArray(a) {\r\n return typeof a[0] === \"function\" && \"pending\" in a[0] && \"fulfilled\" in a[0] && \"rejected\" in a[0];\r\n}\r\nfunction isPending() {\r\n var asyncThunks = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n asyncThunks[_i] = arguments[_i];\r\n }\r\n if (asyncThunks.length === 0) {\r\n return function (action) { return hasExpectedRequestMetadata(action, [\"pending\"]); };\r\n }\r\n if (!isAsyncThunkArray(asyncThunks)) {\r\n return isPending()(asyncThunks[0]);\r\n }\r\n return function (action) {\r\n var matchers = asyncThunks.map(function (asyncThunk) { return asyncThunk.pending; });\r\n var combinedMatcher = isAnyOf.apply(void 0, matchers);\r\n return combinedMatcher(action);\r\n };\r\n}\r\nfunction isRejected() {\r\n var asyncThunks = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n asyncThunks[_i] = arguments[_i];\r\n }\r\n if (asyncThunks.length === 0) {\r\n return function (action) { return hasExpectedRequestMetadata(action, [\"rejected\"]); };\r\n }\r\n if (!isAsyncThunkArray(asyncThunks)) {\r\n return isRejected()(asyncThunks[0]);\r\n }\r\n return function (action) {\r\n var matchers = asyncThunks.map(function (asyncThunk) { return asyncThunk.rejected; });\r\n var combinedMatcher = isAnyOf.apply(void 0, matchers);\r\n return combinedMatcher(action);\r\n };\r\n}\r\nfunction isRejectedWithValue() {\r\n var asyncThunks = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n asyncThunks[_i] = arguments[_i];\r\n }\r\n var hasFlag = function (action) {\r\n return action && action.meta && action.meta.rejectedWithValue;\r\n };\r\n if (asyncThunks.length === 0) {\r\n return function (action) {\r\n var combinedMatcher = isAllOf(isRejected.apply(void 0, asyncThunks), hasFlag);\r\n return combinedMatcher(action);\r\n };\r\n }\r\n if (!isAsyncThunkArray(asyncThunks)) {\r\n return isRejectedWithValue()(asyncThunks[0]);\r\n }\r\n return function (action) {\r\n var combinedMatcher = isAllOf(isRejected.apply(void 0, asyncThunks), hasFlag);\r\n return combinedMatcher(action);\r\n };\r\n}\r\nfunction isFulfilled() {\r\n var asyncThunks = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n asyncThunks[_i] = arguments[_i];\r\n }\r\n if (asyncThunks.length === 0) {\r\n return function (action) { return hasExpectedRequestMetadata(action, [\"fulfilled\"]); };\r\n }\r\n if (!isAsyncThunkArray(asyncThunks)) {\r\n return isFulfilled()(asyncThunks[0]);\r\n }\r\n return function (action) {\r\n var matchers = asyncThunks.map(function (asyncThunk) { return asyncThunk.fulfilled; });\r\n var combinedMatcher = isAnyOf.apply(void 0, matchers);\r\n return combinedMatcher(action);\r\n };\r\n}\r\nfunction isAsyncThunkAction() {\r\n var asyncThunks = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n asyncThunks[_i] = arguments[_i];\r\n }\r\n if (asyncThunks.length === 0) {\r\n return function (action) { return hasExpectedRequestMetadata(action, [\"pending\", \"fulfilled\", \"rejected\"]); };\r\n }\r\n if (!isAsyncThunkArray(asyncThunks)) {\r\n return isAsyncThunkAction()(asyncThunks[0]);\r\n }\r\n return function (action) {\r\n var matchers = [];\r\n for (var _i = 0, asyncThunks_1 = asyncThunks; _i < asyncThunks_1.length; _i++) {\r\n var asyncThunk = asyncThunks_1[_i];\r\n matchers.push(asyncThunk.pending, asyncThunk.rejected, asyncThunk.fulfilled);\r\n }\r\n var combinedMatcher = isAnyOf.apply(void 0, matchers);\r\n return combinedMatcher(action);\r\n };\r\n}\r\n// src/listenerMiddleware/utils.ts\r\nvar assertFunction = function (func, expected) {\r\n if (typeof func !== \"function\") {\r\n throw new TypeError(expected + \" is not a function\");\r\n }\r\n};\r\nvar noop = function () {\r\n};\r\nvar catchRejection = function (promise2, onError) {\r\n if (onError === void 0) { onError = noop; }\r\n promise2.catch(onError);\r\n return promise2;\r\n};\r\nvar addAbortSignalListener = function (abortSignal, callback) {\r\n abortSignal.addEventListener(\"abort\", callback, { once: true });\r\n return function () { return abortSignal.removeEventListener(\"abort\", callback); };\r\n};\r\nvar abortControllerWithReason = function (abortController, reason) {\r\n var signal = abortController.signal;\r\n if (signal.aborted) {\r\n return;\r\n }\r\n if (!(\"reason\" in signal)) {\r\n Object.defineProperty(signal, \"reason\", {\r\n enumerable: true,\r\n value: reason,\r\n configurable: true,\r\n writable: true\r\n });\r\n }\r\n ;\r\n abortController.abort(reason);\r\n};\r\n// src/listenerMiddleware/exceptions.ts\r\nvar task = \"task\";\r\nvar listener = \"listener\";\r\nvar completed = \"completed\";\r\nvar cancelled = \"cancelled\";\r\nvar taskCancelled = \"task-\" + cancelled;\r\nvar taskCompleted = \"task-\" + completed;\r\nvar listenerCancelled = listener + \"-\" + cancelled;\r\nvar listenerCompleted = listener + \"-\" + completed;\r\nvar TaskAbortError = /** @class */ (function () {\r\n function TaskAbortError(code) {\r\n this.code = code;\r\n this.name = \"TaskAbortError\";\r\n this.message = task + \" \" + cancelled + \" (reason: \" + code + \")\";\r\n }\r\n return TaskAbortError;\r\n}());\r\n// src/listenerMiddleware/task.ts\r\nvar validateActive = function (signal) {\r\n if (signal.aborted) {\r\n throw new TaskAbortError(signal.reason);\r\n }\r\n};\r\nfunction raceWithSignal(signal, promise2) {\r\n var cleanup = noop;\r\n return new Promise(function (resolve, reject) {\r\n var notifyRejection = function () { return reject(new TaskAbortError(signal.reason)); };\r\n if (signal.aborted) {\r\n notifyRejection();\r\n return;\r\n }\r\n cleanup = addAbortSignalListener(signal, notifyRejection);\r\n promise2.finally(function () { return cleanup(); }).then(resolve, reject);\r\n }).finally(function () {\r\n cleanup = noop;\r\n });\r\n}\r\nvar runTask = function (task2, cleanUp) { return __async(void 0, null, function () {\r\n var value, error_1;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n _c.trys.push([0, 3, 4, 5]);\r\n return [4 /*yield*/, Promise.resolve()];\r\n case 1:\r\n _c.sent();\r\n return [4 /*yield*/, task2()];\r\n case 2:\r\n value = _c.sent();\r\n return [2 /*return*/, {\r\n status: \"ok\",\r\n value: value\r\n }];\r\n case 3:\r\n error_1 = _c.sent();\r\n return [2 /*return*/, {\r\n status: error_1 instanceof TaskAbortError ? \"cancelled\" : \"rejected\",\r\n error: error_1\r\n }];\r\n case 4:\r\n cleanUp == null ? void 0 : cleanUp();\r\n return [7 /*endfinally*/];\r\n case 5: return [2 /*return*/];\r\n }\r\n });\r\n}); };\r\nvar createPause = function (signal) {\r\n return function (promise2) {\r\n return catchRejection(raceWithSignal(signal, promise2).then(function (output) {\r\n validateActive(signal);\r\n return output;\r\n }));\r\n };\r\n};\r\nvar createDelay = function (signal) {\r\n var pause = createPause(signal);\r\n return function (timeoutMs) {\r\n return pause(new Promise(function (resolve) { return setTimeout(resolve, timeoutMs); }));\r\n };\r\n};\r\n// src/listenerMiddleware/index.ts\r\nvar assign = Object.assign;\r\nvar INTERNAL_NIL_TOKEN = {};\r\nvar alm = \"listenerMiddleware\";\r\nvar createFork = function (parentAbortSignal, parentBlockingPromises) {\r\n var linkControllers = function (controller) { return addAbortSignalListener(parentAbortSignal, function () { return abortControllerWithReason(controller, parentAbortSignal.reason); }); };\r\n return function (taskExecutor, opts) {\r\n assertFunction(taskExecutor, \"taskExecutor\");\r\n var childAbortController = new AbortController();\r\n linkControllers(childAbortController);\r\n var result = runTask(function () { return __async(void 0, null, function () {\r\n var result2;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n validateActive(parentAbortSignal);\r\n validateActive(childAbortController.signal);\r\n return [4 /*yield*/, taskExecutor({\r\n pause: createPause(childAbortController.signal),\r\n delay: createDelay(childAbortController.signal),\r\n signal: childAbortController.signal\r\n })];\r\n case 1:\r\n result2 = _c.sent();\r\n validateActive(childAbortController.signal);\r\n return [2 /*return*/, result2];\r\n }\r\n });\r\n }); }, function () { return abortControllerWithReason(childAbortController, taskCompleted); });\r\n if (opts == null ? void 0 : opts.autoJoin) {\r\n parentBlockingPromises.push(result);\r\n }\r\n return {\r\n result: createPause(parentAbortSignal)(result),\r\n cancel: function () {\r\n abortControllerWithReason(childAbortController, taskCancelled);\r\n }\r\n };\r\n };\r\n};\r\nvar createTakePattern = function (startListening, signal) {\r\n var take = function (predicate, timeout) { return __async(void 0, null, function () {\r\n var unsubscribe, tuplePromise, promises, output;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n validateActive(signal);\r\n unsubscribe = function () {\r\n };\r\n tuplePromise = new Promise(function (resolve, reject) {\r\n var stopListening = startListening({\r\n predicate: predicate,\r\n effect: function (action, listenerApi) {\r\n listenerApi.unsubscribe();\r\n resolve([\r\n action,\r\n listenerApi.getState(),\r\n listenerApi.getOriginalState()\r\n ]);\r\n }\r\n });\r\n unsubscribe = function () {\r\n stopListening();\r\n reject();\r\n };\r\n });\r\n promises = [\r\n tuplePromise\r\n ];\r\n if (timeout != null) {\r\n promises.push(new Promise(function (resolve) { return setTimeout(resolve, timeout, null); }));\r\n }\r\n _c.label = 1;\r\n case 1:\r\n _c.trys.push([1, , 3, 4]);\r\n return [4 /*yield*/, raceWithSignal(signal, Promise.race(promises))];\r\n case 2:\r\n output = _c.sent();\r\n validateActive(signal);\r\n return [2 /*return*/, output];\r\n case 3:\r\n unsubscribe();\r\n return [7 /*endfinally*/];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n }); };\r\n return function (predicate, timeout) { return catchRejection(take(predicate, timeout)); };\r\n};\r\nvar getListenerEntryPropsFrom = function (options) {\r\n var type = options.type, actionCreator = options.actionCreator, matcher = options.matcher, predicate = options.predicate, effect = options.effect;\r\n if (type) {\r\n predicate = createAction(type).match;\r\n }\r\n else if (actionCreator) {\r\n type = actionCreator.type;\r\n predicate = actionCreator.match;\r\n }\r\n else if (matcher) {\r\n predicate = matcher;\r\n }\r\n else if (predicate) {\r\n }\r\n else {\r\n throw new Error(\"Creating or removing a listener requires one of the known fields for matching an action\");\r\n }\r\n assertFunction(effect, \"options.listener\");\r\n return { predicate: predicate, type: type, effect: effect };\r\n};\r\nvar createListenerEntry = function (options) {\r\n var _c = getListenerEntryPropsFrom(options), type = _c.type, predicate = _c.predicate, effect = _c.effect;\r\n var id = nanoid();\r\n var entry = {\r\n id: id,\r\n effect: effect,\r\n type: type,\r\n predicate: predicate,\r\n pending: new Set(),\r\n unsubscribe: function () {\r\n throw new Error(\"Unsubscribe not initialized\");\r\n }\r\n };\r\n return entry;\r\n};\r\nvar cancelActiveListeners = function (entry) {\r\n entry.pending.forEach(function (controller) {\r\n abortControllerWithReason(controller, listenerCancelled);\r\n });\r\n};\r\nvar createClearListenerMiddleware = function (listenerMap) {\r\n return function () {\r\n listenerMap.forEach(cancelActiveListeners);\r\n listenerMap.clear();\r\n };\r\n};\r\nvar safelyNotifyError = function (errorHandler, errorToNotify, errorInfo) {\r\n try {\r\n errorHandler(errorToNotify, errorInfo);\r\n }\r\n catch (errorHandlerError) {\r\n setTimeout(function () {\r\n throw errorHandlerError;\r\n }, 0);\r\n }\r\n};\r\nvar addListener = createAction(alm + \"/add\");\r\nvar clearAllListeners = createAction(alm + \"/removeAll\");\r\nvar removeListener = createAction(alm + \"/remove\");\r\nvar defaultErrorHandler = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n console.error.apply(console, __spreadArray([alm + \"/error\"], args));\r\n};\r\nfunction createListenerMiddleware(middlewareOptions) {\r\n var _this = this;\r\n if (middlewareOptions === void 0) { middlewareOptions = {}; }\r\n var listenerMap = new Map();\r\n var extra = middlewareOptions.extra, _c = middlewareOptions.onError, onError = _c === void 0 ? defaultErrorHandler : _c;\r\n assertFunction(onError, \"onError\");\r\n var insertEntry = function (entry) {\r\n entry.unsubscribe = function () { return listenerMap.delete(entry.id); };\r\n listenerMap.set(entry.id, entry);\r\n return function (cancelOptions) {\r\n entry.unsubscribe();\r\n if (cancelOptions == null ? void 0 : cancelOptions.cancelActive) {\r\n cancelActiveListeners(entry);\r\n }\r\n };\r\n };\r\n var findListenerEntry = function (comparator) {\r\n for (var _i = 0, _c = Array.from(listenerMap.values()); _i < _c.length; _i++) {\r\n var entry = _c[_i];\r\n if (comparator(entry)) {\r\n return entry;\r\n }\r\n }\r\n return void 0;\r\n };\r\n var startListening = function (options) {\r\n var entry = findListenerEntry(function (existingEntry) { return existingEntry.effect === options.effect; });\r\n if (!entry) {\r\n entry = createListenerEntry(options);\r\n }\r\n return insertEntry(entry);\r\n };\r\n var stopListening = function (options) {\r\n var _c = getListenerEntryPropsFrom(options), type = _c.type, effect = _c.effect, predicate = _c.predicate;\r\n var entry = findListenerEntry(function (entry2) {\r\n var matchPredicateOrType = typeof type === \"string\" ? entry2.type === type : entry2.predicate === predicate;\r\n return matchPredicateOrType && entry2.effect === effect;\r\n });\r\n if (entry) {\r\n entry.unsubscribe();\r\n if (options.cancelActive) {\r\n cancelActiveListeners(entry);\r\n }\r\n }\r\n return !!entry;\r\n };\r\n var notifyListener = function (entry, action, api, getOriginalState) { return __async(_this, null, function () {\r\n var internalTaskController, take, autoJoinPromises, listenerError_1;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n internalTaskController = new AbortController();\r\n take = createTakePattern(startListening, internalTaskController.signal);\r\n autoJoinPromises = [];\r\n _c.label = 1;\r\n case 1:\r\n _c.trys.push([1, 3, 4, 6]);\r\n entry.pending.add(internalTaskController);\r\n return [4 /*yield*/, Promise.resolve(entry.effect(action, assign({}, api, {\r\n getOriginalState: getOriginalState,\r\n condition: function (predicate, timeout) { return take(predicate, timeout).then(Boolean); },\r\n take: take,\r\n delay: createDelay(internalTaskController.signal),\r\n pause: createPause(internalTaskController.signal),\r\n extra: extra,\r\n signal: internalTaskController.signal,\r\n fork: createFork(internalTaskController.signal, autoJoinPromises),\r\n unsubscribe: entry.unsubscribe,\r\n subscribe: function () {\r\n listenerMap.set(entry.id, entry);\r\n },\r\n cancelActiveListeners: function () {\r\n entry.pending.forEach(function (controller, _, set) {\r\n if (controller !== internalTaskController) {\r\n abortControllerWithReason(controller, listenerCancelled);\r\n set.delete(controller);\r\n }\r\n });\r\n }\r\n })))];\r\n case 2:\r\n _c.sent();\r\n return [3 /*break*/, 6];\r\n case 3:\r\n listenerError_1 = _c.sent();\r\n if (!(listenerError_1 instanceof TaskAbortError)) {\r\n safelyNotifyError(onError, listenerError_1, {\r\n raisedBy: \"effect\"\r\n });\r\n }\r\n return [3 /*break*/, 6];\r\n case 4: return [4 /*yield*/, Promise.allSettled(autoJoinPromises)];\r\n case 5:\r\n _c.sent();\r\n abortControllerWithReason(internalTaskController, listenerCompleted);\r\n entry.pending.delete(internalTaskController);\r\n return [7 /*endfinally*/];\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n }); };\r\n var clearListenerMiddleware = createClearListenerMiddleware(listenerMap);\r\n var middleware = function (api) { return function (next) { return function (action) {\r\n if (!isAction(action)) {\r\n return next(action);\r\n }\r\n if (addListener.match(action)) {\r\n return startListening(action.payload);\r\n }\r\n if (clearAllListeners.match(action)) {\r\n clearListenerMiddleware();\r\n return;\r\n }\r\n if (removeListener.match(action)) {\r\n return stopListening(action.payload);\r\n }\r\n var originalState = api.getState();\r\n var getOriginalState = function () {\r\n if (originalState === INTERNAL_NIL_TOKEN) {\r\n throw new Error(alm + \": getOriginalState can only be called synchronously\");\r\n }\r\n return originalState;\r\n };\r\n var result;\r\n try {\r\n result = next(action);\r\n if (listenerMap.size > 0) {\r\n var currentState = api.getState();\r\n var listenerEntries = Array.from(listenerMap.values());\r\n for (var _i = 0, listenerEntries_1 = listenerEntries; _i < listenerEntries_1.length; _i++) {\r\n var entry = listenerEntries_1[_i];\r\n var runListener = false;\r\n try {\r\n runListener = entry.predicate(action, currentState, originalState);\r\n }\r\n catch (predicateError) {\r\n runListener = false;\r\n safelyNotifyError(onError, predicateError, {\r\n raisedBy: \"predicate\"\r\n });\r\n }\r\n if (!runListener) {\r\n continue;\r\n }\r\n notifyListener(entry, action, api, getOriginalState);\r\n }\r\n }\r\n }\r\n finally {\r\n originalState = INTERNAL_NIL_TOKEN;\r\n }\r\n return result;\r\n }; }; };\r\n return {\r\n middleware: middleware,\r\n startListening: startListening,\r\n stopListening: stopListening,\r\n clearListeners: clearListenerMiddleware\r\n };\r\n}\r\n// src/autoBatchEnhancer.ts\r\nvar SHOULD_AUTOBATCH = \"RTK_autoBatch\";\r\nvar prepareAutoBatched = function () { return function (payload) {\r\n var _c;\r\n return ({\r\n payload: payload,\r\n meta: (_c = {}, _c[SHOULD_AUTOBATCH] = true, _c)\r\n });\r\n}; };\r\nvar promise;\r\nvar queueMicrotaskShim = typeof queueMicrotask === \"function\" ? queueMicrotask.bind(typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : globalThis) : function (cb) { return (promise || (promise = Promise.resolve())).then(cb).catch(function (err) { return setTimeout(function () {\r\n throw err;\r\n}, 0); }); };\r\nvar createQueueWithTimer = function (timeout) {\r\n return function (notify) {\r\n setTimeout(notify, timeout);\r\n };\r\n};\r\nvar rAF = typeof window !== \"undefined\" && window.requestAnimationFrame ? window.requestAnimationFrame : createQueueWithTimer(10);\r\nvar autoBatchEnhancer = function (options) {\r\n if (options === void 0) { options = { type: \"raf\" }; }\r\n return function (next) { return function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var store = next.apply(void 0, args);\r\n var notifying = true;\r\n var shouldNotifyAtEndOfTick = false;\r\n var notificationQueued = false;\r\n var listeners = new Set();\r\n var queueCallback = options.type === \"tick\" ? queueMicrotaskShim : options.type === \"raf\" ? rAF : options.type === \"callback\" ? options.queueNotification : createQueueWithTimer(options.timeout);\r\n var notifyListeners = function () {\r\n notificationQueued = false;\r\n if (shouldNotifyAtEndOfTick) {\r\n shouldNotifyAtEndOfTick = false;\r\n listeners.forEach(function (l) { return l(); });\r\n }\r\n };\r\n return Object.assign({}, store, {\r\n subscribe: function (listener2) {\r\n var wrappedListener = function () { return notifying && listener2(); };\r\n var unsubscribe = store.subscribe(wrappedListener);\r\n listeners.add(listener2);\r\n return function () {\r\n unsubscribe();\r\n listeners.delete(listener2);\r\n };\r\n },\r\n dispatch: function (action) {\r\n var _a;\r\n try {\r\n notifying = !((_a = action == null ? void 0 : action.meta) == null ? void 0 : _a[SHOULD_AUTOBATCH]);\r\n shouldNotifyAtEndOfTick = !notifying;\r\n if (shouldNotifyAtEndOfTick) {\r\n if (!notificationQueued) {\r\n notificationQueued = true;\r\n queueCallback(notifyListeners);\r\n }\r\n }\r\n return store.dispatch(action);\r\n }\r\n finally {\r\n notifying = true;\r\n }\r\n }\r\n });\r\n }; };\r\n};\r\n// src/index.ts\r\nenableES5();\r\nexport { EnhancerArray, MiddlewareArray, SHOULD_AUTOBATCH, TaskAbortError, addListener, autoBatchEnhancer, clearAllListeners, configureStore, createAction, createActionCreatorInvariantMiddleware, createAsyncThunk, createDraftSafeSelector, createEntityAdapter, createImmutableStateInvariantMiddleware, createListenerMiddleware, default2 as createNextState, createReducer, createSelector2 as createSelector, createSerializableStateInvariantMiddleware, createSlice, current2 as current, findNonSerializableValue, freeze, getDefaultMiddleware, getType, isAction, isActionCreator, isAllOf, isAnyOf, isAsyncThunkAction, isDraft4 as isDraft, isFSA as isFluxStandardAction, isFulfilled, isImmutableDefault, isPending, isPlain, isPlainObject, isRejected, isRejectedWithValue, miniSerializeError, nanoid, original, prepareAutoBatched, removeListener, unwrapResult };\r\n//# sourceMappingURL=redux-toolkit.esm.js.map","/**\n * @remix-run/router v1.13.0\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n/**\n * Actions represent the type of change to a location value.\n */\nvar Action;\n(function (Action) {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Action[\"Pop\"] = \"POP\";\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Action[\"Push\"] = \"PUSH\";\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Action[\"Replace\"] = \"REPLACE\";\n})(Action || (Action = {}));\nconst PopStateEventType = \"popstate\";\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nfunction createMemoryHistory(options) {\n if (options === void 0) {\n options = {};\n }\n let {\n initialEntries = [\"/\"],\n initialIndex,\n v5Compat = false\n } = options;\n let entries; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) => createMemoryLocation(entry, typeof entry === \"string\" ? null : entry.state, index === 0 ? \"default\" : undefined));\n let index = clampIndex(initialIndex == null ? entries.length - 1 : initialIndex);\n let action = Action.Pop;\n let listener = null;\n function clampIndex(n) {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation() {\n return entries[index];\n }\n function createMemoryLocation(to, state, key) {\n if (state === void 0) {\n state = null;\n }\n let location = createLocation(entries ? getCurrentLocation().pathname : \"/\", to, state, key);\n warning(location.pathname.charAt(0) === \"/\", \"relative pathnames are not supported in memory history: \" + JSON.stringify(to));\n return location;\n }\n function createHref(to) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n let history = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\"\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({\n action,\n location: nextLocation,\n delta: 1\n });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({\n action,\n location: nextLocation,\n delta: 0\n });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({\n action,\n location: nextLocation,\n delta\n });\n }\n },\n listen(fn) {\n listener = fn;\n return () => {\n listener = null;\n };\n }\n };\n return history;\n}\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nfunction createBrowserHistory(options) {\n if (options === void 0) {\n options = {};\n }\n function createBrowserLocation(window, globalHistory) {\n let {\n pathname,\n search,\n hash\n } = window.location;\n return createLocation(\"\", {\n pathname,\n search,\n hash\n },\n // state defaults to `null` because `window.history.state` does\n globalHistory.state && globalHistory.state.usr || null, globalHistory.state && globalHistory.state.key || \"default\");\n }\n function createBrowserHref(window, to) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n return getUrlBasedHistory(createBrowserLocation, createBrowserHref, null, options);\n}\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nfunction createHashHistory(options) {\n if (options === void 0) {\n options = {};\n }\n function createHashLocation(window, globalHistory) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\"\n } = parsePath(window.location.hash.substr(1));\n // Hash URL should always have a leading / just like window.location.pathname\n // does, so if an app ends up at a route like /#something then we add a\n // leading slash so all of our path-matching behaves the same as if it would\n // in a browser router. This is particularly important when there exists a\n // root splat route () since that matches internally against\n // \"/*\" and we'd expect /#something to 404 in a hash router app.\n if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n pathname = \"/\" + pathname;\n }\n return createLocation(\"\", {\n pathname,\n search,\n hash\n },\n // state defaults to `null` because `window.history.state` does\n globalHistory.state && globalHistory.state.usr || null, globalHistory.state && globalHistory.state.key || \"default\");\n }\n function createHashHref(window, to) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n function validateHashLocation(location, to) {\n warning(location.pathname.charAt(0) === \"/\", \"relative pathnames are not supported in hash history.push(\" + JSON.stringify(to) + \")\");\n }\n return getUrlBasedHistory(createHashLocation, createHashHref, validateHashLocation, options);\n}\nfunction invariant(value, message) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\nfunction warning(cond, message) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience, so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location, index) {\n return {\n usr: location.state,\n key: location.key,\n idx: index\n };\n}\n/**\n * Creates a Location object with a unique key from the given Path\n */\nfunction createLocation(current, to, state, key) {\n if (state === void 0) {\n state = null;\n }\n let location = _extends({\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\"\n }, typeof to === \"string\" ? parsePath(to) : to, {\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: to && to.key || key || createKey()\n });\n return location;\n}\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nfunction createPath(_ref) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\"\n } = _ref;\n if (search && search !== \"?\") pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\") pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nfunction parsePath(path) {\n let parsedPath = {};\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n if (path) {\n parsedPath.pathname = path;\n }\n }\n return parsedPath;\n}\nfunction getUrlBasedHistory(getLocation, createHref, validateLocation, options) {\n if (options === void 0) {\n options = {};\n }\n let {\n window = document.defaultView,\n v5Compat = false\n } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener = null;\n let index = getIndex();\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState(_extends({}, globalHistory.state, {\n idx: index\n }), \"\");\n }\n function getIndex() {\n let state = globalHistory.state || {\n idx: null\n };\n return state.idx;\n }\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({\n action,\n location: history.location,\n delta\n });\n }\n }\n function push(to, state) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // If the exception is because `state` can't be serialized, let that throw\n // outwards just like a replace call would so the dev knows the cause\n // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps\n // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal\n if (error instanceof DOMException && error.name === \"DataCloneError\") {\n throw error;\n }\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n if (v5Compat && listener) {\n listener({\n action,\n location: history.location,\n delta: 1\n });\n }\n }\n function replace(to, state) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n if (v5Compat && listener) {\n listener({\n action,\n location: history.location,\n delta: 0\n });\n }\n }\n function createURL(to) {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base = window.location.origin !== \"null\" ? window.location.origin : window.location.href;\n let href = typeof to === \"string\" ? to : createPath(to);\n invariant(base, \"No window.location.(origin|href) available to create URL for href: \" + href);\n return new URL(href, base);\n }\n let history = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n }\n };\n return history;\n}\n//#endregion\n\nvar ResultType;\n(function (ResultType) {\n ResultType[\"data\"] = \"data\";\n ResultType[\"deferred\"] = \"deferred\";\n ResultType[\"redirect\"] = \"redirect\";\n ResultType[\"error\"] = \"error\";\n})(ResultType || (ResultType = {}));\nconst immutableRouteKeys = new Set([\"lazy\", \"caseSensitive\", \"path\", \"id\", \"index\", \"children\"]);\nfunction isIndexRoute(route) {\n return route.index === true;\n}\n// Walk the route tree generating unique IDs where necessary, so we are working\n// solely with AgnosticDataRouteObject's within the Router\nfunction convertRoutesToDataRoutes(routes, mapRouteProperties, parentPath, manifest) {\n if (parentPath === void 0) {\n parentPath = [];\n }\n if (manifest === void 0) {\n manifest = {};\n }\n return routes.map((route, index) => {\n let treePath = [...parentPath, index];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(route.index !== true || !route.children, \"Cannot specify children on an index route\");\n invariant(!manifest[id], \"Found a route id collision on id \\\"\" + id + \"\\\". Route \" + \"id's must be globally unique within Data Router usages\");\n if (isIndexRoute(route)) {\n let indexRoute = _extends({}, route, mapRouteProperties(route), {\n id\n });\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute = _extends({}, route, mapRouteProperties(route), {\n id,\n children: undefined\n });\n manifest[id] = pathOrLayoutRoute;\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(route.children, mapRouteProperties, treePath, manifest);\n }\n return pathOrLayoutRoute;\n }\n });\n}\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/utils/match-routes\n */\nfunction matchRoutes(routes, locationArg, basename) {\n if (basename === void 0) {\n basename = \"/\";\n }\n let location = typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n let pathname = stripBasename(location.pathname || \"/\", basename);\n if (pathname == null) {\n return null;\n }\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n matches = matchRouteBranch(branches[i],\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n safelyDecodeURI(pathname));\n }\n return matches;\n}\nfunction convertRouteMatchToUiMatch(match, loaderData) {\n let {\n route,\n pathname,\n params\n } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id],\n handle: route.handle\n };\n}\nfunction flattenRoutes(routes, branches, parentsMeta, parentPath) {\n if (branches === void 0) {\n branches = [];\n }\n if (parentsMeta === void 0) {\n parentsMeta = [];\n }\n if (parentPath === void 0) {\n parentPath = \"\";\n }\n let flattenRoute = (route, index, relativePath) => {\n let meta = {\n relativePath: relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route\n };\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(meta.relativePath.startsWith(parentPath), \"Absolute route path \\\"\" + meta.relativePath + \"\\\" nested under path \" + (\"\\\"\" + parentPath + \"\\\" is not valid. An absolute child route path \") + \"must start with the combined path of all its parent routes.\");\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n // Add the children before adding this route to the array, so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true, \"Index routes must not have child routes. Please remove \" + (\"all child routes from route path \\\"\" + path + \"\\\".\"));\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta\n });\n };\n routes.forEach((route, index) => {\n var _route$path;\n // coarse-grain check for optional params\n if (route.path === \"\" || !((_route$path = route.path) != null && _route$path.includes(\"?\"))) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n return branches;\n}\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path) {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n let [first, ...rest] = segments;\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n let result = [];\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children, so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explode _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(...restExploded.map(subpath => subpath === \"\" ? required : [required, subpath].join(\"/\")));\n // Then, if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n // for absolute paths, ensure `/` instead of empty segment\n return result.map(exploded => path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded);\n}\nfunction rankRouteBranches(branches) {\n branches.sort((a, b) => a.score !== b.score ? b.score - a.score // Higher score first\n : compareIndexes(a.routesMeta.map(meta => meta.childrenIndex), b.routesMeta.map(meta => meta.childrenIndex)));\n}\nconst paramRe = /^:\\w+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = s => s === \"*\";\nfunction computeScore(path, index) {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n if (index) {\n initialScore += indexRouteValue;\n }\n return segments.filter(s => !isSplat(s)).reduce((score, segment) => score + (paramRe.test(segment) ? dynamicSegmentValue : segment === \"\" ? emptySegmentValue : staticSegmentValue), initialScore);\n}\nfunction compareIndexes(a, b) {\n let siblings = a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n return siblings ?\n // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1] :\n // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\nfunction matchRouteBranch(branch, pathname) {\n let {\n routesMeta\n } = branch;\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname = matchedPathname === \"/\" ? pathname : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath({\n path: meta.relativePath,\n caseSensitive: meta.caseSensitive,\n end\n }, remainingPathname);\n if (!match) return null;\n Object.assign(matchedParams, match.params);\n let route = meta.route;\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(joinPaths([matchedPathname, match.pathnameBase])),\n route\n });\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n return matches;\n}\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/utils/generate-path\n */\nfunction generatePath(originalPath, params) {\n if (params === void 0) {\n params = {};\n }\n let path = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(false, \"Route path \\\"\" + path + \"\\\" will be treated as if it were \" + (\"\\\"\" + path.replace(/\\*$/, \"/*\") + \"\\\" because the `*` character must \") + \"always follow a `/` in the pattern. To get rid of this warning, \" + (\"please change the route path to \\\"\" + path.replace(/\\*$/, \"/*\") + \"\\\".\"));\n path = path.replace(/\\*$/, \"/*\");\n }\n // ensure `/` is added at the beginning if the path is absolute\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n const stringify = p => p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n const segments = path.split(/\\/+/).map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n // only apply the splat if it's the last segment\n if (isLastSegment && segment === \"*\") {\n const star = \"*\";\n // Apply the splat\n return stringify(params[star]);\n }\n const keyMatch = segment.match(/^:(\\w+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key];\n invariant(optional === \"?\" || param != null, \"Missing \\\":\" + key + \"\\\" param\");\n return stringify(param);\n }\n // Remove any optional markers from optional static segments\n return segment.replace(/\\?$/g, \"\");\n })\n // Remove empty segments\n .filter(segment => !!segment);\n return prefix + segments.join(\"/\");\n}\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/utils/match-path\n */\nfunction matchPath(pattern, pathname) {\n if (typeof pattern === \"string\") {\n pattern = {\n path: pattern,\n caseSensitive: false,\n end: true\n };\n }\n let [matcher, compiledParams] = compilePath(pattern.path, pattern.caseSensitive, pattern.end);\n let match = pathname.match(matcher);\n if (!match) return null;\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params = compiledParams.reduce((memo, _ref, index) => {\n let {\n paramName,\n isOptional\n } = _ref;\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname.slice(0, matchedPathname.length - splatValue.length).replace(/(.)\\/+$/, \"$1\");\n }\n const value = captureGroups[index];\n if (isOptional && !value) {\n memo[paramName] = undefined;\n } else {\n memo[paramName] = safelyDecodeURIComponent(value || \"\", paramName);\n }\n return memo;\n }, {});\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern\n };\n}\nfunction compilePath(path, caseSensitive, end) {\n if (caseSensitive === void 0) {\n caseSensitive = false;\n }\n if (end === void 0) {\n end = true;\n }\n warning(path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"), \"Route path \\\"\" + path + \"\\\" will be treated as if it were \" + (\"\\\"\" + path.replace(/\\*$/, \"/*\") + \"\\\" because the `*` character must \") + \"always follow a `/` in the pattern. To get rid of this warning, \" + (\"please change the route path to \\\"\" + path.replace(/\\*$/, \"/*\") + \"\\\".\"));\n let params = [];\n let regexpSource = \"^\" + path.replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^${}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(/\\/:(\\w+)(\\?)?/g, (_, paramName, isOptional) => {\n params.push({\n paramName,\n isOptional: isOptional != null\n });\n return isOptional ? \"/?([^\\\\/]+)?\" : \"/([^\\\\/]+)\";\n });\n if (path.endsWith(\"*\")) {\n params.push({\n paramName: \"*\"\n });\n regexpSource += path === \"*\" || path === \"/*\" ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex, so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else ;\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n return [matcher, params];\n}\nfunction safelyDecodeURI(value) {\n try {\n return decodeURI(value);\n } catch (error) {\n warning(false, \"The URL path \\\"\" + value + \"\\\" could not be decoded because it is is a \" + \"malformed URL segment. This is probably due to a bad percent \" + (\"encoding (\" + error + \").\"));\n return value;\n }\n}\nfunction safelyDecodeURIComponent(value, paramName) {\n try {\n return decodeURIComponent(value);\n } catch (error) {\n warning(false, \"The value for the URL param \\\"\" + paramName + \"\\\" will not be decoded because\" + (\" the string \\\"\" + value + \"\\\" is a malformed URL segment. This is probably\") + (\" due to a bad percent encoding (\" + error + \").\"));\n return value;\n }\n}\n/**\n * @private\n */\nfunction stripBasename(pathname, basename) {\n if (basename === \"/\") return pathname;\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\") ? basename.length - 1 : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n return pathname.slice(startIndex) || \"/\";\n}\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/utils/resolve-path\n */\nfunction resolvePath(to, fromPathname) {\n if (fromPathname === void 0) {\n fromPathname = \"/\";\n }\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\"\n } = typeof to === \"string\" ? parsePath(to) : to;\n let pathname = toPathname ? toPathname.startsWith(\"/\") ? toPathname : resolvePathname(toPathname, fromPathname) : fromPathname;\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash)\n };\n}\nfunction resolvePathname(relativePath, fromPathname) {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n relativeSegments.forEach(segment => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\nfunction getInvalidPathError(char, field, dest, path) {\n return \"Cannot include a '\" + char + \"' character in a manually specified \" + (\"`to.\" + field + \"` field [\" + JSON.stringify(path) + \"]. Please separate it out to the \") + (\"`to.\" + dest + \"` field. Alternatively you may provide the full path as \") + \"a string in and the router will parse it for you.\";\n}\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * \n * \n * \n *\n * \n * \n * }> // <-- Does not contribute\n * // <-- Does not contribute\n * \n * \n */\nfunction getPathContributingMatches(matches) {\n return matches.filter((match, index) => index === 0 || match.route.path && match.route.path.length > 0);\n}\n// Return the array of pathnames for the current route matches - used to\n// generate the routePathnames input for resolveTo()\nfunction getResolveToMatches(matches) {\n // Use the full pathname for the leaf match so we include splat values for \".\" links\n return getPathContributingMatches(matches).map((match, idx) => idx === matches.length - 1 ? match.pathname : match.pathnameBase);\n}\n/**\n * @private\n */\nfunction resolveTo(toArg, routePathnames, locationPathname, isPathRelative) {\n if (isPathRelative === void 0) {\n isPathRelative = false;\n }\n let to;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = _extends({}, toArg);\n invariant(!to.pathname || !to.pathname.includes(\"?\"), getInvalidPathError(\"?\", \"pathname\", \"search\", to));\n invariant(!to.pathname || !to.pathname.includes(\"#\"), getInvalidPathError(\"#\", \"pathname\", \"hash\", to));\n invariant(!to.search || !to.search.includes(\"#\"), getInvalidPathError(\"#\", \"search\", \"hash\", to));\n }\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n let from;\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (toPathname == null) {\n from = locationPathname;\n } else if (isPathRelative) {\n let fromSegments = routePathnames[routePathnames.length - 1].replace(/^\\//, \"\").split(\"/\");\n if (toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n // With relative=\"path\", each leading .. segment means \"go up one URL segment\"\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n fromSegments.pop();\n }\n to.pathname = toSegments.join(\"/\");\n }\n from = \"/\" + fromSegments.join(\"/\");\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n if (toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n // With relative=\"route\" (the default), each leading .. segment means\n // \"go up one route\" instead of \"go up one URL segment\". This is a key\n // difference from how works and a major reason we call this a\n // \"to\" value instead of a \"href\".\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n to.pathname = toSegments.join(\"/\");\n }\n // If there are more \"..\" segments than parent routes, resolve relative to\n // the root / URL.\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n let path = resolvePath(to, from);\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash = toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash = (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (!path.pathname.endsWith(\"/\") && (hasExplicitTrailingSlash || hasCurrentTrailingSlash)) {\n path.pathname += \"/\";\n }\n return path;\n}\n/**\n * @private\n */\nfunction getToPathname(to) {\n // Empty strings should be treated the same as / paths\n return to === \"\" || to.pathname === \"\" ? \"/\" : typeof to === \"string\" ? parsePath(to).pathname : to.pathname;\n}\n/**\n * @private\n */\nconst joinPaths = paths => paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n/**\n * @private\n */\nconst normalizePathname = pathname => pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n/**\n * @private\n */\nconst normalizeSearch = search => !search || search === \"?\" ? \"\" : search.startsWith(\"?\") ? search : \"?\" + search;\n/**\n * @private\n */\nconst normalizeHash = hash => !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\nconst json = function json(data, init) {\n if (init === void 0) {\n init = {};\n }\n let responseInit = typeof init === \"number\" ? {\n status: init\n } : init;\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n return new Response(JSON.stringify(data), _extends({}, responseInit, {\n headers\n }));\n};\nclass AbortedDeferredError extends Error {}\nclass DeferredData {\n constructor(data, responseInit) {\n this.pendingKeysSet = new Set();\n this.subscribers = new Set();\n this.deferredKeys = [];\n invariant(data && typeof data === \"object\" && !Array.isArray(data), \"defer() only accepts plain objects\");\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject;\n this.abortPromise = new Promise((_, r) => reject = r);\n this.controller = new AbortController();\n let onAbort = () => reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () => this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n this.data = Object.entries(data).reduce((acc, _ref2) => {\n let [key, value] = _ref2;\n return Object.assign(acc, {\n [key]: this.trackPromise(key, value)\n });\n }, {});\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n this.init = responseInit;\n }\n trackPromise(key, value) {\n if (!(value instanceof Promise)) {\n return value;\n }\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise = Promise.race([value, this.abortPromise]).then(data => this.onSettle(promise, key, undefined, data), error => this.onSettle(promise, key, error));\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n Object.defineProperty(promise, \"_tracked\", {\n get: () => true\n });\n return promise;\n }\n onSettle(promise, key, error, data) {\n if (this.controller.signal.aborted && error instanceof AbortedDeferredError) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", {\n get: () => error\n });\n return Promise.reject(error);\n }\n this.pendingKeysSet.delete(key);\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n // If the promise was resolved/rejected with undefined, we'll throw an error as you\n // should always resolve with a value or null\n if (error === undefined && data === undefined) {\n let undefinedError = new Error(\"Deferred data for key \\\"\" + key + \"\\\" resolved/rejected with `undefined`, \" + \"you must resolve/reject with a value or `null`.\");\n Object.defineProperty(promise, \"_error\", {\n get: () => undefinedError\n });\n this.emit(false, key);\n return Promise.reject(undefinedError);\n }\n if (data === undefined) {\n Object.defineProperty(promise, \"_error\", {\n get: () => error\n });\n this.emit(false, key);\n return Promise.reject(error);\n }\n Object.defineProperty(promise, \"_data\", {\n get: () => data\n });\n this.emit(false, key);\n return data;\n }\n emit(aborted, settledKey) {\n this.subscribers.forEach(subscriber => subscriber(aborted, settledKey));\n }\n subscribe(fn) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n async resolveData(signal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise(resolve => {\n this.subscribe(aborted => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n get unwrappedData() {\n invariant(this.data !== null && this.done, \"Can only unwrap data on initialized and settled deferreds\");\n return Object.entries(this.data).reduce((acc, _ref3) => {\n let [key, value] = _ref3;\n return Object.assign(acc, {\n [key]: unwrapTrackedPromise(value)\n });\n }, {});\n }\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\nfunction isTrackedPromise(value) {\n return value instanceof Promise && value._tracked === true;\n}\nfunction unwrapTrackedPromise(value) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\nconst defer = function defer(data, init) {\n if (init === void 0) {\n init = {};\n }\n let responseInit = typeof init === \"number\" ? {\n status: init\n } : init;\n return new DeferredData(data, responseInit);\n};\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nconst redirect = function redirect(url, init) {\n if (init === void 0) {\n init = 302;\n }\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = {\n status: responseInit\n };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n return new Response(null, _extends({}, responseInit, {\n headers\n }));\n};\n/**\n * A redirect response that will force a document reload to the new location.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nconst redirectDocument = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n return response;\n};\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n *\n * We don't export the class for public use since it's an implementation\n * detail, but we export the interface above so folks can build their own\n * abstractions around instances via isRouteErrorResponse()\n */\nclass ErrorResponseImpl {\n constructor(status, statusText, data, internal) {\n if (internal === void 0) {\n internal = false;\n }\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nfunction isRouteErrorResponse(error) {\n return error != null && typeof error.status === \"number\" && typeof error.statusText === \"string\" && typeof error.internal === \"boolean\" && \"data\" in error;\n}\n\nconst validMutationMethodsArr = [\"post\", \"put\", \"patch\", \"delete\"];\nconst validMutationMethods = new Set(validMutationMethodsArr);\nconst validRequestMethodsArr = [\"get\", ...validMutationMethodsArr];\nconst validRequestMethods = new Set(validRequestMethodsArr);\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\nconst IDLE_NAVIGATION = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined\n};\nconst IDLE_FETCHER = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined\n};\nconst IDLE_BLOCKER = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined\n};\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\nconst defaultMapRouteProperties = route => ({\n hasErrorBoundary: Boolean(route.hasErrorBoundary)\n});\nconst TRANSITIONS_STORAGE_KEY = \"remix-router-transitions\";\n//#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n/**\n * Create a router and listen to history POP navigations\n */\nfunction createRouter(init) {\n const routerWindow = init.window ? init.window : typeof window !== \"undefined\" ? window : undefined;\n const isBrowser = typeof routerWindow !== \"undefined\" && typeof routerWindow.document !== \"undefined\" && typeof routerWindow.document.createElement !== \"undefined\";\n const isServer = !isBrowser;\n invariant(init.routes.length > 0, \"You must provide a non-empty routes array to createRouter\");\n let mapRouteProperties;\n if (init.mapRouteProperties) {\n mapRouteProperties = init.mapRouteProperties;\n } else if (init.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = init.detectErrorBoundary;\n mapRouteProperties = route => ({\n hasErrorBoundary: detectErrorBoundary(route)\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n // Routes keyed by ID\n let manifest = {};\n // Routes in tree format for matching\n let dataRoutes = convertRoutesToDataRoutes(init.routes, mapRouteProperties, undefined, manifest);\n let inFlightDataRoutes;\n let basename = init.basename || \"/\";\n // Config driven behavior flags\n let future = _extends({\n v7_fetcherPersist: false,\n v7_normalizeFormMethod: false,\n v7_prependBasename: false\n }, init.future);\n // Cleanup function for history\n let unlistenHistory = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n let initialErrors = null;\n if (initialMatches == null) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname\n });\n let {\n matches,\n route\n } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = {\n [route.id]: error\n };\n }\n let initialized =\n // All initialMatches need to be loaded before we're ready. If we have lazy\n // functions around still then we'll need to run them in initialize()\n !initialMatches.some(m => m.route.lazy) && (\n // And we have to either have no loaders or have been provided hydrationData\n !initialMatches.some(m => m.route.loader) || init.hydrationData != null);\n let router;\n let state = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: init.hydrationData && init.hydrationData.loaderData || {},\n actionData: init.hydrationData && init.hydrationData.actionData || null,\n errors: init.hydrationData && init.hydrationData.errors || initialErrors,\n fetchers: new Map(),\n blockers: new Map()\n };\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction = Action.Pop;\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n // AbortController for the active navigation\n let pendingNavigationController;\n // Should the current navigation enable document.startViewTransition?\n let pendingViewTransitionEnabled = false;\n // Store applied view transitions so we can apply them on POP\n let appliedViewTransitions = new Map();\n // Cleanup function for persisting applied transitions to sessionStorage\n let removePageHideEventListener = null;\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidator()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes = [];\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads = [];\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n // Fetchers that triggered redirect navigations\n let fetchRedirectIds = new Set();\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n // Ref-count mounted fetchers so we know when it's ok to clean them up\n let activeFetchers = new Map();\n // Fetchers that have requested a delete when using v7_fetcherPersist,\n // they'll be officially removed after they return to idle\n let deletedFetchers = new Set();\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map();\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let ignoreNextHistoryUpdate = false;\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(_ref => {\n let {\n action: historyAction,\n location,\n delta\n } = _ref;\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (ignoreNextHistoryUpdate) {\n ignoreNextHistoryUpdate = false;\n return;\n }\n warning(blockerFunctions.size === 0 || delta != null, \"You are trying to use a blocker on a POP navigation to a location \" + \"that was not created by @remix-run/router. This will fail silently in \" + \"production. This can happen if you are navigating outside the router \" + \"via `window.history.pushState`/`window.location.hash` instead of using \" + \"router navigation APIs. This can also happen if you are using \" + \"createHashRouter and the user manually changes the URL.\");\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction\n });\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n ignoreNextHistoryUpdate = true;\n init.history.go(delta * -1);\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location\n });\n // Re-do the same POP navigation we just blocked\n init.history.go(delta);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey, IDLE_BLOCKER);\n updateState({\n blockers\n });\n }\n });\n return;\n }\n return startNavigation(historyAction, location);\n });\n if (isBrowser) {\n // FIXME: This feels gross. How can we cleanup the lines between\n // scrollRestoration/appliedTransitions persistance?\n restoreAppliedTransitions(routerWindow, appliedViewTransitions);\n let _saveAppliedTransitions = () => persistAppliedTransitions(routerWindow, appliedViewTransitions);\n routerWindow.addEventListener(\"pagehide\", _saveAppliedTransitions);\n removePageHideEventListener = () => routerWindow.removeEventListener(\"pagehide\", _saveAppliedTransitions);\n }\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n // Note we don't do any handling of lazy here. For SPA's it'll get handled\n // in the normal navigation flow. For SSR it's expected that lazy modules are\n // resolved prior to router creation since we can't go into a fallbackElement\n // UI for SSR'd apps\n if (!state.initialized) {\n startNavigation(Action.Pop, state.location);\n }\n return router;\n }\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n if (removePageHideEventListener) {\n removePageHideEventListener();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n // Subscribe to state updates for the router\n function subscribe(fn) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n // Update our state and notify the calling context of the change\n function updateState(newState, opts) {\n if (opts === void 0) {\n opts = {};\n }\n state = _extends({}, state, newState);\n // Prep fetcher cleanup so we can tell the UI which fetcher data entries\n // can be removed\n let completedFetchers = [];\n let deletedFetchersKeys = [];\n if (future.v7_fetcherPersist) {\n state.fetchers.forEach((fetcher, key) => {\n if (fetcher.state === \"idle\") {\n if (deletedFetchers.has(key)) {\n // Unmounted from the UI and can be totally removed\n deletedFetchersKeys.push(key);\n } else {\n // Returned to idle but still mounted in the UI, so semi-remains for\n // revalidations and such\n completedFetchers.push(key);\n }\n }\n });\n }\n // Iterate over a local copy so that if flushSync is used and we end up\n // removing and adding a new subscriber due to the useCallback dependencies,\n // we don't get ourselves into a loop calling the new subscriber immediately\n [...subscribers].forEach(subscriber => subscriber(state, {\n deletedFetchers: deletedFetchersKeys,\n unstable_viewTransitionOpts: opts.viewTransitionOpts,\n unstable_flushSync: opts.flushSync === true\n }));\n // Remove idle fetchers from state since we only care about in-flight fetchers.\n if (future.v7_fetcherPersist) {\n completedFetchers.forEach(key => state.fetchers.delete(key));\n deletedFetchersKeys.forEach(key => deleteFetcher(key));\n }\n }\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(location, newState, _temp) {\n var _location$state, _location$state2;\n let {\n flushSync\n } = _temp === void 0 ? {} : _temp;\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload = state.actionData != null && state.navigation.formMethod != null && isMutationMethod(state.navigation.formMethod) && state.navigation.state === \"loading\" && ((_location$state = location.state) == null ? void 0 : _location$state._isRedirect) !== true;\n let actionData;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData ? mergeLoaderData(state.loaderData, newState.loaderData, newState.matches || [], newState.errors) : state.loaderData;\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n let blockers = state.blockers;\n if (blockers.size > 0) {\n blockers = new Map(blockers);\n blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n }\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset = pendingPreventScrollReset === true || state.navigation.formMethod != null && isMutationMethod(state.navigation.formMethod) && ((_location$state2 = location.state) == null ? void 0 : _location$state2._isRedirect) !== true;\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = undefined;\n }\n if (isUninterruptedRevalidation) ; else if (pendingAction === Action.Pop) ; else if (pendingAction === Action.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === Action.Replace) {\n init.history.replace(location, location.state);\n }\n let viewTransitionOpts;\n // On POP, enable transitions if they were enabled on the original navigation\n if (pendingAction === Action.Pop) {\n // Forward takes precedence so they behave like the original navigation\n let priorPaths = appliedViewTransitions.get(state.location.pathname);\n if (priorPaths && priorPaths.has(location.pathname)) {\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location\n };\n } else if (appliedViewTransitions.has(location.pathname)) {\n // If we don't have a previous forward nav, assume we're popping back to\n // the new location and enable if that location previously enabled\n viewTransitionOpts = {\n currentLocation: location,\n nextLocation: state.location\n };\n }\n } else if (pendingViewTransitionEnabled) {\n // Store the applied transition on PUSH/REPLACE\n let toPaths = appliedViewTransitions.get(state.location.pathname);\n if (toPaths) {\n toPaths.add(location.pathname);\n } else {\n toPaths = new Set([location.pathname]);\n appliedViewTransitions.set(state.location.pathname, toPaths);\n }\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location\n };\n }\n updateState(_extends({}, newState, {\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(location, newState.matches || state.matches),\n preventScrollReset,\n blockers\n }), {\n viewTransitionOpts,\n flushSync: flushSync === true\n });\n // Reset stateful navigation vars\n pendingAction = Action.Pop;\n pendingPreventScrollReset = false;\n pendingViewTransitionEnabled = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n cancelledFetcherLoads = [];\n }\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(to, opts) {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n let normalizedPath = normalizeTo(state.location, state.matches, basename, future.v7_prependBasename, to, opts == null ? void 0 : opts.fromRouteId, opts == null ? void 0 : opts.relative);\n let {\n path,\n submission,\n error\n } = normalizeNavigateOptions(future.v7_normalizeFormMethod, false, normalizedPath, opts);\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = _extends({}, nextLocation, init.history.encodeLocation(nextLocation));\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n let historyAction = Action.Push;\n if (userReplace === true) {\n historyAction = Action.Replace;\n } else if (userReplace === false) ; else if (submission != null && isMutationMethod(submission.formMethod) && submission.formAction === state.location.pathname + state.location.search) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = Action.Replace;\n }\n let preventScrollReset = opts && \"preventScrollReset\" in opts ? opts.preventScrollReset === true : undefined;\n let flushSync = (opts && opts.unstable_flushSync) === true;\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction\n });\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey, IDLE_BLOCKER);\n updateState({\n blockers\n });\n }\n });\n return;\n }\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n enableViewTransition: opts && opts.unstable_viewTransition,\n flushSync\n });\n }\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({\n revalidation: \"loading\"\n });\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true\n });\n return;\n }\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(pendingAction || state.historyAction, state.navigation.location, {\n overrideNavigation: state.navigation\n });\n }\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(historyAction, location, opts) {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation = (opts && opts.startUninterruptedRevalidation) === true;\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(routesToUse, location, basename);\n let flushSync = (opts && opts.flushSync) === true;\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let error = getInternalRouterError(404, {\n pathname: location.pathname\n });\n let {\n matches: notFoundMatches,\n route\n } = getShortCircuitMatches(routesToUse);\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n completeNavigation(location, {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error\n }\n }, {\n flushSync\n });\n return;\n }\n // Short circuit if it's only a hash change and not a revalidation or\n // mutation submission.\n //\n // Ignore on initial page loads because since the initial load will always\n // be \"same hash\". For example, on /page#hash and submit a

\n // which will default to a navigation to /page\n if (state.initialized && !isRevalidationRequired && isHashChangeOnly(state.location, location) && !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))) {\n completeNavigation(location, {\n matches\n }, {\n flushSync\n });\n return;\n }\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(init.history, location, pendingNavigationController.signal, opts && opts.submission);\n let pendingActionData;\n let pendingError;\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingError = {\n [findNearestBoundary(matches).route.id]: opts.pendingError\n };\n } else if (opts && opts.submission && isMutationMethod(opts.submission.formMethod)) {\n // Call action if we received an action submission\n let actionOutput = await handleAction(request, location, opts.submission, matches, {\n replace: opts.replace,\n flushSync\n });\n if (actionOutput.shortCircuited) {\n return;\n }\n pendingActionData = actionOutput.pendingActionData;\n pendingError = actionOutput.pendingActionError;\n loadingNavigation = getLoadingNavigation(location, opts.submission);\n flushSync = false;\n // Create a GET request for the loaders\n request = new Request(request.url, {\n signal: request.signal\n });\n }\n // Call loaders\n let {\n shortCircuited,\n loaderData,\n errors\n } = await handleLoaders(request, location, matches, loadingNavigation, opts && opts.submission, opts && opts.fetcherSubmission, opts && opts.replace, flushSync, pendingActionData, pendingError);\n if (shortCircuited) {\n return;\n }\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n completeNavigation(location, _extends({\n matches\n }, pendingActionData ? {\n actionData: pendingActionData\n } : {}, {\n loaderData,\n errors\n }));\n }\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(request, location, submission, matches, opts) {\n if (opts === void 0) {\n opts = {};\n }\n interruptActiveLoads();\n // Put us in a submitting state\n let navigation = getSubmittingNavigation(location, submission);\n updateState({\n navigation\n }, {\n flushSync: opts.flushSync === true\n });\n // Call our action and get the result\n let result;\n let actionMatch = getTargetMatch(matches, location);\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id\n })\n };\n } else {\n result = await callLoaderOrAction(\"action\", request, actionMatch, matches, manifest, mapRouteProperties, basename);\n if (request.signal.aborted) {\n return {\n shortCircuited: true\n };\n }\n }\n if (isRedirectResult(result)) {\n let replace;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n replace = result.location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(state, result, {\n submission,\n replace\n });\n return {\n shortCircuited: true\n };\n }\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n // By default, all submissions are REPLACE navigations, but if the\n // action threw an error that'll be rendered in an errorElement, we fall\n // back to PUSH so that the user can use the back button to get back to\n // the pre-submission form location to try again\n if ((opts && opts.replace) !== true) {\n pendingAction = Action.Push;\n }\n return {\n // Send back an empty object we can use to clear out any prior actionData\n pendingActionData: {},\n pendingActionError: {\n [boundaryMatch.route.id]: result.error\n }\n };\n }\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, {\n type: \"defer-action\"\n });\n }\n return {\n pendingActionData: {\n [actionMatch.route.id]: result.data\n }\n };\n }\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(request, location, matches, overrideNavigation, submission, fetcherSubmission, replace, flushSync, pendingActionData, pendingError) {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation = overrideNavigation || getLoadingNavigation(location, submission);\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission = submission || fetcherSubmission || getSubmissionFromNavigation(loadingNavigation);\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(init.history, state, matches, activeSubmission, location, isRevalidationRequired, cancelledDeferredRoutes, cancelledFetcherLoads, deletedFetchers, fetchLoadMatches, fetchRedirectIds, routesToUse, basename, pendingActionData, pendingError);\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(routeId => !(matches && matches.some(m => m.route.id === routeId)) || matchesToLoad && matchesToLoad.some(m => m.route.id === routeId));\n pendingNavigationLoadId = ++incrementingLoadId;\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n let updatedFetchers = markFetchRedirectsDone();\n completeNavigation(location, _extends({\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors: pendingError || null\n }, pendingActionData ? {\n actionData: pendingActionData\n } : {}, updatedFetchers ? {\n fetchers: new Map(state.fetchers)\n } : {}), {\n flushSync\n });\n return {\n shortCircuited: true\n };\n }\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n if (!isUninterruptedRevalidation) {\n revalidatingFetchers.forEach(rf => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher = getLoadingFetcher(undefined, fetcher ? fetcher.data : undefined);\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n let actionData = pendingActionData || state.actionData;\n updateState(_extends({\n navigation: loadingNavigation\n }, actionData ? Object.keys(actionData).length === 0 ? {\n actionData: null\n } : {\n actionData\n } : {}, revalidatingFetchers.length > 0 ? {\n fetchers: new Map(state.fetchers)\n } : {}), {\n flushSync\n });\n }\n revalidatingFetchers.forEach(rf => {\n if (fetchControllers.has(rf.key)) {\n abortFetcher(rf.key);\n }\n if (rf.controller) {\n // Fetchers use an independent AbortController so that aborting a fetcher\n // (via deleteFetcher) does not abort the triggering navigation that\n // triggered the revalidation\n fetchControllers.set(rf.key, rf.controller);\n }\n });\n // Proxy navigation abort through to revalidation fetchers\n let abortPendingFetchRevalidations = () => revalidatingFetchers.forEach(f => abortFetcher(f.key));\n if (pendingNavigationController) {\n pendingNavigationController.signal.addEventListener(\"abort\", abortPendingFetchRevalidations);\n }\n let {\n results,\n loaderResults,\n fetcherResults\n } = await callLoadersAndMaybeResolveData(state.matches, matches, matchesToLoad, revalidatingFetchers, request);\n if (request.signal.aborted) {\n return {\n shortCircuited: true\n };\n }\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n if (pendingNavigationController) {\n pendingNavigationController.signal.removeEventListener(\"abort\", abortPendingFetchRevalidations);\n }\n revalidatingFetchers.forEach(rf => fetchControllers.delete(rf.key));\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect(results);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey = revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n await startRedirectNavigation(state, redirect.result, {\n replace\n });\n return {\n shortCircuited: true\n };\n }\n // Process and commit output from loaders\n let {\n loaderData,\n errors\n } = processLoaderData(state, matches, matchesToLoad, loaderResults, pendingError, revalidatingFetchers, fetcherResults, activeDeferreds);\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe(aborted => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n let updatedFetchers = markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n let shouldUpdateFetchers = updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n return _extends({\n loaderData,\n errors\n }, shouldUpdateFetchers ? {\n fetchers: new Map(state.fetchers)\n } : {});\n }\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(key, routeId, href, opts) {\n if (isServer) {\n throw new Error(\"router.fetch() was called during the server render, but it shouldn't be. \" + \"You are likely calling a useFetcher() method in the body of your component. \" + \"Try moving it to a useEffect or a callback.\");\n }\n if (fetchControllers.has(key)) abortFetcher(key);\n let flushSync = (opts && opts.unstable_flushSync) === true;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let normalizedPath = normalizeTo(state.location, state.matches, basename, future.v7_prependBasename, href, routeId, opts == null ? void 0 : opts.relative);\n let matches = matchRoutes(routesToUse, normalizedPath, basename);\n if (!matches) {\n setFetcherError(key, routeId, getInternalRouterError(404, {\n pathname: normalizedPath\n }), {\n flushSync\n });\n return;\n }\n let {\n path,\n submission,\n error\n } = normalizeNavigateOptions(future.v7_normalizeFormMethod, true, normalizedPath, opts);\n if (error) {\n setFetcherError(key, routeId, error, {\n flushSync\n });\n return;\n }\n let match = getTargetMatch(matches, path);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(key, routeId, path, match, matches, flushSync, submission);\n return;\n }\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, {\n routeId,\n path\n });\n handleFetcherLoader(key, routeId, path, match, matches, flushSync, submission);\n }\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(key, routeId, path, match, requestMatches, flushSync, submission) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n if (!match.route.action && !match.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId\n });\n setFetcherError(key, routeId, error, {\n flushSync\n });\n return;\n }\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(key, getSubmittingFetcher(submission, existingFetcher), {\n flushSync\n });\n // Call the action for the fetcher\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(init.history, path, abortController.signal, submission);\n fetchControllers.set(key, abortController);\n let originatingLoadId = incrementingLoadId;\n let actionResult = await callLoaderOrAction(\"action\", fetchRequest, match, requestMatches, manifest, mapRouteProperties, basename);\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n if (deletedFetchers.has(key)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our action started, so that\n // should take precedence over this redirect navigation. We already\n // set isRevalidationRequired so all loaders for the new route should\n // fire unless opted out via shouldRevalidate\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n updateFetcherState(key, getLoadingFetcher(submission));\n return startRedirectNavigation(state, actionResult, {\n fetcherSubmission: submission\n });\n }\n }\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, {\n type: \"defer-action\"\n });\n }\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(init.history, nextLocation, abortController.signal);\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches = state.navigation.state !== \"idle\" ? matchRoutes(routesToUse, state.navigation.location, basename) : state.matches;\n invariant(matches, \"Didn't find any matches after fetcher action\");\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n state.fetchers.set(key, loadFetcher);\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(init.history, state, matches, submission, nextLocation, isRevalidationRequired, cancelledDeferredRoutes, cancelledFetcherLoads, deletedFetchers, fetchLoadMatches, fetchRedirectIds, routesToUse, basename, {\n [match.route.id]: actionResult.data\n }, undefined // No need to send through errors since we short circuit above\n );\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers.filter(rf => rf.key !== key).forEach(rf => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher = getLoadingFetcher(undefined, existingFetcher ? existingFetcher.data : undefined);\n state.fetchers.set(staleKey, revalidatingFetcher);\n if (fetchControllers.has(staleKey)) {\n abortFetcher(staleKey);\n }\n if (rf.controller) {\n fetchControllers.set(staleKey, rf.controller);\n }\n });\n updateState({\n fetchers: new Map(state.fetchers)\n });\n let abortPendingFetchRevalidations = () => revalidatingFetchers.forEach(rf => abortFetcher(rf.key));\n abortController.signal.addEventListener(\"abort\", abortPendingFetchRevalidations);\n let {\n results,\n loaderResults,\n fetcherResults\n } = await callLoadersAndMaybeResolveData(state.matches, matches, matchesToLoad, revalidatingFetchers, revalidationRequest);\n if (abortController.signal.aborted) {\n return;\n }\n abortController.signal.removeEventListener(\"abort\", abortPendingFetchRevalidations);\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach(r => fetchControllers.delete(r.key));\n let redirect = findRedirect(results);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey = revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n return startRedirectNavigation(state, redirect.result);\n }\n // Process and commit output from loaders\n let {\n loaderData,\n errors\n } = processLoaderData(state, state.matches, matchesToLoad, loaderResults, undefined, revalidatingFetchers, fetcherResults, activeDeferreds);\n // Since we let revalidations complete even if the submitting fetcher was\n // deleted, only put it back to idle if it hasn't been deleted\n if (state.fetchers.has(key)) {\n let doneFetcher = getDoneFetcher(actionResult.data);\n state.fetchers.set(key, doneFetcher);\n }\n abortStaleFetchLoads(loadId);\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (state.navigation.state === \"loading\" && loadId > pendingNavigationLoadId) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers)\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(state.loaderData, loaderData, matches, errors),\n fetchers: new Map(state.fetchers)\n });\n isRevalidationRequired = false;\n }\n }\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(key, routeId, path, match, matches, flushSync, submission) {\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(key, getLoadingFetcher(submission, existingFetcher ? existingFetcher.data : undefined), {\n flushSync\n });\n // Call the loader for this fetcher route match\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(init.history, path, abortController.signal);\n fetchControllers.set(key, abortController);\n let originatingLoadId = incrementingLoadId;\n let result = await callLoaderOrAction(\"loader\", fetchRequest, match, matches, manifest, mapRouteProperties, basename);\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result = (await resolveDeferredData(result, fetchRequest.signal, true)) || result;\n }\n // We can delete this so long as we weren't aborted by our our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n if (fetchRequest.signal.aborted) {\n return;\n }\n if (deletedFetchers.has(key)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our loader started, so that\n // should take precedence over this redirect navigation\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n await startRedirectNavigation(state, result);\n return;\n }\n }\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n setFetcherError(key, routeId, result.error);\n return;\n }\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n // Put the fetcher back into an idle state\n updateFetcherState(key, getDoneFetcher(result.data));\n }\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(state, redirect, _temp2) {\n let {\n submission,\n fetcherSubmission,\n replace\n } = _temp2 === void 0 ? {} : _temp2;\n if (redirect.revalidate) {\n isRevalidationRequired = true;\n }\n let redirectLocation = createLocation(state.location, redirect.location, {\n _isRedirect: true\n });\n invariant(redirectLocation, \"Expected a location on the redirect navigation\");\n if (isBrowser) {\n let isDocumentReload = false;\n if (redirect.reloadDocument) {\n // Hard reload if the response contained X-Remix-Reload-Document\n isDocumentReload = true;\n } else if (ABSOLUTE_URL_REGEX.test(redirect.location)) {\n const url = init.history.createURL(redirect.location);\n isDocumentReload =\n // Hard reload if it's an absolute URL to a new origin\n url.origin !== routerWindow.location.origin ||\n // Hard reload if it's an absolute URL that does not match our basename\n stripBasename(url.pathname, basename) == null;\n }\n if (isDocumentReload) {\n if (replace) {\n routerWindow.location.replace(redirect.location);\n } else {\n routerWindow.location.assign(redirect.location);\n }\n return;\n }\n }\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n let redirectHistoryAction = replace === true ? Action.Replace : Action.Push;\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let {\n formMethod,\n formAction,\n formEncType\n } = state.navigation;\n if (!submission && !fetcherSubmission && formMethod && formAction && formEncType) {\n submission = getSubmissionFromNavigation(state.navigation);\n }\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n let activeSubmission = submission || fetcherSubmission;\n if (redirectPreserveMethodStatusCodes.has(redirect.status) && activeSubmission && isMutationMethod(activeSubmission.formMethod)) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: _extends({}, activeSubmission, {\n formAction: redirect.location\n }),\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset\n });\n } else {\n // If we have a navigation submission, we will preserve it through the\n // redirect navigation\n let overrideNavigation = getLoadingNavigation(redirectLocation, submission);\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation,\n // Send fetcher submissions through for shouldRevalidate\n fetcherSubmission,\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset\n });\n }\n }\n async function callLoadersAndMaybeResolveData(currentMatches, matches, matchesToLoad, fetchersToLoad, request) {\n // Call all navigation loaders and revalidating fetcher loaders in parallel,\n // then slice off the results into separate arrays so we can handle them\n // accordingly\n let results = await Promise.all([...matchesToLoad.map(match => callLoaderOrAction(\"loader\", request, match, matches, manifest, mapRouteProperties, basename)), ...fetchersToLoad.map(f => {\n if (f.matches && f.match && f.controller) {\n return callLoaderOrAction(\"loader\", createClientSideRequest(init.history, f.path, f.controller.signal), f.match, f.matches, manifest, mapRouteProperties, basename);\n } else {\n let error = {\n type: ResultType.error,\n error: getInternalRouterError(404, {\n pathname: f.path\n })\n };\n return error;\n }\n })]);\n let loaderResults = results.slice(0, matchesToLoad.length);\n let fetcherResults = results.slice(matchesToLoad.length);\n await Promise.all([resolveDeferredResults(currentMatches, matchesToLoad, loaderResults, loaderResults.map(() => request.signal), false, state.loaderData), resolveDeferredResults(currentMatches, fetchersToLoad.map(f => f.match), fetcherResults, fetchersToLoad.map(f => f.controller ? f.controller.signal : null), true)]);\n return {\n results,\n loaderResults,\n fetcherResults\n };\n }\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.push(key);\n abortFetcher(key);\n }\n });\n }\n function updateFetcherState(key, fetcher, opts) {\n if (opts === void 0) {\n opts = {};\n }\n state.fetchers.set(key, fetcher);\n updateState({\n fetchers: new Map(state.fetchers)\n }, {\n flushSync: (opts && opts.flushSync) === true\n });\n }\n function setFetcherError(key, routeId, error, opts) {\n if (opts === void 0) {\n opts = {};\n }\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState({\n errors: {\n [boundaryMatch.route.id]: error\n },\n fetchers: new Map(state.fetchers)\n }, {\n flushSync: (opts && opts.flushSync) === true\n });\n }\n function getFetcher(key) {\n if (future.v7_fetcherPersist) {\n activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);\n // If this fetcher was previously marked for deletion, unmark it since we\n // have a new instance\n if (deletedFetchers.has(key)) {\n deletedFetchers.delete(key);\n }\n }\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n function deleteFetcher(key) {\n let fetcher = state.fetchers.get(key);\n // Don't abort the controller if this is a deletion of a fetcher.submit()\n // in it's loading phase since - we don't want to abort the corresponding\n // revalidation and want them to complete and land\n if (fetchControllers.has(key) && !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))) {\n abortFetcher(key);\n }\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n deletedFetchers.delete(key);\n state.fetchers.delete(key);\n }\n function deleteFetcherAndUpdateState(key) {\n if (future.v7_fetcherPersist) {\n let count = (activeFetchers.get(key) || 0) - 1;\n if (count <= 0) {\n activeFetchers.delete(key);\n deletedFetchers.add(key);\n } else {\n activeFetchers.set(key, count);\n }\n } else {\n deleteFetcher(key);\n }\n updateState({\n fetchers: new Map(state.fetchers)\n });\n }\n function abortFetcher(key) {\n let controller = fetchControllers.get(key);\n invariant(controller, \"Expected fetch controller: \" + key);\n controller.abort();\n fetchControllers.delete(key);\n }\n function markFetchersDone(keys) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher = getDoneFetcher(fetcher.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n function markFetchRedirectsDone() {\n let doneKeys = [];\n let updatedFetchers = false;\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, \"Expected fetcher: \" + key);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n updatedFetchers = true;\n }\n }\n markFetchersDone(doneKeys);\n return updatedFetchers;\n }\n function abortStaleFetchLoads(landedId) {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, \"Expected fetcher: \" + key);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n function getBlocker(key, fn) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n return blocker;\n }\n function deleteBlocker(key) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key, newBlocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(blocker.state === \"unblocked\" && newBlocker.state === \"blocked\" || blocker.state === \"blocked\" && newBlocker.state === \"blocked\" || blocker.state === \"blocked\" && newBlocker.state === \"proceeding\" || blocker.state === \"blocked\" && newBlocker.state === \"unblocked\" || blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\", \"Invalid blocker state transition: \" + blocker.state + \" -> \" + newBlocker.state);\n let blockers = new Map(state.blockers);\n blockers.set(key, newBlocker);\n updateState({\n blockers\n });\n }\n function shouldBlockNavigation(_ref2) {\n let {\n currentLocation,\n nextLocation,\n historyAction\n } = _ref2;\n if (blockerFunctions.size === 0) {\n return;\n }\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({\n currentLocation,\n nextLocation,\n historyAction\n })) {\n return blockerKey;\n }\n }\n function cancelActiveDeferreds(predicate) {\n let cancelledRouteIds = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the component\n function enableScrollRestoration(positions, getPosition, getKey) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || null;\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered \n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({\n restoreScrollPosition: y\n });\n }\n }\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n function getScrollKey(location, matches) {\n if (getScrollRestorationKey) {\n let key = getScrollRestorationKey(location, matches.map(m => convertRouteMatchToUiMatch(m, state.loaderData)));\n return key || location.key;\n }\n return location.key;\n }\n function saveScrollPosition(location, matches) {\n if (savedScrollPositions && getScrollPosition) {\n let key = getScrollKey(location, matches);\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n function getSavedScrollPosition(location, matches) {\n if (savedScrollPositions) {\n let key = getScrollKey(location, matches);\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n function _internalSetRoutes(newRoutes) {\n manifest = {};\n inFlightDataRoutes = convertRoutesToDataRoutes(newRoutes, mapRouteProperties, undefined, manifest);\n }\n router = {\n get basename() {\n return basename;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n get window() {\n return routerWindow;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: to => init.history.createHref(to),\n encodeLocation: to => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher: deleteFetcherAndUpdateState,\n dispose,\n getBlocker,\n deleteBlocker,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes\n };\n return router;\n}\n//#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\nconst UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\nfunction createStaticHandler(routes, opts) {\n invariant(routes.length > 0, \"You must provide a non-empty routes array to createStaticHandler\");\n let manifest = {};\n let basename = (opts ? opts.basename : null) || \"/\";\n let mapRouteProperties;\n if (opts != null && opts.mapRouteProperties) {\n mapRouteProperties = opts.mapRouteProperties;\n } else if (opts != null && opts.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = opts.detectErrorBoundary;\n mapRouteProperties = route => ({\n hasErrorBoundary: detectErrorBoundary(route)\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n let dataRoutes = convertRoutesToDataRoutes(routes, mapRouteProperties, undefined, manifest);\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n */\n async function query(request, _temp3) {\n let {\n requestContext\n } = _temp3 === void 0 ? {} : _temp3;\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\") {\n let error = getInternalRouterError(405, {\n method\n });\n let {\n matches: methodNotAllowedMatches,\n route\n } = getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, {\n pathname: location.pathname\n });\n let {\n matches: notFoundMatches,\n route\n } = getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null\n };\n }\n let result = await queryImpl(request, location, matches, requestContext);\n if (isResponse(result)) {\n return result;\n }\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return _extends({\n location,\n basename\n }, result);\n }\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n */\n async function queryRoute(request, _temp4) {\n let {\n routeId,\n requestContext\n } = _temp4 === void 0 ? {} : _temp4;\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n throw getInternalRouterError(405, {\n method\n });\n } else if (!matches) {\n throw getInternalRouterError(404, {\n pathname: location.pathname\n });\n }\n let match = routeId ? matches.find(m => m.route.id === routeId) : getTargetMatch(matches, location);\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, {\n pathname: location.pathname\n });\n }\n let result = await queryImpl(request, location, matches, requestContext, match);\n if (isResponse(result)) {\n return result;\n }\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n // Pick off the right state value to return\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n if (result.loaderData) {\n var _result$activeDeferre;\n let data = Object.values(result.loaderData)[0];\n if ((_result$activeDeferre = result.activeDeferreds) != null && _result$activeDeferre[match.route.id]) {\n data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n }\n return data;\n }\n return undefined;\n }\n async function queryImpl(request, location, matches, requestContext, routeMatch) {\n invariant(request.signal, \"query()/queryRoute() requests must contain an AbortController signal\");\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(request, matches, routeMatch || getTargetMatch(matches, location), requestContext, routeMatch != null);\n return result;\n }\n let result = await loadRouteData(request, matches, requestContext, routeMatch);\n return isResponse(result) ? result : _extends({}, result, {\n actionData: null,\n actionHeaders: {}\n });\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction, we throw\n // it to bail out and then return or throw here based on whether the user\n // returned or threw\n if (isQueryRouteResponse(e)) {\n if (e.type === ResultType.error) {\n throw e.response;\n }\n return e.response;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n async function submit(request, matches, actionMatch, requestContext, isRouteRequest) {\n let result;\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error\n };\n } else {\n result = await callLoaderOrAction(\"action\", request, actionMatch, matches, manifest, mapRouteProperties, basename, {\n isStaticRequest: true,\n isRouteRequest,\n requestContext\n });\n if (request.signal.aborted) {\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(method + \"() call aborted: \" + request.method + \" \" + request.url);\n }\n }\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.status,\n headers: {\n Location: result.location\n }\n });\n }\n if (isDeferredResult(result)) {\n let error = getInternalRouterError(400, {\n type: \"defer-action\"\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error\n };\n }\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: {\n [actionMatch.route.id]: result.data\n },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null\n };\n }\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n let context = await loadRouteData(request, matches, requestContext, undefined, {\n [boundaryMatch.route.id]: result.error\n });\n // action status codes take precedence over loader status codes\n return _extends({}, context, {\n statusCode: isRouteErrorResponse(result.error) ? result.error.status : 500,\n actionData: null,\n actionHeaders: _extends({}, result.headers ? {\n [actionMatch.route.id]: result.headers\n } : {})\n });\n }\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal\n });\n let context = await loadRouteData(loaderRequest, matches, requestContext);\n return _extends({}, context, result.statusCode ? {\n statusCode: result.statusCode\n } : {}, {\n actionData: {\n [actionMatch.route.id]: result.data\n },\n actionHeaders: _extends({}, result.headers ? {\n [actionMatch.route.id]: result.headers\n } : {})\n });\n }\n async function loadRouteData(request, matches, requestContext, routeMatch, pendingActionError) {\n let isRouteRequest = routeMatch != null;\n // Short circuit if we have no loaders to run (queryRoute())\n if (isRouteRequest && !(routeMatch != null && routeMatch.route.loader) && !(routeMatch != null && routeMatch.route.lazy)) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch == null ? void 0 : routeMatch.route.id\n });\n }\n let requestMatches = routeMatch ? [routeMatch] : getLoaderMatchesUntilBoundary(matches, Object.keys(pendingActionError || {})[0]);\n let matchesToLoad = requestMatches.filter(m => m.route.loader || m.route.lazy);\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce((acc, m) => Object.assign(acc, {\n [m.route.id]: null\n }), {}),\n errors: pendingActionError || null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null\n };\n }\n let results = await Promise.all([...matchesToLoad.map(match => callLoaderOrAction(\"loader\", request, match, matches, manifest, mapRouteProperties, basename, {\n isStaticRequest: true,\n isRouteRequest,\n requestContext\n }))]);\n if (request.signal.aborted) {\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(method + \"() call aborted: \" + request.method + \" \" + request.url);\n }\n // Process and commit output from loaders\n let activeDeferreds = new Map();\n let context = processRouteLoaderData(matches, matchesToLoad, results, pendingActionError, activeDeferreds);\n // Add a null for any non-loader matches for proper revalidation on the client\n let executedLoaders = new Set(matchesToLoad.map(match => match.route.id));\n matches.forEach(match => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n return _extends({}, context, {\n matches,\n activeDeferreds: activeDeferreds.size > 0 ? Object.fromEntries(activeDeferreds.entries()) : null\n });\n }\n return {\n dataRoutes,\n query,\n queryRoute\n };\n}\n//#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nfunction getStaticContextFromError(routes, context, error) {\n let newContext = _extends({}, context, {\n statusCode: 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error\n }\n });\n return newContext;\n}\nfunction isSubmissionNavigation(opts) {\n return opts != null && (\"formData\" in opts && opts.formData != null || \"body\" in opts && opts.body !== undefined);\n}\nfunction normalizeTo(location, matches, basename, prependBasename, to, fromRouteId, relative) {\n let contextualMatches;\n let activeRouteMatch;\n if (fromRouteId) {\n // Grab matches up to the calling route so our route-relative logic is\n // relative to the correct source route\n contextualMatches = [];\n for (let match of matches) {\n contextualMatches.push(match);\n if (match.route.id === fromRouteId) {\n activeRouteMatch = match;\n break;\n }\n }\n } else {\n contextualMatches = matches;\n activeRouteMatch = matches[matches.length - 1];\n }\n // Resolve the relative path\n let path = resolveTo(to ? to : \".\", getResolveToMatches(contextualMatches), stripBasename(location.pathname, basename) || location.pathname, relative === \"path\");\n // When `to` is not specified we inherit search/hash from the current\n // location, unlike when to=\".\" and we just inherit the path.\n // See https://github.com/remix-run/remix/issues/927\n if (to == null) {\n path.search = location.search;\n path.hash = location.hash;\n }\n // Add an ?index param for matched index routes if we don't already have one\n if ((to == null || to === \"\" || to === \".\") && activeRouteMatch && activeRouteMatch.route.index && !hasNakedIndexQuery(path.search)) {\n path.search = path.search ? path.search.replace(/^\\?/, \"?index&\") : \"?index\";\n }\n // If we're operating within a basename, prepend it to the pathname. If\n // this is a root navigation, then just use the raw basename which allows\n // the basename to have full control over the presence of a trailing slash\n // on root actions\n if (prependBasename && basename !== \"/\") {\n path.pathname = path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n return createPath(path);\n}\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(normalizeFormMethod, isFetcher, path, opts) {\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return {\n path\n };\n }\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, {\n method: opts.formMethod\n })\n };\n }\n let getInvalidBodyError = () => ({\n path,\n error: getInternalRouterError(400, {\n type: \"invalid-body\"\n })\n });\n // Create a Submission on non-GET navigations\n let rawFormMethod = opts.formMethod || \"get\";\n let formMethod = normalizeFormMethod ? rawFormMethod.toUpperCase() : rawFormMethod.toLowerCase();\n let formAction = stripHashFromPath(path);\n if (opts.body !== undefined) {\n if (opts.formEncType === \"text/plain\") {\n // text only support POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n let text = typeof opts.body === \"string\" ? opts.body : opts.body instanceof FormData || opts.body instanceof URLSearchParams ?\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n Array.from(opts.body.entries()).reduce((acc, _ref3) => {\n let [name, value] = _ref3;\n return \"\" + acc + name + \"=\" + value + \"\\n\";\n }, \"\") : String(opts.body);\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json: undefined,\n text\n }\n };\n } else if (opts.formEncType === \"application/json\") {\n // json only supports POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n try {\n let json = typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json,\n text: undefined\n }\n };\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n }\n invariant(typeof FormData === \"function\", \"FormData is not available in this environment\");\n let searchParams;\n let formData;\n if (opts.formData) {\n searchParams = convertFormDataToSearchParams(opts.formData);\n formData = opts.formData;\n } else if (opts.body instanceof FormData) {\n searchParams = convertFormDataToSearchParams(opts.body);\n formData = opts.body;\n } else if (opts.body instanceof URLSearchParams) {\n searchParams = opts.body;\n formData = convertSearchParamsToFormData(searchParams);\n } else if (opts.body == null) {\n searchParams = new URLSearchParams();\n formData = new FormData();\n } else {\n try {\n searchParams = new URLSearchParams(opts.body);\n formData = convertSearchParamsToFormData(searchParams);\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n let submission = {\n formMethod,\n formAction,\n formEncType: opts && opts.formEncType || \"application/x-www-form-urlencoded\",\n formData,\n json: undefined,\n text: undefined\n };\n if (isMutationMethod(submission.formMethod)) {\n return {\n path,\n submission\n };\n }\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n // On GET navigation submissions we can drop the ?index param from the\n // resulting location since all loaders will run. But fetcher GET submissions\n // only run a single loader so we need to preserve any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = \"?\" + searchParams;\n return {\n path: createPath(parsedPath),\n submission\n };\n}\n// Filter out all routes below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(matches, boundaryId) {\n let boundaryMatches = matches;\n if (boundaryId) {\n let index = matches.findIndex(m => m.route.id === boundaryId);\n if (index >= 0) {\n boundaryMatches = matches.slice(0, index);\n }\n }\n return boundaryMatches;\n}\nfunction getMatchesToLoad(history, state, matches, submission, location, isRevalidationRequired, cancelledDeferredRoutes, cancelledFetcherLoads, deletedFetchers, fetchLoadMatches, fetchRedirectIds, routesToUse, basename, pendingActionData, pendingError) {\n let actionResult = pendingError ? Object.values(pendingError)[0] : pendingActionData ? Object.values(pendingActionData)[0] : undefined;\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryId = pendingError ? Object.keys(pendingError)[0] : undefined;\n let boundaryMatches = getLoaderMatchesUntilBoundary(matches, boundaryId);\n let navigationMatches = boundaryMatches.filter((match, index) => {\n if (match.route.lazy) {\n // We haven't loaded this route yet so we don't know if it's got a loader!\n return true;\n }\n if (match.route.loader == null) {\n return false;\n }\n // Always call the loader on new route instances and pending defer cancellations\n if (isNewLoader(state.loaderData, state.matches[index], match) || cancelledDeferredRoutes.some(id => id === match.route.id)) {\n return true;\n }\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n return shouldRevalidateLoader(match, _extends({\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params\n }, submission, {\n actionResult,\n defaultShouldRevalidate:\n // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n isRevalidationRequired ||\n // Clicked the same link, resubmitted a GET form\n currentUrl.pathname + currentUrl.search === nextUrl.pathname + nextUrl.search ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search || isNewRouteInstance(currentRouteMatch, nextRouteMatch)\n }));\n });\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers = [];\n fetchLoadMatches.forEach((f, key) => {\n // Don't revalidate if fetcher won't be present in the subsequent render\n if (!matches.some(m => m.route.id === f.routeId) || deletedFetchers.has(key)) {\n return;\n }\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n // If the fetcher path no longer matches, push it in with null matches so\n // we can trigger a 404 in callLoadersAndMaybeResolveData. Note this is\n // currently only a use-case for Remix HMR where the route tree can change\n // at runtime and remove a route previously loaded via a fetcher\n if (!fetcherMatches) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: null,\n match: null,\n controller: null\n });\n return;\n }\n // Revalidating fetchers are decoupled from the route matches since they\n // load from a static href. They revalidate based on explicit revalidation\n // (submission, useRevalidator, or X-Remix-Revalidate)\n let fetcher = state.fetchers.get(key);\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n let shouldRevalidate = false;\n if (fetchRedirectIds.has(key)) {\n // Never trigger a revalidation of an actively redirecting fetcher\n shouldRevalidate = false;\n } else if (cancelledFetcherLoads.includes(key)) {\n // Always revalidate if the fetcher was cancelled\n shouldRevalidate = true;\n } else if (fetcher && fetcher.state !== \"idle\" && fetcher.data === undefined) {\n // If the fetcher hasn't ever completed loading yet, then this isn't a\n // revalidation, it would just be a brand new load if an explicit\n // revalidation is required\n shouldRevalidate = isRevalidationRequired;\n } else {\n // Otherwise fall back on any user-defined shouldRevalidate, defaulting\n // to explicit revalidations only\n shouldRevalidate = shouldRevalidateLoader(fetcherMatch, _extends({\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params\n }, submission, {\n actionResult,\n defaultShouldRevalidate: isRevalidationRequired\n }));\n }\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: fetcherMatches,\n match: fetcherMatch,\n controller: new AbortController()\n });\n }\n });\n return [navigationMatches, revalidatingFetchers];\n}\nfunction isNewLoader(currentLoaderData, currentMatch, match) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\nfunction isNewRouteInstance(currentMatch, match) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n currentPath != null && currentPath.endsWith(\"*\") && currentMatch.params[\"*\"] !== match.params[\"*\"]\n );\n}\nfunction shouldRevalidateLoader(loaderMatch, arg) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n return arg.defaultShouldRevalidate;\n}\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(route, mapRouteProperties, manifest) {\n if (!route.lazy) {\n return;\n }\n let lazyRoute = await route.lazy();\n // If the lazy route function was executed and removed by another parallel\n // call then we can return - first lazy() to finish wins because the return\n // value of lazy is expected to be static\n if (!route.lazy) {\n return;\n }\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n // Update the route in place. This should be safe because there's no way\n // we could yet be sitting on this route as we can't get there without\n // resolving lazy() first.\n //\n // This is different than the HMR \"update\" use-case where we may actively be\n // on the route being updated. The main concern boils down to \"does this\n // mutation affect any ongoing navigations or any current state.matches\n // values?\". If not, it should be safe to update in place.\n let routeUpdates = {};\n for (let lazyRouteProperty in lazyRoute) {\n let staticRouteValue = routeToUpdate[lazyRouteProperty];\n let isPropertyStaticallyDefined = staticRouteValue !== undefined &&\n // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n warning(!isPropertyStaticallyDefined, \"Route \\\"\" + routeToUpdate.id + \"\\\" has a static property \\\"\" + lazyRouteProperty + \"\\\" \" + \"defined but its lazy function is also returning a value for this property. \" + (\"The lazy route property \\\"\" + lazyRouteProperty + \"\\\" will be ignored.\"));\n if (!isPropertyStaticallyDefined && !immutableRouteKeys.has(lazyRouteProperty)) {\n routeUpdates[lazyRouteProperty] = lazyRoute[lazyRouteProperty];\n }\n }\n // Mutate the route with the provided updates. Do this first so we pass\n // the updated version to mapRouteProperties\n Object.assign(routeToUpdate, routeUpdates);\n // Mutate the `hasErrorBoundary` property on the route based on the route\n // updates and remove the `lazy` function so we don't resolve the lazy\n // route again.\n Object.assign(routeToUpdate, _extends({}, mapRouteProperties(routeToUpdate), {\n lazy: undefined\n }));\n}\nasync function callLoaderOrAction(type, request, match, matches, manifest, mapRouteProperties, basename, opts) {\n if (opts === void 0) {\n opts = {};\n }\n let resultType;\n let result;\n let onReject;\n let runHandler = handler => {\n // Setup a promise we can race against so that abort signals short circuit\n let reject;\n let abortPromise = new Promise((_, r) => reject = r);\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n return Promise.race([handler({\n request,\n params: match.params,\n context: opts.requestContext\n }), abortPromise]);\n };\n try {\n let handler = match.route[type];\n if (match.route.lazy) {\n if (handler) {\n // Run statically defined handler in parallel with lazy()\n let handlerError;\n let values = await Promise.all([\n // If the handler throws, don't let it immediately bubble out,\n // since we need to let the lazy() execution finish so we know if this\n // route has a boundary that can handle the error\n runHandler(handler).catch(e => {\n handlerError = e;\n }), loadLazyRouteModule(match.route, mapRouteProperties, manifest)]);\n if (handlerError) {\n throw handlerError;\n }\n result = values[0];\n } else {\n // Load lazy route module, then run any returned handler\n await loadLazyRouteModule(match.route, mapRouteProperties, manifest);\n handler = match.route[type];\n if (handler) {\n // Handler still run even if we got interrupted to maintain consistency\n // with un-abortable behavior of handler execution on non-lazy or\n // previously-lazy-loaded routes\n result = await runHandler(handler);\n } else if (type === \"action\") {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(405, {\n method: request.method,\n pathname,\n routeId: match.route.id\n });\n } else {\n // lazy() route has no loader to run. Short circuit here so we don't\n // hit the invariant below that errors on returning undefined.\n return {\n type: ResultType.data,\n data: undefined\n };\n }\n }\n } else if (!handler) {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(404, {\n pathname\n });\n } else {\n result = await runHandler(handler);\n }\n invariant(result !== undefined, \"You defined \" + (type === \"action\" ? \"an action\" : \"a loader\") + \" for route \" + (\"\\\"\" + match.route.id + \"\\\" but didn't return anything from your `\" + type + \"` \") + \"function. Please return a value or `null`.\");\n } catch (e) {\n resultType = ResultType.error;\n result = e;\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n if (isResponse(result)) {\n let status = result.status;\n // Process redirects\n if (redirectStatusCodes.has(status)) {\n let location = result.headers.get(\"Location\");\n invariant(location, \"Redirects returned/thrown from loaders/actions must have a Location header\");\n // Support relative routing in internal redirects\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n location = normalizeTo(new URL(request.url), matches.slice(0, matches.indexOf(match) + 1), basename, true, location);\n } else if (!opts.isStaticRequest) {\n // Strip off the protocol+origin for same-origin + same-basename absolute\n // redirects. If this is a static request, we can let it go back to the\n // browser as-is\n let currentUrl = new URL(request.url);\n let url = location.startsWith(\"//\") ? new URL(currentUrl.protocol + location) : new URL(location);\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n location = url.pathname + url.search + url.hash;\n }\n }\n // Don't process redirects in the router during static requests requests.\n // Instead, throw the Response and let the server handle it with an HTTP\n // redirect. We also update the Location header in place in this flow so\n // basename and relative routing is taken into account\n if (opts.isStaticRequest) {\n result.headers.set(\"Location\", location);\n throw result;\n }\n return {\n type: ResultType.redirect,\n status,\n location,\n revalidate: result.headers.get(\"X-Remix-Revalidate\") !== null,\n reloadDocument: result.headers.get(\"X-Remix-Reload-Document\") !== null\n };\n }\n // For SSR single-route requests, we want to hand Responses back directly\n // without unwrapping. We do this with the QueryRouteResponse wrapper\n // interface so we can know whether it was returned or thrown\n if (opts.isRouteRequest) {\n let queryRouteResponse = {\n type: resultType === ResultType.error ? ResultType.error : ResultType.data,\n response: result\n };\n throw queryRouteResponse;\n }\n let data;\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n data = await result.json();\n } else {\n data = await result.text();\n }\n if (resultType === ResultType.error) {\n return {\n type: resultType,\n error: new ErrorResponseImpl(status, result.statusText, data),\n headers: result.headers\n };\n }\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers\n };\n }\n if (resultType === ResultType.error) {\n return {\n type: resultType,\n error: result\n };\n }\n if (isDeferredData(result)) {\n var _result$init, _result$init2;\n return {\n type: ResultType.deferred,\n deferredData: result,\n statusCode: (_result$init = result.init) == null ? void 0 : _result$init.status,\n headers: ((_result$init2 = result.init) == null ? void 0 : _result$init2.headers) && new Headers(result.init.headers)\n };\n }\n return {\n type: ResultType.data,\n data: result\n };\n}\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(history, location, signal, submission) {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init = {\n signal\n };\n if (submission && isMutationMethod(submission.formMethod)) {\n let {\n formMethod,\n formEncType\n } = submission;\n // Didn't think we needed this but it turns out unlike other methods, patch\n // won't be properly normalized to uppercase and results in a 405 error.\n // See: https://fetch.spec.whatwg.org/#concept-method\n init.method = formMethod.toUpperCase();\n if (formEncType === \"application/json\") {\n init.headers = new Headers({\n \"Content-Type\": formEncType\n });\n init.body = JSON.stringify(submission.json);\n } else if (formEncType === \"text/plain\") {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.text;\n } else if (formEncType === \"application/x-www-form-urlencoded\" && submission.formData) {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = convertFormDataToSearchParams(submission.formData);\n } else {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.formData;\n }\n }\n return new Request(url, init);\n}\nfunction convertFormDataToSearchParams(formData) {\n let searchParams = new URLSearchParams();\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, typeof value === \"string\" ? value : value.name);\n }\n return searchParams;\n}\nfunction convertSearchParamsToFormData(searchParams) {\n let formData = new FormData();\n for (let [key, value] of searchParams.entries()) {\n formData.append(key, value);\n }\n return formData;\n}\nfunction processRouteLoaderData(matches, matchesToLoad, results, pendingError, activeDeferreds) {\n // Fill in loaderData/errors from our loaders\n let loaderData = {};\n let errors = null;\n let statusCode;\n let foundError = false;\n let loaderHeaders = {};\n // Process loader results into state.loaderData/state.errors\n results.forEach((result, index) => {\n let id = matchesToLoad[index].route.id;\n invariant(!isRedirectResult(result), \"Cannot handle redirect results in processLoaderData\");\n if (isErrorResult(result)) {\n // Look upwards from the matched route for the closest ancestor\n // error boundary, defaulting to the root match\n let boundaryMatch = findNearestBoundary(matches, id);\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError) {\n error = Object.values(pendingError)[0];\n pendingError = undefined;\n }\n errors = errors || {};\n // Prefer higher error values if lower errors bubble to the same boundary\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error) ? result.error.status : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n if (isDeferredResult(result)) {\n activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n } else {\n loaderData[id] = result.data;\n }\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (result.statusCode != null && result.statusCode !== 200 && !foundError) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n });\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError) {\n errors = pendingError;\n loaderData[Object.keys(pendingError)[0]] = undefined;\n }\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders\n };\n}\nfunction processLoaderData(state, matches, matchesToLoad, results, pendingError, revalidatingFetchers, fetcherResults, activeDeferreds) {\n let {\n loaderData,\n errors\n } = processRouteLoaderData(matches, matchesToLoad, results, pendingError, activeDeferreds);\n // Process results from our revalidating fetchers\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let {\n key,\n match,\n controller\n } = revalidatingFetchers[index];\n invariant(fetcherResults !== undefined && fetcherResults[index] !== undefined, \"Did not find corresponding fetcher result\");\n let result = fetcherResults[index];\n // Process fetcher non-redirect errors\n if (controller && controller.signal.aborted) {\n // Nothing to do for aborted fetchers\n continue;\n } else if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match == null ? void 0 : match.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = _extends({}, errors, {\n [boundaryMatch.route.id]: result.error\n });\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n return {\n loaderData,\n errors\n };\n}\nfunction mergeLoaderData(loaderData, newLoaderData, matches, errors) {\n let mergedLoaderData = _extends({}, newLoaderData);\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n }\n } else if (loaderData[id] !== undefined && match.route.loader) {\n // Preserve existing keys not included in newLoaderData and where a loader\n // wasn't removed by HMR\n mergedLoaderData[id] = loaderData[id];\n }\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(matches, routeId) {\n let eligibleMatches = routeId ? matches.slice(0, matches.findIndex(m => m.route.id === routeId) + 1) : [...matches];\n return eligibleMatches.reverse().find(m => m.route.hasErrorBoundary === true) || matches[0];\n}\nfunction getShortCircuitMatches(routes) {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route = routes.length === 1 ? routes[0] : routes.find(r => r.index || !r.path || r.path === \"/\") || {\n id: \"__shim-error-route__\"\n };\n return {\n matches: [{\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route\n }],\n route\n };\n}\nfunction getInternalRouterError(status, _temp5) {\n let {\n pathname,\n routeId,\n method,\n type\n } = _temp5 === void 0 ? {} : _temp5;\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n if (status === 400) {\n statusText = \"Bad Request\";\n if (method && pathname && routeId) {\n errorMessage = \"You made a \" + method + \" request to \\\"\" + pathname + \"\\\" but \" + (\"did not provide a `loader` for route \\\"\" + routeId + \"\\\", \") + \"so there is no way to handle the request.\";\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n } else if (type === \"invalid-body\") {\n errorMessage = \"Unable to encode submission body\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = \"Route \\\"\" + routeId + \"\\\" does not match URL \\\"\" + pathname + \"\\\"\";\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = \"No route matches URL \\\"\" + pathname + \"\\\"\";\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage = \"You made a \" + method.toUpperCase() + \" request to \\\"\" + pathname + \"\\\" but \" + (\"did not provide an `action` for route \\\"\" + routeId + \"\\\", \") + \"so there is no way to handle the request.\";\n } else if (method) {\n errorMessage = \"Invalid request method \\\"\" + method.toUpperCase() + \"\\\"\";\n }\n }\n return new ErrorResponseImpl(status || 500, statusText, new Error(errorMessage), true);\n}\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(results) {\n for (let i = results.length - 1; i >= 0; i--) {\n let result = results[i];\n if (isRedirectResult(result)) {\n return {\n result,\n idx: i\n };\n }\n }\n}\nfunction stripHashFromPath(path) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath(_extends({}, parsedPath, {\n hash: \"\"\n }));\n}\nfunction isHashChangeOnly(a, b) {\n if (a.pathname !== b.pathname || a.search !== b.search) {\n return false;\n }\n if (a.hash === \"\") {\n // /page -> /page#hash\n return b.hash !== \"\";\n } else if (a.hash === b.hash) {\n // /page#hash -> /page#hash\n return true;\n } else if (b.hash !== \"\") {\n // /page#hash -> /page#other\n return true;\n }\n // If the hash is removed the browser will re-perform a request to the server\n // /page#hash -> /page\n return false;\n}\nfunction isDeferredResult(result) {\n return result.type === ResultType.deferred;\n}\nfunction isErrorResult(result) {\n return result.type === ResultType.error;\n}\nfunction isRedirectResult(result) {\n return (result && result.type) === ResultType.redirect;\n}\nfunction isDeferredData(value) {\n let deferred = value;\n return deferred && typeof deferred === \"object\" && typeof deferred.data === \"object\" && typeof deferred.subscribe === \"function\" && typeof deferred.cancel === \"function\" && typeof deferred.resolveData === \"function\";\n}\nfunction isResponse(value) {\n return value != null && typeof value.status === \"number\" && typeof value.statusText === \"string\" && typeof value.headers === \"object\" && typeof value.body !== \"undefined\";\n}\nfunction isRedirectResponse(result) {\n if (!isResponse(result)) {\n return false;\n }\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\nfunction isQueryRouteResponse(obj) {\n return obj && isResponse(obj.response) && (obj.type === ResultType.data || obj.type === ResultType.error);\n}\nfunction isValidMethod(method) {\n return validRequestMethods.has(method.toLowerCase());\n}\nfunction isMutationMethod(method) {\n return validMutationMethods.has(method.toLowerCase());\n}\nasync function resolveDeferredResults(currentMatches, matchesToLoad, results, signals, isFetcher, currentLoaderData) {\n for (let index = 0; index < results.length; index++) {\n let result = results[index];\n let match = matchesToLoad[index];\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n let currentMatch = currentMatches.find(m => m.route.id === match.route.id);\n let isRevalidatingLoader = currentMatch != null && !isNewRouteInstance(currentMatch, match) && (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n if (isDeferredResult(result) && (isFetcher || isRevalidatingLoader)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n let signal = signals[index];\n invariant(signal, \"Expected an AbortSignal for revalidating fetcher deferred result\");\n await resolveDeferredData(result, signal, isFetcher).then(result => {\n if (result) {\n results[index] = result || results[index];\n }\n });\n }\n }\n}\nasync function resolveDeferredData(result, signal, unwrap) {\n if (unwrap === void 0) {\n unwrap = false;\n }\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e\n };\n }\n }\n return {\n type: ResultType.data,\n data: result.deferredData.data\n };\n}\nfunction hasNakedIndexQuery(search) {\n return new URLSearchParams(search).getAll(\"index\").some(v => v === \"\");\n}\nfunction getTargetMatch(matches, location) {\n let search = typeof location === \"string\" ? parsePath(location).search : location.search;\n if (matches[matches.length - 1].route.index && hasNakedIndexQuery(search || \"\")) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\nfunction getSubmissionFromNavigation(navigation) {\n let {\n formMethod,\n formAction,\n formEncType,\n text,\n formData,\n json\n } = navigation;\n if (!formMethod || !formAction || !formEncType) {\n return;\n }\n if (text != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json: undefined,\n text\n };\n } else if (formData != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData,\n json: undefined,\n text: undefined\n };\n } else if (json !== undefined) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json,\n text: undefined\n };\n }\n}\nfunction getLoadingNavigation(location, submission) {\n if (submission) {\n let navigation = {\n state: \"loading\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text\n };\n return navigation;\n } else {\n let navigation = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined\n };\n return navigation;\n }\n}\nfunction getSubmittingNavigation(location, submission) {\n let navigation = {\n state: \"submitting\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text\n };\n return navigation;\n}\nfunction getLoadingFetcher(submission, data) {\n if (submission) {\n let fetcher = {\n state: \"loading\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data\n };\n return fetcher;\n } else {\n let fetcher = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data\n };\n return fetcher;\n }\n}\nfunction getSubmittingFetcher(submission, existingFetcher) {\n let fetcher = {\n state: \"submitting\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data: existingFetcher ? existingFetcher.data : undefined\n };\n return fetcher;\n}\nfunction getDoneFetcher(data) {\n let fetcher = {\n state: \"idle\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data\n };\n return fetcher;\n}\nfunction restoreAppliedTransitions(_window, transitions) {\n try {\n let sessionPositions = _window.sessionStorage.getItem(TRANSITIONS_STORAGE_KEY);\n if (sessionPositions) {\n let json = JSON.parse(sessionPositions);\n for (let [k, v] of Object.entries(json || {})) {\n if (v && Array.isArray(v)) {\n transitions.set(k, new Set(v || []));\n }\n }\n }\n } catch (e) {\n // no-op, use default empty object\n }\n}\nfunction persistAppliedTransitions(_window, transitions) {\n if (transitions.size > 0) {\n let json = {};\n for (let [k, v] of transitions) {\n json[k] = [...v];\n }\n try {\n _window.sessionStorage.setItem(TRANSITIONS_STORAGE_KEY, JSON.stringify(json));\n } catch (error) {\n warning(false, \"Failed to save applied view transitions in sessionStorage (\" + error + \").\");\n }\n }\n}\n//#endregion\n\nexport { AbortedDeferredError, Action, IDLE_BLOCKER, IDLE_FETCHER, IDLE_NAVIGATION, UNSAFE_DEFERRED_SYMBOL, DeferredData as UNSAFE_DeferredData, ErrorResponseImpl as UNSAFE_ErrorResponseImpl, convertRouteMatchToUiMatch as UNSAFE_convertRouteMatchToUiMatch, convertRoutesToDataRoutes as UNSAFE_convertRoutesToDataRoutes, getResolveToMatches as UNSAFE_getResolveToMatches, invariant as UNSAFE_invariant, warning as UNSAFE_warning, createBrowserHistory, createHashHistory, createMemoryHistory, createPath, createRouter, createStaticHandler, defer, generatePath, getStaticContextFromError, getToPathname, isDeferredData, isRouteErrorResponse, joinPaths, json, matchPath, matchRoutes, normalizePathname, parsePath, redirect, redirectDocument, resolvePath, resolveTo, stripBasename };\n//# sourceMappingURL=router.js.map\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n let r0 = Math.round(start / step), r1 = Math.round(stop / step);\n if (r0 * step < start) ++r0;\n if (r1 * step > stop) --r1;\n ticks = new Array(n = r1 - r0 + 1);\n while (++i < n) ticks[i] = (r0 + i) * step;\n } else {\n step = -step;\n let r0 = Math.round(start * step), r1 = Math.round(stop * step);\n if (r0 / step < start) ++r0;\n if (r1 / step > stop) --r1;\n ticks = new Array(n = r1 - r0 + 1);\n while (++i < n) ticks[i] = (r0 + i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return sign + output;\n}","export default function assign(target, object) {\n if (target == null) {\n throw new TypeError('assign requires that input parameter not be null or undefined');\n }\n for (var property in object) {\n if (Object.prototype.hasOwnProperty.call(object, property)) {\n ;\n target[property] = object[property];\n }\n }\n return target;\n}","import assign from \"../assign/index.js\";\nexport default function cloneObject(object) {\n return assign({}, object);\n}","import defaultLocale from \"../../locale/en-US/index.js\";\nexport default defaultLocale;","var defaultOptions = {};\nexport function getDefaultOptions() {\n return defaultOptions;\n}\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\nvar formatters = {\n // Year\n y: function y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function M(date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function d(date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function a(date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n case 'aaa':\n return dayPeriodEnumValue;\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function h(date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function H(date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function m(date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function s(date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function S(date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","var dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n};\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n};\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n var dateTimeFormat;\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n var year = getUTCWeekYear(dirtyDate, options);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, options);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function getUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, options);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, options);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n }\n}","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","var roundingMap = {\n ceil: Math.ceil,\n round: Math.round,\n floor: Math.floor,\n trunc: function trunc(value) {\n return value < 0 ? Math.ceil(value) : Math.floor(value);\n } // Math.trunc is not supported by IE\n};\n\nvar defaultRoundingMethod = 'trunc';\nexport function getRoundingMethod(method) {\n return method ? roundingMap[method] : roundingMap[defaultRoundingMethod];\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function setUTCDay(dirtyDate, dirtyDay, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(2, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = toInteger(dirtyDay);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nexport default function setUTCISODay(dirtyDate, dirtyDay) {\n requiredArgs(2, arguments);\n var day = toInteger(dirtyDay);\n if (day % 7 === 0) {\n day = day - 7;\n }\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCISOWeek from \"../getUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function setUTCISOWeek(dirtyDate, dirtyISOWeek) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var isoWeek = toInteger(dirtyISOWeek);\n var diff = getUTCISOWeek(date) - isoWeek;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCWeek from \"../getUTCWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function setUTCWeek(dirtyDate, dirtyWeek, options) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var week = toInteger(dirtyWeek);\n var diff = getUTCWeek(date, options) - week;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n var number = Number(dirtyNumber);\n if (isNaN(number)) {\n return number;\n }\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport addDays from \"../addDays/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name add\n * @category Common Helpers\n * @summary Add the specified years, months, weeks, days, hours, minutes and seconds to the given date.\n *\n * @description\n * Add the specified years, months, weeks, days, hours, minutes and seconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Duration} duration - the object with years, months, weeks, days, hours, minutes and seconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n *\n * | Key | Description |\n * |----------------|------------------------------------|\n * | years | Amount of years to be added |\n * | months | Amount of months to be added |\n * | weeks | Amount of weeks to be added |\n * | days | Amount of days to be added |\n * | hours | Amount of hours to be added |\n * | minutes | Amount of minutes to be added |\n * | seconds | Amount of seconds to be added |\n *\n * All values default to 0\n *\n * @returns {Date} the new date with the seconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add the following duration to 1 September 2014, 10:19:50\n * const result = add(new Date(2014, 8, 1, 10, 19, 50), {\n * years: 2,\n * months: 9,\n * weeks: 1,\n * days: 7,\n * hours: 5,\n * minutes: 9,\n * seconds: 30,\n * })\n * //=> Thu Jun 15 2017 15:29:20\n */\nexport default function add(dirtyDate, duration) {\n requiredArgs(2, arguments);\n if (!duration || _typeof(duration) !== 'object') return new Date(NaN);\n var years = duration.years ? toInteger(duration.years) : 0;\n var months = duration.months ? toInteger(duration.months) : 0;\n var weeks = duration.weeks ? toInteger(duration.weeks) : 0;\n var days = duration.days ? toInteger(duration.days) : 0;\n var hours = duration.hours ? toInteger(duration.hours) : 0;\n var minutes = duration.minutes ? toInteger(duration.minutes) : 0;\n var seconds = duration.seconds ? toInteger(duration.seconds) : 0;\n\n // Add years and months\n var date = toDate(dirtyDate);\n var dateWithMonths = months || years ? addMonths(date, months + years * 12) : date;\n\n // Add weeks and days\n var dateWithDays = days || weeks ? addDays(dateWithMonths, days + weeks * 7) : dateWithMonths;\n\n // Add days, hours, minutes and seconds\n var minutesToAdd = minutes + hours * 60;\n var secondsToAdd = seconds + minutesToAdd * 60;\n var msToAdd = secondsToAdd * 1000;\n var finalDate = new Date(dateWithDays.getTime() + msToAdd);\n return finalDate;\n}","import isWeekend from \"../isWeekend/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport isSunday from \"../isSunday/index.js\";\nimport isSaturday from \"../isSaturday/index.js\";\n/**\n * @name addBusinessDays\n * @category Day Helpers\n * @summary Add the specified number of business days (mon - fri) to the given date.\n *\n * @description\n * Add the specified number of business days (mon - fri) to the given date, ignoring weekends.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of business days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the business days added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 10 business days to 1 September 2014:\n * const result = addBusinessDays(new Date(2014, 8, 1), 10)\n * //=> Mon Sep 15 2014 00:00:00 (skipped weekend days)\n */\nexport default function addBusinessDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var startedOnWeekend = isWeekend(date);\n var amount = toInteger(dirtyAmount);\n if (isNaN(amount)) return new Date(NaN);\n var hours = date.getHours();\n var sign = amount < 0 ? -1 : 1;\n var fullWeeks = toInteger(amount / 5);\n date.setDate(date.getDate() + fullWeeks * 7);\n\n // Get remaining days not part of a full week\n var restDays = Math.abs(amount % 5);\n\n // Loops over remaining days\n while (restDays > 0) {\n date.setDate(date.getDate() + sign);\n if (!isWeekend(date)) restDays -= 1;\n }\n\n // If the date is a weekend day and we reduce a dividable of\n // 5 from it, we land on a weekend date.\n // To counter this, we add days accordingly to land on the next business day\n if (startedOnWeekend && isWeekend(date) && amount !== 0) {\n // If we're reducing days, we want to add days until we land on a weekday\n // If we're adding days we want to reduce days until we land on a weekday\n if (isSaturday(date)) date.setDate(date.getDate() + (sign < 0 ? 2 : -1));\n if (isSunday(date)) date.setDate(date.getDate() + (sign < 0 ? 1 : -2));\n }\n\n // Restore hours to avoid DST lag\n date.setHours(hours);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} - the new date with the days added\n * @throws {TypeError} - 2 arguments required\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport default function addDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n if (!amount) {\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n date.setDate(date.getDate() + amount);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_HOUR = 3600000;\n\n/**\n * @name addHours\n * @category Hour Helpers\n * @summary Add the specified number of hours to the given date.\n *\n * @description\n * Add the specified number of hours to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the hours added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * const result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\nexport default function addHours(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_HOUR);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport getISOWeekYear from \"../getISOWeekYear/index.js\";\nimport setISOWeekYear from \"../setISOWeekYear/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addISOWeekYears\n * @category ISO Week-Numbering Year Helpers\n * @summary Add the specified number of ISO week-numbering years to the given date.\n *\n * @description\n * Add the specified number of ISO week-numbering years to the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of ISO week-numbering years to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the ISO week-numbering years added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 ISO week-numbering years to 2 July 2010:\n * const result = addISOWeekYears(new Date(2010, 6, 2), 5)\n * //=> Fri Jun 26 2015 00:00:00\n */\nexport default function addISOWeekYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return setISOWeekYear(dirtyDate, getISOWeekYear(dirtyDate) + amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_MINUTE = 60000;\n\n/**\n * @name addMinutes\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the minutes added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * const result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\nexport default function addMinutes(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_MINUTE);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n */\nexport default function addMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n var dayOfMonth = date.getDate();\n\n // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n var endOfDesiredMonth = new Date(date.getTime());\n endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0);\n var daysInMonth = endOfDesiredMonth.getDate();\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n date.setFullYear(endOfDesiredMonth.getFullYear(), endOfDesiredMonth.getMonth(), dayOfMonth);\n return date;\n }\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addQuarters\n * @category Quarter Helpers\n * @summary Add the specified number of year quarters to the given date.\n *\n * @description\n * Add the specified number of year quarters to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the quarters added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 1 quarter to 1 September 2014:\n * const result = addQuarters(new Date(2014, 8, 1), 1)\n * //=> Mon Dec 01 2014 00:00:00\n */\nexport default function addQuarters(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n var months = amount * 3;\n return addMonths(dirtyDate, months);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addSeconds\n * @category Second Helpers\n * @summary Add the specified number of seconds to the given date.\n *\n * @description\n * Add the specified number of seconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of seconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the seconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 30 seconds to 10 July 2014 12:45:00:\n * const result = addSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:45:30\n */\nexport default function addSeconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * 1000);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addWeeks\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of week to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the weeks added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * const result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\nexport default function addWeeks(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n var days = amount * 7;\n return addDays(dirtyDate, days);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the years added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * const result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\nexport default function addYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, amount * 12);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name areIntervalsOverlapping\n * @category Interval Helpers\n * @summary Is the given time interval overlapping with another time interval?\n *\n * @description\n * Is the given time interval overlapping with another time interval? Adjacent intervals do not count as overlapping.\n *\n * @param {Interval} intervalLeft - the first interval to compare. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @param {Interval} intervalRight - the second interval to compare. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @param {Object} [options] - the object with options\n * @param {Boolean} [options.inclusive=false] - whether the comparison is inclusive or not\n * @returns {Boolean} whether the time intervals are overlapping\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // For overlapping time intervals:\n * areIntervalsOverlapping(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 17), end: new Date(2014, 0, 21) }\n * )\n * //=> true\n *\n * @example\n * // For non-overlapping time intervals:\n * areIntervalsOverlapping(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 21), end: new Date(2014, 0, 22) }\n * )\n * //=> false\n *\n * @example\n * // For adjacent time intervals:\n * areIntervalsOverlapping(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 20), end: new Date(2014, 0, 30) }\n * )\n * //=> false\n *\n * @example\n * // Using the inclusive option:\n * areIntervalsOverlapping(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 20), end: new Date(2014, 0, 24) }\n * )\n * //=> false\n * areIntervalsOverlapping(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 20), end: new Date(2014, 0, 24) },\n * { inclusive: true }\n * )\n * //=> true\n */\nexport default function areIntervalsOverlapping(intervalLeft, intervalRight, options) {\n requiredArgs(2, arguments);\n var leftStartTime = toDate(intervalLeft === null || intervalLeft === void 0 ? void 0 : intervalLeft.start).getTime();\n var leftEndTime = toDate(intervalLeft === null || intervalLeft === void 0 ? void 0 : intervalLeft.end).getTime();\n var rightStartTime = toDate(intervalRight === null || intervalRight === void 0 ? void 0 : intervalRight.start).getTime();\n var rightEndTime = toDate(intervalRight === null || intervalRight === void 0 ? void 0 : intervalRight.end).getTime();\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(leftStartTime <= leftEndTime && rightStartTime <= rightEndTime)) {\n throw new RangeError('Invalid interval');\n }\n if (options !== null && options !== void 0 && options.inclusive) {\n return leftStartTime <= rightEndTime && rightStartTime <= leftEndTime;\n }\n return leftStartTime < rightEndTime && rightStartTime < leftEndTime;\n}","import max from \"../max/index.js\";\nimport min from \"../min/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name clamp\n * @category Interval Helpers\n * @summary Return a date bounded by the start and the end of the given interval\n *\n * @description\n * Clamps a date to the lower bound with the start of the interval and the upper\n * bound with the end of the interval.\n *\n * - When the date is less than the start of the interval, the start is returned.\n * - When the date is greater than the end of the interval, the end is returned.\n * - Otherwise the date is returned.\n *\n * @example\n * // What is Mar, 21, 2021 bounded to an interval starting at Mar, 22, 2021 and ending at Apr, 01, 2021\n * const result = clamp(new Date(2021, 2, 21), {\n * start: new Date(2021, 2, 22),\n * end: new Date(2021, 3, 1),\n * })\n * //=> Mon Mar 22 2021 00:00:00\n *\n * @param {Date | Number} date - the date to be bounded\n * @param {Interval} interval - the interval to bound to\n * @returns {Date} the date bounded by the start and the end of the interval\n * @throws {TypeError} 2 arguments required\n */\nexport default function clamp(date, _ref) {\n var start = _ref.start,\n end = _ref.end;\n requiredArgs(2, arguments);\n return min([max([date, start]), end]);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name closestIndexTo\n * @category Common Helpers\n * @summary Return an index of the closest date from the array comparing to the given date.\n *\n * @description\n * Return an index of the closest date from the array comparing to the given date.\n *\n * @param {Date | Number} dateToCompare - the date to compare with\n * @param {Array | Array} datesArray - the array to search\n * @returns {Number | undefined} an index of the date closest to the given date or undefined if no valid value is given\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Which date is closer to 6 September 2015?\n * const dateToCompare = new Date(2015, 8, 6)\n * const datesArray = [\n * new Date(2015, 0, 1),\n * new Date(2016, 0, 1),\n * new Date(2017, 0, 1)\n * ]\n * const result = closestIndexTo(dateToCompare, datesArray)\n * //=> 1\n */\nexport default function closestIndexTo(dirtyDateToCompare, dirtyDatesArray) {\n requiredArgs(2, arguments);\n var dateToCompare = toDate(dirtyDateToCompare);\n if (isNaN(Number(dateToCompare))) return NaN;\n var timeToCompare = dateToCompare.getTime();\n var datesArray;\n // `dirtyDatesArray` is undefined or null\n if (dirtyDatesArray == null) {\n datesArray = [];\n\n // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n } else if (typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray;\n\n // If `dirtyDatesArray` is Array-like Object, convert to Array. Otherwise, make it empty Array\n } else {\n datesArray = Array.prototype.slice.call(dirtyDatesArray);\n }\n var result;\n var minDistance;\n datesArray.forEach(function (dirtyDate, index) {\n var currentDate = toDate(dirtyDate);\n if (isNaN(Number(currentDate))) {\n result = NaN;\n minDistance = NaN;\n return;\n }\n var distance = Math.abs(timeToCompare - currentDate.getTime());\n if (result == null || distance < Number(minDistance)) {\n result = index;\n minDistance = distance;\n }\n });\n return result;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name closestTo\n * @category Common Helpers\n * @summary Return a date from the array closest to the given date.\n *\n * @description\n * Return a date from the array closest to the given date.\n *\n * @param {Date | Number} dateToCompare - the date to compare with\n * @param {Array | Array} datesArray - the array to search\n * @returns {Date | undefined} the date from the array closest to the given date or undefined if no valid value is given\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Which date is closer to 6 September 2015: 1 January 2000 or 1 January 2030?\n * const dateToCompare = new Date(2015, 8, 6)\n * const result = closestTo(dateToCompare, [\n * new Date(2000, 0, 1),\n * new Date(2030, 0, 1)\n * ])\n * //=> Tue Jan 01 2030 00:00:00\n */\nexport default function closestTo(dirtyDateToCompare, dirtyDatesArray) {\n requiredArgs(2, arguments);\n var dateToCompare = toDate(dirtyDateToCompare);\n if (isNaN(Number(dateToCompare))) return new Date(NaN);\n var timeToCompare = dateToCompare.getTime();\n var datesArray;\n // `dirtyDatesArray` is undefined or null\n if (dirtyDatesArray == null) {\n datesArray = [];\n\n // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n } else if (typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray;\n\n // If `dirtyDatesArray` is Array-like Object, convert to Array. Otherwise, make it empty Array\n } else {\n datesArray = Array.prototype.slice.call(dirtyDatesArray);\n }\n var result;\n var minDistance;\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate);\n if (isNaN(Number(currentDate))) {\n result = new Date(NaN);\n minDistance = NaN;\n return;\n }\n var distance = Math.abs(timeToCompare - currentDate.getTime());\n if (result == null || distance < Number(minDistance)) {\n result = currentDate;\n minDistance = distance;\n }\n });\n return result;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * const result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * const result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\nexport default function compareAsc(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var diff = dateLeft.getTime() - dateRight.getTime();\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1;\n // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\n }\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name compareDesc\n * @category Common Helpers\n * @summary Compare the two dates reverse chronologically and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return -1 if the first date is after the second,\n * 1 if the first date is before the second or 0 if dates are equal.\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989 reverse chronologically:\n * const result = compareDesc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> 1\n *\n * @example\n * // Sort the array of dates in reverse chronological order:\n * const result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareDesc)\n * //=> [\n * // Sun Jul 02 1995 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Wed Feb 11 1987 00:00:00\n * // ]\n */\nexport default function compareDesc(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var diff = dateLeft.getTime() - dateRight.getTime();\n if (diff > 0) {\n return -1;\n } else if (diff < 0) {\n return 1;\n // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\n }\n}","/**\n * Days in 1 week.\n *\n * @name daysInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInWeek = 7;\n\n/**\n * Days in 1 year\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n *\n * @name daysInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInYear = 365.2425;\n\n/**\n * Maximum allowed time.\n *\n * @name maxTime\n * @constant\n * @type {number}\n * @default\n */\nexport var maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * Milliseconds in 1 minute\n *\n * @name millisecondsInMinute\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInMinute = 60000;\n\n/**\n * Milliseconds in 1 hour\n *\n * @name millisecondsInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInHour = 3600000;\n\n/**\n * Milliseconds in 1 second\n *\n * @name millisecondsInSecond\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInSecond = 1000;\n\n/**\n * Minimum allowed time.\n *\n * @name minTime\n * @constant\n * @type {number}\n * @default\n */\nexport var minTime = -maxTime;\n\n/**\n * Minutes in 1 hour\n *\n * @name minutesInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var minutesInHour = 60;\n\n/**\n * Months in 1 quarter\n *\n * @name monthsInQuarter\n * @constant\n * @type {number}\n * @default\n */\nexport var monthsInQuarter = 3;\n\n/**\n * Months in 1 year\n *\n * @name monthsInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var monthsInYear = 12;\n\n/**\n * Quarters in 1 year\n *\n * @name quartersInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var quartersInYear = 4;\n\n/**\n * Seconds in 1 hour\n *\n * @name secondsInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInHour = 3600;\n\n/**\n * Seconds in 1 minute\n *\n * @name secondsInMinute\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInMinute = 60;\n\n/**\n * Seconds in 1 day\n *\n * @name secondsInDay\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInDay = secondsInHour * 24;\n\n/**\n * Seconds in 1 week\n *\n * @name secondsInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInWeek = secondsInDay * 7;\n\n/**\n * Seconds in 1 year\n *\n * @name secondsInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInYear = secondsInDay * daysInYear;\n\n/**\n * Seconds in 1 month\n *\n * @name secondsInMonth\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInMonth = secondsInYear / 12;\n\n/**\n * Seconds in 1 quarter\n *\n * @name secondsInQuarter\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInQuarter = secondsInMonth * 3;","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { daysInWeek } from \"../constants/index.js\";\n/**\n * @name daysToWeeks\n * @category Conversion Helpers\n * @summary Convert days to weeks.\n *\n * @description\n * Convert a number of days to a full number of weeks.\n *\n * @param {number} days - number of days to be converted\n *\n * @returns {number} the number of days converted in weeks\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 14 days to weeks:\n * const result = daysToWeeks(14)\n * //=> 2\n *\n * @example\n * // It uses floor rounding:\n * const result = daysToWeeks(13)\n * //=> 1\n */\nexport default function daysToWeeks(days) {\n requiredArgs(1, arguments);\n var weeks = days / daysInWeek;\n return Math.floor(weeks);\n}","import addDays from \"../addDays/index.js\";\nimport differenceInCalendarDays from \"../differenceInCalendarDays/index.js\";\nimport isSameDay from \"../isSameDay/index.js\";\nimport isValid from \"../isValid/index.js\";\nimport isWeekend from \"../isWeekend/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name differenceInBusinessDays\n * @category Day Helpers\n * @summary Get the number of business days between the given dates.\n *\n * @description\n * Get the number of business day periods between the given dates.\n * Business days being days that arent in the weekend.\n * Like `differenceInCalendarDays`, the function removes the times from\n * the dates before calculating the difference.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of business days\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many business days are between\n * // 10 January 2014 and 20 July 2014?\n * const result = differenceInBusinessDays(\n * new Date(2014, 6, 20),\n * new Date(2014, 0, 10)\n * )\n * //=> 136\n *\n * // How many business days are between\n * // 30 November 2021 and 1 November 2021?\n * const result = differenceInBusinessDays(\n * new Date(2021, 10, 30),\n * new Date(2021, 10, 1)\n * )\n * //=> 21\n *\n * // How many business days are between\n * // 1 November 2021 and 1 December 2021?\n * const result = differenceInBusinessDays(\n * new Date(2021, 10, 1),\n * new Date(2021, 11, 1)\n * )\n * //=> -22\n *\n * // How many business days are between\n * // 1 November 2021 and 1 November 2021 ?\n * const result = differenceInBusinessDays(\n * new Date(2021, 10, 1),\n * new Date(2021, 10, 1)\n * )\n * //=> 0\n */\nexport default function differenceInBusinessDays(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n if (!isValid(dateLeft) || !isValid(dateRight)) return NaN;\n var calendarDifference = differenceInCalendarDays(dateLeft, dateRight);\n var sign = calendarDifference < 0 ? -1 : 1;\n var weeks = toInteger(calendarDifference / 7);\n var result = weeks * 5;\n dateRight = addDays(dateRight, weeks * 7);\n\n // the loop below will run at most 6 times to account for the remaining days that don't makeup a full week\n while (!isSameDay(dateLeft, dateRight)) {\n // sign is used to account for both negative and positive differences\n result += isWeekend(dateRight) ? 0 : sign;\n dateRight = addDays(dateRight, sign);\n }\n return result === 0 ? 0 : result;\n}","import getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar days\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport default function differenceInCalendarDays(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var startOfDayLeft = startOfDay(dirtyDateLeft);\n var startOfDayRight = startOfDay(dirtyDateRight);\n var timestampLeft = startOfDayLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfDayLeft);\n var timestampRight = startOfDayRight.getTime() - getTimezoneOffsetInMilliseconds(startOfDayRight);\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a day is not constant\n // (e.g. it's different in the day of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY);\n}","import getISOWeekYear from \"../getISOWeekYear/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarISOWeekYears\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the number of calendar ISO week-numbering years between the given dates.\n *\n * @description\n * Get the number of calendar ISO week-numbering years between the given dates.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar ISO week-numbering years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar ISO week-numbering years are 1 January 2010 and 1 January 2012?\n * const result = differenceInCalendarISOWeekYears(\n * new Date(2012, 0, 1),\n * new Date(2010, 0, 1)\n * )\n * //=> 2\n */\nexport default function differenceInCalendarISOWeekYears(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n return getISOWeekYear(dirtyDateLeft) - getISOWeekYear(dirtyDateRight);\n}","import getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n\n/**\n * @name differenceInCalendarISOWeeks\n * @category ISO Week Helpers\n * @summary Get the number of calendar ISO weeks between the given dates.\n *\n * @description\n * Get the number of calendar ISO weeks between the given dates.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar ISO weeks\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar ISO weeks are between 6 July 2014 and 21 July 2014?\n * const result = differenceInCalendarISOWeeks(\n * new Date(2014, 6, 21),\n * new Date(2014, 6, 6)\n * )\n * //=> 3\n */\nexport default function differenceInCalendarISOWeeks(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var startOfISOWeekLeft = startOfISOWeek(dirtyDateLeft);\n var startOfISOWeekRight = startOfISOWeek(dirtyDateRight);\n var timestampLeft = startOfISOWeekLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfISOWeekLeft);\n var timestampRight = startOfISOWeekRight.getTime() - getTimezoneOffsetInMilliseconds(startOfISOWeekRight);\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\nexport default function differenceInCalendarMonths(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();\n var monthDiff = dateLeft.getMonth() - dateRight.getMonth();\n return yearDiff * 12 + monthDiff;\n}","import getQuarter from \"../getQuarter/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarQuarters\n * @category Quarter Helpers\n * @summary Get the number of calendar quarters between the given dates.\n *\n * @description\n * Get the number of calendar quarters between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar quarters\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar quarters are between 31 December 2013 and 2 July 2014?\n * const result = differenceInCalendarQuarters(\n * new Date(2014, 6, 2),\n * new Date(2013, 11, 31)\n * )\n * //=> 3\n */\nexport default function differenceInCalendarQuarters(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();\n var quarterDiff = getQuarter(dateLeft) - getQuarter(dateRight);\n return yearDiff * 4 + quarterDiff;\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n\n/**\n * @name differenceInCalendarWeeks\n * @category Week Helpers\n * @summary Get the number of calendar weeks between the given dates.\n *\n * @description\n * Get the number of calendar weeks between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Number} the number of calendar weeks\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // How many calendar weeks are between 5 July 2014 and 20 July 2014?\n * const result = differenceInCalendarWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5)\n * )\n * //=> 3\n *\n * @example\n * // If the week starts on Monday,\n * // how many calendar weeks are between 5 July 2014 and 20 July 2014?\n * const result = differenceInCalendarWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5),\n * { weekStartsOn: 1 }\n * )\n * //=> 2\n */\nexport default function differenceInCalendarWeeks(dirtyDateLeft, dirtyDateRight, options) {\n requiredArgs(2, arguments);\n var startOfWeekLeft = startOfWeek(dirtyDateLeft, options);\n var startOfWeekRight = startOfWeek(dirtyDateRight, options);\n var timestampLeft = startOfWeekLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfWeekLeft);\n var timestampRight = startOfWeekRight.getTime() - getTimezoneOffsetInMilliseconds(startOfWeekRight);\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarYears\n * @category Year Helpers\n * @summary Get the number of calendar years between the given dates.\n *\n * @description\n * Get the number of calendar years between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInCalendarYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * )\n * //=> 2\n */\nexport default function differenceInCalendarYears(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() - dateRight.getFullYear();\n}","import toDate from \"../toDate/index.js\";\nimport differenceInCalendarDays from \"../differenceInCalendarDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\"; // Like `compareAsc` but uses local time not UTC, which is needed\n// for accurate equality comparisons of UTC timestamps that end up\n// having the same representation in local time, e.g. one hour before\n// DST ends vs. the instant that DST ends.\nfunction compareLocalAsc(dateLeft, dateRight) {\n var diff = dateLeft.getFullYear() - dateRight.getFullYear() || dateLeft.getMonth() - dateRight.getMonth() || dateLeft.getDate() - dateRight.getDate() || dateLeft.getHours() - dateRight.getHours() || dateLeft.getMinutes() - dateRight.getMinutes() || dateLeft.getSeconds() - dateRight.getSeconds() || dateLeft.getMilliseconds() - dateRight.getMilliseconds();\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1;\n // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\n }\n}\n\n/**\n * @name differenceInDays\n * @category Day Helpers\n * @summary Get the number of full days between the given dates.\n *\n * @description\n * Get the number of full day periods between two dates. Fractional days are\n * truncated towards zero.\n *\n * One \"full day\" is the distance between a local time in one day to the same\n * local time on the next or previous day. A full day can sometimes be less than\n * or more than 24 hours if a daylight savings change happens between two dates.\n *\n * To ignore DST and only measure exact 24-hour periods, use this instead:\n * `Math.floor(differenceInHours(dateLeft, dateRight)/24)|0`.\n *\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full days according to the local timezone\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 365\n * // How many full days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 0\n * // How many full days are between\n * // 1 March 2020 0:00 and 1 June 2020 0:00 ?\n * // Note: because local time is used, the\n * // result will always be 92 days, even in\n * // time zones where DST starts and the\n * // period has only 92*24-1 hours.\n * const result = differenceInDays(\n * new Date(2020, 5, 1),\n * new Date(2020, 2, 1)\n * )\n//=> 92\n */\nexport default function differenceInDays(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareLocalAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarDays(dateLeft, dateRight));\n dateLeft.setDate(dateLeft.getDate() - sign * difference);\n\n // Math.abs(diff in full days - diff in calendar days) === 1 if last calendar day is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastDayNotFull = Number(compareLocalAsc(dateLeft, dateRight) === -sign);\n var result = sign * (difference - isLastDayNotFull);\n // Prevent negative zero\n return result === 0 ? 0 : result;\n}","import { millisecondsInHour } from \"../constants/index.js\";\nimport differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInHours\n * @category Hour Helpers\n * @summary Get the number of hours between the given dates.\n *\n * @description\n * Get the number of hours between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of hours\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many hours are between 2 July 2014 06:50:00 and 2 July 2014 19:00:00?\n * const result = differenceInHours(\n * new Date(2014, 6, 2, 19, 0),\n * new Date(2014, 6, 2, 6, 50)\n * )\n * //=> 12\n */\nexport default function differenceInHours(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInMilliseconds(dateLeft, dateRight) / millisecondsInHour;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import toDate from \"../toDate/index.js\";\nimport differenceInCalendarISOWeekYears from \"../differenceInCalendarISOWeekYears/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport subISOWeekYears from \"../subISOWeekYears/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInISOWeekYears\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the number of full ISO week-numbering years between the given dates.\n *\n * @description\n * Get the number of full ISO week-numbering years between the given dates.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full ISO week-numbering years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full ISO week-numbering years are between 1 January 2010 and 1 January 2012?\n * const result = differenceInISOWeekYears(\n * new Date(2012, 0, 1),\n * new Date(2010, 0, 1)\n * )\n * //=> 1\n */\nexport default function differenceInISOWeekYears(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarISOWeekYears(dateLeft, dateRight));\n dateLeft = subISOWeekYears(dateLeft, sign * difference);\n\n // Math.abs(diff in full ISO years - diff in calendar ISO years) === 1\n // if last calendar ISO year is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastISOWeekYearNotFull = Number(compareAsc(dateLeft, dateRight) === -sign);\n var result = sign * (difference - isLastISOWeekYearNotFull);\n // Prevent negative zero\n return result === 0 ? 0 : result;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of milliseconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * const result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\nexport default function differenceInMilliseconds(dateLeft, dateRight) {\n requiredArgs(2, arguments);\n return toDate(dateLeft).getTime() - toDate(dateRight).getTime();\n}","import { millisecondsInMinute } from \"../constants/index.js\";\nimport differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInMinutes\n * @category Minute Helpers\n * @summary Get the number of minutes between the given dates.\n *\n * @description\n * Get the signed number of full (rounded towards 0) minutes between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of minutes\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many minutes are between 2 July 2014 12:07:59 and 2 July 2014 12:20:00?\n * const result = differenceInMinutes(\n * new Date(2014, 6, 2, 12, 20, 0),\n * new Date(2014, 6, 2, 12, 7, 59)\n * )\n * //=> 12\n *\n * @example\n * // How many minutes are between 10:01:59 and 10:00:00\n * const result = differenceInMinutes(\n * new Date(2000, 0, 1, 10, 0, 0),\n * new Date(2000, 0, 1, 10, 1, 59)\n * )\n * //=> -1\n */\nexport default function differenceInMinutes(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInMilliseconds(dateLeft, dateRight) / millisecondsInMinute;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import toDate from \"../toDate/index.js\";\nimport differenceInCalendarMonths from \"../differenceInCalendarMonths/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport isLastDayOfMonth from \"../isLastDayOfMonth/index.js\";\n/**\n * @name differenceInMonths\n * @category Month Helpers\n * @summary Get the number of full months between the given dates.\n *\n * @description\n * Get the number of full months between the given dates using trunc as a default rounding method.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInMonths(new Date(2014, 8, 1), new Date(2014, 0, 31))\n * //=> 7\n */\nexport default function differenceInMonths(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarMonths(dateLeft, dateRight));\n var result;\n\n // Check for the difference of less than month\n if (difference < 1) {\n result = 0;\n } else {\n if (dateLeft.getMonth() === 1 && dateLeft.getDate() > 27) {\n // This will check if the date is end of Feb and assign a higher end of month date\n // to compare it with Jan\n dateLeft.setDate(30);\n }\n dateLeft.setMonth(dateLeft.getMonth() - sign * difference);\n\n // Math.abs(diff in full months - diff in calendar months) === 1 if last calendar month is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastMonthNotFull = compareAsc(dateLeft, dateRight) === -sign;\n\n // Check for cases of one full calendar month\n if (isLastDayOfMonth(toDate(dirtyDateLeft)) && difference === 1 && compareAsc(dirtyDateLeft, dateRight) === 1) {\n isLastMonthNotFull = false;\n }\n result = sign * (difference - Number(isLastMonthNotFull));\n }\n\n // Prevent negative zero\n return result === 0 ? 0 : result;\n}","import differenceInMonths from \"../differenceInMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInQuarters\n * @category Quarter Helpers\n * @summary Get the number of quarters between the given dates.\n *\n * @description\n * Get the number of quarters between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of full quarters\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full quarters are between 31 December 2013 and 2 July 2014?\n * const result = differenceInQuarters(new Date(2014, 6, 2), new Date(2013, 11, 31))\n * //=> 2\n */\nexport default function differenceInQuarters(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInMonths(dateLeft, dateRight) / 3;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInSeconds\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of seconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * const result = differenceInSeconds(\n * new Date(2014, 6, 2, 12, 30, 20, 0),\n * new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\nexport default function differenceInSeconds(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInMilliseconds(dateLeft, dateRight) / 1000;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import differenceInDays from \"../differenceInDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInWeeks\n * @category Week Helpers\n * @summary Get the number of full weeks between the given dates.\n *\n * @description\n * Get the number of full weeks between two dates. Fractional weeks are\n * truncated towards zero by default.\n *\n * One \"full week\" is the distance between a local time in one day to the same\n * local time 7 days earlier or later. A full week can sometimes be less than\n * or more than 7*24 hours if a daylight savings change happens between two dates.\n *\n * To ignore DST and only measure exact 7*24-hour periods, use this instead:\n * `Math.floor(differenceInHours(dateLeft, dateRight)/(7*24))|0`.\n *\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of full weeks\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full weeks are between 5 July 2014 and 20 July 2014?\n * const result = differenceInWeeks(new Date(2014, 6, 20), new Date(2014, 6, 5))\n * //=> 2\n *\n * // How many full weeks are between\n * // 1 March 2020 0:00 and 6 June 2020 0:00 ?\n * // Note: because local time is used, the\n * // result will always be 8 weeks (54 days),\n * // even if DST starts and the period has\n * // only 54*24-1 hours.\n * const result = differenceInWeeks(\n * new Date(2020, 5, 1),\n * new Date(2020, 2, 6)\n * )\n * //=> 8\n */\nexport default function differenceInWeeks(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInDays(dateLeft, dateRight) / 7;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import toDate from \"../toDate/index.js\";\nimport differenceInCalendarYears from \"../differenceInCalendarYears/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInYears\n * @category Year Helpers\n * @summary Get the number of full years between the given dates.\n *\n * @description\n * Get the number of full years between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInYears(new Date(2015, 1, 11), new Date(2013, 11, 31))\n * //=> 1\n */\nexport default function differenceInYears(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarYears(dateLeft, dateRight));\n\n // Set both dates to a valid leap year for accurate comparison when dealing\n // with leap days\n dateLeft.setFullYear(1584);\n dateRight.setFullYear(1584);\n\n // Math.abs(diff in full years - diff in calendar years) === 1 if last calendar year is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastYearNotFull = compareAsc(dateLeft, dateRight) === -sign;\n var result = sign * (difference - Number(isLastYearNotFull));\n // Prevent negative zero\n return result === 0 ? 0 : result;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachDayOfInterval\n * @category Interval Helpers\n * @summary Return the array of dates within the specified time interval.\n *\n * @description\n * Return the array of dates within the specified time interval.\n *\n * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @param {Object} [options] - an object with options.\n * @param {Number} [options.step=1] - the step to increment by. The value should be more than 1.\n * @returns {Date[]} the array with starts of days from the day of the interval start to the day of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.step` must be a number greater than 1\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each day between 6 October 2014 and 10 October 2014:\n * const result = eachDayOfInterval({\n * start: new Date(2014, 9, 6),\n * end: new Date(2014, 9, 10)\n * })\n * //=> [\n * // Mon Oct 06 2014 00:00:00,\n * // Tue Oct 07 2014 00:00:00,\n * // Wed Oct 08 2014 00:00:00,\n * // Thu Oct 09 2014 00:00:00,\n * // Fri Oct 10 2014 00:00:00\n * // ]\n */\nexport default function eachDayOfInterval(dirtyInterval, options) {\n var _options$step;\n requiredArgs(1, arguments);\n var interval = dirtyInterval || {};\n var startDate = toDate(interval.start);\n var endDate = toDate(interval.end);\n var endTime = endDate.getTime();\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n var dates = [];\n var currentDate = startDate;\n currentDate.setHours(0, 0, 0, 0);\n var step = Number((_options$step = options === null || options === void 0 ? void 0 : options.step) !== null && _options$step !== void 0 ? _options$step : 1);\n if (step < 1 || isNaN(step)) throw new RangeError('`options.step` must be a number greater than 1');\n while (currentDate.getTime() <= endTime) {\n dates.push(toDate(currentDate));\n currentDate.setDate(currentDate.getDate() + step);\n currentDate.setHours(0, 0, 0, 0);\n }\n return dates;\n}","import addHours from \"../addHours/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachHourOfInterval\n * @category Interval Helpers\n * @summary Return the array of hours within the specified time interval.\n *\n * @description\n * Return the array of hours within the specified time interval.\n *\n * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @param {Object} [options] - an object with options.\n * @param {Number} [options.step=1] - the step to increment by. The value should be more than 1.\n * @returns {Date[]} the array with starts of hours from the hour of the interval start to the hour of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.step` must be a number greater than 1\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each hour between 6 October 2014, 12:00 and 6 October 2014, 15:00\n * const result = eachHourOfInterval({\n * start: new Date(2014, 9, 6, 12),\n * end: new Date(2014, 9, 6, 15)\n * })\n * //=> [\n * // Mon Oct 06 2014 12:00:00,\n * // Mon Oct 06 2014 13:00:00,\n * // Mon Oct 06 2014 14:00:00,\n * // Mon Oct 06 2014 15:00:00\n * // ]\n */\nexport default function eachHourOfInterval(dirtyInterval, options) {\n var _options$step;\n requiredArgs(1, arguments);\n var interval = dirtyInterval || {};\n var startDate = toDate(interval.start);\n var endDate = toDate(interval.end);\n var startTime = startDate.getTime();\n var endTime = endDate.getTime();\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startTime <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n var dates = [];\n var currentDate = startDate;\n currentDate.setMinutes(0, 0, 0);\n var step = Number((_options$step = options === null || options === void 0 ? void 0 : options.step) !== null && _options$step !== void 0 ? _options$step : 1);\n if (step < 1 || isNaN(step)) throw new RangeError('`options.step` must be a number greater than 1');\n while (currentDate.getTime() <= endTime) {\n dates.push(toDate(currentDate));\n currentDate = addHours(currentDate, step);\n }\n return dates;\n}","import addMinutes from \"../addMinutes/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport startOfMinute from \"../startOfMinute/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachMinuteOfInterval\n * @category Interval Helpers\n * @summary Return the array of minutes within the specified time interval.\n *\n * @description\n * Returns the array of minutes within the specified time interval.\n *\n * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @param {Object} [options] - an object with options.\n * @param {Number} [options.step=1] - the step to increment by. The step must be equal to or greater than 1\n * @throws {TypeError} 1 argument required\n * @returns {Date[]} the array with starts of minutes from the minute of the interval start to the minute of the interval end\n * @throws {RangeError} `options.step` must be a number equal to or greater than 1\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each minute between 14 October 2020, 13:00 and 14 October 2020, 13:03\n * const result = eachMinuteOfInterval({\n * start: new Date(2014, 9, 14, 13),\n * end: new Date(2014, 9, 14, 13, 3)\n * })\n * //=> [\n * // Wed Oct 14 2014 13:00:00,\n * // Wed Oct 14 2014 13:01:00,\n * // Wed Oct 14 2014 13:02:00,\n * // Wed Oct 14 2014 13:03:00\n * // ]\n */\nexport default function eachMinuteOfInterval(interval, options) {\n var _options$step;\n requiredArgs(1, arguments);\n var startDate = startOfMinute(toDate(interval.start));\n var endDate = toDate(interval.end);\n var startTime = startDate.getTime();\n var endTime = endDate.getTime();\n if (startTime >= endTime) {\n throw new RangeError('Invalid interval');\n }\n var dates = [];\n var currentDate = startDate;\n var step = Number((_options$step = options === null || options === void 0 ? void 0 : options.step) !== null && _options$step !== void 0 ? _options$step : 1);\n if (step < 1 || isNaN(step)) throw new RangeError('`options.step` must be a number equal to or greater than 1');\n while (currentDate.getTime() <= endTime) {\n dates.push(toDate(currentDate));\n currentDate = addMinutes(currentDate, step);\n }\n return dates;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachMonthOfInterval\n * @category Interval Helpers\n * @summary Return the array of months within the specified time interval.\n *\n * @description\n * Return the array of months within the specified time interval.\n *\n * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @returns {Date[]} the array with starts of months from the month of the interval start to the month of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each month between 6 February 2014 and 10 August 2014:\n * const result = eachMonthOfInterval({\n * start: new Date(2014, 1, 6),\n * end: new Date(2014, 7, 10)\n * })\n * //=> [\n * // Sat Feb 01 2014 00:00:00,\n * // Sat Mar 01 2014 00:00:00,\n * // Tue Apr 01 2014 00:00:00,\n * // Thu May 01 2014 00:00:00,\n * // Sun Jun 01 2014 00:00:00,\n * // Tue Jul 01 2014 00:00:00,\n * // Fri Aug 01 2014 00:00:00\n * // ]\n */\nexport default function eachMonthOfInterval(dirtyInterval) {\n requiredArgs(1, arguments);\n var interval = dirtyInterval || {};\n var startDate = toDate(interval.start);\n var endDate = toDate(interval.end);\n var endTime = endDate.getTime();\n var dates = [];\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n var currentDate = startDate;\n currentDate.setHours(0, 0, 0, 0);\n currentDate.setDate(1);\n while (currentDate.getTime() <= endTime) {\n dates.push(toDate(currentDate));\n currentDate.setMonth(currentDate.getMonth() + 1);\n }\n return dates;\n}","import addQuarters from \"../addQuarters/index.js\";\nimport startOfQuarter from \"../startOfQuarter/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachQuarterOfInterval\n * @category Interval Helpers\n * @summary Return the array of quarters within the specified time interval.\n *\n * @description\n * Return the array of quarters within the specified time interval.\n *\n * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @returns {Date[]} the array with starts of quarters from the quarter of the interval start to the quarter of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each quarter within interval 6 February 2014 - 10 August 2014:\n * const result = eachQuarterOfInterval({\n * start: new Date(2014, 1, 6),\n * end: new Date(2014, 7, 10)\n * })\n * //=> [\n * // Wed Jan 01 2014 00:00:00,\n * // Tue Apr 01 2014 00:00:00,\n * // Tue Jul 01 2014 00:00:00,\n * // ]\n */\nexport default function eachQuarterOfInterval(dirtyInterval) {\n requiredArgs(1, arguments);\n var interval = dirtyInterval || {};\n var startDate = toDate(interval.start);\n var endDate = toDate(interval.end);\n var endTime = endDate.getTime();\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n var startDateQuarter = startOfQuarter(startDate);\n var endDateQuarter = startOfQuarter(endDate);\n endTime = endDateQuarter.getTime();\n var quarters = [];\n var currentQuarter = startDateQuarter;\n while (currentQuarter.getTime() <= endTime) {\n quarters.push(toDate(currentQuarter));\n currentQuarter = addQuarters(currentQuarter, 1);\n }\n return quarters;\n}","import addWeeks from \"../addWeeks/index.js\";\nimport startOfWeek from \"../startOfWeek/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachWeekOfInterval\n * @category Interval Helpers\n * @summary Return the array of weeks within the specified time interval.\n *\n * @description\n * Return the array of weeks within the specified time interval.\n *\n * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date[]} the array with starts of weeks from the week of the interval start to the week of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be 0, 1, ..., 6\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each week within interval 6 October 2014 - 23 November 2014:\n * const result = eachWeekOfInterval({\n * start: new Date(2014, 9, 6),\n * end: new Date(2014, 10, 23)\n * })\n * //=> [\n * // Sun Oct 05 2014 00:00:00,\n * // Sun Oct 12 2014 00:00:00,\n * // Sun Oct 19 2014 00:00:00,\n * // Sun Oct 26 2014 00:00:00,\n * // Sun Nov 02 2014 00:00:00,\n * // Sun Nov 09 2014 00:00:00,\n * // Sun Nov 16 2014 00:00:00,\n * // Sun Nov 23 2014 00:00:00\n * // ]\n */\nexport default function eachWeekOfInterval(dirtyInterval, options) {\n requiredArgs(1, arguments);\n var interval = dirtyInterval || {};\n var startDate = toDate(interval.start);\n var endDate = toDate(interval.end);\n var endTime = endDate.getTime();\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n var startDateWeek = startOfWeek(startDate, options);\n var endDateWeek = startOfWeek(endDate, options);\n\n // Some timezones switch DST at midnight, making start of day unreliable in these timezones, 3pm is a safe bet\n startDateWeek.setHours(15);\n endDateWeek.setHours(15);\n endTime = endDateWeek.getTime();\n var weeks = [];\n var currentWeek = startDateWeek;\n while (currentWeek.getTime() <= endTime) {\n currentWeek.setHours(0);\n weeks.push(toDate(currentWeek));\n currentWeek = addWeeks(currentWeek, 1);\n currentWeek.setHours(15);\n }\n return weeks;\n}","import eachDayOfInterval from \"../eachDayOfInterval/index.js\";\nimport isSunday from \"../isSunday/index.js\";\nimport isWeekend from \"../isWeekend/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachWeekendOfInterval\n * @category Interval Helpers\n * @summary List all the Saturdays and Sundays in the given date interval.\n *\n * @description\n * Get all the Saturdays and Sundays in the given date interval.\n *\n * @param {Interval} interval - the given interval. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @returns {Date[]} an array containing all the Saturdays and Sundays\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Lists all Saturdays and Sundays in the given date interval\n * const result = eachWeekendOfInterval({\n * start: new Date(2018, 8, 17),\n * end: new Date(2018, 8, 30)\n * })\n * //=> [\n * // Sat Sep 22 2018 00:00:00,\n * // Sun Sep 23 2018 00:00:00,\n * // Sat Sep 29 2018 00:00:00,\n * // Sun Sep 30 2018 00:00:00\n * // ]\n */\nexport default function eachWeekendOfInterval(interval) {\n requiredArgs(1, arguments);\n var dateInterval = eachDayOfInterval(interval);\n var weekends = [];\n var index = 0;\n while (index < dateInterval.length) {\n var date = dateInterval[index++];\n if (isWeekend(date)) {\n weekends.push(date);\n if (isSunday(date)) index = index + 5;\n }\n }\n return weekends;\n}","import eachWeekendOfInterval from \"../eachWeekendOfInterval/index.js\";\nimport startOfMonth from \"../startOfMonth/index.js\";\nimport endOfMonth from \"../endOfMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachWeekendOfMonth\n * @category Month Helpers\n * @summary List all the Saturdays and Sundays in the given month.\n *\n * @description\n * Get all the Saturdays and Sundays in the given month.\n *\n * @param {Date|Number} date - the given month\n * @returns {Date[]} an array containing all the Saturdays and Sundays\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} The passed date is invalid\n *\n * @example\n * // Lists all Saturdays and Sundays in the given month\n * const result = eachWeekendOfMonth(new Date(2022, 1, 1))\n * //=> [\n * // Sat Feb 05 2022 00:00:00,\n * // Sun Feb 06 2022 00:00:00,\n * // Sat Feb 12 2022 00:00:00,\n * // Sun Feb 13 2022 00:00:00,\n * // Sat Feb 19 2022 00:00:00,\n * // Sun Feb 20 2022 00:00:00,\n * // Sat Feb 26 2022 00:00:00,\n * // Sun Feb 27 2022 00:00:00\n * // ]\n */\nexport default function eachWeekendOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var startDate = startOfMonth(dirtyDate);\n if (isNaN(startDate.getTime())) throw new RangeError('The passed date is invalid');\n var endDate = endOfMonth(dirtyDate);\n return eachWeekendOfInterval({\n start: startDate,\n end: endDate\n });\n}","import eachWeekendOfInterval from \"../eachWeekendOfInterval/index.js\";\nimport endOfYear from \"../endOfYear/index.js\";\nimport startOfYear from \"../startOfYear/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachWeekendOfYear\n * @category Year Helpers\n * @summary List all the Saturdays and Sundays in the year.\n *\n * @description\n * Get all the Saturdays and Sundays in the year.\n *\n * @param {Date|Number} date - the given year\n * @returns {Date[]} an array containing all the Saturdays and Sundays\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} The passed date is invalid\n *\n * @example\n * // Lists all Saturdays and Sundays in the year\n * const result = eachWeekendOfYear(new Date(2020, 1, 1))\n * //=> [\n * // Sat Jan 03 2020 00:00:00,\n * // Sun Jan 04 2020 00:00:00,\n * // ...\n * // Sun Dec 27 2020 00:00:00\n * // ]\n * ]\n */\nexport default function eachWeekendOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var startDate = startOfYear(dirtyDate);\n var endDate = endOfYear(dirtyDate);\n return eachWeekendOfInterval({\n start: startDate,\n end: endDate\n });\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachYearOfInterval\n * @category Interval Helpers\n * @summary Return the array of yearly timestamps within the specified time interval.\n *\n * @description\n * Return the array of yearly timestamps within the specified time interval.\n *\n * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @returns {Date[]} the array with starts of yearly timestamps from the month of the interval start to the month of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each year between 6 February 2014 and 10 August 2017:\n * const result = eachYearOfInterval({\n * start: new Date(2014, 1, 6),\n * end: new Date(2017, 7, 10)\n * })\n * //=> [\n * // Wed Jan 01 2014 00:00:00,\n * // Thu Jan 01 2015 00:00:00,\n * // Fri Jan 01 2016 00:00:00,\n * // Sun Jan 01 2017 00:00:00\n * // ]\n */\nexport default function eachYearOfInterval(dirtyInterval) {\n requiredArgs(1, arguments);\n var interval = dirtyInterval || {};\n var startDate = toDate(interval.start);\n var endDate = toDate(interval.end);\n var endTime = endDate.getTime();\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n var dates = [];\n var currentDate = startDate;\n currentDate.setHours(0, 0, 0, 0);\n currentDate.setMonth(0, 1);\n while (currentDate.getTime() <= endTime) {\n dates.push(toDate(currentDate));\n currentDate.setFullYear(currentDate.getFullYear() + 1);\n }\n return dates;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\nexport default function endOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfDecade\n * @category Decade Helpers\n * @summary Return the end of a decade for the given date.\n *\n * @description\n * Return the end of a decade for the given date.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a decade\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The end of a decade for 12 May 1984 00:00:00:\n * const result = endOfDecade(new Date(1984, 4, 12, 00, 00, 00))\n * //=> Dec 31 1989 23:59:59.999\n */\nexport default function endOfDecade(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var decade = 9 + Math.floor(year / 10) * 10;\n date.setFullYear(decade, 11, 31);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfHour\n * @category Hour Helpers\n * @summary Return the end of an hour for the given date.\n *\n * @description\n * Return the end of an hour for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of an hour\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of an hour for 2 September 2014 11:55:00:\n * const result = endOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:59:59.999\n */\nexport default function endOfHour(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setMinutes(59, 59, 999);\n return date;\n}","import endOfWeek from \"../endOfWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the end of an ISO week for the given date.\n *\n * @description\n * Return the end of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of an ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of an ISO week for 2 September 2014 11:55:00:\n * const result = endOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport default function endOfISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n return endOfWeek(dirtyDate, {\n weekStartsOn: 1\n });\n}","import getISOWeekYear from \"../getISOWeekYear/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the end of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the end of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of an ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of an ISO week-numbering year for 2 July 2005:\n * const result = endOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Sun Jan 01 2006 23:59:59.999\n */\nexport default function endOfISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getISOWeekYear(dirtyDate);\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n var date = startOfISOWeek(fourthOfJanuaryOfNextYear);\n date.setMilliseconds(date.getMilliseconds() - 1);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfMinute\n * @category Minute Helpers\n * @summary Return the end of a minute for the given date.\n *\n * @description\n * Return the end of a minute for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a minute\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a minute for 1 December 2014 22:15:45.400:\n * const result = endOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:59.999\n */\nexport default function endOfMinute(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setSeconds(59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport default function endOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n date.setFullYear(date.getFullYear(), month + 1, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfQuarter\n * @category Quarter Helpers\n * @summary Return the end of a year quarter for the given date.\n *\n * @description\n * Return the end of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a quarter for 2 September 2014 11:55:00:\n * const result = endOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport default function endOfQuarter(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var currentMonth = date.getMonth();\n var month = currentMonth - currentMonth % 3 + 3;\n date.setMonth(month, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfSecond\n * @category Second Helpers\n * @summary Return the end of a second for the given date.\n *\n * @description\n * Return the end of a second for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a second\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a second for 1 December 2014 22:15:45.400:\n * const result = endOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.999\n */\nexport default function endOfSecond(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setMilliseconds(999);\n return date;\n}","import endOfDay from \"../endOfDay/index.js\";\n/**\n * @name endOfToday\n * @category Day Helpers\n * @summary Return the end of today.\n * @pure false\n *\n * @description\n * Return the end of today.\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @returns {Date} the end of today\n *\n * @example\n * // If today is 6 October 2014:\n * const result = endOfToday()\n * //=> Mon Oct 6 2014 23:59:59.999\n */\nexport default function endOfToday() {\n return endOfDay(Date.now());\n}","/**\n * @name endOfTomorrow\n * @category Day Helpers\n * @summary Return the end of tomorrow.\n * @pure false\n *\n * @description\n * Return the end of tomorrow.\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `new Date()` internally hence impure and can't be safely curried.\n *\n * @returns {Date} the end of tomorrow\n *\n * @example\n * // If today is 6 October 2014:\n * const result = endOfTomorrow()\n * //=> Tue Oct 7 2014 23:59:59.999\n */\nexport default function endOfTomorrow() {\n var now = new Date();\n var year = now.getFullYear();\n var month = now.getMonth();\n var day = now.getDate();\n var date = new Date(0);\n date.setFullYear(year, month, day + 1);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfWeek\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the end of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport default function endOfWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n date.setDate(date.getDate() + diff);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfYear\n * @category Year Helpers\n * @summary Return the end of a year for the given date.\n *\n * @description\n * Return the end of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a year for 2 September 2014 11:55:00:\n * const result = endOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 23:59:59.999\n */\nexport default function endOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n date.setFullYear(year + 1, 0, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","/**\n * @name endOfYesterday\n * @category Day Helpers\n * @summary Return the end of yesterday.\n * @pure false\n *\n * @description\n * Return the end of yesterday.\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `new Date()` internally hence impure and can't be safely curried.\n *\n * @returns {Date} the end of yesterday\n *\n * @example\n * // If today is 6 October 2014:\n * const result = endOfYesterday()\n * //=> Sun Oct 5 2014 23:59:59.999\n */\nexport default function endOfYesterday() {\n var now = new Date();\n var year = now.getFullYear();\n var month = now.getMonth();\n var day = now.getDate();\n var date = new Date(0);\n date.setFullYear(year, month, day - 1);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function G(date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function y(date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function Y(date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function R(date, token) {\n var isoWeekYear = getUTCISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function u(date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function Q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function M(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function L(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function w(date, token, localize, options) {\n var week = getUTCWeek(date, options);\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function I(date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function d(date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function D(date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function E(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function e(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function c(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function i(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function a(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function b(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function B(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function h(date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function H(date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function K(date, token, localize) {\n var hours = date.getUTCHours() % 12;\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function k(date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function m(date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n return lightFormatters.m(date, token);\n },\n // Second\n s: function s(date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function S(date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function X(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n if (timezoneOffset === 0) {\n return 'Z';\n }\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function x(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function O(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function z(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function t(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function T(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, dirtyDelimiter);\n}\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\nexport default formatters;","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","import isValid from \"../isValid/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n var originalDate = toDate(dirtyDate);\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n var firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n var formatter = formatters[firstCharacter];\n if (formatter) {\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n return substring;\n }).join('');\n return result;\n}\nfunction cleanEscapedString(input) {\n var matched = input.match(escapedStringRegExp);\n if (!matched) {\n return input;\n }\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}","import { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport differenceInMonths from \"../differenceInMonths/index.js\";\nimport differenceInSeconds from \"../differenceInSeconds/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport cloneObject from \"../_lib/cloneObject/index.js\";\nimport assign from \"../_lib/assign/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MINUTES_IN_DAY = 1440;\nvar MINUTES_IN_ALMOST_TWO_DAYS = 2520;\nvar MINUTES_IN_MONTH = 43200;\nvar MINUTES_IN_TWO_MONTHS = 86400;\n\n/**\n * @name formatDistance\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words.\n *\n * | Distance between dates | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance between dates | Result |\n * |------------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * @param {Date|Number} date - the date\n * @param {Date|Number} baseDate - the date to compare with\n * @param {Object} [options] - an object with options.\n * @param {Boolean} [options.includeSeconds=false] - distances less than a minute are more detailed\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `baseDate` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * const result = formatDistance(new Date(2014, 6, 2), new Date(2015, 0, 1))\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00, including seconds?\n * const result = formatDistance(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0),\n * { includeSeconds: true }\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * const result = formatDistance(new Date(2015, 0, 1), new Date(2016, 0, 1), {\n * addSuffix: true\n * })\n * //=> 'about 1 year ago'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = formatDistance(new Date(2016, 7, 1), new Date(2015, 0, 1), {\n * locale: eoLocale\n * })\n * //=> 'pli ol 1 jaro'\n */\n\nexport default function formatDistance(dirtyDate, dirtyBaseDate, options) {\n var _ref, _options$locale;\n requiredArgs(2, arguments);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n if (!locale.formatDistance) {\n throw new RangeError('locale must contain formatDistance property');\n }\n var comparison = compareAsc(dirtyDate, dirtyBaseDate);\n if (isNaN(comparison)) {\n throw new RangeError('Invalid time value');\n }\n var localizeOptions = assign(cloneObject(options), {\n addSuffix: Boolean(options === null || options === void 0 ? void 0 : options.addSuffix),\n comparison: comparison\n });\n var dateLeft;\n var dateRight;\n if (comparison > 0) {\n dateLeft = toDate(dirtyBaseDate);\n dateRight = toDate(dirtyDate);\n } else {\n dateLeft = toDate(dirtyDate);\n dateRight = toDate(dirtyBaseDate);\n }\n var seconds = differenceInSeconds(dateRight, dateLeft);\n var offsetInSeconds = (getTimezoneOffsetInMilliseconds(dateRight) - getTimezoneOffsetInMilliseconds(dateLeft)) / 1000;\n var minutes = Math.round((seconds - offsetInSeconds) / 60);\n var months;\n\n // 0 up to 2 mins\n if (minutes < 2) {\n if (options !== null && options !== void 0 && options.includeSeconds) {\n if (seconds < 5) {\n return locale.formatDistance('lessThanXSeconds', 5, localizeOptions);\n } else if (seconds < 10) {\n return locale.formatDistance('lessThanXSeconds', 10, localizeOptions);\n } else if (seconds < 20) {\n return locale.formatDistance('lessThanXSeconds', 20, localizeOptions);\n } else if (seconds < 40) {\n return locale.formatDistance('halfAMinute', 0, localizeOptions);\n } else if (seconds < 60) {\n return locale.formatDistance('lessThanXMinutes', 1, localizeOptions);\n } else {\n return locale.formatDistance('xMinutes', 1, localizeOptions);\n }\n } else {\n if (minutes === 0) {\n return locale.formatDistance('lessThanXMinutes', 1, localizeOptions);\n } else {\n return locale.formatDistance('xMinutes', minutes, localizeOptions);\n }\n }\n\n // 2 mins up to 0.75 hrs\n } else if (minutes < 45) {\n return locale.formatDistance('xMinutes', minutes, localizeOptions);\n\n // 0.75 hrs up to 1.5 hrs\n } else if (minutes < 90) {\n return locale.formatDistance('aboutXHours', 1, localizeOptions);\n\n // 1.5 hrs up to 24 hrs\n } else if (minutes < MINUTES_IN_DAY) {\n var hours = Math.round(minutes / 60);\n return locale.formatDistance('aboutXHours', hours, localizeOptions);\n\n // 1 day up to 1.75 days\n } else if (minutes < MINUTES_IN_ALMOST_TWO_DAYS) {\n return locale.formatDistance('xDays', 1, localizeOptions);\n\n // 1.75 days up to 30 days\n } else if (minutes < MINUTES_IN_MONTH) {\n var days = Math.round(minutes / MINUTES_IN_DAY);\n return locale.formatDistance('xDays', days, localizeOptions);\n\n // 1 month up to 2 months\n } else if (minutes < MINUTES_IN_TWO_MONTHS) {\n months = Math.round(minutes / MINUTES_IN_MONTH);\n return locale.formatDistance('aboutXMonths', months, localizeOptions);\n }\n months = differenceInMonths(dateRight, dateLeft);\n\n // 2 months up to 12 months\n if (months < 12) {\n var nearestMonth = Math.round(minutes / MINUTES_IN_MONTH);\n return locale.formatDistance('xMonths', nearestMonth, localizeOptions);\n\n // 1 year up to max Date\n } else {\n var monthsSinceStartOfYear = months % 12;\n var years = Math.floor(months / 12);\n\n // N years up to 1 years 3 months\n if (monthsSinceStartOfYear < 3) {\n return locale.formatDistance('aboutXYears', years, localizeOptions);\n\n // N years 3 months up to N years 9 months\n } else if (monthsSinceStartOfYear < 9) {\n return locale.formatDistance('overXYears', years, localizeOptions);\n\n // N years 9 months up to N year 12 months\n } else {\n return locale.formatDistance('almostXYears', years + 1, localizeOptions);\n }\n }\n}","import { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport cloneObject from \"../_lib/cloneObject/index.js\";\nimport assign from \"../_lib/assign/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_MINUTE = 1000 * 60;\nvar MINUTES_IN_DAY = 60 * 24;\nvar MINUTES_IN_MONTH = MINUTES_IN_DAY * 30;\nvar MINUTES_IN_YEAR = MINUTES_IN_DAY * 365;\n\n/**\n * @name formatDistanceStrict\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words, using strict units.\n * This is like `formatDistance`, but does not use helpers like 'almost', 'over',\n * 'less than' and the like.\n *\n * | Distance between dates | Result |\n * |------------------------|---------------------|\n * | 0 ... 59 secs | [0..59] seconds |\n * | 1 ... 59 mins | [1..59] minutes |\n * | 1 ... 23 hrs | [1..23] hours |\n * | 1 ... 29 days | [1..29] days |\n * | 1 ... 11 months | [1..11] months |\n * | 1 ... N years | [1..N] years |\n *\n * @param {Date|Number} date - the date\n * @param {Date|Number} baseDate - the date to compare with\n * @param {Object} [options] - an object with options.\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {'second'|'minute'|'hour'|'day'|'month'|'year'} [options.unit] - if specified, will force a unit\n * @param {'floor'|'ceil'|'round'} [options.roundingMethod='round'] - which way to round partial units\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `baseDate` must not be Invalid Date\n * @throws {RangeError} `options.roundingMethod` must be 'floor', 'ceil' or 'round'\n * @throws {RangeError} `options.unit` must be 'second', 'minute', 'hour', 'day', 'month' or 'year'\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * const result = formatDistanceStrict(new Date(2014, 6, 2), new Date(2015, 0, 2))\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00?\n * const result = formatDistanceStrict(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0)\n * )\n * //=> '15 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * const result = formatDistanceStrict(new Date(2015, 0, 1), new Date(2016, 0, 1), {\n * addSuffix: true\n * })\n * //=> '1 year ago'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, in minutes?\n * const result = formatDistanceStrict(new Date(2016, 0, 1), new Date(2015, 0, 1), {\n * unit: 'minute'\n * })\n * //=> '525600 minutes'\n *\n * @example\n * // What is the distance from 1 January 2015\n * // to 28 January 2015, in months, rounded up?\n * const result = formatDistanceStrict(new Date(2015, 0, 28), new Date(2015, 0, 1), {\n * unit: 'month',\n * roundingMethod: 'ceil'\n * })\n * //=> '1 month'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = formatDistanceStrict(new Date(2016, 7, 1), new Date(2015, 0, 1), {\n * locale: eoLocale\n * })\n * //=> '1 jaro'\n */\n\nexport default function formatDistanceStrict(dirtyDate, dirtyBaseDate, options) {\n var _ref, _options$locale, _options$roundingMeth;\n requiredArgs(2, arguments);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n if (!locale.formatDistance) {\n throw new RangeError('locale must contain localize.formatDistance property');\n }\n var comparison = compareAsc(dirtyDate, dirtyBaseDate);\n if (isNaN(comparison)) {\n throw new RangeError('Invalid time value');\n }\n var localizeOptions = assign(cloneObject(options), {\n addSuffix: Boolean(options === null || options === void 0 ? void 0 : options.addSuffix),\n comparison: comparison\n });\n var dateLeft;\n var dateRight;\n if (comparison > 0) {\n dateLeft = toDate(dirtyBaseDate);\n dateRight = toDate(dirtyDate);\n } else {\n dateLeft = toDate(dirtyDate);\n dateRight = toDate(dirtyBaseDate);\n }\n var roundingMethod = String((_options$roundingMeth = options === null || options === void 0 ? void 0 : options.roundingMethod) !== null && _options$roundingMeth !== void 0 ? _options$roundingMeth : 'round');\n var roundingMethodFn;\n if (roundingMethod === 'floor') {\n roundingMethodFn = Math.floor;\n } else if (roundingMethod === 'ceil') {\n roundingMethodFn = Math.ceil;\n } else if (roundingMethod === 'round') {\n roundingMethodFn = Math.round;\n } else {\n throw new RangeError(\"roundingMethod must be 'floor', 'ceil' or 'round'\");\n }\n var milliseconds = dateRight.getTime() - dateLeft.getTime();\n var minutes = milliseconds / MILLISECONDS_IN_MINUTE;\n var timezoneOffset = getTimezoneOffsetInMilliseconds(dateRight) - getTimezoneOffsetInMilliseconds(dateLeft);\n\n // Use DST-normalized difference in minutes for years, months and days;\n // use regular difference in minutes for hours, minutes and seconds.\n var dstNormalizedMinutes = (milliseconds - timezoneOffset) / MILLISECONDS_IN_MINUTE;\n var defaultUnit = options === null || options === void 0 ? void 0 : options.unit;\n var unit;\n if (!defaultUnit) {\n if (minutes < 1) {\n unit = 'second';\n } else if (minutes < 60) {\n unit = 'minute';\n } else if (minutes < MINUTES_IN_DAY) {\n unit = 'hour';\n } else if (dstNormalizedMinutes < MINUTES_IN_MONTH) {\n unit = 'day';\n } else if (dstNormalizedMinutes < MINUTES_IN_YEAR) {\n unit = 'month';\n } else {\n unit = 'year';\n }\n } else {\n unit = String(defaultUnit);\n }\n\n // 0 up to 60 seconds\n if (unit === 'second') {\n var seconds = roundingMethodFn(milliseconds / 1000);\n return locale.formatDistance('xSeconds', seconds, localizeOptions);\n\n // 1 up to 60 mins\n } else if (unit === 'minute') {\n var roundedMinutes = roundingMethodFn(minutes);\n return locale.formatDistance('xMinutes', roundedMinutes, localizeOptions);\n\n // 1 up to 24 hours\n } else if (unit === 'hour') {\n var hours = roundingMethodFn(minutes / 60);\n return locale.formatDistance('xHours', hours, localizeOptions);\n\n // 1 up to 30 days\n } else if (unit === 'day') {\n var days = roundingMethodFn(dstNormalizedMinutes / MINUTES_IN_DAY);\n return locale.formatDistance('xDays', days, localizeOptions);\n\n // 1 up to 12 months\n } else if (unit === 'month') {\n var months = roundingMethodFn(dstNormalizedMinutes / MINUTES_IN_MONTH);\n return months === 12 && defaultUnit !== 'month' ? locale.formatDistance('xYears', 1, localizeOptions) : locale.formatDistance('xMonths', months, localizeOptions);\n\n // 1 year up to max Date\n } else if (unit === 'year') {\n var years = roundingMethodFn(dstNormalizedMinutes / MINUTES_IN_YEAR);\n return locale.formatDistance('xYears', years, localizeOptions);\n }\n throw new RangeError(\"unit must be 'second', 'minute', 'hour', 'day', 'month' or 'year'\");\n}","import distanceInWords from \"../formatDistance/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name formatDistanceToNow\n * @category Common Helpers\n * @summary Return the distance between the given date and now in words.\n * @pure false\n *\n * @description\n * Return the distance between the given date and now in words.\n *\n * | Distance to now | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance to now | Result |\n * |---------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - the object with options\n * @param {Boolean} [options.includeSeconds=false] - distances less than a minute are more detailed\n * @param {Boolean} [options.addSuffix=false] - result specifies if now is earlier or later than the passed date\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // If today is 1 January 2015, what is the distance to 2 July 2014?\n * const result = formatDistanceToNow(\n * new Date(2014, 6, 2)\n * )\n * //=> '6 months'\n *\n * @example\n * // If now is 1 January 2015 00:00:00,\n * // what is the distance to 1 January 2015 00:00:15, including seconds?\n * const result = formatDistanceToNow(\n * new Date(2015, 0, 1, 0, 0, 15),\n * {includeSeconds: true}\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 January 2016, with a suffix?\n * const result = formatDistanceToNow(\n * new Date(2016, 0, 1),\n * {addSuffix: true}\n * )\n * //=> 'in about 1 year'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 August 2016 in Esperanto?\n * const eoLocale = require('date-fns/locale/eo')\n * const result = formatDistanceToNow(\n * new Date(2016, 7, 1),\n * {locale: eoLocale}\n * )\n * //=> 'pli ol 1 jaro'\n */\nexport default function formatDistanceToNow(dirtyDate, options) {\n requiredArgs(1, arguments);\n return distanceInWords(dirtyDate, Date.now(), options);\n}","import formatDistanceStrict from \"../formatDistanceStrict/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name formatDistanceToNowStrict\n * @category Common Helpers\n * @summary Return the distance between the given date and now in words.\n * @pure false\n *\n * @description\n * Return the distance between the given dates in words, using strict units.\n * This is like `formatDistance`, but does not use helpers like 'almost', 'over',\n * 'less than' and the like.\n *\n * | Distance between dates | Result |\n * |------------------------|---------------------|\n * | 0 ... 59 secs | [0..59] seconds |\n * | 1 ... 59 mins | [1..59] minutes |\n * | 1 ... 23 hrs | [1..23] hours |\n * | 1 ... 29 days | [1..29] days |\n * | 1 ... 11 months | [1..11] months |\n * | 1 ... N years | [1..N] years |\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {'second'|'minute'|'hour'|'day'|'month'|'year'} [options.unit] - if specified, will force a unit\n * @param {'floor'|'ceil'|'round'} [options.roundingMethod='round'] - which way to round partial units\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // If today is 1 January 2015, what is the distance to 2 July 2014?\n * const result = formatDistanceToNowStrict(\n * new Date(2014, 6, 2)\n * )\n * //=> '6 months'\n *\n * @example\n * // If now is 1 January 2015 00:00:00,\n * // what is the distance to 1 January 2015 00:00:15, including seconds?\n * const result = formatDistanceToNowStrict(\n * new Date(2015, 0, 1, 0, 0, 15)\n * )\n * //=> '15 seconds'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 January 2016, with a suffix?\n * const result = formatDistanceToNowStrict(\n * new Date(2016, 0, 1),\n * {addSuffix: true}\n * )\n * //=> 'in 1 year'\n *\n * @example\n * // If today is 28 January 2015,\n * // what is the distance to 1 January 2015, in months, rounded up??\n * const result = formatDistanceToNowStrict(new Date(2015, 0, 1), {\n * unit: 'month',\n * roundingMethod: 'ceil'\n * })\n * //=> '1 month'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 January 2016 in Esperanto?\n * const eoLocale = require('date-fns/locale/eo')\n * const result = formatDistanceToNowStrict(\n * new Date(2016, 0, 1),\n * {locale: eoLocale}\n * )\n * //=> '1 jaro'\n */\nexport default function formatDistanceToNowStrict(dirtyDate, options) {\n requiredArgs(1, arguments);\n return formatDistanceStrict(dirtyDate, Date.now(), options);\n}","import { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\";\nvar defaultFormat = ['years', 'months', 'weeks', 'days', 'hours', 'minutes', 'seconds'];\n\n/**\n * @name formatDuration\n * @category Common Helpers\n * @summary Formats a duration in human-readable format\n *\n * @description\n * Return human-readable duration string i.e. \"9 months 2 days\"\n *\n * @param {Duration} duration - the duration to format\n * @param {Object} [options] - an object with options.\n * @param {string[]} [options.format=['years', 'months', 'weeks', 'days', 'hours', 'minutes', 'seconds']] - the array of units to format\n * @param {boolean} [options.zero=false] - should zeros be included in the output?\n * @param {string} [options.delimiter=' '] - delimiter string\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {string} the formatted date string\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Format full duration\n * formatDuration({\n * years: 2,\n * months: 9,\n * weeks: 1,\n * days: 7,\n * hours: 5,\n * minutes: 9,\n * seconds: 30\n * })\n * //=> '2 years 9 months 1 week 7 days 5 hours 9 minutes 30 seconds'\n *\n * @example\n * // Format partial duration\n * formatDuration({ months: 9, days: 2 })\n * //=> '9 months 2 days'\n *\n * @example\n * // Customize the format\n * formatDuration(\n * {\n * years: 2,\n * months: 9,\n * weeks: 1,\n * days: 7,\n * hours: 5,\n * minutes: 9,\n * seconds: 30\n * },\n * { format: ['months', 'weeks'] }\n * ) === '9 months 1 week'\n *\n * @example\n * // Customize the zeros presence\n * formatDuration({ years: 0, months: 9 })\n * //=> '9 months'\n * formatDuration({ years: 0, months: 9 }, { zero: true })\n * //=> '0 years 9 months'\n *\n * @example\n * // Customize the delimiter\n * formatDuration({ years: 2, months: 9, weeks: 3 }, { delimiter: ', ' })\n * //=> '2 years, 9 months, 3 weeks'\n */\nexport default function formatDuration(duration, options) {\n var _ref, _options$locale, _options$format, _options$zero, _options$delimiter;\n if (arguments.length < 1) {\n throw new TypeError(\"1 argument required, but only \".concat(arguments.length, \" present\"));\n }\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n var format = (_options$format = options === null || options === void 0 ? void 0 : options.format) !== null && _options$format !== void 0 ? _options$format : defaultFormat;\n var zero = (_options$zero = options === null || options === void 0 ? void 0 : options.zero) !== null && _options$zero !== void 0 ? _options$zero : false;\n var delimiter = (_options$delimiter = options === null || options === void 0 ? void 0 : options.delimiter) !== null && _options$delimiter !== void 0 ? _options$delimiter : ' ';\n if (!locale.formatDistance) {\n return '';\n }\n var result = format.reduce(function (acc, unit) {\n var token = \"x\".concat(unit.replace(/(^.)/, function (m) {\n return m.toUpperCase();\n }));\n var value = duration[unit];\n if (typeof value === 'number' && (zero || duration[unit])) {\n return acc.concat(locale.formatDistance(token, value));\n }\n return acc;\n }, []).join(delimiter);\n return result;\n}","import toDate from \"../toDate/index.js\";\nimport addLeadingZeros from \"../_lib/addLeadingZeros/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name formatISO\n * @category Common Helpers\n * @summary Format the date according to the ISO 8601 standard (https://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a003169814.htm).\n *\n * @description\n * Return the formatted date string in ISO 8601 format. Options may be passed to control the parts and notations of the date.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {'extended'|'basic'} [options.format='extended'] - if 'basic', hide delimiters between date and time values.\n * @param {'complete'|'date'|'time'} [options.representation='complete'] - format date, time with local time zone, or both.\n * @returns {String} the formatted date string (in local time zone)\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.format` must be 'extended' or 'basic'\n * @throws {RangeError} `options.representation` must be 'date', 'time' or 'complete'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601 format (local time zone is UTC):\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52))\n * //=> '2019-09-18T19:00:52Z'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601, short format (local time zone is UTC):\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52), { format: 'basic' })\n * //=> '20190918T190052'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601 format, date only:\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52), { representation: 'date' })\n * //=> '2019-09-18'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601 format, time only (local time zone is UTC):\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52), { representation: 'time' })\n * //=> '19:00:52Z'\n */\nexport default function formatISO(date, options) {\n var _options$format, _options$representati;\n requiredArgs(1, arguments);\n var originalDate = toDate(date);\n if (isNaN(originalDate.getTime())) {\n throw new RangeError('Invalid time value');\n }\n var format = String((_options$format = options === null || options === void 0 ? void 0 : options.format) !== null && _options$format !== void 0 ? _options$format : 'extended');\n var representation = String((_options$representati = options === null || options === void 0 ? void 0 : options.representation) !== null && _options$representati !== void 0 ? _options$representati : 'complete');\n if (format !== 'extended' && format !== 'basic') {\n throw new RangeError(\"format must be 'extended' or 'basic'\");\n }\n if (representation !== 'date' && representation !== 'time' && representation !== 'complete') {\n throw new RangeError(\"representation must be 'date', 'time', or 'complete'\");\n }\n var result = '';\n var tzOffset = '';\n var dateDelimiter = format === 'extended' ? '-' : '';\n var timeDelimiter = format === 'extended' ? ':' : '';\n\n // Representation is either 'date' or 'complete'\n if (representation !== 'time') {\n var day = addLeadingZeros(originalDate.getDate(), 2);\n var month = addLeadingZeros(originalDate.getMonth() + 1, 2);\n var year = addLeadingZeros(originalDate.getFullYear(), 4);\n\n // yyyyMMdd or yyyy-MM-dd.\n result = \"\".concat(year).concat(dateDelimiter).concat(month).concat(dateDelimiter).concat(day);\n }\n\n // Representation is either 'time' or 'complete'\n if (representation !== 'date') {\n // Add the timezone.\n var offset = originalDate.getTimezoneOffset();\n if (offset !== 0) {\n var absoluteOffset = Math.abs(offset);\n var hourOffset = addLeadingZeros(Math.floor(absoluteOffset / 60), 2);\n var minuteOffset = addLeadingZeros(absoluteOffset % 60, 2);\n // If less than 0, the sign is +, because it is ahead of time.\n var sign = offset < 0 ? '+' : '-';\n tzOffset = \"\".concat(sign).concat(hourOffset, \":\").concat(minuteOffset);\n } else {\n tzOffset = 'Z';\n }\n var hour = addLeadingZeros(originalDate.getHours(), 2);\n var minute = addLeadingZeros(originalDate.getMinutes(), 2);\n var second = addLeadingZeros(originalDate.getSeconds(), 2);\n\n // If there's also date, separate it with time with 'T'\n var separator = result === '' ? '' : 'T';\n\n // Creates a time string consisting of hour, minute, and second, separated by delimiters, if defined.\n var time = [hour, minute, second].join(timeDelimiter);\n\n // HHmmss or HH:mm:ss.\n result = \"\".concat(result).concat(separator).concat(time).concat(tzOffset);\n }\n return result;\n}","import toDate from \"../toDate/index.js\";\nimport isValid from \"../isValid/index.js\";\nimport addLeadingZeros from \"../_lib/addLeadingZeros/index.js\";\n/**\n * @name formatISO9075\n * @category Common Helpers\n * @summary Format the date according to the ISO 9075 standard (https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_get-format).\n *\n * @description\n * Return the formatted date string in ISO 9075 format. Options may be passed to control the parts and notations of the date.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {'extended'|'basic'} [options.format='extended'] - if 'basic', hide delimiters between date and time values.\n * @param {'complete'|'date'|'time'} [options.representation='complete'] - format date, time, or both.\n * @returns {String} the formatted date string\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.format` must be 'extended' or 'basic'\n * @throws {RangeError} `options.representation` must be 'date', 'time' or 'complete'\n *\n * @example\n * // Represent 18 September 2019 in ISO 9075 format:\n * const result = formatISO9075(new Date(2019, 8, 18, 19, 0, 52))\n * //=> '2019-09-18 19:00:52'\n *\n * @example\n * // Represent 18 September 2019 in ISO 9075, short format:\n * const result = formatISO9075(new Date(2019, 8, 18, 19, 0, 52), { format: 'basic' })\n * //=> '20190918 190052'\n *\n * @example\n * // Represent 18 September 2019 in ISO 9075 format, date only:\n * const result = formatISO9075(new Date(2019, 8, 18, 19, 0, 52), { representation: 'date' })\n * //=> '2019-09-18'\n *\n * @example\n * // Represent 18 September 2019 in ISO 9075 format, time only:\n * const result = formatISO9075(new Date(2019, 8, 18, 19, 0, 52), { representation: 'time' })\n * //=> '19:00:52'\n */\nexport default function formatISO9075(dirtyDate, options) {\n var _options$format, _options$representati;\n if (arguments.length < 1) {\n throw new TypeError(\"1 argument required, but only \".concat(arguments.length, \" present\"));\n }\n var originalDate = toDate(dirtyDate);\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n var format = String((_options$format = options === null || options === void 0 ? void 0 : options.format) !== null && _options$format !== void 0 ? _options$format : 'extended');\n var representation = String((_options$representati = options === null || options === void 0 ? void 0 : options.representation) !== null && _options$representati !== void 0 ? _options$representati : 'complete');\n if (format !== 'extended' && format !== 'basic') {\n throw new RangeError(\"format must be 'extended' or 'basic'\");\n }\n if (representation !== 'date' && representation !== 'time' && representation !== 'complete') {\n throw new RangeError(\"representation must be 'date', 'time', or 'complete'\");\n }\n var result = '';\n var dateDelimiter = format === 'extended' ? '-' : '';\n var timeDelimiter = format === 'extended' ? ':' : '';\n\n // Representation is either 'date' or 'complete'\n if (representation !== 'time') {\n var day = addLeadingZeros(originalDate.getDate(), 2);\n var month = addLeadingZeros(originalDate.getMonth() + 1, 2);\n var year = addLeadingZeros(originalDate.getFullYear(), 4);\n\n // yyyyMMdd or yyyy-MM-dd.\n result = \"\".concat(year).concat(dateDelimiter).concat(month).concat(dateDelimiter).concat(day);\n }\n\n // Representation is either 'time' or 'complete'\n if (representation !== 'date') {\n var hour = addLeadingZeros(originalDate.getHours(), 2);\n var minute = addLeadingZeros(originalDate.getMinutes(), 2);\n var second = addLeadingZeros(originalDate.getSeconds(), 2);\n\n // If there's also date, separate it with time with a space\n var separator = result === '' ? '' : ' ';\n\n // HHmmss or HH:mm:ss.\n result = \"\".concat(result).concat(separator).concat(hour).concat(timeDelimiter).concat(minute).concat(timeDelimiter).concat(second);\n }\n return result;\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name formatISODuration\n * @category Common Helpers\n * @summary Format a duration object according as ISO 8601 duration string\n *\n * @description\n * Format a duration object according to the ISO 8601 duration standard (https://www.digi.com/resources/documentation/digidocs/90001437-13/reference/r_iso_8601_duration_format.htm)\n *\n * @param {Duration} duration - the duration to format\n *\n * @returns {String} The ISO 8601 duration string\n * @throws {TypeError} Requires 1 argument\n * @throws {Error} Argument must be an object\n *\n * @example\n * // Format the given duration as ISO 8601 string\n * const result = formatISODuration({\n * years: 39,\n * months: 2,\n * days: 20,\n * hours: 7,\n * minutes: 5,\n * seconds: 0\n * })\n * //=> 'P39Y2M20DT0H0M0S'\n */\nexport default function formatISODuration(duration) {\n requiredArgs(1, arguments);\n if (_typeof(duration) !== 'object') throw new Error('Duration must be an object');\n var _duration$years = duration.years,\n years = _duration$years === void 0 ? 0 : _duration$years,\n _duration$months = duration.months,\n months = _duration$months === void 0 ? 0 : _duration$months,\n _duration$days = duration.days,\n days = _duration$days === void 0 ? 0 : _duration$days,\n _duration$hours = duration.hours,\n hours = _duration$hours === void 0 ? 0 : _duration$hours,\n _duration$minutes = duration.minutes,\n minutes = _duration$minutes === void 0 ? 0 : _duration$minutes,\n _duration$seconds = duration.seconds,\n seconds = _duration$seconds === void 0 ? 0 : _duration$seconds;\n return \"P\".concat(years, \"Y\").concat(months, \"M\").concat(days, \"DT\").concat(hours, \"H\").concat(minutes, \"M\").concat(seconds, \"S\");\n}","import toDate from \"../toDate/index.js\";\nimport isValid from \"../isValid/index.js\";\nimport addLeadingZeros from \"../_lib/addLeadingZeros/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name formatRFC3339\n * @category Common Helpers\n * @summary Format the date according to the RFC 3339 standard (https://tools.ietf.org/html/rfc3339#section-5.6).\n *\n * @description\n * Return the formatted date string in RFC 3339 format. Options may be passed to control the parts and notations of the date.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {0|1|2|3} [options.fractionDigits=0] - number of digits after the decimal point after seconds\n * @returns {String} the formatted date string\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.fractionDigits` must be between 0 and 3\n *\n * @example\n * // Represent 18 September 2019 in RFC 3339 format:\n * const result = formatRFC3339(new Date(2019, 8, 18, 19, 0, 52))\n * //=> '2019-09-18T19:00:52Z'\n *\n * @example\n * // Represent 18 September 2019 in RFC 3339 format, 2 digits of second fraction:\n * const result = formatRFC3339(new Date(2019, 8, 18, 19, 0, 52, 234), { fractionDigits: 2 })\n * //=> '2019-09-18T19:00:52.23Z'\n *\n * @example\n * // Represent 18 September 2019 in RFC 3339 format, 3 digits of second fraction\n * const result = formatRFC3339(new Date(2019, 8, 18, 19, 0, 52, 234), { fractionDigits: 3 })\n * //=> '2019-09-18T19:00:52.234Z'\n */\nexport default function formatRFC3339(dirtyDate, options) {\n var _options$fractionDigi;\n if (arguments.length < 1) {\n throw new TypeError(\"1 arguments required, but only \".concat(arguments.length, \" present\"));\n }\n var originalDate = toDate(dirtyDate);\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n var fractionDigits = Number((_options$fractionDigi = options === null || options === void 0 ? void 0 : options.fractionDigits) !== null && _options$fractionDigi !== void 0 ? _options$fractionDigi : 0);\n\n // Test if fractionDigits is between 0 and 3 _and_ is not NaN\n if (!(fractionDigits >= 0 && fractionDigits <= 3)) {\n throw new RangeError('fractionDigits must be between 0 and 3 inclusively');\n }\n var day = addLeadingZeros(originalDate.getDate(), 2);\n var month = addLeadingZeros(originalDate.getMonth() + 1, 2);\n var year = originalDate.getFullYear();\n var hour = addLeadingZeros(originalDate.getHours(), 2);\n var minute = addLeadingZeros(originalDate.getMinutes(), 2);\n var second = addLeadingZeros(originalDate.getSeconds(), 2);\n var fractionalSecond = '';\n if (fractionDigits > 0) {\n var milliseconds = originalDate.getMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, fractionDigits - 3));\n fractionalSecond = '.' + addLeadingZeros(fractionalSeconds, fractionDigits);\n }\n var offset = '';\n var tzOffset = originalDate.getTimezoneOffset();\n if (tzOffset !== 0) {\n var absoluteOffset = Math.abs(tzOffset);\n var hourOffset = addLeadingZeros(toInteger(absoluteOffset / 60), 2);\n var minuteOffset = addLeadingZeros(absoluteOffset % 60, 2);\n // If less than 0, the sign is +, because it is ahead of time.\n var sign = tzOffset < 0 ? '+' : '-';\n offset = \"\".concat(sign).concat(hourOffset, \":\").concat(minuteOffset);\n } else {\n offset = 'Z';\n }\n return \"\".concat(year, \"-\").concat(month, \"-\").concat(day, \"T\").concat(hour, \":\").concat(minute, \":\").concat(second).concat(fractionalSecond).concat(offset);\n}","import toDate from \"../toDate/index.js\";\nimport isValid from \"../isValid/index.js\";\nimport addLeadingZeros from \"../_lib/addLeadingZeros/index.js\";\nvar days = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n\n/**\n * @name formatRFC7231\n * @category Common Helpers\n * @summary Format the date according to the RFC 7231 standard (https://tools.ietf.org/html/rfc7231#section-7.1.1.1).\n *\n * @description\n * Return the formatted date string in RFC 7231 format.\n * The result will always be in UTC timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {String} the formatted date string\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n *\n * @example\n * // Represent 18 September 2019 in RFC 7231 format:\n * const result = formatRFC7231(new Date(2019, 8, 18, 19, 0, 52))\n * //=> 'Wed, 18 Sep 2019 19:00:52 GMT'\n */\nexport default function formatRFC7231(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\"1 arguments required, but only \".concat(arguments.length, \" present\"));\n }\n var originalDate = toDate(dirtyDate);\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n var dayName = days[originalDate.getUTCDay()];\n var dayOfMonth = addLeadingZeros(originalDate.getUTCDate(), 2);\n var monthName = months[originalDate.getUTCMonth()];\n var year = originalDate.getUTCFullYear();\n var hour = addLeadingZeros(originalDate.getUTCHours(), 2);\n var minute = addLeadingZeros(originalDate.getUTCMinutes(), 2);\n var second = addLeadingZeros(originalDate.getUTCSeconds(), 2);\n\n // Result variables.\n return \"\".concat(dayName, \", \").concat(dayOfMonth, \" \").concat(monthName, \" \").concat(year, \" \").concat(hour, \":\").concat(minute, \":\").concat(second, \" GMT\");\n}","import { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport differenceInCalendarDays from \"../differenceInCalendarDays/index.js\";\nimport format from \"../format/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name formatRelative\n * @category Common Helpers\n * @summary Represent the date in words relative to the given base date.\n *\n * @description\n * Represent the date in words relative to the given base date.\n *\n * | Distance to the base date | Result |\n * |---------------------------|---------------------------|\n * | Previous 6 days | last Sunday at 04:30 AM |\n * | Last day | yesterday at 04:30 AM |\n * | Same day | today at 04:30 AM |\n * | Next day | tomorrow at 04:30 AM |\n * | Next 6 days | Sunday at 04:30 AM |\n * | Other | 12/31/2017 |\n *\n * @param {Date|Number} date - the date to format\n * @param {Date|Number} baseDate - the date to compare with\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {String} the date in words\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `baseDate` must not be Invalid Date\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.locale` must contain `formatRelative` property\n *\n * @example\n * // Represent the date of 6 days ago in words relative to the given base date. In this example, today is Wednesday\n * const result = formatRelative(addDays(new Date(), -6), new Date())\n * //=> \"last Thursday at 12:45 AM\"\n */\nexport default function formatRelative(dirtyDate, dirtyBaseDate, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$weekStartsOn, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var baseDate = toDate(dirtyBaseDate);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n var weekStartsOn = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.weekStartsOn) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : 0);\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n if (!locale.formatRelative) {\n throw new RangeError('locale must contain formatRelative property');\n }\n var diff = differenceInCalendarDays(date, baseDate);\n if (isNaN(diff)) {\n throw new RangeError('Invalid time value');\n }\n var token;\n if (diff < -6) {\n token = 'other';\n } else if (diff < -1) {\n token = 'lastWeek';\n } else if (diff < 0) {\n token = 'yesterday';\n } else if (diff < 1) {\n token = 'today';\n } else if (diff < 2) {\n token = 'tomorrow';\n } else if (diff < 7) {\n token = 'nextWeek';\n } else {\n token = 'other';\n }\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n var utcBaseDate = subMilliseconds(baseDate, getTimezoneOffsetInMilliseconds(baseDate));\n var formatStr = locale.formatRelative(token, utcDate, utcBaseDate, {\n locale: locale,\n weekStartsOn: weekStartsOn\n });\n return format(date, formatStr, {\n locale: locale,\n weekStartsOn: weekStartsOn\n });\n}","import toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name fromUnixTime\n * @category Timestamp Helpers\n * @summary Create a date from a Unix timestamp.\n *\n * @description\n * Create a date from a Unix timestamp (in seconds). Decimal values will be discarded.\n *\n * @param {Number} unixTime - the given Unix timestamp (in seconds)\n * @returns {Date} the date\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Create the date 29 February 2012 11:45:05:\n * const result = fromUnixTime(1330515905)\n * //=> Wed Feb 29 2012 11:45:05\n */\nexport default function fromUnixTime(dirtyUnixTime) {\n requiredArgs(1, arguments);\n var unixTime = toInteger(dirtyUnixTime);\n return toDate(unixTime * 1000);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDate\n * @category Day Helpers\n * @summary Get the day of the month of the given date.\n *\n * @description\n * Get the day of the month of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the day of month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the month is 29 February 2012?\n * const result = getDate(new Date(2012, 1, 29))\n * //=> 29\n */\nexport default function getDate(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var dayOfMonth = date.getDate();\n return dayOfMonth;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDay\n * @category Weekday Helpers\n * @summary Get the day of the week of the given date.\n *\n * @description\n * Get the day of the week of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {0|1|2|3|4|5|6} the day of week, 0 represents Sunday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the week is 29 February 2012?\n * const result = getDay(new Date(2012, 1, 29))\n * //=> 3\n */\nexport default function getDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var day = date.getDay();\n return day;\n}","import toDate from \"../toDate/index.js\";\nimport startOfYear from \"../startOfYear/index.js\";\nimport differenceInCalendarDays from \"../differenceInCalendarDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the day of year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * const result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nexport default function getDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = differenceInCalendarDays(date, startOfYear(date));\n var dayOfYear = diff + 1;\n return dayOfYear;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDaysInMonth\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the number of days in a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // How many days are in February 2000?\n * const result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\nexport default function getDaysInMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var monthIndex = date.getMonth();\n var lastDayOfMonth = new Date(0);\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);\n lastDayOfMonth.setHours(0, 0, 0, 0);\n return lastDayOfMonth.getDate();\n}","import toDate from \"../toDate/index.js\";\nimport isLeapYear from \"../isLeapYear/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDaysInYear\n * @category Year Helpers\n * @summary Get the number of days in a year of the given date.\n *\n * @description\n * Get the number of days in a year of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the number of days in a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // How many days are in 2012?\n * const result = getDaysInYear(new Date(2012, 0, 1))\n * //=> 366\n */\nexport default function getDaysInYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n if (String(new Date(date)) === 'Invalid Date') {\n return NaN;\n }\n return isLeapYear(date) ? 366 : 365;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDecade\n * @category Decade Helpers\n * @summary Get the decade of the given date.\n *\n * @description\n * Get the decade of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the year of decade\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which decade belongs 27 November 1942?\n * const result = getDecade(new Date(1942, 10, 27))\n * //=> 1940\n */\nexport default function getDecade(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var decade = Math.floor(year / 10) * 10;\n return decade;\n}","import { getDefaultOptions as getInternalDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport assign from \"../_lib/assign/index.js\";\n/**\n * @name getDefaultOptions\n * @category Common Helpers\n * @summary Get default options.\n * @pure false\n *\n * @description\n * Returns an object that contains defaults for\n * `options.locale`, `options.weekStartsOn` and `options.firstWeekContainsDate`\n * arguments for all functions.\n *\n * You can change these with [setDefaultOptions]{@link https://date-fns.org/docs/setDefaultOptions}.\n *\n * @returns {Object} default options\n *\n * @example\n * const result = getDefaultOptions()\n * //=> {}\n *\n * @example\n * setDefaultOptions({ weekStarsOn: 1, firstWeekContainsDate: 4 })\n * const result = getDefaultOptions()\n * //=> { weekStarsOn: 1, firstWeekContainsDate: 4 }\n */\nexport default function getDefaultOptions() {\n return assign({}, getInternalDefaultOptions());\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getHours\n * @category Hour Helpers\n * @summary Get the hours of the given date.\n *\n * @description\n * Get the hours of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the hours\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the hours of 29 February 2012 11:45:00:\n * const result = getHours(new Date(2012, 1, 29, 11, 45))\n * //=> 11\n */\nexport default function getHours(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var hours = date.getHours();\n return hours;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getISODay\n * @category Weekday Helpers\n * @summary Get the day of the ISO week of the given date.\n *\n * @description\n * Get the day of the ISO week of the given date,\n * which is 7 for Sunday, 1 for Monday etc.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the day of ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the ISO week is 26 February 2012?\n * const result = getISODay(new Date(2012, 1, 26))\n * //=> 7\n */\nexport default function getISODay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var day = date.getDay();\n if (day === 0) {\n day = 7;\n }\n return day;\n}","import toDate from \"../toDate/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport startOfISOWeekYear from \"../startOfISOWeekYear/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport default function getISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfISOWeek(date).getTime() - startOfISOWeekYear(date).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import toDate from \"../toDate/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport default function getISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n var startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n var startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import startOfISOWeekYear from \"../startOfISOWeekYear/index.js\";\nimport addWeeks from \"../addWeeks/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n\n/**\n * @name getISOWeeksInYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the number of weeks in an ISO week-numbering year of the given date.\n *\n * @description\n * Get the number of weeks in an ISO week-numbering year of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the number of ISO weeks in a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // How many weeks are in ISO week-numbering year 2015?\n * const result = getISOWeeksInYear(new Date(2015, 1, 11))\n * //=> 53\n */\nexport default function getISOWeeksInYear(dirtyDate) {\n requiredArgs(1, arguments);\n var thisYear = startOfISOWeekYear(dirtyDate);\n var nextYear = startOfISOWeekYear(addWeeks(thisYear, 60));\n var diff = nextYear.valueOf() - thisYear.valueOf();\n // Round the number of weeks to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getMilliseconds\n * @category Millisecond Helpers\n * @summary Get the milliseconds of the given date.\n *\n * @description\n * Get the milliseconds of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the milliseconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the milliseconds of 29 February 2012 11:45:05.123:\n * const result = getMilliseconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 123\n */\nexport default function getMilliseconds(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var milliseconds = date.getMilliseconds();\n return milliseconds;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getMinutes\n * @category Minute Helpers\n * @summary Get the minutes of the given date.\n *\n * @description\n * Get the minutes of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the minutes\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the minutes of 29 February 2012 11:45:05:\n * const result = getMinutes(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 45\n */\nexport default function getMinutes(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var minutes = date.getMinutes();\n return minutes;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getMonth\n * @category Month Helpers\n * @summary Get the month of the given date.\n *\n * @description\n * Get the month of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which month is 29 February 2012?\n * const result = getMonth(new Date(2012, 1, 29))\n * //=> 1\n */\nexport default function getMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n return month;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 24 * 60 * 60 * 1000;\n\n/**\n * @name getOverlappingDaysInIntervals\n * @category Interval Helpers\n * @summary Get the number of days that overlap in two time intervals\n *\n * @description\n * Get the number of days that overlap in two time intervals\n *\n * @param {Interval} intervalLeft - the first interval to compare. See [Interval]{@link docs/Interval}\n * @param {Interval} intervalRight - the second interval to compare. See [Interval]{@link docs/Interval}\n * @returns {Number} the number of days that overlap in two time intervals\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // For overlapping time intervals adds 1 for each started overlapping day:\n * getOverlappingDaysInIntervals(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 17), end: new Date(2014, 0, 21) }\n * )\n * //=> 3\n *\n * @example\n * // For non-overlapping time intervals returns 0:\n * getOverlappingDaysInIntervals(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 21), end: new Date(2014, 0, 22) }\n * )\n * //=> 0\n */\n\nexport default function getOverlappingDaysInIntervals(dirtyIntervalLeft, dirtyIntervalRight) {\n requiredArgs(2, arguments);\n var intervalLeft = dirtyIntervalLeft || {};\n var intervalRight = dirtyIntervalRight || {};\n var leftStartTime = toDate(intervalLeft.start).getTime();\n var leftEndTime = toDate(intervalLeft.end).getTime();\n var rightStartTime = toDate(intervalRight.start).getTime();\n var rightEndTime = toDate(intervalRight.end).getTime();\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(leftStartTime <= leftEndTime && rightStartTime <= rightEndTime)) {\n throw new RangeError('Invalid interval');\n }\n var isOverlapping = leftStartTime < rightEndTime && rightStartTime < leftEndTime;\n if (!isOverlapping) {\n return 0;\n }\n var overlapStartDate = rightStartTime < leftStartTime ? leftStartTime : rightStartTime;\n var overlapEndDate = rightEndTime > leftEndTime ? leftEndTime : rightEndTime;\n var differenceInMs = overlapEndDate - overlapStartDate;\n return Math.ceil(differenceInMs / MILLISECONDS_IN_DAY);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getQuarter\n * @category Quarter Helpers\n * @summary Get the year quarter of the given date.\n *\n * @description\n * Get the year quarter of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which quarter is 2 July 2014?\n * const result = getQuarter(new Date(2014, 6, 2))\n * //=> 3\n */\nexport default function getQuarter(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var quarter = Math.floor(date.getMonth() / 3) + 1;\n return quarter;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getSeconds\n * @category Second Helpers\n * @summary Get the seconds of the given date.\n *\n * @description\n * Get the seconds of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the seconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the seconds of 29 February 2012 11:45:05.123:\n * const result = getSeconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 5\n */\nexport default function getSeconds(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var seconds = date.getSeconds();\n return seconds;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getTime\n * @category Timestamp Helpers\n * @summary Get the milliseconds timestamp of the given date.\n *\n * @description\n * Get the milliseconds timestamp of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the timestamp\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05.123:\n * const result = getTime(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 1330515905123\n */\nexport default function getTime(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n return timestamp;\n}","import getTime from \"../getTime/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getUnixTime\n * @category Timestamp Helpers\n * @summary Get the seconds timestamp of the given date.\n *\n * @description\n * Get the seconds timestamp of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the timestamp\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05 CET:\n * const result = getUnixTime(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 1330512305\n */\nexport default function getUnixTime(dirtyDate) {\n requiredArgs(1, arguments);\n return Math.floor(getTime(dirtyDate) / 1000);\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport startOfWeekYear from \"../startOfWeekYear/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Number} the week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * const result = getWeek(new Date(2005, 0, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> 53\n */\n\nexport default function getWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfWeek(date, options).getTime() - startOfWeekYear(date, options).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport getDate from \"../getDate/index.js\";\nimport getDay from \"../getDay/index.js\";\nimport startOfMonth from \"../startOfMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name getWeekOfMonth\n * @category Week Helpers\n * @summary Get the week of the month of the given date.\n *\n * @description\n * Get the week of the month of the given date.\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Number} the week of month\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6 inclusively\n *\n * @example\n * // Which week of the month is 9 November 2017?\n * const result = getWeekOfMonth(new Date(2017, 10, 9))\n * //=> 2\n */\nexport default function getWeekOfMonth(date, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var currentDayOfMonth = getDate(date);\n if (isNaN(currentDayOfMonth)) return NaN;\n var startWeekDay = getDay(startOfMonth(date));\n var lastDayOfFirstWeek = weekStartsOn - startWeekDay;\n if (lastDayOfFirstWeek <= 0) lastDayOfFirstWeek += 7;\n var remainingDaysAfterFirstWeek = currentDayOfMonth - lastDayOfFirstWeek;\n return Math.ceil(remainingDaysAfterFirstWeek / 7) + 1;\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Number} the local week-numbering year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nexport default function getWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setHours(0, 0, 0, 0);\n var startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setHours(0, 0, 0, 0);\n var startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import differenceInCalendarWeeks from \"../differenceInCalendarWeeks/index.js\";\nimport lastDayOfMonth from \"../lastDayOfMonth/index.js\";\nimport startOfMonth from \"../startOfMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getWeeksInMonth\n * @category Week Helpers\n * @summary Get the number of calendar weeks a month spans.\n *\n * @description\n * Get the number of calendar weeks the month in the given date spans.\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Number} the number of calendar weeks\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // How many calendar weeks does February 2015 span?\n * const result = getWeeksInMonth(new Date(2015, 1, 8))\n * //=> 4\n *\n * @example\n * // If the week starts on Monday,\n * // how many calendar weeks does July 2017 span?\n * const result = getWeeksInMonth(new Date(2017, 6, 5), { weekStartsOn: 1 })\n * //=> 6\n */\nexport default function getWeeksInMonth(date, options) {\n requiredArgs(1, arguments);\n return differenceInCalendarWeeks(lastDayOfMonth(date), startOfMonth(date), options) + 1;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getYear\n * @category Year Helpers\n * @summary Get the year of the given date.\n *\n * @description\n * Get the year of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which year is 2 July 2014?\n * const result = getYear(new Date(2014, 6, 2))\n * //=> 2014\n */\nexport default function getYear(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getFullYear();\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { millisecondsInHour } from \"../constants/index.js\";\n/**\n * @name hoursToMilliseconds\n * @category Conversion Helpers\n * @summary Convert hours to milliseconds.\n *\n * @description\n * Convert a number of hours to a full number of milliseconds.\n *\n * @param {number} hours - number of hours to be converted\n *\n * @returns {number} the number of hours converted to milliseconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 2 hours to milliseconds:\n * const result = hoursToMilliseconds(2)\n * //=> 7200000\n */\nexport default function hoursToMilliseconds(hours) {\n requiredArgs(1, arguments);\n return Math.floor(hours * millisecondsInHour);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { minutesInHour } from \"../constants/index.js\";\n/**\n * @name hoursToMinutes\n * @category Conversion Helpers\n * @summary Convert hours to minutes.\n *\n * @description\n * Convert a number of hours to a full number of minutes.\n *\n * @param {number} hours - number of hours to be converted\n *\n * @returns {number} the number of hours converted in minutes\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 2 hours to minutes:\n * const result = hoursToMinutes(2)\n * //=> 120\n */\nexport default function hoursToMinutes(hours) {\n requiredArgs(1, arguments);\n return Math.floor(hours * minutesInHour);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { secondsInHour } from \"../constants/index.js\";\n/**\n * @name hoursToSeconds\n * @category Conversion Helpers\n * @summary Convert hours to seconds.\n *\n * @description\n * Convert a number of hours to a full number of seconds.\n *\n * @param {number} hours - number of hours to be converted\n *\n * @returns {number} the number of hours converted in seconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 2 hours to seconds:\n * const result = hoursToSeconds(2)\n * //=> 7200\n */\nexport default function hoursToSeconds(hours) {\n requiredArgs(1, arguments);\n return Math.floor(hours * secondsInHour);\n}","import compareAsc from \"../compareAsc/index.js\";\nimport add from \"../add/index.js\";\nimport differenceInDays from \"../differenceInDays/index.js\";\nimport differenceInHours from \"../differenceInHours/index.js\";\nimport differenceInMinutes from \"../differenceInMinutes/index.js\";\nimport differenceInMonths from \"../differenceInMonths/index.js\";\nimport differenceInSeconds from \"../differenceInSeconds/index.js\";\nimport differenceInYears from \"../differenceInYears/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name intervalToDuration\n * @category Common Helpers\n * @summary Convert interval to duration\n *\n * @description\n * Convert a interval object to a duration object.\n *\n * @param {Interval} interval - the interval to convert to duration\n *\n * @returns {Duration} The duration Object\n * @throws {TypeError} Requires 2 arguments\n * @throws {RangeError} `start` must not be Invalid Date\n * @throws {RangeError} `end` must not be Invalid Date\n *\n * @example\n * // Get the duration between January 15, 1929 and April 4, 1968.\n * intervalToDuration({\n * start: new Date(1929, 0, 15, 12, 0, 0),\n * end: new Date(1968, 3, 4, 19, 5, 0)\n * })\n * // => { years: 39, months: 2, days: 20, hours: 7, minutes: 5, seconds: 0 }\n */\nexport default function intervalToDuration(interval) {\n requiredArgs(1, arguments);\n var start = toDate(interval.start);\n var end = toDate(interval.end);\n if (isNaN(start.getTime())) throw new RangeError('Start Date is invalid');\n if (isNaN(end.getTime())) throw new RangeError('End Date is invalid');\n var duration = {};\n duration.years = Math.abs(differenceInYears(end, start));\n var sign = compareAsc(end, start);\n var remainingMonths = add(start, {\n years: sign * duration.years\n });\n duration.months = Math.abs(differenceInMonths(end, remainingMonths));\n var remainingDays = add(remainingMonths, {\n months: sign * duration.months\n });\n duration.days = Math.abs(differenceInDays(end, remainingDays));\n var remainingHours = add(remainingDays, {\n days: sign * duration.days\n });\n duration.hours = Math.abs(differenceInHours(end, remainingHours));\n var remainingMinutes = add(remainingHours, {\n hours: sign * duration.hours\n });\n duration.minutes = Math.abs(differenceInMinutes(end, remainingMinutes));\n var remainingSeconds = add(remainingMinutes, {\n minutes: sign * duration.minutes\n });\n duration.seconds = Math.abs(differenceInSeconds(end, remainingSeconds));\n return duration;\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name intlFormat\n * @category Common Helpers\n * @summary Format the date with Intl.DateTimeFormat (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat).\n *\n * @description\n * Return the formatted date string in the given format.\n * The method uses [`Intl.DateTimeFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat) inside.\n * formatOptions are the same as [`Intl.DateTimeFormat` options](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat#using_options)\n *\n * > ⚠️ Please note that before Node version 13.0.0, only the locale data for en-US is available by default.\n *\n * @param {Date|Number} argument - the original date.\n * @param {Object} [formatOptions] - an object with options.\n * @param {'lookup'|'best fit'} [formatOptions.localeMatcher='best fit'] - locale selection algorithm.\n * @param {'narrow'|'short'|'long'} [formatOptions.weekday] - representation the days of the week.\n * @param {'narrow'|'short'|'long'} [formatOptions.era] - representation of eras.\n * @param {'numeric'|'2-digit'} [formatOptions.year] - representation of years.\n * @param {'numeric'|'2-digit'|'narrow'|'short'|'long'} [formatOptions.month='numeric'] - representation of month.\n * @param {'numeric'|'2-digit'} [formatOptions.day='numeric'] - representation of day.\n * @param {'numeric'|'2-digit'} [formatOptions.hour='numeric'] - representation of hours.\n * @param {'numeric'|'2-digit'} [formatOptions.minute] - representation of minutes.\n * @param {'numeric'|'2-digit'} [formatOptions.second] - representation of seconds.\n * @param {'short'|'long'} [formatOptions.timeZoneName] - representation of names of time zones.\n * @param {'basic'|'best fit'} [formatOptions.formatMatcher='best fit'] - format selection algorithm.\n * @param {Boolean} [formatOptions.hour12] - determines whether to use 12-hour time format.\n * @param {String} [formatOptions.timeZone] - the time zone to use.\n * @param {Object} [localeOptions] - an object with locale.\n * @param {String|String[]} [localeOptions.locale] - the locale code\n * @returns {String} the formatted date string.\n * @throws {TypeError} 1 argument required.\n * @throws {RangeError} `date` must not be Invalid Date\n *\n * @example\n * // Represent 10 October 2019 in German.\n * // Convert the date with format's options and locale's options.\n * const result = intlFormat(new Date(2019, 9, 4, 12, 30, 13, 456), {\n * weekday: 'long',\n * year: 'numeric',\n * month: 'long',\n * day: 'numeric',\n * }, {\n * locale: 'de-DE',\n * })\n * //=> Freitag, 4. Oktober 2019\n *\n * @example\n * // Represent 10 October 2019.\n * // Convert the date with format's options.\n * const result = intlFormat.default(new Date(2019, 9, 4, 12, 30, 13, 456), {\n * year: 'numeric',\n * month: 'numeric',\n * day: 'numeric',\n * hour: 'numeric',\n * })\n * //=> 10/4/2019, 12 PM\n *\n * @example\n * // Represent 10 October 2019 in Korean.\n * // Convert the date with locale's options.\n * const result = intlFormat(new Date(2019, 9, 4, 12, 30, 13, 456), {\n * locale: 'ko-KR',\n * })\n * //=> 2019. 10. 4.\n *\n * @example\n * // Represent 10 October 2019 in middle-endian format:\n * const result = intlFormat(new Date(2019, 9, 4, 12, 30, 13, 456))\n * //=> 10/4/2019\n */\nexport default function intlFormat(date, formatOrLocale, localeOptions) {\n var _localeOptions;\n requiredArgs(1, arguments);\n var formatOptions;\n if (isFormatOptions(formatOrLocale)) {\n formatOptions = formatOrLocale;\n } else {\n localeOptions = formatOrLocale;\n }\n return new Intl.DateTimeFormat((_localeOptions = localeOptions) === null || _localeOptions === void 0 ? void 0 : _localeOptions.locale, formatOptions).format(date);\n}\nfunction isFormatOptions(opts) {\n return opts !== undefined && !('locale' in opts);\n}","import { secondsInDay, secondsInHour, secondsInMinute, secondsInMonth, secondsInQuarter, secondsInWeek, secondsInYear } from \"../constants/index.js\";\nimport differenceInCalendarDays from \"../differenceInCalendarDays/index.js\";\nimport differenceInCalendarMonths from \"../differenceInCalendarMonths/index.js\";\nimport differenceInCalendarQuarters from \"../differenceInCalendarQuarters/index.js\";\nimport differenceInCalendarWeeks from \"../differenceInCalendarWeeks/index.js\";\nimport differenceInCalendarYears from \"../differenceInCalendarYears/index.js\";\nimport differenceInHours from \"../differenceInHours/index.js\";\nimport differenceInMinutes from \"../differenceInMinutes/index.js\";\nimport differenceInSeconds from \"../differenceInSeconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name intlFormatDistance\n * @category Common Helpers\n * @summary Formats distance between two dates in a human-readable format\n * @description\n * The function calculates the difference between two dates and formats it as a human-readable string.\n *\n * The function will pick the most appropriate unit depending on the distance between dates. For example, if the distance is a few hours, it might return `x hours`. If the distance is a few months, it might return `x months`.\n *\n * You can also specify a unit to force using it regardless of the distance to get a result like `123456 hours`.\n *\n * See the table below for the unit picking logic:\n *\n * | Distance between dates | Result (past) | Result (future) |\n * | ---------------------- | -------------- | --------------- |\n * | 0 seconds | now | now |\n * | 1-59 seconds | X seconds ago | in X seconds |\n * | 1-59 minutes | X minutes ago | in X minutes |\n * | 1-23 hours | X hours ago | in X hours |\n * | 1 day | yesterday | tomorrow |\n * | 2-6 days | X days ago | in X days |\n * | 7 days | last week | next week |\n * | 8 days-1 month | X weeks ago | in X weeks |\n * | 1 month | last month | next month |\n * | 2-3 months | X months ago | in X months |\n * | 1 quarter | last quarter | next quarter |\n * | 2-3 quarters | X quarters ago | in X quarters |\n * | 1 year | last year | next year |\n * | 2+ years | X years ago | in X years |\n *\n * @param {Date|Number} date - the date\n * @param {Date|Number} baseDate - the date to compare with.\n * @param {Object} [options] - an object with options.\n * @param {String} [options.unit] - formats the distance with the given unit ('year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second').\n * @param {String|String[]} [options.locale] - the locale to use.\n * @param {String} [options.localeMatcher='best fit'] - the locale matching algorithm to use. Other value: 'lookup'.\n * See MDN for details [Locale identification and negotiation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#locale_identification_and_negotiation)\n * @param {String} [options.numeric='auto'] - the output message format. The values are 'auto' (e.g. `yesterday`), 'always'(e.g. `1 day ago`).\n * @param {String} [options.style='long'] - the length of the result. The values are: 'long' (e.g. `1 month`), 'short' (e.g. 'in 1 mo.'), 'narrow' (e.g. 'in 1 mo.').\n * The narrow one could be similar to the short one for some locales.\n * @returns {String} the distance in words according to language-sensitive relative time formatting.\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `baseDate` must not be Invalid Date\n * @throws {RangeError} `options.unit` must not be invalid Unit\n * @throws {RangeError} `options.locale` must not be invalid locale\n * @throws {RangeError} `options.localeMatcher` must not be invalid localeMatcher\n * @throws {RangeError} `options.numeric` must not be invalid numeric\n * @throws {RangeError} `options.style` must not be invalid style\n *\n * @example\n * // What is the distance between the dates when the fist date is after the second?\n * intlFormatDistance(\n * new Date(1986, 3, 4, 11, 30, 0),\n * new Date(1986, 3, 4, 10, 30, 0)\n * )\n * //=> 'in 1 hour'\n *\n * // What is the distance between the dates when the fist date is before the second?\n * intlFormatDistance(\n * new Date(1986, 3, 4, 10, 30, 0),\n * new Date(1986, 3, 4, 11, 30, 0)\n * )\n * //=> '1 hour ago'\n *\n * @example\n * // Use the unit option to force the function to output the result in quarters. Without setting it, the example would return \"next year\"\n * intlFormatDistance(\n * new Date(1987, 6, 4, 10, 30, 0),\n * new Date(1986, 3, 4, 10, 30, 0),\n * { unit: 'quarter' }\n * )\n * //=> 'in 5 quarters'\n *\n * @example\n * // Use the locale option to get the result in Spanish. Without setting it, the example would return \"in 1 hour\".\n * intlFormatDistance(\n * new Date(1986, 3, 4, 11, 30, 0),\n * new Date(1986, 3, 4, 10, 30, 0),\n * { locale: 'es' }\n * )\n * //=> 'dentro de 1 hora'\n *\n * @example\n * // Use the numeric option to force the function to use numeric values. Without setting it, the example would return \"tomorrow\".\n * intlFormatDistance(\n * new Date(1986, 3, 5, 11, 30, 0),\n * new Date(1986, 3, 4, 11, 30, 0),\n * { numeric: 'always' }\n * )\n * //=> 'in 1 day'\n *\n * @example\n * // Use the style option to force the function to use short values. Without setting it, the example would return \"in 2 years\".\n * intlFormatDistance(\n * new Date(1988, 3, 4, 11, 30, 0),\n * new Date(1986, 3, 4, 11, 30, 0),\n * { style: 'short' }\n * )\n * //=> 'in 2 yr'\n */\nexport default function intlFormatDistance(date, baseDate, options) {\n requiredArgs(2, arguments);\n var value = 0;\n var unit;\n var dateLeft = toDate(date);\n var dateRight = toDate(baseDate);\n if (!(options !== null && options !== void 0 && options.unit)) {\n // Get the unit based on diffInSeconds calculations if no unit is specified\n var diffInSeconds = differenceInSeconds(dateLeft, dateRight); // The smallest unit\n\n if (Math.abs(diffInSeconds) < secondsInMinute) {\n value = differenceInSeconds(dateLeft, dateRight);\n unit = 'second';\n } else if (Math.abs(diffInSeconds) < secondsInHour) {\n value = differenceInMinutes(dateLeft, dateRight);\n unit = 'minute';\n } else if (Math.abs(diffInSeconds) < secondsInDay && Math.abs(differenceInCalendarDays(dateLeft, dateRight)) < 1) {\n value = differenceInHours(dateLeft, dateRight);\n unit = 'hour';\n } else if (Math.abs(diffInSeconds) < secondsInWeek && (value = differenceInCalendarDays(dateLeft, dateRight)) && Math.abs(value) < 7) {\n unit = 'day';\n } else if (Math.abs(diffInSeconds) < secondsInMonth) {\n value = differenceInCalendarWeeks(dateLeft, dateRight);\n unit = 'week';\n } else if (Math.abs(diffInSeconds) < secondsInQuarter) {\n value = differenceInCalendarMonths(dateLeft, dateRight);\n unit = 'month';\n } else if (Math.abs(diffInSeconds) < secondsInYear) {\n if (differenceInCalendarQuarters(dateLeft, dateRight) < 4) {\n // To filter out cases that are less than a year but match 4 quarters\n value = differenceInCalendarQuarters(dateLeft, dateRight);\n unit = 'quarter';\n } else {\n value = differenceInCalendarYears(dateLeft, dateRight);\n unit = 'year';\n }\n } else {\n value = differenceInCalendarYears(dateLeft, dateRight);\n unit = 'year';\n }\n } else {\n // Get the value if unit is specified\n unit = options === null || options === void 0 ? void 0 : options.unit;\n if (unit === 'second') {\n value = differenceInSeconds(dateLeft, dateRight);\n } else if (unit === 'minute') {\n value = differenceInMinutes(dateLeft, dateRight);\n } else if (unit === 'hour') {\n value = differenceInHours(dateLeft, dateRight);\n } else if (unit === 'day') {\n value = differenceInCalendarDays(dateLeft, dateRight);\n } else if (unit === 'week') {\n value = differenceInCalendarWeeks(dateLeft, dateRight);\n } else if (unit === 'month') {\n value = differenceInCalendarMonths(dateLeft, dateRight);\n } else if (unit === 'quarter') {\n value = differenceInCalendarQuarters(dateLeft, dateRight);\n } else if (unit === 'year') {\n value = differenceInCalendarYears(dateLeft, dateRight);\n }\n }\n var rtf = new Intl.RelativeTimeFormat(options === null || options === void 0 ? void 0 : options.locale, {\n localeMatcher: options === null || options === void 0 ? void 0 : options.localeMatcher,\n numeric: (options === null || options === void 0 ? void 0 : options.numeric) || 'auto',\n style: options === null || options === void 0 ? void 0 : options.style\n });\n return rtf.format(value, unit);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @param {Date|Number} date - the date that should be after the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is after the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * const result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nexport default function isAfter(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() > dateToCompare.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param {Date|Number} date - the date that should be before the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is before the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nexport default function isBefore(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() < dateToCompare.getTime();\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport default function isDate(value) {\n requiredArgs(1, arguments);\n return value instanceof Date || _typeof(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isEqual\n * @category Common Helpers\n * @summary Are the given dates equal?\n *\n * @description\n * Are the given dates equal?\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Boolean} the dates are equal\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?\n * const result = isEqual(\n * new Date(2014, 6, 2, 6, 30, 45, 0),\n * new Date(2014, 6, 2, 6, 30, 45, 500)\n * )\n * //=> false\n */\nexport default function isEqual(dirtyLeftDate, dirtyRightDate) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyLeftDate);\n var dateRight = toDate(dirtyRightDate);\n return dateLeft.getTime() === dateRight.getTime();\n}","/**\n * @name isExists\n * @category Common Helpers\n * @summary Is the given date exists?\n *\n * @description\n * Checks if the given arguments convert to an existing date.\n *\n * @param {Number} year of the date to check\n * @param {Number} month of the date to check\n * @param {Number} day of the date to check\n * @returns {Boolean} the date exists\n * @throws {TypeError} 3 arguments required\n *\n * @example\n * // For the valid date:\n * const result = isExists(2018, 0, 31)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isExists(2018, 1, 31)\n * //=> false\n */\nexport default function isExists(year, month, day) {\n if (arguments.length < 3) {\n throw new TypeError('3 argument required, but only ' + arguments.length + ' present');\n }\n var date = new Date(year, month, day);\n return date.getFullYear() === year && date.getMonth() === month && date.getDate() === day;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isFirstDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the first day of a month?\n *\n * @description\n * Is the given date the first day of a month?\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is the first day of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 1 September 2014 the first day of a month?\n * const result = isFirstDayOfMonth(new Date(2014, 8, 1))\n * //=> true\n */\nexport default function isFirstDayOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getDate() === 1;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isFriday\n * @category Weekday Helpers\n * @summary Is the given date Friday?\n *\n * @description\n * Is the given date Friday?\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Friday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 26 September 2014 Friday?\n * const result = isFriday(new Date(2014, 8, 26))\n * //=> true\n */\nexport default function isFriday(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getDay() === 5;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isFuture\n * @category Common Helpers\n * @summary Is the given date in the future?\n * @pure false\n *\n * @description\n * Is the given date in the future?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in the future\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 6 October 2014, is 31 December 2014 in the future?\n * const result = isFuture(new Date(2014, 11, 31))\n * //=> true\n */\nexport default function isFuture(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getTime() > Date.now();\n}","import toDate from \"../toDate/index.js\";\nimport endOfDay from \"../endOfDay/index.js\";\nimport endOfMonth from \"../endOfMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isLastDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the last day of a month?\n *\n * @description\n * Is the given date the last day of a month?\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is the last day of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 28 February 2014 the last day of a month?\n * const result = isLastDayOfMonth(new Date(2014, 1, 28))\n * //=> true\n */\nexport default function isLastDayOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n return endOfDay(date).getTime() === endOfMonth(date).getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isLeapYear\n * @category Year Helpers\n * @summary Is the given date in the leap year?\n *\n * @description\n * Is the given date in the leap year?\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in the leap year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 1 September 2012 in the leap year?\n * const result = isLeapYear(new Date(2012, 8, 1))\n * //=> true\n */\nexport default function isLeapYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}","import parse from \"../parse/index.js\";\nimport isValid from \"../isValid/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isMatch\n * @category Common Helpers\n * @summary validates the date string against given formats\n *\n * @description\n * Return the true if given date is string correct against the given format else\n * will return false.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * isMatch('23 AM', 'HH a')\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 7 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 7 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Su | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Su | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Su | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Su | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Seconds timestamp | 40 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Fraction of second | 30 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Milliseconds timestamp | 20 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 10 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 10 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Long localized date | NA | P | 05/29/1453 | 5,8 |\n * | | | PP | May 29, 1453 | |\n * | | | PPP | May 29th, 1453 | |\n * | | | PPPP | Sunday, May 29th, 1453 | 2,5,8 |\n * | Long localized time | NA | p | 12:00 AM | 5,8 |\n * | | | pp | 12:00:00 AM | |\n * | Combination of date and time | NA | Pp | 05/29/1453, 12:00 AM | |\n * | | | PPpp | May 29, 1453, 12:00:00 AM | |\n * | | | PPPpp | May 29th, 1453 at ... | |\n * | | | PPPPpp | Sunday, May 29th, 1453 at ... | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `isMatch` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `isMatch` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `isMatch` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `referenceDate`:\n *\n * `isMatch('50', 'yy') //=> true`\n *\n * `isMatch('75', 'yy') //=> true`\n *\n * while `uu` will use the year as is:\n *\n * `isMatch('50', 'uu') //=> true`\n *\n * `isMatch('75', 'uu') //=> true`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n * and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 7. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n * on the given locale.\n *\n * using `en-US` locale: `P` => `MM/dd/yyyy`\n * using `en-US` locale: `p` => `hh:mm a`\n * using `pt-BR` locale: `P` => `dd/MM/yyyy`\n * using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be checked in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are matched (e.g. when matching string 'January 1st' without a year),\n * the values will be taken from today's using `new Date()` date which works as a context of parsing.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.\n *\n *\n *\n * @param {String} dateString - the date string to verify\n * @param {String} formatString - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {Boolean}\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Match 11 February 2014 from middle-endian format:\n * const result = isMatch('02/11/2014', 'MM/dd/yyyy')\n * //=> true\n *\n * @example\n * // Match 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * const result = isMatch('28-a de februaro', \"do 'de' MMMM\", {\n * locale: eo\n * })\n * //=> true\n */\nexport default function isMatch(dateString, formatString, options) {\n requiredArgs(2, arguments);\n return isValid(parse(dateString, formatString, new Date(), options));\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isMonday\n * @category Weekday Helpers\n * @summary Is the given date Monday?\n *\n * @description\n * Is the given date Monday?\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Monday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 22 September 2014 Monday?\n * const result = isMonday(new Date(2014, 8, 22))\n * //=> true\n */\nexport default function isMonday(date) {\n requiredArgs(1, arguments);\n return toDate(date).getDay() === 1;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isPast\n * @category Common Helpers\n * @summary Is the given date in the past?\n * @pure false\n *\n * @description\n * Is the given date in the past?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in the past\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 6 October 2014, is 2 July 2014 in the past?\n * const result = isPast(new Date(2014, 6, 2))\n * //=> true\n */\nexport default function isPast(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getTime() < Date.now();\n}","import startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day (and year and month)?\n *\n * @description\n * Are the given dates in the same day (and year and month)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same day (and year and month)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n *\n * @example\n * // Are 4 September and 4 October in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2014, 9, 4))\n * //=> false\n *\n * @example\n * // Are 4 September, 2014 and 4 September, 2015 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2015, 8, 4))\n * //=> false\n */\nexport default function isSameDay(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfDay = startOfDay(dirtyDateLeft);\n var dateRightStartOfDay = startOfDay(dirtyDateRight);\n return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime();\n}","import startOfHour from \"../startOfHour/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameHour\n * @category Hour Helpers\n * @summary Are the given dates in the same hour (and same day)?\n *\n * @description\n * Are the given dates in the same hour (and same day)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same hour (and same day)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 2014 06:00:00 and 4 September 06:30:00 in the same hour?\n * const result = isSameHour(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 6, 30))\n * //=> true\n *\n * @example\n * // Are 4 September 2014 06:00:00 and 5 September 06:00:00 in the same hour?\n * const result = isSameHour(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 5, 6, 0))\n * //=> false\n */\nexport default function isSameHour(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfHour = startOfHour(dirtyDateLeft);\n var dateRightStartOfHour = startOfHour(dirtyDateRight);\n return dateLeftStartOfHour.getTime() === dateRightStartOfHour.getTime();\n}","import isSameWeek from \"../isSameWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameISOWeek\n * @category ISO Week Helpers\n * @summary Are the given dates in the same ISO week (and year)?\n *\n * @description\n * Are the given dates in the same ISO week (and year)?\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same ISO week (and year)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 1 September 2014 and 7 September 2014 in the same ISO week?\n * const result = isSameISOWeek(new Date(2014, 8, 1), new Date(2014, 8, 7))\n * //=> true\n *\n * @example\n * // Are 1 September 2014 and 1 September 2015 in the same ISO week?\n * const result = isSameISOWeek(new Date(2014, 8, 1), new Date(2015, 8, 1))\n * //=> false\n */\nexport default function isSameISOWeek(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n return isSameWeek(dirtyDateLeft, dirtyDateRight, {\n weekStartsOn: 1\n });\n}","import startOfISOWeekYear from \"../startOfISOWeekYear/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Are the given dates in the same ISO week-numbering year?\n *\n * @description\n * Are the given dates in the same ISO week-numbering year?\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same ISO week-numbering year\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 29 December 2003 and 2 January 2005 in the same ISO week-numbering year?\n * const result = isSameISOWeekYear(new Date(2003, 11, 29), new Date(2005, 0, 2))\n * //=> true\n */\nexport default function isSameISOWeekYear(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfYear = startOfISOWeekYear(dirtyDateLeft);\n var dateRightStartOfYear = startOfISOWeekYear(dirtyDateRight);\n return dateLeftStartOfYear.getTime() === dateRightStartOfYear.getTime();\n}","import startOfMinute from \"../startOfMinute/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameMinute\n * @category Minute Helpers\n * @summary Are the given dates in the same minute (and hour and day)?\n *\n * @description\n * Are the given dates in the same minute (and hour and day)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same minute (and hour and day)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 2014 06:30:00 and 4 September 2014 06:30:15 in the same minute?\n * const result = isSameMinute(\n * new Date(2014, 8, 4, 6, 30),\n * new Date(2014, 8, 4, 6, 30, 15)\n * )\n * //=> true\n *\n * @example\n * // Are 4 September 2014 06:30:00 and 5 September 2014 06:30:00 in the same minute?\n * const result = isSameMinute(\n * new Date(2014, 8, 4, 6, 30),\n * new Date(2014, 8, 5, 6, 30)\n * )\n * //=> false\n */\nexport default function isSameMinute(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfMinute = startOfMinute(dirtyDateLeft);\n var dateRightStartOfMinute = startOfMinute(dirtyDateRight);\n return dateLeftStartOfMinute.getTime() === dateRightStartOfMinute.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameMonth\n * @category Month Helpers\n * @summary Are the given dates in the same month (and year)?\n *\n * @description\n * Are the given dates in the same month (and year)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same month (and year)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n *\n * @example\n * // Are 2 September 2014 and 25 September 2015 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2015, 8, 25))\n * //=> false\n */\nexport default function isSameMonth(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() === dateRight.getFullYear() && dateLeft.getMonth() === dateRight.getMonth();\n}","import startOfQuarter from \"../startOfQuarter/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameQuarter\n * @category Quarter Helpers\n * @summary Are the given dates in the same quarter (and year)?\n *\n * @description\n * Are the given dates in the same quarter (and year)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same quarter (and year)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 1 January 2014 and 8 March 2014 in the same quarter?\n * const result = isSameQuarter(new Date(2014, 0, 1), new Date(2014, 2, 8))\n * //=> true\n *\n * @example\n * // Are 1 January 2014 and 1 January 2015 in the same quarter?\n * const result = isSameQuarter(new Date(2014, 0, 1), new Date(2015, 0, 1))\n * //=> false\n */\nexport default function isSameQuarter(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfQuarter = startOfQuarter(dirtyDateLeft);\n var dateRightStartOfQuarter = startOfQuarter(dirtyDateRight);\n return dateLeftStartOfQuarter.getTime() === dateRightStartOfQuarter.getTime();\n}","import startOfSecond from \"../startOfSecond/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameSecond\n * @category Second Helpers\n * @summary Are the given dates in the same second (and hour and day)?\n *\n * @description\n * Are the given dates in the same second (and hour and day)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same second (and hour and day)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 2014 06:30:15.000 and 4 September 2014 06:30.15.500 in the same second?\n * const result = isSameSecond(\n * new Date(2014, 8, 4, 6, 30, 15),\n * new Date(2014, 8, 4, 6, 30, 15, 500)\n * )\n * //=> true\n *\n * @example\n * // Are 4 September 2014 06:00:15.000 and 4 September 2014 06:01.15.000 in the same second?\n * const result = isSameSecond(\n * new Date(2014, 8, 4, 6, 0, 15),\n * new Date(2014, 8, 4, 6, 1, 15)\n * )\n * //=> false\n *\n * @example\n * // Are 4 September 2014 06:00:15.000 and 5 September 2014 06:00.15.000 in the same second?\n * const result = isSameSecond(\n * new Date(2014, 8, 4, 6, 0, 15),\n * new Date(2014, 8, 5, 6, 0, 15)\n * )\n * //=> false\n */\nexport default function isSameSecond(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfSecond = startOfSecond(dirtyDateLeft);\n var dateRightStartOfSecond = startOfSecond(dirtyDateRight);\n return dateLeftStartOfSecond.getTime() === dateRightStartOfSecond.getTime();\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameWeek\n * @category Week Helpers\n * @summary Are the given dates in the same week (and month and year)?\n *\n * @description\n * Are the given dates in the same week (and month and year)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Boolean} the dates are in the same week (and month and year)\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // Are 31 August 2014 and 4 September 2014 in the same week?\n * const result = isSameWeek(new Date(2014, 7, 31), new Date(2014, 8, 4))\n * //=> true\n *\n * @example\n * // If week starts with Monday,\n * // are 31 August 2014 and 4 September 2014 in the same week?\n * const result = isSameWeek(new Date(2014, 7, 31), new Date(2014, 8, 4), {\n * weekStartsOn: 1\n * })\n * //=> false\n *\n * @example\n * // Are 1 January 2014 and 1 January 2015 in the same week?\n * const result = isSameWeek(new Date(2014, 0, 1), new Date(2015, 0, 1))\n * //=> false\n */\nexport default function isSameWeek(dirtyDateLeft, dirtyDateRight, options) {\n requiredArgs(2, arguments);\n var dateLeftStartOfWeek = startOfWeek(dirtyDateLeft, options);\n var dateRightStartOfWeek = startOfWeek(dirtyDateRight, options);\n return dateLeftStartOfWeek.getTime() === dateRightStartOfWeek.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameYear\n * @category Year Helpers\n * @summary Are the given dates in the same year?\n *\n * @description\n * Are the given dates in the same year?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same year\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same year?\n * const result = isSameYear(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n */\nexport default function isSameYear(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() === dateRight.getFullYear();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSaturday\n * @category Weekday Helpers\n * @summary Is the given date Saturday?\n *\n * @description\n * Is the given date Saturday?\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Saturday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 27 September 2014 Saturday?\n * const result = isSaturday(new Date(2014, 8, 27))\n * //=> true\n */\nexport default function isSaturday(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getDay() === 6;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSunday\n * @category Weekday Helpers\n * @summary Is the given date Sunday?\n *\n * @description\n * Is the given date Sunday?\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Sunday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 21 September 2014 Sunday?\n * const result = isSunday(new Date(2014, 8, 21))\n * //=> true\n */\nexport default function isSunday(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getDay() === 0;\n}","import isSameHour from \"../isSameHour/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isThisHour\n * @category Hour Helpers\n * @summary Is the given date in the same hour as the current date?\n * @pure false\n *\n * @description\n * Is the given date in the same hour as the current date?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in this hour\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If now is 25 September 2014 18:30:15.500,\n * // is 25 September 2014 18:00:00 in this hour?\n * const result = isThisHour(new Date(2014, 8, 25, 18))\n * //=> true\n */\nexport default function isThisHour(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameHour(Date.now(), dirtyDate);\n}","import isSameISOWeek from \"../isSameISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isThisISOWeek\n * @category ISO Week Helpers\n * @summary Is the given date in the same ISO week as the current date?\n * @pure false\n *\n * @description\n * Is the given date in the same ISO week as the current date?\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in this ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 25 September 2014, is 22 September 2014 in this ISO week?\n * const result = isThisISOWeek(new Date(2014, 8, 22))\n * //=> true\n */\nexport default function isThisISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameISOWeek(dirtyDate, Date.now());\n}","import isSameMinute from \"../isSameMinute/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isThisMinute\n * @category Minute Helpers\n * @summary Is the given date in the same minute as the current date?\n * @pure false\n *\n * @description\n * Is the given date in the same minute as the current date?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in this minute\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If now is 25 September 2014 18:30:15.500,\n * // is 25 September 2014 18:30:00 in this minute?\n * const result = isThisMinute(new Date(2014, 8, 25, 18, 30))\n * //=> true\n */\nexport default function isThisMinute(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameMinute(Date.now(), dirtyDate);\n}","import isSameMonth from \"../isSameMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isThisMonth\n * @category Month Helpers\n * @summary Is the given date in the same month as the current date?\n * @pure false\n *\n * @description\n * Is the given date in the same month as the current date?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in this month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 25 September 2014, is 15 September 2014 in this month?\n * const result = isThisMonth(new Date(2014, 8, 15))\n * //=> true\n */\nexport default function isThisMonth(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameMonth(Date.now(), dirtyDate);\n}","import isSameQuarter from \"../isSameQuarter/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isThisQuarter\n * @category Quarter Helpers\n * @summary Is the given date in the same quarter as the current date?\n * @pure false\n *\n * @description\n * Is the given date in the same quarter as the current date?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in this quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 25 September 2014, is 2 July 2014 in this quarter?\n * const result = isThisQuarter(new Date(2014, 6, 2))\n * //=> true\n */\nexport default function isThisQuarter(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameQuarter(Date.now(), dirtyDate);\n}","import isSameSecond from \"../isSameSecond/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isThisSecond\n * @category Second Helpers\n * @summary Is the given date in the same second as the current date?\n * @pure false\n *\n * @description\n * Is the given date in the same second as the current date?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in this second\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If now is 25 September 2014 18:30:15.500,\n * // is 25 September 2014 18:30:15.000 in this second?\n * const result = isThisSecond(new Date(2014, 8, 25, 18, 30, 15))\n * //=> true\n */\nexport default function isThisSecond(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameSecond(Date.now(), dirtyDate);\n}","import isSameWeek from \"../isSameWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isThisWeek\n * @category Week Helpers\n * @summary Is the given date in the same week as the current date?\n * @pure false\n *\n * @description\n * Is the given date in the same week as the current date?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @param {Date|Number} date - the date to check\n * @param {Object} [options] - the object with options\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Boolean} the date is in this week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // If today is 25 September 2014, is 21 September 2014 in this week?\n * const result = isThisWeek(new Date(2014, 8, 21))\n * //=> true\n *\n * @example\n * // If today is 25 September 2014 and week starts with Monday\n * // is 21 September 2014 in this week?\n * const result = isThisWeek(new Date(2014, 8, 21), { weekStartsOn: 1 })\n * //=> false\n */\n\nexport default function isThisWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n return isSameWeek(dirtyDate, Date.now(), options);\n}","import isSameYear from \"../isSameYear/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isThisYear\n * @category Year Helpers\n * @summary Is the given date in the same year as the current date?\n * @pure false\n *\n * @description\n * Is the given date in the same year as the current date?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in this year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 25 September 2014, is 2 July 2014 in this year?\n * const result = isThisYear(new Date(2014, 6, 2))\n * //=> true\n */\nexport default function isThisYear(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameYear(dirtyDate, Date.now());\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isThursday\n * @category Weekday Helpers\n * @summary Is the given date Thursday?\n *\n * @description\n * Is the given date Thursday?\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Thursday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 25 September 2014 Thursday?\n * const result = isThursday(new Date(2014, 8, 25))\n * //=> true\n */\nexport default function isThursday(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getDay() === 4;\n}","import isSameDay from \"../isSameDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isToday\n * @category Day Helpers\n * @summary Is the given date today?\n * @pure false\n *\n * @description\n * Is the given date today?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is today\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 6 October 2014, is 6 October 14:00:00 today?\n * const result = isToday(new Date(2014, 9, 6, 14, 0))\n * //=> true\n */\nexport default function isToday(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameDay(dirtyDate, Date.now());\n}","import addDays from \"../addDays/index.js\";\nimport isSameDay from \"../isSameDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isTomorrow\n * @category Day Helpers\n * @summary Is the given date tomorrow?\n * @pure false\n *\n * @description\n * Is the given date tomorrow?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is tomorrow\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 6 October 2014, is 7 October 14:00:00 tomorrow?\n * const result = isTomorrow(new Date(2014, 9, 7, 14, 0))\n * //=> true\n */\nexport default function isTomorrow(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameDay(dirtyDate, addDays(Date.now(), 1));\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isTuesday\n * @category Weekday Helpers\n * @summary Is the given date Tuesday?\n *\n * @description\n * Is the given date Tuesday?\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Tuesday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 23 September 2014 Tuesday?\n * const result = isTuesday(new Date(2014, 8, 23))\n * //=> true\n */\nexport default function isTuesday(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getDay() === 2;\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n var date = toDate(dirtyDate);\n return !isNaN(Number(date));\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isWednesday\n * @category Weekday Helpers\n * @summary Is the given date Wednesday?\n *\n * @description\n * Is the given date Wednesday?\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Wednesday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 24 September 2014 Wednesday?\n * const result = isWednesday(new Date(2014, 8, 24))\n * //=> true\n */\nexport default function isWednesday(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getDay() === 3;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isWeekend\n * @category Weekday Helpers\n * @summary Does the given date fall on a weekend?\n *\n * @description\n * Does the given date fall on a weekend?\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date falls on a weekend\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Does 5 October 2014 fall on a weekend?\n * const result = isWeekend(new Date(2014, 9, 5))\n * //=> true\n */\nexport default function isWeekend(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var day = date.getDay();\n return day === 0 || day === 6;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isWithinInterval\n * @category Interval Helpers\n * @summary Is the given date within the interval?\n *\n * @description\n * Is the given date within the interval? (Including start and end.)\n *\n * @param {Date|Number} date - the date to check\n * @param {Interval} interval - the interval to check\n * @returns {Boolean} the date is within the interval\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // For the date within the interval:\n * isWithinInterval(new Date(2014, 0, 3), {\n * start: new Date(2014, 0, 1),\n * end: new Date(2014, 0, 7)\n * })\n * //=> true\n *\n * @example\n * // For the date outside of the interval:\n * isWithinInterval(new Date(2014, 0, 10), {\n * start: new Date(2014, 0, 1),\n * end: new Date(2014, 0, 7)\n * })\n * //=> false\n *\n * @example\n * // For date equal to interval start:\n * isWithinInterval(date, { start, end: date }) // => true\n *\n * @example\n * // For date equal to interval end:\n * isWithinInterval(date, { start: date, end }) // => true\n */\nexport default function isWithinInterval(dirtyDate, interval) {\n requiredArgs(2, arguments);\n var time = toDate(dirtyDate).getTime();\n var startTime = toDate(interval.start).getTime();\n var endTime = toDate(interval.end).getTime();\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startTime <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n return time >= startTime && time <= endTime;\n}","import isSameDay from \"../isSameDay/index.js\";\nimport subDays from \"../subDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isYesterday\n * @category Day Helpers\n * @summary Is the given date yesterday?\n * @pure false\n *\n * @description\n * Is the given date yesterday?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is yesterday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 6 October 2014, is 5 October 14:00:00 yesterday?\n * const result = isYesterday(new Date(2014, 9, 5, 14, 0))\n * //=> true\n */\nexport default function isYesterday(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameDay(dirtyDate, subDays(Date.now(), 1));\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name lastDayOfDecade\n * @category Decade Helpers\n * @summary Return the last day of a decade for the given date.\n *\n * @description\n * Return the last day of a decade for the given date.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the last day of a decade\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The last day of a decade for 21 December 2012 21:12:00:\n * const result = lastDayOfDecade(new Date(2012, 11, 21, 21, 12, 00))\n * //=> Wed Dec 31 2019 00:00:00\n */\nexport default function lastDayOfDecade(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var decade = 9 + Math.floor(year / 10) * 10;\n date.setFullYear(decade + 1, 0, 0);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import lastDayOfWeek from \"../lastDayOfWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name lastDayOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the last day of an ISO week for the given date.\n *\n * @description\n * Return the last day of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the last day of an ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The last day of an ISO week for 2 September 2014 11:55:00:\n * const result = lastDayOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport default function lastDayOfISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n return lastDayOfWeek(dirtyDate, {\n weekStartsOn: 1\n });\n}","import getISOWeekYear from \"../getISOWeekYear/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name lastDayOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the last day of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the last day of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of an ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The last day of an ISO week-numbering year for 2 July 2005:\n * const result = lastDayOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Sun Jan 01 2006 00:00:00\n */\nexport default function lastDayOfISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setFullYear(year + 1, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n var date = startOfISOWeek(fourthOfJanuary);\n date.setDate(date.getDate() - 1);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name lastDayOfMonth\n * @category Month Helpers\n * @summary Return the last day of a month for the given date.\n *\n * @description\n * Return the last day of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the last day of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The last day of a month for 2 September 2014 11:55:00:\n * const result = lastDayOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 00:00:00\n */\nexport default function lastDayOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n date.setFullYear(date.getFullYear(), month + 1, 0);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name lastDayOfQuarter\n * @category Quarter Helpers\n * @summary Return the last day of a year quarter for the given date.\n *\n * @description\n * Return the last day of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the last day of a quarter\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The last day of a quarter for 2 September 2014 11:55:00:\n * const result = lastDayOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 00:00:00\n */\nexport default function lastDayOfQuarter(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var currentMonth = date.getMonth();\n var month = currentMonth - currentMonth % 3 + 3;\n date.setMonth(month, 0);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\n/**\n * @name lastDayOfWeek\n * @category Week Helpers\n * @summary Return the last day of a week for the given date.\n *\n * @description\n * Return the last day of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the last day of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The last day of a week for 2 September 2014 11:55:00:\n * const result = lastDayOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the last day of the week for 2 September 2014 11:55:00:\n * const result = lastDayOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport default function lastDayOfWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6');\n }\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n date.setHours(0, 0, 0, 0);\n date.setDate(date.getDate() + diff);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name lastDayOfYear\n * @category Year Helpers\n * @summary Return the last day of a year for the given date.\n *\n * @description\n * Return the last day of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the last day of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The last day of a year for 2 September 2014 11:55:00:\n * const result = lastDayOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 00:00:00\n */\nexport default function lastDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n date.setFullYear(year + 1, 0, 0);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/lightFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport isValid from \"../isValid/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name lightFormat\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. Unlike `format`,\n * `lightFormat` doesn't use locales and outputs date using the most popular tokens.\n *\n * > ⚠️ Please note that the `lightFormat` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples |\n * |---------------------------------|---------|-----------------------------------|\n * | AM, PM | a..aaa | AM, PM |\n * | | aaaa | a.m., p.m. |\n * | | aaaaa | a, p |\n * | Calendar year | y | 44, 1, 1900, 2017 |\n * | | yy | 44, 01, 00, 17 |\n * | | yyy | 044, 001, 000, 017 |\n * | | yyyy | 0044, 0001, 1900, 2017 |\n * | Month (formatting) | M | 1, 2, ..., 12 |\n * | | MM | 01, 02, ..., 12 |\n * | Day of month | d | 1, 2, ..., 31 |\n * | | dd | 01, 02, ..., 31 |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 |\n * | | hh | 01, 02, ..., 11, 12 |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 |\n * | | HH | 00, 01, 02, ..., 23 |\n * | Minute | m | 0, 1, ..., 59 |\n * | | mm | 00, 01, ..., 59 |\n * | Second | s | 0, 1, ..., 59 |\n * | | ss | 00, 01, ..., 59 |\n * | Fraction of second | S | 0, 1, ..., 9 |\n * | | SS | 00, 01, ..., 99 |\n * | | SSS | 000, 001, ..., 999 |\n * | | SSSS | ... |\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * const result = lightFormat(new Date(2014, 1, 11), 'yyyy-MM-dd')\n * //=> '2014-02-11'\n */\n\nexport default function lightFormat(dirtyDate, formatStr) {\n requiredArgs(2, arguments);\n var originalDate = toDate(dirtyDate);\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var tokens = formatStr.match(formattingTokensRegExp);\n\n // The only case when formattingTokensRegExp doesn't match the string is when it's empty\n if (!tokens) return '';\n var result = tokens.map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n var firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n var formatter = formatters[firstCharacter];\n if (formatter) {\n return formatter(utcDate, substring);\n }\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n return substring;\n }).join('');\n return result;\n}\nfunction cleanEscapedString(input) {\n var matches = input.match(escapedStringRegExp);\n if (!matches) {\n return input;\n }\n return matches[1].replace(doubleQuoteRegExp, \"'\");\n}","export default function buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, options) {\n var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n var valuesArray;\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}","export default function buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n if (!matchResult) {\n return null;\n }\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n return undefined;\n}\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}","export default function buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n case 2:\n return number + 'nd';\n case 3:\n return number + 'rd';\n }\n }\n return number + 'th';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'menos de un segundo',\n other: 'menos de {{count}} segundos'\n },\n xSeconds: {\n one: '1 segundo',\n other: '{{count}} segundos'\n },\n halfAMinute: 'medio minuto',\n lessThanXMinutes: {\n one: 'menos de un minuto',\n other: 'menos de {{count}} minutos'\n },\n xMinutes: {\n one: '1 minuto',\n other: '{{count}} minutos'\n },\n aboutXHours: {\n one: 'alrededor de 1 hora',\n other: 'alrededor de {{count}} horas'\n },\n xHours: {\n one: '1 hora',\n other: '{{count}} horas'\n },\n xDays: {\n one: '1 día',\n other: '{{count}} días'\n },\n aboutXWeeks: {\n one: 'alrededor de 1 semana',\n other: 'alrededor de {{count}} semanas'\n },\n xWeeks: {\n one: '1 semana',\n other: '{{count}} semanas'\n },\n aboutXMonths: {\n one: 'alrededor de 1 mes',\n other: 'alrededor de {{count}} meses'\n },\n xMonths: {\n one: '1 mes',\n other: '{{count}} meses'\n },\n aboutXYears: {\n one: 'alrededor de 1 año',\n other: 'alrededor de {{count}} años'\n },\n xYears: {\n one: '1 año',\n other: '{{count}} años'\n },\n overXYears: {\n one: 'más de 1 año',\n other: 'más de {{count}} años'\n },\n almostXYears: {\n one: 'casi 1 año',\n other: 'casi {{count}} años'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'en ' + result;\n } else {\n return 'hace ' + result;\n }\n }\n return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: \"EEEE, d 'de' MMMM 'de' y\",\n long: \"d 'de' MMMM 'de' y\",\n medium: 'd MMM y',\n short: 'dd/MM/y'\n};\nvar timeFormats = {\n full: 'HH:mm:ss zzzz',\n long: 'HH:mm:ss z',\n medium: 'HH:mm:ss',\n short: 'HH:mm'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'a las' {{time}}\",\n long: \"{{date}} 'a las' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'el' eeee 'pasado a la' p\",\n yesterday: \"'ayer a la' p\",\n today: \"'hoy a la' p\",\n tomorrow: \"'mañana a la' p\",\n nextWeek: \"eeee 'a la' p\",\n other: 'P'\n};\nvar formatRelativeLocalePlural = {\n lastWeek: \"'el' eeee 'pasado a las' p\",\n yesterday: \"'ayer a las' p\",\n today: \"'hoy a las' p\",\n tomorrow: \"'mañana a las' p\",\n nextWeek: \"eeee 'a las' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, date, _baseDate, _options) {\n if (date.getUTCHours() !== 1) {\n return formatRelativeLocalePlural[token];\n } else {\n return formatRelativeLocale[token];\n }\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['AC', 'DC'],\n abbreviated: ['AC', 'DC'],\n wide: ['antes de cristo', 'después de cristo']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['T1', 'T2', 'T3', 'T4'],\n wide: ['1º trimestre', '2º trimestre', '3º trimestre', '4º trimestre']\n};\nvar monthValues = {\n narrow: ['e', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'],\n abbreviated: ['ene', 'feb', 'mar', 'abr', 'may', 'jun', 'jul', 'ago', 'sep', 'oct', 'nov', 'dic'],\n wide: ['enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre']\n};\nvar dayValues = {\n narrow: ['d', 'l', 'm', 'm', 'j', 'v', 's'],\n short: ['do', 'lu', 'ma', 'mi', 'ju', 'vi', 'sá'],\n abbreviated: ['dom', 'lun', 'mar', 'mié', 'jue', 'vie', 'sáb'],\n wide: ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mn',\n noon: 'md',\n morning: 'mañana',\n afternoon: 'tarde',\n evening: 'tarde',\n night: 'noche'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'medianoche',\n noon: 'mediodia',\n morning: 'mañana',\n afternoon: 'tarde',\n evening: 'tarde',\n night: 'noche'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'medianoche',\n noon: 'mediodia',\n morning: 'mañana',\n afternoon: 'tarde',\n evening: 'tarde',\n night: 'noche'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mn',\n noon: 'md',\n morning: 'de la mañana',\n afternoon: 'de la tarde',\n evening: 'de la tarde',\n night: 'de la noche'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'medianoche',\n noon: 'mediodia',\n morning: 'de la mañana',\n afternoon: 'de la tarde',\n evening: 'de la tarde',\n night: 'de la noche'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'medianoche',\n noon: 'mediodia',\n morning: 'de la mañana',\n afternoon: 'de la tarde',\n evening: 'de la tarde',\n night: 'de la noche'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n return number + 'º';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return Number(quarter) - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Spanish locale.\n * @language Spanish\n * @iso-639-2 spa\n * @author Juan Angosto [@juanangosto]{@link https://github.com/juanangosto}\n * @author Guillermo Grau [@guigrpa]{@link https://github.com/guigrpa}\n * @author Fernando Agüero [@fjaguero]{@link https://github.com/fjaguero}\n * @author Gastón Haro [@harogaston]{@link https://github.com/harogaston}\n * @author Yago Carballo [@YagoCarballo]{@link https://github.com/YagoCarballo}\n */\nvar locale = {\n code: 'es',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1 /* Monday */,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nimport buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(º)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(ac|dc|a|d)/i,\n abbreviated: /^(a\\.?\\s?c\\.?|a\\.?\\s?e\\.?\\s?c\\.?|d\\.?\\s?c\\.?|e\\.?\\s?c\\.?)/i,\n wide: /^(antes de cristo|antes de la era com[uú]n|despu[eé]s de cristo|era com[uú]n)/i\n};\nvar parseEraPatterns = {\n any: [/^ac/i, /^dc/i],\n wide: [/^(antes de cristo|antes de la era com[uú]n)/i, /^(despu[eé]s de cristo|era com[uú]n)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^T[1234]/i,\n wide: /^[1234](º)? trimestre/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[efmajsond]/i,\n abbreviated: /^(ene|feb|mar|abr|may|jun|jul|ago|sep|oct|nov|dic)/i,\n wide: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^e/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^en/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i]\n};\nvar matchDayPatterns = {\n narrow: /^[dlmjvs]/i,\n short: /^(do|lu|ma|mi|ju|vi|s[áa])/i,\n abbreviated: /^(dom|lun|mar|mi[ée]|jue|vie|s[áa]b)/i,\n wide: /^(domingo|lunes|martes|mi[ée]rcoles|jueves|viernes|s[áa]bado)/i\n};\nvar parseDayPatterns = {\n narrow: [/^d/i, /^l/i, /^m/i, /^m/i, /^j/i, /^v/i, /^s/i],\n any: [/^do/i, /^lu/i, /^ma/i, /^mi/i, /^ju/i, /^vi/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mn|md|(de la|a las) (mañana|tarde|noche))/i,\n any: /^([ap]\\.?\\s?m\\.?|medianoche|mediodia|(de la|a las) (mañana|tarde|noche))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mn/i,\n noon: /^md/i,\n morning: /mañana/i,\n afternoon: /tarde/i,\n evening: /tarde/i,\n night: /noche/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name max\n * @category Common Helpers\n * @summary Return the latest of the given dates.\n *\n * @description\n * Return the latest of the given dates.\n *\n * @param {Date[]|Number[]} datesArray - the dates to compare\n * @returns {Date} the latest of the dates\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which of these dates is the latest?\n * const result = max([\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * ])\n * //=> Sun Jul 02 1995 00:00:00\n */\nexport default function max(dirtyDatesArray) {\n requiredArgs(1, arguments);\n var datesArray;\n // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n if (dirtyDatesArray && typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray;\n\n // If `dirtyDatesArray` is Array-like Object, convert to Array.\n } else if (_typeof(dirtyDatesArray) === 'object' && dirtyDatesArray !== null) {\n datesArray = Array.prototype.slice.call(dirtyDatesArray);\n } else {\n // `dirtyDatesArray` is non-iterable, return Invalid Date\n return new Date(NaN);\n }\n var result;\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate);\n if (result === undefined || result < currentDate || isNaN(Number(currentDate))) {\n result = currentDate;\n }\n });\n return result || new Date(NaN);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\n// Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n// 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\nvar daysInYear = 365.2425;\n\n/**\n * @name milliseconds\n * @category Millisecond Helpers\n * @summary\n * Returns the number of milliseconds in the specified, years, months, weeks, days, hours, minutes and seconds.\n *\n * @description\n * Returns the number of milliseconds in the specified, years, months, weeks, days, hours, minutes and seconds.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n *\n * One month is a year divided by 12.\n *\n * @param {Duration} duration - the object with years, months, weeks, days, hours, minutes and seconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {number} the milliseconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // 1 year in milliseconds\n * milliseconds({ years: 1 })\n * //=> 31556952000\n *\n * // 3 months in milliseconds\n * milliseconds({ months: 3 })\n * //=> 7889238000\n */\nexport default function milliseconds(_ref) {\n var years = _ref.years,\n months = _ref.months,\n weeks = _ref.weeks,\n days = _ref.days,\n hours = _ref.hours,\n minutes = _ref.minutes,\n seconds = _ref.seconds;\n requiredArgs(1, arguments);\n var totalDays = 0;\n if (years) totalDays += years * daysInYear;\n if (months) totalDays += months * (daysInYear / 12);\n if (weeks) totalDays += weeks * 7;\n if (days) totalDays += days;\n var totalSeconds = totalDays * 24 * 60 * 60;\n if (hours) totalSeconds += hours * 60 * 60;\n if (minutes) totalSeconds += minutes * 60;\n if (seconds) totalSeconds += seconds;\n return Math.round(totalSeconds * 1000);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { millisecondsInHour } from \"../constants/index.js\";\n/**\n * @name millisecondsToHours\n * @category Conversion Helpers\n * @summary Convert milliseconds to hours.\n *\n * @description\n * Convert a number of milliseconds to a full number of hours.\n *\n * @param {number} milliseconds - number of milliseconds to be converted\n *\n * @returns {number} the number of milliseconds converted in hours\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 7200000 milliseconds to hours:\n * const result = millisecondsToHours(7200000)\n * //=> 2\n *\n * @example\n * // It uses floor rounding:\n * const result = millisecondsToHours(7199999)\n * //=> 1\n */\nexport default function millisecondsToHours(milliseconds) {\n requiredArgs(1, arguments);\n var hours = milliseconds / millisecondsInHour;\n return Math.floor(hours);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { millisecondsInMinute } from \"../constants/index.js\";\n/**\n * @name millisecondsToMinutes\n * @category Conversion Helpers\n * @summary Convert milliseconds to minutes.\n *\n * @description\n * Convert a number of milliseconds to a full number of minutes.\n *\n * @param {number} milliseconds - number of milliseconds to be converted.\n *\n * @returns {number} the number of milliseconds converted in minutes\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 60000 milliseconds to minutes:\n * const result = millisecondsToMinutes(60000)\n * //=> 1\n *\n * @example\n * // It uses floor rounding:\n * const result = millisecondsToMinutes(119999)\n * //=> 1\n */\nexport default function millisecondsToMinutes(milliseconds) {\n requiredArgs(1, arguments);\n var minutes = milliseconds / millisecondsInMinute;\n return Math.floor(minutes);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { millisecondsInSecond } from \"../constants/index.js\";\n/**\n * @name millisecondsToSeconds\n * @category Conversion Helpers\n * @summary Convert milliseconds to seconds.\n *\n * @description\n * Convert a number of milliseconds to a full number of seconds.\n *\n * @param {number} milliseconds - number of milliseconds to be converted\n *\n * @returns {number} the number of milliseconds converted in seconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 1000 miliseconds to seconds:\n * const result = millisecondsToSeconds(1000)\n * //=> 1\n *\n * @example\n * // It uses floor rounding:\n * const result = millisecondsToSeconds(1999)\n * //=> 1\n */\nexport default function millisecondsToSeconds(milliseconds) {\n requiredArgs(1, arguments);\n var seconds = milliseconds / millisecondsInSecond;\n return Math.floor(seconds);\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name min\n * @category Common Helpers\n * @summary Returns the earliest of the given dates.\n *\n * @description\n * Returns the earliest of the given dates.\n *\n * @param {Date[]|Number[]} datesArray - the dates to compare\n * @returns {Date} - the earliest of the dates\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which of these dates is the earliest?\n * const result = min([\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * ])\n * //=> Wed Feb 11 1987 00:00:00\n */\nexport default function min(dirtyDatesArray) {\n requiredArgs(1, arguments);\n var datesArray;\n // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n if (dirtyDatesArray && typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray;\n // If `dirtyDatesArray` is Array-like Object, convert to Array.\n } else if (_typeof(dirtyDatesArray) === 'object' && dirtyDatesArray !== null) {\n datesArray = Array.prototype.slice.call(dirtyDatesArray);\n } else {\n // `dirtyDatesArray` is non-iterable, return Invalid Date\n return new Date(NaN);\n }\n var result;\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate);\n if (result === undefined || result > currentDate || isNaN(currentDate.getDate())) {\n result = currentDate;\n }\n });\n return result || new Date(NaN);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { minutesInHour } from \"../constants/index.js\";\n/**\n * @name minutesToHours\n * @category Conversion Helpers\n * @summary Convert minutes to hours.\n *\n * @description\n * Convert a number of minutes to a full number of hours.\n *\n * @param {number} minutes - number of minutes to be converted\n *\n * @returns {number} the number of minutes converted in hours\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 140 minutes to hours:\n * const result = minutesToHours(120)\n * //=> 2\n *\n * @example\n * // It uses floor rounding:\n * const result = minutesToHours(179)\n * //=> 2\n */\nexport default function minutesToHours(minutes) {\n requiredArgs(1, arguments);\n var hours = minutes / minutesInHour;\n return Math.floor(hours);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { millisecondsInMinute } from \"../constants/index.js\";\n/**\n * @name minutesToMilliseconds\n * @category Conversion Helpers\n * @summary Convert minutes to milliseconds.\n *\n * @description\n * Convert a number of minutes to a full number of milliseconds.\n *\n * @param {number} minutes - number of minutes to be converted\n *\n * @returns {number} the number of minutes converted in milliseconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 2 minutes to milliseconds\n * const result = minutesToMilliseconds(2)\n * //=> 120000\n */\nexport default function minutesToMilliseconds(minutes) {\n requiredArgs(1, arguments);\n return Math.floor(minutes * millisecondsInMinute);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { secondsInMinute } from \"../constants/index.js\";\n/**\n * @name minutesToSeconds\n * @category Conversion Helpers\n * @summary Convert minutes to seconds.\n *\n * @description\n * Convert a number of minutes to a full number of seconds.\n *\n * @param { number } minutes - number of minutes to be converted\n *\n * @returns {number} the number of minutes converted in seconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 2 minutes to seconds\n * const result = minutesToSeconds(2)\n * //=> 120\n */\nexport default function minutesToSeconds(minutes) {\n requiredArgs(1, arguments);\n return Math.floor(minutes * secondsInMinute);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { monthsInQuarter } from \"../constants/index.js\";\n/**\n * @name monthsToQuarters\n * @category Conversion Helpers\n * @summary Convert number of months to quarters.\n *\n * @description\n * Convert a number of months to a full number of quarters.\n *\n * @param {number} months - number of months to be converted.\n *\n * @returns {number} the number of months converted in quarters\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 6 months to quarters:\n * const result = monthsToQuarters(6)\n * //=> 2\n *\n * @example\n * // It uses floor rounding:\n * const result = monthsToQuarters(7)\n * //=> 2\n */\nexport default function monthsToQuarters(months) {\n requiredArgs(1, arguments);\n var quarters = months / monthsInQuarter;\n return Math.floor(quarters);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { monthsInYear } from \"../constants/index.js\";\n/**\n * @name monthsToYears\n * @category Conversion Helpers\n * @summary Convert number of months to years.\n *\n * @description\n * Convert a number of months to a full number of years.\n *\n * @param {number} months - number of months to be converted\n *\n * @returns {number} the number of months converted in years\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 36 months to years:\n * const result = monthsToYears(36)\n * //=> 3\n *\n * // It uses floor rounding:\n * const result = monthsToYears(40)\n * //=> 3\n */\nexport default function monthsToYears(months) {\n requiredArgs(1, arguments);\n var years = months / monthsInYear;\n return Math.floor(years);\n}","import addDays from \"../addDays/index.js\";\nimport getDay from \"../getDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name nextDay\n * @category Weekday Helpers\n * @summary When is the next day of the week?\n *\n * @description\n * When is the next day of the week? 0-6 the day of the week, 0 represents Sunday.\n *\n * @param {Date | number} date - the date to check\n * @param {Day} day - day of the week\n * @returns {Date} - the date is the next day of week\n * @throws {TypeError} - 2 arguments required\n *\n * @example\n * // When is the next Monday after Mar, 20, 2020?\n * const result = nextDay(new Date(2020, 2, 20), 1)\n * //=> Mon Mar 23 2020 00:00:00\n *\n * @example\n * // When is the next Tuesday after Mar, 21, 2020?\n * const result = nextDay(new Date(2020, 2, 21), 2)\n * //=> Tue Mar 24 2020 00:00:00\n */\nexport default function nextDay(date, day) {\n requiredArgs(2, arguments);\n var delta = day - getDay(date);\n if (delta <= 0) delta += 7;\n return addDays(date, delta);\n}","import nextDay from \"../nextDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name nextFriday\n * @category Weekday Helpers\n * @summary When is the next Friday?\n *\n * @description\n * When is the next Friday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the next Friday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the next Friday after Mar, 22, 2020?\n * const result = nextFriday(new Date(2020, 2, 22))\n * //=> Fri Mar 27 2020 00:00:00\n */\nexport default function nextFriday(date) {\n requiredArgs(1, arguments);\n return nextDay(date, 5);\n}","import nextDay from \"../nextDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name nextMonday\n * @category Weekday Helpers\n * @summary When is the next Monday?\n *\n * @description\n * When is the next Monday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the next Monday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the next Monday after Mar, 22, 2020?\n * const result = nextMonday(new Date(2020, 2, 22))\n * //=> Mon Mar 23 2020 00:00:00\n */\nexport default function nextMonday(date) {\n requiredArgs(1, arguments);\n return nextDay(date, 1);\n}","import nextDay from \"../nextDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name nextSaturday\n * @category Weekday Helpers\n * @summary When is the next Saturday?\n *\n * @description\n * When is the next Saturday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the next Saturday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the next Saturday after Mar, 22, 2020?\n * const result = nextSaturday(new Date(2020, 2, 22))\n * //=> Sat Mar 28 2020 00:00:00\n */\nexport default function nextSaturday(date) {\n requiredArgs(1, arguments);\n return nextDay(date, 6);\n}","import nextDay from \"../nextDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name nextSunday\n * @category Weekday Helpers\n * @summary When is the next Sunday?\n *\n * @description\n * When is the next Sunday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the next Sunday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the next Sunday after Mar, 22, 2020?\n * const result = nextSunday(new Date(2020, 2, 22))\n * //=> Sun Mar 29 2020 00:00:00\n */\nexport default function nextSunday(date) {\n requiredArgs(1, arguments);\n return nextDay(date, 0);\n}","import nextDay from \"../nextDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name nextThursday\n * @category Weekday Helpers\n * @summary When is the next Thursday?\n *\n * @description\n * When is the next Thursday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the next Thursday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the next Thursday after Mar, 22, 2020?\n * const result = nextThursday(new Date(2020, 2, 22))\n * //=> Thur Mar 26 2020 00:00:00\n */\nexport default function nextThursday(date) {\n requiredArgs(1, arguments);\n return nextDay(date, 4);\n}","import nextDay from \"../nextDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name nextTuesday\n * @category Weekday Helpers\n * @summary When is the next Tuesday?\n *\n * @description\n * When is the next Tuesday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the next Tuesday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the next Tuesday after Mar, 22, 2020?\n * const result = nextTuesday(new Date(2020, 2, 22))\n * //=> Tue Mar 24 2020 00:00:00\n */\nexport default function nextTuesday(date) {\n requiredArgs(1, arguments);\n return nextDay(date, 2);\n}","import nextDay from \"../nextDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name nextWednesday\n * @category Weekday Helpers\n * @summary When is the next Wednesday?\n *\n * @description\n * When is the next Wednesday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the next Wednesday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the next Wednesday after Mar, 22, 2020?\n * const result = nextWednesday(new Date(2020, 2, 22))\n * //=> Wed Mar 25 2020 00:00:00\n */\nexport default function nextWednesday(date) {\n requiredArgs(1, arguments);\n return nextDay(date, 3);\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { ValueSetter } from \"./Setter.js\";\nexport var Parser = /*#__PURE__*/function () {\n function Parser() {\n _classCallCheck(this, Parser);\n _defineProperty(this, \"incompatibleTokens\", void 0);\n _defineProperty(this, \"priority\", void 0);\n _defineProperty(this, \"subPriority\", void 0);\n }\n _createClass(Parser, [{\n key: \"run\",\n value: function run(dateString, token, match, options) {\n var result = this.parse(dateString, token, match, options);\n if (!result) {\n return null;\n }\n return {\n setter: new ValueSetter(result.value, this.validate, this.set, this.priority, this.subPriority),\n rest: result.rest\n };\n }\n }, {\n key: \"validate\",\n value: function validate(_utcDate, _value, _options) {\n return true;\n }\n }]);\n return Parser;\n}();","import _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar TIMEZONE_UNIT_PRIORITY = 10;\nexport var Setter = /*#__PURE__*/function () {\n function Setter() {\n _classCallCheck(this, Setter);\n _defineProperty(this, \"priority\", void 0);\n _defineProperty(this, \"subPriority\", 0);\n }\n _createClass(Setter, [{\n key: \"validate\",\n value: function validate(_utcDate, _options) {\n return true;\n }\n }]);\n return Setter;\n}();\nexport var ValueSetter = /*#__PURE__*/function (_Setter) {\n _inherits(ValueSetter, _Setter);\n var _super = _createSuper(ValueSetter);\n function ValueSetter(value, validateValue, setValue, priority, subPriority) {\n var _this;\n _classCallCheck(this, ValueSetter);\n _this = _super.call(this);\n _this.value = value;\n _this.validateValue = validateValue;\n _this.setValue = setValue;\n _this.priority = priority;\n if (subPriority) {\n _this.subPriority = subPriority;\n }\n return _this;\n }\n _createClass(ValueSetter, [{\n key: \"validate\",\n value: function validate(utcDate, options) {\n return this.validateValue(utcDate, this.value, options);\n }\n }, {\n key: \"set\",\n value: function set(utcDate, flags, options) {\n return this.setValue(utcDate, flags, this.value, options);\n }\n }]);\n return ValueSetter;\n}(Setter);\nexport var DateToSystemTimezoneSetter = /*#__PURE__*/function (_Setter2) {\n _inherits(DateToSystemTimezoneSetter, _Setter2);\n var _super2 = _createSuper(DateToSystemTimezoneSetter);\n function DateToSystemTimezoneSetter() {\n var _this2;\n _classCallCheck(this, DateToSystemTimezoneSetter);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this2 = _super2.call.apply(_super2, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this2), \"priority\", TIMEZONE_UNIT_PRIORITY);\n _defineProperty(_assertThisInitialized(_this2), \"subPriority\", -1);\n return _this2;\n }\n _createClass(DateToSystemTimezoneSetter, [{\n key: \"set\",\n value: function set(date, flags) {\n if (flags.timestampIsSet) {\n return date;\n }\n var convertedDate = new Date(0);\n convertedDate.setFullYear(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n convertedDate.setHours(date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds());\n return convertedDate;\n }\n }]);\n return DateToSystemTimezoneSetter;\n}(Setter);","export var numericPatterns = {\n month: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n date: /^(3[0-1]|[0-2]?\\d)/,\n // 0 to 31\n dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/,\n // 0 to 366\n week: /^(5[0-3]|[0-4]?\\d)/,\n // 0 to 53\n hour23h: /^(2[0-3]|[0-1]?\\d)/,\n // 0 to 23\n hour24h: /^(2[0-4]|[0-1]?\\d)/,\n // 0 to 24\n hour11h: /^(1[0-1]|0?\\d)/,\n // 0 to 11\n hour12h: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n minute: /^[0-5]?\\d/,\n // 0 to 59\n second: /^[0-5]?\\d/,\n // 0 to 59\n\n singleDigit: /^\\d/,\n // 0 to 9\n twoDigits: /^\\d{1,2}/,\n // 0 to 99\n threeDigits: /^\\d{1,3}/,\n // 0 to 999\n fourDigits: /^\\d{1,4}/,\n // 0 to 9999\n\n anyDigitsSigned: /^-?\\d+/,\n singleDigitSigned: /^-?\\d/,\n // 0 to 9, -0 to -9\n twoDigitsSigned: /^-?\\d{1,2}/,\n // 0 to 99, -0 to -99\n threeDigitsSigned: /^-?\\d{1,3}/,\n // 0 to 999, -0 to -999\n fourDigitsSigned: /^-?\\d{1,4}/ // 0 to 9999, -0 to -9999\n};\n\nexport var timezonePatterns = {\n basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/\n};","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nexport var EraParser = /*#__PURE__*/function (_Parser) {\n _inherits(EraParser, _Parser);\n var _super = _createSuper(EraParser);\n function EraParser() {\n var _this;\n _classCallCheck(this, EraParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 140);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['R', 'u', 't', 'T']);\n return _this;\n }\n _createClass(EraParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return match.era(dateString, {\n width: 'abbreviated'\n }) || match.era(dateString, {\n width: 'narrow'\n });\n // A, B\n case 'GGGGG':\n return match.era(dateString, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return match.era(dateString, {\n width: 'wide'\n }) || match.era(dateString, {\n width: 'abbreviated'\n }) || match.era(dateString, {\n width: 'narrow'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n flags.era = value;\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return EraParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, normalizeTwoDigitYear, parseNDigits } from \"../utils.js\";\n// From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n// | Year | y | yy | yyy | yyyy | yyyyy |\n// |----------|-------|----|-------|-------|-------|\n// | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n// | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n// | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n// | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n// | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\nexport var YearParser = /*#__PURE__*/function (_Parser) {\n _inherits(YearParser, _Parser);\n var _super = _createSuper(YearParser);\n function YearParser() {\n var _this;\n _classCallCheck(this, YearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'u', 'w', 'I', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(YearParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(year) {\n return {\n year: year,\n isTwoDigitYear: token === 'yy'\n };\n };\n switch (token) {\n case 'y':\n return mapValue(parseNDigits(4, dateString), valueCallback);\n case 'yo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'year'\n }), valueCallback);\n default:\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n var currentYear = date.getUTCFullYear();\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return YearParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigits, normalizeTwoDigitYear, mapValue } from \"../utils.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport startOfUTCWeek from \"../../../_lib/startOfUTCWeek/index.js\";\n// Local week-numbering year\nexport var LocalWeekYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(LocalWeekYearParser, _Parser);\n var _super = _createSuper(LocalWeekYearParser);\n function LocalWeekYearParser() {\n var _this;\n _classCallCheck(this, LocalWeekYearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'Q', 'q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']);\n return _this;\n }\n _createClass(LocalWeekYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(year) {\n return {\n year: year,\n isTwoDigitYear: token === 'YY'\n };\n };\n switch (token) {\n case 'Y':\n return mapValue(parseNDigits(4, dateString), valueCallback);\n case 'Yo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'year'\n }), valueCallback);\n default:\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value, options) {\n var currentYear = getUTCWeekYear(date, options);\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n }\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n }\n }]);\n return LocalWeekYearParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigitsSigned } from \"../utils.js\";\nimport startOfUTCISOWeek from \"../../../_lib/startOfUTCISOWeek/index.js\"; // ISO week-numbering year\nexport var ISOWeekYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOWeekYearParser, _Parser);\n var _super = _createSuper(ISOWeekYearParser);\n function ISOWeekYearParser() {\n var _this;\n _classCallCheck(this, ISOWeekYearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['G', 'y', 'Y', 'u', 'Q', 'q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(ISOWeekYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n if (token === 'R') {\n return parseNDigitsSigned(4, dateString);\n }\n return parseNDigitsSigned(token.length, dateString);\n }\n }, {\n key: \"set\",\n value: function set(_date, _flags, value) {\n var firstWeekOfYear = new Date(0);\n firstWeekOfYear.setUTCFullYear(value, 0, 4);\n firstWeekOfYear.setUTCHours(0, 0, 0, 0);\n return startOfUTCISOWeek(firstWeekOfYear);\n }\n }]);\n return ISOWeekYearParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigitsSigned } from \"../utils.js\";\nexport var ExtendedYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(ExtendedYearParser, _Parser);\n var _super = _createSuper(ExtendedYearParser);\n function ExtendedYearParser() {\n var _this;\n _classCallCheck(this, ExtendedYearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 130);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['G', 'y', 'Y', 'R', 'w', 'I', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(ExtendedYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n if (token === 'u') {\n return parseNDigitsSigned(4, dateString);\n }\n return parseNDigitsSigned(token.length, dateString);\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return ExtendedYearParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigits } from \"../utils.js\";\nexport var QuarterParser = /*#__PURE__*/function (_Parser) {\n _inherits(QuarterParser, _Parser);\n var _super = _createSuper(QuarterParser);\n function QuarterParser() {\n var _this;\n _classCallCheck(this, QuarterParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 120);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(QuarterParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n case 'QQ':\n // 01, 02, 03, 04\n return parseNDigits(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return match.ordinalNumber(dateString, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return match.quarter(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return match.quarter(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return match.quarter(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.quarter(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return QuarterParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseNDigits } from \"../utils.js\";\nexport var StandAloneQuarterParser = /*#__PURE__*/function (_Parser) {\n _inherits(StandAloneQuarterParser, _Parser);\n var _super = _createSuper(StandAloneQuarterParser);\n function StandAloneQuarterParser() {\n var _this;\n _classCallCheck(this, StandAloneQuarterParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 120);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'Q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(StandAloneQuarterParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n case 'qq':\n // 01, 02, 03, 04\n return parseNDigits(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return match.ordinalNumber(dateString, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return match.quarter(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return match.quarter(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return match.quarter(dateString, {\n width: 'wide',\n context: 'standalone'\n }) || match.quarter(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return StandAloneQuarterParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { mapValue, parseNDigits, parseNumericPattern } from \"../utils.js\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nexport var MonthParser = /*#__PURE__*/function (_Parser) {\n _inherits(MonthParser, _Parser);\n var _super = _createSuper(MonthParser);\n function MonthParser() {\n var _this;\n _classCallCheck(this, MonthParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'L', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n _defineProperty(_assertThisInitialized(_this), \"priority\", 110);\n return _this;\n }\n _createClass(MonthParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(value) {\n return value - 1;\n };\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return mapValue(parseNumericPattern(numericPatterns.month, dateString), valueCallback);\n // 01, 02, ..., 12\n case 'MM':\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'month'\n }), valueCallback);\n // Jan, Feb, ..., Dec\n case 'MMM':\n return match.month(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return match.month(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return match.month(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.month(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return MonthParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits, mapValue } from \"../utils.js\";\nexport var StandAloneMonthParser = /*#__PURE__*/function (_Parser) {\n _inherits(StandAloneMonthParser, _Parser);\n var _super = _createSuper(StandAloneMonthParser);\n function StandAloneMonthParser() {\n var _this;\n _classCallCheck(this, StandAloneMonthParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 110);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'M', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(StandAloneMonthParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(value) {\n return value - 1;\n };\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return mapValue(parseNumericPattern(numericPatterns.month, dateString), valueCallback);\n // 01, 02, ..., 12\n case 'LL':\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'month'\n }), valueCallback);\n // Jan, Feb, ..., Dec\n case 'LLL':\n return match.month(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return match.month(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return match.month(dateString, {\n width: 'wide',\n context: 'standalone'\n }) || match.month(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return StandAloneMonthParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nimport setUTCWeek from \"../../../_lib/setUTCWeek/index.js\";\nimport startOfUTCWeek from \"../../../_lib/startOfUTCWeek/index.js\"; // Local week of year\nexport var LocalWeekParser = /*#__PURE__*/function (_Parser) {\n _inherits(LocalWeekParser, _Parser);\n var _super = _createSuper(LocalWeekParser);\n function LocalWeekParser() {\n var _this;\n _classCallCheck(this, LocalWeekParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 100);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']);\n return _this;\n }\n _createClass(LocalWeekParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'w':\n return parseNumericPattern(numericPatterns.week, dateString);\n case 'wo':\n return match.ordinalNumber(dateString, {\n unit: 'week'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n return startOfUTCWeek(setUTCWeek(date, value, options), options);\n }\n }]);\n return LocalWeekParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nimport setUTCISOWeek from \"../../../_lib/setUTCISOWeek/index.js\";\nimport startOfUTCISOWeek from \"../../../_lib/startOfUTCISOWeek/index.js\"; // ISO week of year\nexport var ISOWeekParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOWeekParser, _Parser);\n var _super = _createSuper(ISOWeekParser);\n function ISOWeekParser() {\n var _this;\n _classCallCheck(this, ISOWeekParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 100);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(ISOWeekParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'I':\n return parseNumericPattern(numericPatterns.week, dateString);\n case 'Io':\n return match.ordinalNumber(dateString, {\n unit: 'week'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n return startOfUTCISOWeek(setUTCISOWeek(date, value));\n }\n }]);\n return ISOWeekParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { isLeapYearIndex, parseNDigits, parseNumericPattern } from \"../utils.js\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\n// Day of the month\nexport var DateParser = /*#__PURE__*/function (_Parser) {\n _inherits(DateParser, _Parser);\n var _super = _createSuper(DateParser);\n function DateParser() {\n var _this;\n _classCallCheck(this, DateParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"subPriority\", 1);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(DateParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'd':\n return parseNumericPattern(numericPatterns.date, dateString);\n case 'do':\n return match.ordinalNumber(dateString, {\n unit: 'date'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(date, value) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n var month = date.getUTCMonth();\n if (isLeapYear) {\n return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];\n } else {\n return value >= 1 && value <= DAYS_IN_MONTH[month];\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCDate(value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return DateParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits, isLeapYearIndex } from \"../utils.js\";\nexport var DayOfYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(DayOfYearParser, _Parser);\n var _super = _createSuper(DayOfYearParser);\n function DayOfYearParser() {\n var _this;\n _classCallCheck(this, DayOfYearParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"subpriority\", 1);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'M', 'L', 'w', 'I', 'd', 'E', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(DayOfYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'D':\n case 'DD':\n return parseNumericPattern(numericPatterns.dayOfYear, dateString);\n case 'Do':\n return match.ordinalNumber(dateString, {\n unit: 'date'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(date, value) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n if (isLeapYear) {\n return value >= 1 && value <= 366;\n } else {\n return value >= 1 && value <= 365;\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth(0, value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return DayOfYearParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Day of week\nexport var DayParser = /*#__PURE__*/function (_Parser) {\n _inherits(DayParser, _Parser);\n var _super = _createSuper(DayParser);\n function DayParser() {\n var _this;\n _classCallCheck(this, DayParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(DayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return match.day(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return DayParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Local day of week\nexport var LocalDayParser = /*#__PURE__*/function (_Parser) {\n _inherits(LocalDayParser, _Parser);\n var _super = _createSuper(LocalDayParser);\n function LocalDayParser() {\n var _this;\n _classCallCheck(this, LocalDayParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'c', 't', 'T']);\n return _this;\n }\n _createClass(LocalDayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match, options) {\n var valueCallback = function valueCallback(value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n switch (token) {\n // 3\n case 'e':\n case 'ee':\n // 03\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n case 'eo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'day'\n }), valueCallback);\n // Tue\n case 'eee':\n return match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return match.day(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return LocalDayParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Stand-alone local day of week\nexport var StandAloneLocalDayParser = /*#__PURE__*/function (_Parser) {\n _inherits(StandAloneLocalDayParser, _Parser);\n var _super = _createSuper(StandAloneLocalDayParser);\n function StandAloneLocalDayParser() {\n var _this;\n _classCallCheck(this, StandAloneLocalDayParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'e', 't', 'T']);\n return _this;\n }\n _createClass(StandAloneLocalDayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match, options) {\n var valueCallback = function valueCallback(value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n switch (token) {\n // 3\n case 'c':\n case 'cc':\n // 03\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n case 'co':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'day'\n }), valueCallback);\n // Tue\n case 'ccc':\n return match.day(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'short',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return match.day(dateString, {\n width: 'short',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return match.day(dateString, {\n width: 'wide',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'short',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return StandAloneLocalDayParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCISODay from \"../../../_lib/setUTCISODay/index.js\"; // ISO day of week\nexport var ISODayParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISODayParser, _Parser);\n var _super = _createSuper(ISODayParser);\n function ISODayParser() {\n var _this;\n _classCallCheck(this, ISODayParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'E', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(ISODayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(value) {\n if (value === 0) {\n return 7;\n }\n return value;\n };\n switch (token) {\n // 2\n case 'i':\n case 'ii':\n // 02\n return parseNDigits(token.length, dateString);\n // 2nd\n case 'io':\n return match.ordinalNumber(dateString, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return mapValue(match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n // T\n case 'iiiii':\n return mapValue(match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n // Tu\n case 'iiiiii':\n return mapValue(match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n // Tuesday\n case 'iiii':\n default:\n return mapValue(match.day(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 7;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date = setUTCISODay(date, value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return ISODayParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\";\nexport var AMPMParser = /*#__PURE__*/function (_Parser) {\n _inherits(AMPMParser, _Parser);\n var _super = _createSuper(AMPMParser);\n function AMPMParser() {\n var _this;\n _classCallCheck(this, AMPMParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['b', 'B', 'H', 'k', 't', 'T']);\n return _this;\n }\n _createClass(AMPMParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaaa':\n return match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return match.dayPeriod(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n }]);\n return AMPMParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\";\nexport var AMPMMidnightParser = /*#__PURE__*/function (_Parser) {\n _inherits(AMPMMidnightParser, _Parser);\n var _super = _createSuper(AMPMMidnightParser);\n function AMPMMidnightParser() {\n var _this;\n _classCallCheck(this, AMPMMidnightParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'B', 'H', 'k', 't', 'T']);\n return _this;\n }\n _createClass(AMPMMidnightParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbbb':\n return match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return match.dayPeriod(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n }]);\n return AMPMMidnightParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\"; // in the morning, in the afternoon, in the evening, at night\nexport var DayPeriodParser = /*#__PURE__*/function (_Parser) {\n _inherits(DayPeriodParser, _Parser);\n var _super = _createSuper(DayPeriodParser);\n function DayPeriodParser() {\n var _this;\n _classCallCheck(this, DayPeriodParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 80);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 't', 'T']);\n return _this;\n }\n _createClass(DayPeriodParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBBB':\n return match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return match.dayPeriod(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n }]);\n return DayPeriodParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour1to12Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour1to12Parser, _Parser);\n var _super = _createSuper(Hour1to12Parser);\n function Hour1to12Parser() {\n var _this;\n _classCallCheck(this, Hour1to12Parser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['H', 'K', 'k', 't', 'T']);\n return _this;\n }\n _createClass(Hour1to12Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'h':\n return parseNumericPattern(numericPatterns.hour12h, dateString);\n case 'ho':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 12;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n var isPM = date.getUTCHours() >= 12;\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else if (!isPM && value === 12) {\n date.setUTCHours(0, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n return date;\n }\n }]);\n return Hour1to12Parser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour0to23Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour0to23Parser, _Parser);\n var _super = _createSuper(Hour0to23Parser);\n function Hour0to23Parser() {\n var _this;\n _classCallCheck(this, Hour0to23Parser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 'h', 'K', 'k', 't', 'T']);\n return _this;\n }\n _createClass(Hour0to23Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'H':\n return parseNumericPattern(numericPatterns.hour23h, dateString);\n case 'Ho':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 23;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(value, 0, 0, 0);\n return date;\n }\n }]);\n return Hour0to23Parser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour0To11Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour0To11Parser, _Parser);\n var _super = _createSuper(Hour0To11Parser);\n function Hour0To11Parser() {\n var _this;\n _classCallCheck(this, Hour0To11Parser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['h', 'H', 'k', 't', 'T']);\n return _this;\n }\n _createClass(Hour0To11Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'K':\n return parseNumericPattern(numericPatterns.hour11h, dateString);\n case 'Ko':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n var isPM = date.getUTCHours() >= 12;\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n return date;\n }\n }]);\n return Hour0To11Parser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour1To24Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour1To24Parser, _Parser);\n var _super = _createSuper(Hour1To24Parser);\n function Hour1To24Parser() {\n var _this;\n _classCallCheck(this, Hour1To24Parser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 70);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 'h', 'H', 'K', 't', 'T']);\n return _this;\n }\n _createClass(Hour1To24Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'k':\n return parseNumericPattern(numericPatterns.hour24h, dateString);\n case 'ko':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 24;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n var hours = value <= 24 ? value % 24 : value;\n date.setUTCHours(hours, 0, 0, 0);\n return date;\n }\n }]);\n return Hour1To24Parser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var MinuteParser = /*#__PURE__*/function (_Parser) {\n _inherits(MinuteParser, _Parser);\n var _super = _createSuper(MinuteParser);\n function MinuteParser() {\n var _this;\n _classCallCheck(this, MinuteParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 60);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n return _this;\n }\n _createClass(MinuteParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'm':\n return parseNumericPattern(numericPatterns.minute, dateString);\n case 'mo':\n return match.ordinalNumber(dateString, {\n unit: 'minute'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMinutes(value, 0, 0);\n return date;\n }\n }]);\n return MinuteParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var SecondParser = /*#__PURE__*/function (_Parser) {\n _inherits(SecondParser, _Parser);\n var _super = _createSuper(SecondParser);\n function SecondParser() {\n var _this;\n _classCallCheck(this, SecondParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 50);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n return _this;\n }\n _createClass(SecondParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 's':\n return parseNumericPattern(numericPatterns.second, dateString);\n case 'so':\n return match.ordinalNumber(dateString, {\n unit: 'second'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCSeconds(value, 0);\n return date;\n }\n }]);\n return SecondParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nexport var FractionOfSecondParser = /*#__PURE__*/function (_Parser) {\n _inherits(FractionOfSecondParser, _Parser);\n var _super = _createSuper(FractionOfSecondParser);\n function FractionOfSecondParser() {\n var _this;\n _classCallCheck(this, FractionOfSecondParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 30);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n return _this;\n }\n _createClass(FractionOfSecondParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n var valueCallback = function valueCallback(value) {\n return Math.floor(value * Math.pow(10, -token.length + 3));\n };\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMilliseconds(value);\n return date;\n }\n }]);\n return FractionOfSecondParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { parseTimezonePattern } from \"../utils.js\"; // Timezone (ISO-8601. +00:00 is `'Z'`)\nexport var ISOTimezoneWithZParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOTimezoneWithZParser, _Parser);\n var _super = _createSuper(ISOTimezoneWithZParser);\n function ISOTimezoneWithZParser() {\n var _this;\n _classCallCheck(this, ISOTimezoneWithZParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 10);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T', 'x']);\n return _this;\n }\n _createClass(ISOTimezoneWithZParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n switch (token) {\n case 'X':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, dateString);\n case 'XX':\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n case 'XXXX':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, dateString);\n case 'XXXXX':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, dateString);\n case 'XXX':\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n if (flags.timestampIsSet) {\n return date;\n }\n return new Date(date.getTime() - value);\n }\n }]);\n return ISOTimezoneWithZParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { parseTimezonePattern } from \"../utils.js\"; // Timezone (ISO-8601)\nexport var ISOTimezoneParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOTimezoneParser, _Parser);\n var _super = _createSuper(ISOTimezoneParser);\n function ISOTimezoneParser() {\n var _this;\n _classCallCheck(this, ISOTimezoneParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 10);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T', 'X']);\n return _this;\n }\n _createClass(ISOTimezoneParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n switch (token) {\n case 'x':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, dateString);\n case 'xx':\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n case 'xxxx':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, dateString);\n case 'xxxxx':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, dateString);\n case 'xxx':\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n if (flags.timestampIsSet) {\n return date;\n }\n return new Date(date.getTime() - value);\n }\n }]);\n return ISOTimezoneParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseAnyDigitsSigned } from \"../utils.js\";\nexport var TimestampSecondsParser = /*#__PURE__*/function (_Parser) {\n _inherits(TimestampSecondsParser, _Parser);\n var _super = _createSuper(TimestampSecondsParser);\n function TimestampSecondsParser() {\n var _this;\n _classCallCheck(this, TimestampSecondsParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 40);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", '*');\n return _this;\n }\n _createClass(TimestampSecondsParser, [{\n key: \"parse\",\n value: function parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n }, {\n key: \"set\",\n value: function set(_date, _flags, value) {\n return [new Date(value * 1000), {\n timestampIsSet: true\n }];\n }\n }]);\n return TimestampSecondsParser;\n}(Parser);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { Parser } from \"../Parser.js\";\nimport { parseAnyDigitsSigned } from \"../utils.js\";\nexport var TimestampMillisecondsParser = /*#__PURE__*/function (_Parser) {\n _inherits(TimestampMillisecondsParser, _Parser);\n var _super = _createSuper(TimestampMillisecondsParser);\n function TimestampMillisecondsParser() {\n var _this;\n _classCallCheck(this, TimestampMillisecondsParser);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"priority\", 20);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", '*');\n return _this;\n }\n _createClass(TimestampMillisecondsParser, [{\n key: \"parse\",\n value: function parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n }, {\n key: \"set\",\n value: function set(_date, _flags, value) {\n return [new Date(value), {\n timestampIsSet: true\n }];\n }\n }]);\n return TimestampMillisecondsParser;\n}(Parser);","import { EraParser } from \"./EraParser.js\";\nimport { YearParser } from \"./YearParser.js\";\nimport { LocalWeekYearParser } from \"./LocalWeekYearParser.js\";\nimport { ISOWeekYearParser } from \"./ISOWeekYearParser.js\";\nimport { ExtendedYearParser } from \"./ExtendedYearParser.js\";\nimport { QuarterParser } from \"./QuarterParser.js\";\nimport { StandAloneQuarterParser } from \"./StandAloneQuarterParser.js\";\nimport { MonthParser } from \"./MonthParser.js\";\nimport { StandAloneMonthParser } from \"./StandAloneMonthParser.js\";\nimport { LocalWeekParser } from \"./LocalWeekParser.js\";\nimport { ISOWeekParser } from \"./ISOWeekParser.js\";\nimport { DateParser } from \"./DateParser.js\";\nimport { DayOfYearParser } from \"./DayOfYearParser.js\";\nimport { DayParser } from \"./DayParser.js\";\nimport { LocalDayParser } from \"./LocalDayParser.js\";\nimport { StandAloneLocalDayParser } from \"./StandAloneLocalDayParser.js\";\nimport { ISODayParser } from \"./ISODayParser.js\";\nimport { AMPMParser } from \"./AMPMParser.js\";\nimport { AMPMMidnightParser } from \"./AMPMMidnightParser.js\";\nimport { DayPeriodParser } from \"./DayPeriodParser.js\";\nimport { Hour1to12Parser } from \"./Hour1to12Parser.js\";\nimport { Hour0to23Parser } from \"./Hour0to23Parser.js\";\nimport { Hour0To11Parser } from \"./Hour0To11Parser.js\";\nimport { Hour1To24Parser } from \"./Hour1To24Parser.js\";\nimport { MinuteParser } from \"./MinuteParser.js\";\nimport { SecondParser } from \"./SecondParser.js\";\nimport { FractionOfSecondParser } from \"./FractionOfSecondParser.js\";\nimport { ISOTimezoneWithZParser } from \"./ISOTimezoneWithZParser.js\";\nimport { ISOTimezoneParser } from \"./ISOTimezoneParser.js\";\nimport { TimestampSecondsParser } from \"./TimestampSecondsParser.js\";\nimport { TimestampMillisecondsParser } from \"./TimestampMillisecondsParser.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O* | Timezone (GMT) |\n * | p | | P | |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z* | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n */\nexport var parsers = {\n G: new EraParser(),\n y: new YearParser(),\n Y: new LocalWeekYearParser(),\n R: new ISOWeekYearParser(),\n u: new ExtendedYearParser(),\n Q: new QuarterParser(),\n q: new StandAloneQuarterParser(),\n M: new MonthParser(),\n L: new StandAloneMonthParser(),\n w: new LocalWeekParser(),\n I: new ISOWeekParser(),\n d: new DateParser(),\n D: new DayOfYearParser(),\n E: new DayParser(),\n e: new LocalDayParser(),\n c: new StandAloneLocalDayParser(),\n i: new ISODayParser(),\n a: new AMPMParser(),\n b: new AMPMMidnightParser(),\n B: new DayPeriodParser(),\n h: new Hour1to12Parser(),\n H: new Hour0to23Parser(),\n K: new Hour0To11Parser(),\n k: new Hour1To24Parser(),\n m: new MinuteParser(),\n s: new SecondParser(),\n S: new FractionOfSecondParser(),\n X: new ISOTimezoneWithZParser(),\n x: new ISOTimezoneParser(),\n t: new TimestampSecondsParser(),\n T: new TimestampMillisecondsParser()\n};","import { millisecondsInHour, millisecondsInMinute, millisecondsInSecond } from \"../../constants/index.js\";\nimport { numericPatterns } from \"./constants.js\";\nexport function mapValue(parseFnResult, mapFn) {\n if (!parseFnResult) {\n return parseFnResult;\n }\n return {\n value: mapFn(parseFnResult.value),\n rest: parseFnResult.rest\n };\n}\nexport function parseNumericPattern(pattern, dateString) {\n var matchResult = dateString.match(pattern);\n if (!matchResult) {\n return null;\n }\n return {\n value: parseInt(matchResult[0], 10),\n rest: dateString.slice(matchResult[0].length)\n };\n}\nexport function parseTimezonePattern(pattern, dateString) {\n var matchResult = dateString.match(pattern);\n if (!matchResult) {\n return null;\n }\n\n // Input is 'Z'\n if (matchResult[0] === 'Z') {\n return {\n value: 0,\n rest: dateString.slice(1)\n };\n }\n var sign = matchResult[1] === '+' ? 1 : -1;\n var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n return {\n value: sign * (hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * millisecondsInSecond),\n rest: dateString.slice(matchResult[0].length)\n };\n}\nexport function parseAnyDigitsSigned(dateString) {\n return parseNumericPattern(numericPatterns.anyDigitsSigned, dateString);\n}\nexport function parseNDigits(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigit, dateString);\n case 2:\n return parseNumericPattern(numericPatterns.twoDigits, dateString);\n case 3:\n return parseNumericPattern(numericPatterns.threeDigits, dateString);\n case 4:\n return parseNumericPattern(numericPatterns.fourDigits, dateString);\n default:\n return parseNumericPattern(new RegExp('^\\\\d{1,' + n + '}'), dateString);\n }\n}\nexport function parseNDigitsSigned(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigitSigned, dateString);\n case 2:\n return parseNumericPattern(numericPatterns.twoDigitsSigned, dateString);\n case 3:\n return parseNumericPattern(numericPatterns.threeDigitsSigned, dateString);\n case 4:\n return parseNumericPattern(numericPatterns.fourDigitsSigned, dateString);\n default:\n return parseNumericPattern(new RegExp('^-?\\\\d{1,' + n + '}'), dateString);\n }\n}\nexport function dayPeriodEnumToHours(dayPeriod) {\n switch (dayPeriod) {\n case 'morning':\n return 4;\n case 'evening':\n return 17;\n case 'pm':\n case 'noon':\n case 'afternoon':\n return 12;\n case 'am':\n case 'midnight':\n case 'night':\n default:\n return 0;\n }\n}\nexport function normalizeTwoDigitYear(twoDigitYear, currentYear) {\n var isCommonEra = currentYear > 0;\n // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n var result;\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100;\n } else {\n var rangeEnd = absCurrentYear + 50;\n var rangeEndCentury = Math.floor(rangeEnd / 100) * 100;\n var isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n }\n return isCommonEra ? result : 1 - result;\n}\nexport function isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _createForOfIteratorHelper from \"@babel/runtime/helpers/esm/createForOfIteratorHelper\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport assign from \"../_lib/assign/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { DateToSystemTimezoneSetter } from \"./_lib/Setter.js\";\nimport { parsers } from \"./_lib/parsers/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar notWhitespaceRegExp = /\\S/;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * parse('23 AM', 'HH a', new Date())\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 7 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 7 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Sun | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Seconds timestamp | 40 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Fraction of second | 30 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Milliseconds timestamp | 20 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 10 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 10 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Long localized date | NA | P | 05/29/1453 | 5,8 |\n * | | | PP | May 29, 1453 | |\n * | | | PPP | May 29th, 1453 | |\n * | | | PPPP | Sunday, May 29th, 1453 | 2,5,8 |\n * | Long localized time | NA | p | 12:00 AM | 5,8 |\n * | | | pp | 12:00:00 AM | |\n * | Combination of date and time | NA | Pp | 05/29/1453, 12:00 AM | |\n * | | | PPpp | May 29, 1453, 12:00:00 AM | |\n * | | | PPPpp | May 29th, 1453 at ... | |\n * | | | PPPPpp | Sunday, May 29th, 1453 at ... | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `parse` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `referenceDate`:\n *\n * `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n * `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n * while `uu` will just assign the year as is:\n *\n * `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n * `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n * and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 7. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n * on the given locale.\n *\n * using `en-US` locale: `P` => `MM/dd/yyyy`\n * using `en-US` locale: `p` => `hh:mm a`\n * using `pt-BR` locale: `P` => `dd/MM/yyyy`\n * using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `referenceDate` which works as a context of parsing.\n *\n * `referenceDate` must be passed for correct work of the function.\n * If you're not sure which `referenceDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `referenceDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|Number} referenceDate - defines values missing from the parsed dateString\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {Date} the parsed date\n * @throws {TypeError} 3 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse('28-a de februaro', \"do 'de' MMMM\", new Date(2010, 0, 1), {\n * locale: eo\n * })\n * //=> Sun Feb 28 2010 00:00:00\n */\nexport default function parse(dirtyDateString, dirtyFormatString, dirtyReferenceDate, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n requiredArgs(3, arguments);\n var dateString = String(dirtyDateString);\n var formatString = String(dirtyFormatString);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n if (!locale.match) {\n throw new RangeError('locale must contain match property');\n }\n var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n if (formatString === '') {\n if (dateString === '') {\n return toDate(dirtyReferenceDate);\n } else {\n return new Date(NaN);\n }\n }\n var subFnOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale\n };\n\n // If timezone isn't specified, it will be set to the system timezone\n var setters = [new DateToSystemTimezoneSetter()];\n var tokens = formatString.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter in longFormatters) {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join('').match(formattingTokensRegExp);\n var usedTokens = [];\n var _iterator = _createForOfIteratorHelper(tokens),\n _step;\n try {\n var _loop = function _loop() {\n var token = _step.value;\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(token)) {\n throwProtectedError(token, formatString, dirtyDateString);\n }\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(token)) {\n throwProtectedError(token, formatString, dirtyDateString);\n }\n var firstCharacter = token[0];\n var parser = parsers[firstCharacter];\n if (parser) {\n var incompatibleTokens = parser.incompatibleTokens;\n if (Array.isArray(incompatibleTokens)) {\n var incompatibleToken = usedTokens.find(function (usedToken) {\n return incompatibleTokens.includes(usedToken.token) || usedToken.token === firstCharacter;\n });\n if (incompatibleToken) {\n throw new RangeError(\"The format string mustn't contain `\".concat(incompatibleToken.fullToken, \"` and `\").concat(token, \"` at the same time\"));\n }\n } else if (parser.incompatibleTokens === '*' && usedTokens.length > 0) {\n throw new RangeError(\"The format string mustn't contain `\".concat(token, \"` and any other token at the same time\"));\n }\n usedTokens.push({\n token: firstCharacter,\n fullToken: token\n });\n var parseResult = parser.run(dateString, token, locale.match, subFnOptions);\n if (!parseResult) {\n return {\n v: new Date(NaN)\n };\n }\n setters.push(parseResult.setter);\n dateString = parseResult.rest;\n } else {\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n\n // Replace two single quote characters with one single quote character\n if (token === \"''\") {\n token = \"'\";\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString(token);\n }\n\n // Cut token from string, or, if string doesn't match the token, return Invalid Date\n if (dateString.indexOf(token) === 0) {\n dateString = dateString.slice(token.length);\n } else {\n return {\n v: new Date(NaN)\n };\n }\n }\n };\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _ret = _loop();\n if (_typeof(_ret) === \"object\") return _ret.v;\n }\n\n // Check if the remaining input contains something other than whitespace\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n return new Date(NaN);\n }\n var uniquePrioritySetters = setters.map(function (setter) {\n return setter.priority;\n }).sort(function (a, b) {\n return b - a;\n }).filter(function (priority, index, array) {\n return array.indexOf(priority) === index;\n }).map(function (priority) {\n return setters.filter(function (setter) {\n return setter.priority === priority;\n }).sort(function (a, b) {\n return b.subPriority - a.subPriority;\n });\n }).map(function (setterArray) {\n return setterArray[0];\n });\n var date = toDate(dirtyReferenceDate);\n if (isNaN(date.getTime())) {\n return new Date(NaN);\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n var flags = {};\n var _iterator2 = _createForOfIteratorHelper(uniquePrioritySetters),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var setter = _step2.value;\n if (!setter.validate(utcDate, subFnOptions)) {\n return new Date(NaN);\n }\n var result = setter.set(utcDate, flags, subFnOptions);\n // Result is tuple (date, flags)\n if (Array.isArray(result)) {\n utcDate = result[0];\n assign(flags, result[1]);\n // Result is date\n } else {\n utcDate = result;\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return utcDate;\n}\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","import { millisecondsInHour, millisecondsInMinute } from \"../constants/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * @param {String} argument - the value to convert\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * const result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * const result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport default function parseISO(argument, options) {\n var _options$additionalDi;\n requiredArgs(1, arguments);\n var additionalDigits = toInteger((_options$additionalDi = options === null || options === void 0 ? void 0 : options.additionalDigits) !== null && _options$additionalDi !== void 0 ? _options$additionalDi : 2);\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2');\n }\n if (!(typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]')) {\n return new Date(NaN);\n }\n var dateStrings = splitDateString(argument);\n var date;\n if (dateStrings.date) {\n var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n }\n if (!date || isNaN(date.getTime())) {\n return new Date(NaN);\n }\n var timestamp = date.getTime();\n var time = 0;\n var offset;\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n if (isNaN(time)) {\n return new Date(NaN);\n }\n }\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n if (isNaN(offset)) {\n return new Date(NaN);\n }\n } else {\n var dirtyDate = new Date(timestamp + time);\n // js parsed string assuming it's in UTC timezone\n // but we need it to be parsed in our timezone\n // so we use utc values to build date in our timezone.\n // Year values from 0 to 99 map to the years 1900 to 1999\n // so set year explicitly with setFullYear.\n var result = new Date(0);\n result.setFullYear(dirtyDate.getUTCFullYear(), dirtyDate.getUTCMonth(), dirtyDate.getUTCDate());\n result.setHours(dirtyDate.getUTCHours(), dirtyDate.getUTCMinutes(), dirtyDate.getUTCSeconds(), dirtyDate.getUTCMilliseconds());\n return result;\n }\n return new Date(timestamp + time + offset);\n}\nvar patterns = {\n dateTimeDelimiter: /[T ]/,\n timeZoneDelimiter: /[Z ]/i,\n timezone: /([Z+-].*)$/\n};\nvar dateRegex = /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nvar timeRegex = /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nvar timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\nfunction splitDateString(dateString) {\n var dateStrings = {};\n var array = dateString.split(patterns.dateTimeDelimiter);\n var timeString;\n\n // The regex match should only return at maximum two array elements.\n // [date], [time], or [date, time].\n if (array.length > 2) {\n return dateStrings;\n }\n if (/:/.test(array[0])) {\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n timeString = dateString.substr(dateStrings.date.length, dateString.length);\n }\n }\n if (timeString) {\n var token = patterns.timezone.exec(timeString);\n if (token) {\n dateStrings.time = timeString.replace(token[1], '');\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n return dateStrings;\n}\nfunction parseYear(dateString, additionalDigits) {\n var regex = new RegExp('^(?:(\\\\d{4}|[+-]\\\\d{' + (4 + additionalDigits) + '})|(\\\\d{2}|[+-]\\\\d{' + (2 + additionalDigits) + '})$)');\n var captures = dateString.match(regex);\n // Invalid ISO-formatted year\n if (!captures) return {\n year: NaN,\n restDateString: ''\n };\n var year = captures[1] ? parseInt(captures[1]) : null;\n var century = captures[2] ? parseInt(captures[2]) : null;\n\n // either year or century is null, not both\n return {\n year: century === null ? year : century * 100,\n restDateString: dateString.slice((captures[1] || captures[2]).length)\n };\n}\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) return new Date(NaN);\n var captures = dateString.match(dateRegex);\n // Invalid ISO-formatted string\n if (!captures) return new Date(NaN);\n var isWeekDate = !!captures[4];\n var dayOfYear = parseDateUnit(captures[1]);\n var month = parseDateUnit(captures[2]) - 1;\n var day = parseDateUnit(captures[3]);\n var week = parseDateUnit(captures[4]);\n var dayOfWeek = parseDateUnit(captures[5]) - 1;\n if (isWeekDate) {\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN);\n }\n return dayOfISOWeekYear(year, week, dayOfWeek);\n } else {\n var date = new Date(0);\n if (!validateDate(year, month, day) || !validateDayOfYearDate(year, dayOfYear)) {\n return new Date(NaN);\n }\n date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n return date;\n }\n}\nfunction parseDateUnit(value) {\n return value ? parseInt(value) : 1;\n}\nfunction parseTime(timeString) {\n var captures = timeString.match(timeRegex);\n if (!captures) return NaN; // Invalid ISO-formatted time\n\n var hours = parseTimeUnit(captures[1]);\n var minutes = parseTimeUnit(captures[2]);\n var seconds = parseTimeUnit(captures[3]);\n if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n return hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * 1000;\n}\nfunction parseTimeUnit(value) {\n return value && parseFloat(value.replace(',', '.')) || 0;\n}\nfunction parseTimezone(timezoneString) {\n if (timezoneString === 'Z') return 0;\n var captures = timezoneString.match(timezoneRegex);\n if (!captures) return 0;\n var sign = captures[1] === '+' ? -1 : 1;\n var hours = parseInt(captures[2]);\n var minutes = captures[3] && parseInt(captures[3]) || 0;\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n return sign * (hours * millisecondsInHour + minutes * millisecondsInMinute);\n}\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n var date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n var fourthOfJanuaryDay = date.getUTCDay() || 7;\n var diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}\n\n// Validation functions\n\n// February is null to handle the leap year (using ||)\nvar daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\nfunction validateDate(year, month, date) {\n return month >= 0 && month <= 11 && date >= 1 && date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28));\n}\nfunction validateDayOfYearDate(year, dayOfYear) {\n return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\nfunction validateWeekDate(_year, week, day) {\n return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\nfunction validateTime(hours, minutes, seconds) {\n if (hours === 24) {\n return minutes === 0 && seconds === 0;\n }\n return seconds >= 0 && seconds < 60 && minutes >= 0 && minutes < 60 && hours >= 0 && hours < 25;\n}\nfunction validateTimezone(_hours, minutes) {\n return minutes >= 0 && minutes <= 59;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name parseJSON\n * @category Common Helpers\n * @summary Parse a JSON date string\n *\n * @description\n * Converts a complete ISO date string in UTC time, the typical format for transmitting\n * a date in JSON, to a JavaScript `Date` instance.\n *\n * This is a minimal implementation for converting dates retrieved from a JSON API to\n * a `Date` instance which can be used with other functions in the `date-fns` library.\n * The following formats are supported:\n *\n * - `2000-03-15T05:20:10.123Z`: The output of `.toISOString()` and `JSON.stringify(new Date())`\n * - `2000-03-15T05:20:10Z`: Without milliseconds\n * - `2000-03-15T05:20:10+00:00`: With a zero offset, the default JSON encoded format in some other languages\n * - `2000-03-15T05:20:10+05:45`: With a positive or negative offset, the default JSON encoded format in some other languages\n * - `2000-03-15T05:20:10+0000`: With a zero offset without a colon\n * - `2000-03-15T05:20:10`: Without a trailing 'Z' symbol\n * - `2000-03-15T05:20:10.1234567`: Up to 7 digits in milliseconds field. Only first 3 are taken into account since JS does not allow fractional milliseconds\n * - `2000-03-15 05:20:10`: With a space instead of a 'T' separator for APIs returning a SQL date without reformatting\n *\n * For convenience and ease of use these other input types are also supported\n * via [toDate]{@link https://date-fns.org/docs/toDate}:\n *\n * - A `Date` instance will be cloned\n * - A `number` will be treated as a timestamp\n *\n * Any other input type or invalid date strings will return an `Invalid Date`.\n *\n * @param {String|Number|Date} argument A fully formed ISO8601 date string to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n */\nexport default function parseJSON(argument) {\n requiredArgs(1, arguments);\n if (typeof argument === 'string') {\n var parts = argument.match(/(\\d{4})-(\\d{2})-(\\d{2})[T ](\\d{2}):(\\d{2}):(\\d{2})(?:\\.(\\d{0,7}))?(?:Z|(.)(\\d{2}):?(\\d{2})?)?/);\n if (parts) {\n // Group 8 matches the sign\n return new Date(Date.UTC(+parts[1], +parts[2] - 1, +parts[3], +parts[4] - (+parts[9] || 0) * (parts[8] == '-' ? -1 : 1), +parts[5] - (+parts[10] || 0) * (parts[8] == '-' ? -1 : 1), +parts[6], +((parts[7] || '0') + '00').substring(0, 3)));\n }\n return new Date(NaN);\n }\n return toDate(argument);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport getDay from \"../getDay/index.js\";\nimport subDays from \"../subDays/index.js\";\n/**\n * @name previousDay\n * @category Weekday Helpers\n * @summary When is the previous day of the week?\n *\n * @description\n * When is the previous day of the week? 0-6 the day of the week, 0 represents Sunday.\n *\n * @param {Date | number} date - the date to check\n * @param {number} day - day of the week\n * @returns {Date} - the date is the previous day of week\n * @throws {TypeError} - 2 arguments required\n *\n * @example\n * // When is the previous Monday before Mar, 20, 2020?\n * const result = previousDay(new Date(2020, 2, 20), 1)\n * //=> Mon Mar 16 2020 00:00:00\n *\n * @example\n * // When is the previous Tuesday before Mar, 21, 2020?\n * const result = previousDay(new Date(2020, 2, 21), 2)\n * //=> Tue Mar 17 2020 00:00:00\n */\nexport default function previousDay(date, day) {\n requiredArgs(2, arguments);\n var delta = getDay(date) - day;\n if (delta <= 0) delta += 7;\n return subDays(date, delta);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport previousDay from \"../previousDay/index.js\";\n/**\n * @name previousFriday\n * @category Weekday Helpers\n * @summary When is the previous Friday?\n *\n * @description\n * When is the previous Friday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the previous Friday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the previous Friday before Jun, 19, 2021?\n * const result = previousFriday(new Date(2021, 5, 19))\n * //=> Fri June 18 2021 00:00:00\n */\nexport default function previousFriday(date) {\n requiredArgs(1, arguments);\n return previousDay(date, 5);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport previousDay from \"../previousDay/index.js\";\n/**\n * @name previousMonday\n * @category Weekday Helpers\n * @summary When is the previous Monday?\n *\n * @description\n * When is the previous Monday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the previous Monday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the previous Monday before Jun, 18, 2021?\n * const result = previousMonday(new Date(2021, 5, 18))\n * //=> Mon June 14 2021 00:00:00\n */\nexport default function previousMonday(date) {\n requiredArgs(1, arguments);\n return previousDay(date, 1);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport previousDay from \"../previousDay/index.js\";\n/**\n * @name previousSaturday\n * @category Weekday Helpers\n * @summary When is the previous Saturday?\n *\n * @description\n * When is the previous Saturday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the previous Saturday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the previous Saturday before Jun, 20, 2021?\n * const result = previousSaturday(new Date(2021, 5, 20))\n * //=> Sat June 19 2021 00:00:00\n */\nexport default function previousSaturday(date) {\n requiredArgs(1, arguments);\n return previousDay(date, 6);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport previousDay from \"../previousDay/index.js\";\n/**\n * @name previousSunday\n * @category Weekday Helpers\n * @summary When is the previous Sunday?\n *\n * @description\n * When is the previous Sunday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the previous Sunday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the previous Sunday before Jun, 21, 2021?\n * const result = previousSunday(new Date(2021, 5, 21))\n * //=> Sun June 20 2021 00:00:00\n */\nexport default function previousSunday(date) {\n requiredArgs(1, arguments);\n return previousDay(date, 0);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport previousDay from \"../previousDay/index.js\";\n/**\n * @name previousThursday\n * @category Weekday Helpers\n * @summary When is the previous Thursday?\n *\n * @description\n * When is the previous Thursday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the previous Thursday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the previous Thursday before Jun, 18, 2021?\n * const result = previousThursday(new Date(2021, 5, 18))\n * //=> Thu June 17 2021 00:00:00\n */\nexport default function previousThursday(date) {\n requiredArgs(1, arguments);\n return previousDay(date, 4);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport previousDay from \"../previousDay/index.js\";\n/**\n * @name previousTuesday\n * @category Weekday Helpers\n * @summary When is the previous Tuesday?\n *\n * @description\n * When is the previous Tuesday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the previous Tuesday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the previous Tuesday before Jun, 18, 2021?\n * const result = previousTuesday(new Date(2021, 5, 18))\n * //=> Tue June 15 2021 00:00:00\n */\nexport default function previousTuesday(date) {\n requiredArgs(1, arguments);\n return previousDay(date, 2);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport previousDay from \"../previousDay/index.js\";\n/**\n * @name previousWednesday\n * @category Weekday Helpers\n * @summary When is the previous Wednesday?\n *\n * @description\n * When is the previous Wednesday?\n *\n * @param {Date | number} date - the date to start counting from\n * @returns {Date} the previous Wednesday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // When is the previous Wednesday before Jun, 18, 2021?\n * const result = previousWednesday(new Date(2021, 5, 18))\n * //=> Wed June 16 2021 00:00:00\n */\nexport default function previousWednesday(date) {\n requiredArgs(1, arguments);\n return previousDay(date, 3);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { monthsInQuarter } from \"../constants/index.js\";\n/**\n * @name quartersToMonths\n * @category Conversion Helpers\n * @summary Convert number of quarters to months.\n *\n * @description\n * Convert a number of quarters to a full number of months.\n *\n * @param {number} quarters - number of quarters to be converted\n *\n * @returns {number} the number of quarters converted in months\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 2 quarters to months\n * const result = quartersToMonths(2)\n * //=> 6\n */\nexport default function quartersToMonths(quarters) {\n requiredArgs(1, arguments);\n return Math.floor(quarters * monthsInQuarter);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { quartersInYear } from \"../constants/index.js\";\n/**\n * @name quartersToYears\n * @category Conversion Helpers\n * @summary Convert number of quarters to years.\n *\n * @description\n * Convert a number of quarters to a full number of years.\n *\n * @param {number} quarters - number of quarters to be converted\n *\n * @returns {number} the number of quarters converted in years\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 8 quarters to years\n * const result = quartersToYears(8)\n * //=> 2\n *\n * @example\n * // It uses floor rounding:\n * const result = quartersToYears(11)\n * //=> 2\n */\nexport default function quartersToYears(quarters) {\n requiredArgs(1, arguments);\n var years = quarters / quartersInYear;\n return Math.floor(years);\n}","import toDate from \"../toDate/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name roundToNearestMinutes\n * @category Minute Helpers\n * @summary Rounds the given date to the nearest minute\n *\n * @description\n * Rounds the given date to the nearest minute (or number of minutes).\n * Rounds up when the given date is exactly between the nearest round minutes.\n *\n * @param {Date|Number} date - the date to round\n * @param {Object} [options] - an object with options.\n * @param {Number} [options.nearestTo=1] - nearest number of minutes to round to. E.g. `15` to round to quarter hours.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Date} the new date rounded to the closest minute\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.nearestTo` must be between 1 and 30\n *\n * @example\n * // Round 10 July 2014 12:12:34 to nearest minute:\n * const result = roundToNearestMinutes(new Date(2014, 6, 10, 12, 12, 34))\n * //=> Thu Jul 10 2014 12:13:00\n *\n * @example\n * // Round 10 July 2014 12:07:30 to nearest quarter hour:\n * const result = roundToNearestMinutes(new Date(2014, 6, 10, 12, 12, 34), { nearestTo: 15 })\n * // rounds up because given date is exactly between 12:00:00 and 12:15:00\n * //=> Thu Jul 10 2014 12:15:00\n */\nexport default function roundToNearestMinutes(dirtyDate, options) {\n var _options$nearestTo;\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only none provided present');\n }\n var nearestTo = toInteger((_options$nearestTo = options === null || options === void 0 ? void 0 : options.nearestTo) !== null && _options$nearestTo !== void 0 ? _options$nearestTo : 1);\n if (nearestTo < 1 || nearestTo > 30) {\n throw new RangeError('`options.nearestTo` must be between 1 and 30');\n }\n var date = toDate(dirtyDate);\n var seconds = date.getSeconds(); // relevant if nearestTo is 1, which is the default case\n var minutes = date.getMinutes() + seconds / 60;\n var roundingMethod = getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod);\n var roundedMinutes = roundingMethod(minutes / nearestTo) * nearestTo;\n var remainderMinutes = minutes % nearestTo;\n var addedMinutes = Math.round(remainderMinutes / nearestTo) * nearestTo;\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), roundedMinutes + addedMinutes);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { secondsInHour } from \"../constants/index.js\";\n/**\n * @name secondsToHours\n * @category Conversion Helpers\n * @summary Convert seconds to hours.\n *\n * @description\n * Convert a number of seconds to a full number of hours.\n *\n * @param {number} seconds - number of seconds to be converted\n *\n * @returns {number} the number of seconds converted in hours\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 7200 seconds into hours\n * const result = secondsToHours(7200)\n * //=> 2\n *\n * @example\n * // It uses floor rounding:\n * const result = secondsToHours(7199)\n * //=> 1\n */\nexport default function secondsToHours(seconds) {\n requiredArgs(1, arguments);\n var hours = seconds / secondsInHour;\n return Math.floor(hours);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { millisecondsInSecond } from \"../constants/index.js\";\n/**\n * @name secondsToMilliseconds\n * @category Conversion Helpers\n * @summary Convert seconds to milliseconds.\n *\n * @description\n * Convert a number of seconds to a full number of milliseconds.\n *\n * @param {number} seconds - number of seconds to be converted\n *\n * @returns {number} the number of seconds converted in milliseconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 2 seconds into milliseconds\n * const result = secondsToMilliseconds(2)\n * //=> 2000\n */\nexport default function secondsToMilliseconds(seconds) {\n requiredArgs(1, arguments);\n return seconds * millisecondsInSecond;\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { secondsInMinute } from \"../constants/index.js\";\n/**\n * @name secondsToMinutes\n * @category Conversion Helpers\n * @summary Convert seconds to minutes.\n *\n * @description\n * Convert a number of seconds to a full number of minutes.\n *\n * @param {number} seconds - number of seconds to be converted\n *\n * @returns {number} the number of seconds converted in minutes\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 120 seconds into minutes\n * const result = secondsToMinutes(120)\n * //=> 2\n *\n * @example\n * // It uses floor rounding:\n * const result = secondsToMinutes(119)\n * //=> 1\n */\nexport default function secondsToMinutes(seconds) {\n requiredArgs(1, arguments);\n var minutes = seconds / secondsInMinute;\n return Math.floor(minutes);\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport toDate from \"../toDate/index.js\";\nimport setMonth from \"../setMonth/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name set\n * @category Common Helpers\n * @summary Set date values to a given date.\n *\n * @description\n * Set date values to a given date.\n *\n * Sets time values to date from object `values`.\n * A value is not set if it is undefined or null or doesn't exist in `values`.\n *\n * Note about bundle size: `set` does not internally use `setX` functions from date-fns but instead opts\n * to use native `Date#setX` methods. If you use this function, you may not want to include the\n * other `setX` functions that date-fns provides if you are concerned about the bundle size.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Object} values - an object with options\n * @param {Number} [values.year] - the number of years to be set\n * @param {Number} [values.month] - the number of months to be set\n * @param {Number} [values.date] - the number of days to be set\n * @param {Number} [values.hours] - the number of hours to be set\n * @param {Number} [values.minutes] - the number of minutes to be set\n * @param {Number} [values.seconds] - the number of seconds to be set\n * @param {Number} [values.milliseconds] - the number of milliseconds to be set\n * @returns {Date} the new date with options set\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `values` must be an object\n *\n * @example\n * // Transform 1 September 2014 into 20 October 2015 in a single line:\n * const result = set(new Date(2014, 8, 20), { year: 2015, month: 9, date: 20 })\n * //=> Tue Oct 20 2015 00:00:00\n *\n * @example\n * // Set 12 PM to 1 September 2014 01:23:45 to 1 September 2014 12:00:00:\n * const result = set(new Date(2014, 8, 1, 1, 23, 45), { hours: 12 })\n * //=> Mon Sep 01 2014 12:23:45\n */\nexport default function set(dirtyDate, values) {\n requiredArgs(2, arguments);\n if (_typeof(values) !== 'object' || values === null) {\n throw new RangeError('values parameter must be an object');\n }\n var date = toDate(dirtyDate);\n\n // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n if (isNaN(date.getTime())) {\n return new Date(NaN);\n }\n if (values.year != null) {\n date.setFullYear(values.year);\n }\n if (values.month != null) {\n date = setMonth(date, values.month);\n }\n if (values.date != null) {\n date.setDate(toInteger(values.date));\n }\n if (values.hours != null) {\n date.setHours(toInteger(values.hours));\n }\n if (values.minutes != null) {\n date.setMinutes(toInteger(values.minutes));\n }\n if (values.seconds != null) {\n date.setSeconds(toInteger(values.seconds));\n }\n if (values.milliseconds != null) {\n date.setMilliseconds(toInteger(values.milliseconds));\n }\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setDate\n * @category Day Helpers\n * @summary Set the day of the month to the given date.\n *\n * @description\n * Set the day of the month to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} dayOfMonth - the day of the month of the new date\n * @returns {Date} the new date with the day of the month set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set the 30th day of the month to 1 September 2014:\n * const result = setDate(new Date(2014, 8, 1), 30)\n * //=> Tue Sep 30 2014 00:00:00\n */\nexport default function setDate(dirtyDate, dirtyDayOfMonth) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dayOfMonth = toInteger(dirtyDayOfMonth);\n date.setDate(dayOfMonth);\n return date;\n}","import addDays from \"../addDays/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\n/**\n * @name setDay\n * @category Weekday Helpers\n * @summary Set the day of the week to the given date.\n *\n * @description\n * Set the day of the week to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} day - the day of the week of the new date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the new date with the day of the week set\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // Set week day to Sunday, with the default weekStartsOn of Sunday:\n * const result = setDay(new Date(2014, 8, 1), 0)\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // Set week day to Sunday, with a weekStartsOn of Monday:\n * const result = setDay(new Date(2014, 8, 1), 0, { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport default function setDay(dirtyDate, dirtyDay, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(2, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = toInteger(dirtyDay);\n var currentDay = date.getDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var delta = 7 - weekStartsOn;\n var diff = day < 0 || day > 6 ? day - (currentDay + delta) % 7 : (dayIndex + delta) % 7 - (currentDay + delta) % 7;\n return addDays(date, diff);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setDayOfYear\n * @category Day Helpers\n * @summary Set the day of the year to the given date.\n *\n * @description\n * Set the day of the year to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} dayOfYear - the day of the year of the new date\n * @returns {Date} the new date with the day of the year set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set the 2nd day of the year to 2 July 2014:\n * const result = setDayOfYear(new Date(2014, 6, 2), 2)\n * //=> Thu Jan 02 2014 00:00:00\n */\nexport default function setDayOfYear(dirtyDate, dirtyDayOfYear) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dayOfYear = toInteger(dirtyDayOfYear);\n date.setMonth(0);\n date.setDate(dayOfYear);\n return date;\n}","import { getDefaultOptions, setDefaultOptions as setInternalDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setDefaultOptions\n * @category Common Helpers\n * @summary Set default options including locale.\n * @pure false\n *\n * @description\n * Sets the defaults for\n * `options.locale`, `options.weekStartsOn` and `options.firstWeekContainsDate`\n * arguments for all functions.\n *\n * @param {Object} newOptions - an object with options.\n * @param {Locale} [newOptions.locale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [newOptions.weekStartsOn] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [newOptions.firstWeekContainsDate] - the day of January, which is always in the first week of the year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Set global locale:\n * import { es } from 'date-fns/locale'\n * setDefaultOptions({ locale: es })\n * const result = format(new Date(2014, 8, 2), 'PPPP')\n * //=> 'martes, 2 de septiembre de 2014'\n *\n * @example\n * // Start of the week for 2 September 2014:\n * const result = startOfWeek(new Date(2014, 8, 2))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // Start of the week for 2 September 2014,\n * // when we set that week starts on Monday by default:\n * setDefaultOptions({ weekStartsOn: 1 })\n * const result = startOfWeek(new Date(2014, 8, 2))\n * //=> Mon Sep 01 2014 00:00:00\n *\n * @example\n * // Manually set options take priority over default options:\n * setDefaultOptions({ weekStartsOn: 1 })\n * const result = startOfWeek(new Date(2014, 8, 2), { weekStartsOn: 0 })\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // Remove the option by setting it to `undefined`:\n * setDefaultOptions({ weekStartsOn: 1 })\n * setDefaultOptions({ weekStartsOn: undefined })\n * const result = startOfWeek(new Date(2014, 8, 2))\n * //=> Sun Aug 31 2014 00:00:00\n */\nexport default function setDefaultOptions(newOptions) {\n requiredArgs(1, arguments);\n var result = {};\n var defaultOptions = getDefaultOptions();\n for (var property in defaultOptions) {\n if (Object.prototype.hasOwnProperty.call(defaultOptions, property)) {\n ;\n result[property] = defaultOptions[property];\n }\n }\n for (var _property in newOptions) {\n if (Object.prototype.hasOwnProperty.call(newOptions, _property)) {\n if (newOptions[_property] === undefined) {\n delete result[_property];\n } else {\n ;\n result[_property] = newOptions[_property];\n }\n }\n }\n setInternalDefaultOptions(result);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setHours\n * @category Hour Helpers\n * @summary Set the hours to the given date.\n *\n * @description\n * Set the hours to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} hours - the hours of the new date\n * @returns {Date} the new date with the hours set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 4 hours to 1 September 2014 11:30:00:\n * const result = setHours(new Date(2014, 8, 1, 11, 30), 4)\n * //=> Mon Sep 01 2014 04:30:00\n */\nexport default function setHours(dirtyDate, dirtyHours) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var hours = toInteger(dirtyHours);\n date.setHours(hours);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport addDays from \"../addDays/index.js\";\nimport getISODay from \"../getISODay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setISODay\n * @category Weekday Helpers\n * @summary Set the day of the ISO week to the given date.\n *\n * @description\n * Set the day of the ISO week to the given date.\n * ISO week starts with Monday.\n * 7 is the index of Sunday, 1 is the index of Monday etc.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} day - the day of the ISO week of the new date\n * @returns {Date} the new date with the day of the ISO week set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set Sunday to 1 September 2014:\n * const result = setISODay(new Date(2014, 8, 1), 7)\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport default function setISODay(dirtyDate, dirtyDay) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var day = toInteger(dirtyDay);\n var currentDay = getISODay(date);\n var diff = day - currentDay;\n return addDays(date, diff);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport getISOWeek from \"../getISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setISOWeek\n * @category ISO Week Helpers\n * @summary Set the ISO week to the given date.\n *\n * @description\n * Set the ISO week to the given date, saving the weekday number.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} isoWeek - the ISO week of the new date\n * @returns {Date} the new date with the ISO week set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set the 53rd ISO week to 7 August 2004:\n * const result = setISOWeek(new Date(2004, 7, 7), 53)\n * //=> Sat Jan 01 2005 00:00:00\n */\nexport default function setISOWeek(dirtyDate, dirtyISOWeek) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var isoWeek = toInteger(dirtyISOWeek);\n var diff = getISOWeek(date) - isoWeek;\n date.setDate(date.getDate() - diff * 7);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport startOfISOWeekYear from \"../startOfISOWeekYear/index.js\";\nimport differenceInCalendarDays from \"../differenceInCalendarDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Set the ISO week-numbering year to the given date.\n *\n * @description\n * Set the ISO week-numbering year to the given date,\n * saving the week number and the weekday number.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} isoWeekYear - the ISO week-numbering year of the new date\n * @returns {Date} the new date with the ISO week-numbering year set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set ISO week-numbering year 2007 to 29 December 2008:\n * const result = setISOWeekYear(new Date(2008, 11, 29), 2007)\n * //=> Mon Jan 01 2007 00:00:00\n */\nexport default function setISOWeekYear(dirtyDate, dirtyISOWeekYear) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var isoWeekYear = toInteger(dirtyISOWeekYear);\n var diff = differenceInCalendarDays(date, startOfISOWeekYear(date));\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setFullYear(isoWeekYear, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n date = startOfISOWeekYear(fourthOfJanuary);\n date.setDate(date.getDate() + diff);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setMilliseconds\n * @category Millisecond Helpers\n * @summary Set the milliseconds to the given date.\n *\n * @description\n * Set the milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} milliseconds - the milliseconds of the new date\n * @returns {Date} the new date with the milliseconds set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 300 milliseconds to 1 September 2014 11:30:40.500:\n * const result = setMilliseconds(new Date(2014, 8, 1, 11, 30, 40, 500), 300)\n * //=> Mon Sep 01 2014 11:30:40.300\n */\nexport default function setMilliseconds(dirtyDate, dirtyMilliseconds) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var milliseconds = toInteger(dirtyMilliseconds);\n date.setMilliseconds(milliseconds);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setMinutes\n * @category Minute Helpers\n * @summary Set the minutes to the given date.\n *\n * @description\n * Set the minutes to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} minutes - the minutes of the new date\n * @returns {Date} the new date with the minutes set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 45 minutes to 1 September 2014 11:30:40:\n * const result = setMinutes(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:45:40\n */\nexport default function setMinutes(dirtyDate, dirtyMinutes) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var minutes = toInteger(dirtyMinutes);\n date.setMinutes(minutes);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport getDaysInMonth from \"../getDaysInMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setMonth\n * @category Month Helpers\n * @summary Set the month to the given date.\n *\n * @description\n * Set the month to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} month - the month of the new date\n * @returns {Date} the new date with the month set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set February to 1 September 2014:\n * const result = setMonth(new Date(2014, 8, 1), 1)\n * //=> Sat Feb 01 2014 00:00:00\n */\nexport default function setMonth(dirtyDate, dirtyMonth) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var month = toInteger(dirtyMonth);\n var year = date.getFullYear();\n var day = date.getDate();\n var dateWithDesiredMonth = new Date(0);\n dateWithDesiredMonth.setFullYear(year, month, 15);\n dateWithDesiredMonth.setHours(0, 0, 0, 0);\n var daysInMonth = getDaysInMonth(dateWithDesiredMonth);\n // Set the last day of the new month\n // if the original date was the last day of the longer month\n date.setMonth(month, Math.min(day, daysInMonth));\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport setMonth from \"../setMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setQuarter\n * @category Quarter Helpers\n * @summary Set the year quarter to the given date.\n *\n * @description\n * Set the year quarter to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} quarter - the quarter of the new date\n * @returns {Date} the new date with the quarter set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set the 2nd quarter to 2 July 2014:\n * const result = setQuarter(new Date(2014, 6, 2), 2)\n * //=> Wed Apr 02 2014 00:00:00\n */\nexport default function setQuarter(dirtyDate, dirtyQuarter) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var quarter = toInteger(dirtyQuarter);\n var oldQuarter = Math.floor(date.getMonth() / 3) + 1;\n var diff = quarter - oldQuarter;\n return setMonth(date, date.getMonth() + diff * 3);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setSeconds\n * @category Second Helpers\n * @summary Set the seconds to the given date.\n *\n * @description\n * Set the seconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} seconds - the seconds of the new date\n * @returns {Date} the new date with the seconds set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 45 seconds to 1 September 2014 11:30:40:\n * const result = setSeconds(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:30:45\n */\nexport default function setSeconds(dirtyDate, dirtySeconds) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var seconds = toInteger(dirtySeconds);\n date.setSeconds(seconds);\n return date;\n}","import getWeek from \"../getWeek/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name setWeek\n * @category Week Helpers\n * @summary Set the local week to the given date.\n *\n * @description\n * Set the local week to the given date, saving the weekday number.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} week - the week of the new date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Date} the new date with the local week set\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Set the 1st week to 2 January 2005 with default options:\n * const result = setWeek(new Date(2005, 0, 2), 1)\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // Set the 1st week to 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January:\n * const result = setWeek(new Date(2005, 0, 2), 1, {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Sun Jan 4 2004 00:00:00\n */\nexport default function setWeek(dirtyDate, dirtyWeek, options) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var week = toInteger(dirtyWeek);\n var diff = getWeek(date, options) - week;\n date.setDate(date.getDate() - diff * 7);\n return date;\n}","import differenceInCalendarDays from \"../differenceInCalendarDays/index.js\";\nimport startOfWeekYear from \"../startOfWeekYear/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\n/**\n * @name setWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Set the local week-numbering year to the given date.\n *\n * @description\n * Set the local week-numbering year to the given date,\n * saving the week number and the weekday number.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} weekYear - the local week-numbering year of the new date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Date} the new date with the local week-numbering year set\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Set the local week-numbering year 2004 to 2 January 2010 with default options:\n * const result = setWeekYear(new Date(2010, 0, 2), 2004)\n * //=> Sat Jan 03 2004 00:00:00\n *\n * @example\n * // Set the local week-numbering year 2004 to 2 January 2010,\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = setWeekYear(new Date(2010, 0, 2), 2004, {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Sat Jan 01 2005 00:00:00\n */\nexport default function setWeekYear(dirtyDate, dirtyWeekYear, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(2, arguments);\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n var date = toDate(dirtyDate);\n var weekYear = toInteger(dirtyWeekYear);\n var diff = differenceInCalendarDays(date, startOfWeekYear(date, options));\n var firstWeek = new Date(0);\n firstWeek.setFullYear(weekYear, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n date = startOfWeekYear(firstWeek, options);\n date.setDate(date.getDate() + diff);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setYear\n * @category Year Helpers\n * @summary Set the year to the given date.\n *\n * @description\n * Set the year to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} year - the year of the new date\n * @returns {Date} the new date with the year set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set year 2013 to 1 September 2014:\n * const result = setYear(new Date(2014, 8, 1), 2013)\n * //=> Sun Sep 01 2013 00:00:00\n */\nexport default function setYear(dirtyDate, dirtyYear) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var year = toInteger(dirtyYear);\n\n // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n if (isNaN(date.getTime())) {\n return new Date(NaN);\n }\n date.setFullYear(year);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport default function startOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfDecade\n * @category Decade Helpers\n * @summary Return the start of a decade for the given date.\n *\n * @description\n * Return the start of a decade for the given date.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a decade\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a decade for 21 October 2015 00:00:00:\n * const result = startOfDecade(new Date(2015, 9, 21, 00, 00, 00))\n * //=> Jan 01 2010 00:00:00\n */\nexport default function startOfDecade(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var decade = Math.floor(year / 10) * 10;\n date.setFullYear(decade, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfHour\n * @category Hour Helpers\n * @summary Return the start of an hour for the given date.\n *\n * @description\n * Return the start of an hour for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an hour\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an hour for 2 September 2014 11:55:00:\n * const result = startOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:00:00\n */\nexport default function startOfHour(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setMinutes(0, 0, 0);\n return date;\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n return startOfWeek(dirtyDate, {\n weekStartsOn: 1\n });\n}","import getISOWeekYear from \"../getISOWeekYear/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport default function startOfISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n var date = startOfISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfMinute\n * @category Minute Helpers\n * @summary Return the start of a minute for the given date.\n *\n * @description\n * Return the start of a minute for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a minute\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a minute for 1 December 2014 22:15:45.400:\n * const result = startOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:00\n */\nexport default function startOfMinute(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setSeconds(0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * const result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfQuarter\n * @category Quarter Helpers\n * @summary Return the start of a year quarter for the given date.\n *\n * @description\n * Return the start of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a quarter for 2 September 2014 11:55:00:\n * const result = startOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Jul 01 2014 00:00:00\n */\nexport default function startOfQuarter(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var currentMonth = date.getMonth();\n var month = currentMonth - currentMonth % 3;\n date.setMonth(month, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfSecond\n * @category Second Helpers\n * @summary Return the start of a second for the given date.\n *\n * @description\n * Return the start of a second for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a second\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a second for 1 December 2014 22:15:45.400:\n * const result = startOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.000\n */\nexport default function startOfSecond(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setMilliseconds(0);\n return date;\n}","import startOfDay from \"../startOfDay/index.js\";\n/**\n * @name startOfToday\n * @category Day Helpers\n * @summary Return the start of today.\n * @pure false\n *\n * @description\n * Return the start of today.\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @returns {Date} the start of today\n *\n * @example\n * // If today is 6 October 2014:\n * const result = startOfToday()\n * //=> Mon Oct 6 2014 00:00:00\n */\nexport default function startOfToday() {\n return startOfDay(Date.now());\n}","/**\n * @name startOfTomorrow\n * @category Day Helpers\n * @summary Return the start of tomorrow.\n * @pure false\n *\n * @description\n * Return the start of tomorrow.\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `new Date()` internally hence impure and can't be safely curried.\n *\n * @returns {Date} the start of tomorrow\n *\n * @example\n * // If today is 6 October 2014:\n * const result = startOfTomorrow()\n * //=> Tue Oct 7 2014 00:00:00\n */\nexport default function startOfTomorrow() {\n var now = new Date();\n var year = now.getFullYear();\n var month = now.getMonth();\n var day = now.getDate();\n var date = new Date(0);\n date.setFullYear(year, month, day + 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the start of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setDate(date.getDate() - diff);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import getWeekYear from \"../getWeekYear/index.js\";\nimport startOfWeek from \"../startOfWeek/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Date} the start of a week-numbering year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * const result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = startOfWeekYear(new Date(2005, 6, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport default function startOfWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n var year = getWeekYear(dirtyDate, options);\n var firstWeek = new Date(0);\n firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n var date = startOfWeek(firstWeek, options);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport default function startOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var cleanDate = toDate(dirtyDate);\n var date = new Date(0);\n date.setFullYear(cleanDate.getFullYear(), 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","/**\n * @name startOfYesterday\n * @category Day Helpers\n * @summary Return the start of yesterday.\n * @pure false\n *\n * @description\n * Return the start of yesterday.\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `new Date()` internally hence impure and can't be safely curried.\n *\n * @returns {Date} the start of yesterday\n *\n * @example\n * // If today is 6 October 2014:\n * const result = startOfYesterday()\n * //=> Sun Oct 5 2014 00:00:00\n */\nexport default function startOfYesterday() {\n var now = new Date();\n var year = now.getFullYear();\n var month = now.getMonth();\n var day = now.getDate();\n var date = new Date(0);\n date.setFullYear(year, month, day - 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport subDays from \"../subDays/index.js\";\nimport subMonths from \"../subMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name sub\n * @category Common Helpers\n * @summary Subtract the specified years, months, weeks, days, hours, minutes and seconds from the given date.\n *\n * @description\n * Subtract the specified years, months, weeks, days, hours, minutes and seconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Duration} duration - the object with years, months, weeks, days, hours, minutes and seconds to be subtracted\n *\n * | Key | Description |\n * |---------|------------------------------------|\n * | years | Amount of years to be subtracted |\n * | months | Amount of months to be subtracted |\n * | weeks | Amount of weeks to be subtracted |\n * | days | Amount of days to be subtracted |\n * | hours | Amount of hours to be subtracted |\n * | minutes | Amount of minutes to be subtracted |\n * | seconds | Amount of seconds to be subtracted |\n *\n * All values default to 0\n *\n * @returns {Date} the new date with the seconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract the following duration from 15 June 2017 15:29:20\n * const result = sub(new Date(2017, 5, 15, 15, 29, 20), {\n * years: 2,\n * months: 9,\n * weeks: 1,\n * days: 7,\n * hours: 5,\n * minutes: 9,\n * seconds: 30\n * })\n * //=> Mon Sep 1 2014 10:19:50\n */\nexport default function sub(date, duration) {\n requiredArgs(2, arguments);\n if (!duration || _typeof(duration) !== 'object') return new Date(NaN);\n var years = duration.years ? toInteger(duration.years) : 0;\n var months = duration.months ? toInteger(duration.months) : 0;\n var weeks = duration.weeks ? toInteger(duration.weeks) : 0;\n var days = duration.days ? toInteger(duration.days) : 0;\n var hours = duration.hours ? toInteger(duration.hours) : 0;\n var minutes = duration.minutes ? toInteger(duration.minutes) : 0;\n var seconds = duration.seconds ? toInteger(duration.seconds) : 0;\n\n // Subtract years and months\n var dateWithoutMonths = subMonths(date, months + years * 12);\n\n // Subtract weeks and days\n var dateWithoutDays = subDays(dateWithoutMonths, days + weeks * 7);\n\n // Subtract hours, minutes and seconds\n var minutestoSub = minutes + hours * 60;\n var secondstoSub = seconds + minutestoSub * 60;\n var mstoSub = secondstoSub * 1000;\n var finalDate = new Date(dateWithoutDays.getTime() - mstoSub);\n return finalDate;\n}","import addBusinessDays from \"../addBusinessDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subBusinessDays\n * @category Day Helpers\n * @summary Substract the specified number of business days (mon - fri) to the given date.\n *\n * @description\n * Substract the specified number of business days (mon - fri) to the given date, ignoring weekends.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of business days to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the business days subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Substract 10 business days from 1 September 2014:\n * const result = subBusinessDays(new Date(2014, 8, 1), 10)\n * //=> Mon Aug 18 2014 00:00:00 (skipped weekend days)\n */\nexport default function subBusinessDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addBusinessDays(dirtyDate, -amount);\n}","import addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @description\n * Subtract the specified number of days from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the days subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * const result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\nexport default function subDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addDays(dirtyDate, -amount);\n}","import addHours from \"../addHours/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subHours\n * @category Hour Helpers\n * @summary Subtract the specified number of hours from the given date.\n *\n * @description\n * Subtract the specified number of hours from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the hours subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 2 hours from 11 July 2014 01:00:00:\n * const result = subHours(new Date(2014, 6, 11, 1, 0), 2)\n * //=> Thu Jul 10 2014 23:00:00\n */\nexport default function subHours(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addHours(dirtyDate, -amount);\n}","import addISOWeekYears from \"../addISOWeekYears/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subISOWeekYears\n * @category ISO Week-Numbering Year Helpers\n * @summary Subtract the specified number of ISO week-numbering years from the given date.\n *\n * @description\n * Subtract the specified number of ISO week-numbering years from the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of ISO week-numbering years to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the ISO week-numbering years subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 ISO week-numbering years from 1 September 2014:\n * const result = subISOWeekYears(new Date(2014, 8, 1), 5)\n * //=> Mon Aug 31 2009 00:00:00\n */\nexport default function subISOWeekYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addISOWeekYears(dirtyDate, -amount);\n}","import addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","import addMinutes from \"../addMinutes/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subMinutes\n * @category Minute Helpers\n * @summary Subtract the specified number of minutes from the given date.\n *\n * @description\n * Subtract the specified number of minutes from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the minutes subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 30 minutes from 10 July 2014 12:00:00:\n * const result = subMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 11:30:00\n */\nexport default function subMinutes(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMinutes(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subMonths\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * const result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function subMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addQuarters from \"../addQuarters/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subQuarters\n * @category Quarter Helpers\n * @summary Subtract the specified number of year quarters from the given date.\n *\n * @description\n * Subtract the specified number of year quarters from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the quarters subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 3 quarters from 1 September 2014:\n * const result = subQuarters(new Date(2014, 8, 1), 3)\n * //=> Sun Dec 01 2013 00:00:00\n */\nexport default function subQuarters(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addQuarters(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addSeconds from \"../addSeconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subSeconds\n * @category Second Helpers\n * @summary Subtract the specified number of seconds from the given date.\n *\n * @description\n * Subtract the specified number of seconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of seconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the seconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 30 seconds from 10 July 2014 12:45:00:\n * const result = subSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:44:30\n */\nexport default function subSeconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addSeconds(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addWeeks from \"../addWeeks/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subWeeks\n * @category Week Helpers\n * @summary Subtract the specified number of weeks from the given date.\n *\n * @description\n * Subtract the specified number of weeks from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the weeks subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 4 weeks from 1 September 2014:\n * const result = subWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Aug 04 2014 00:00:00\n */\nexport default function subWeeks(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addWeeks(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addYears from \"../addYears/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subYears\n * @category Year Helpers\n * @summary Subtract the specified number of years from the given date.\n *\n * @description\n * Subtract the specified number of years from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the years subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 years from 1 September 2014:\n * const result = subYears(new Date(2014, 8, 1), 5)\n * //=> Tue Sep 01 2009 00:00:00\n */\nexport default function subYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addYears(dirtyDate, -amount);\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\");\n // eslint-disable-next-line no-console\n console.warn(new Error().stack);\n }\n return new Date(NaN);\n }\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { daysInWeek } from \"../constants/index.js\";\n/**\n * @name weeksToDays\n * @category Conversion Helpers\n * @summary Convert weeks to days.\n *\n * @description\n * Convert a number of weeks to a full number of days.\n *\n * @param {number} weeks - number of weeks to be converted\n *\n * @returns {number} the number of weeks converted in days\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 2 weeks into days\n * const result = weeksToDays(2)\n * //=> 14\n */\nexport default function weeksToDays(weeks) {\n requiredArgs(1, arguments);\n return Math.floor(weeks * daysInWeek);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { monthsInYear } from \"../constants/index.js\";\n/**\n * @name yearsToMonths\n * @category Conversion Helpers\n * @summary Convert years to months.\n *\n * @description\n * Convert a number of years to a full number of months.\n *\n * @param {number} years - number of years to be converted\n *\n * @returns {number} the number of years converted in months\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 2 years into months\n * const result = yearsToMonths(2)\n * //=> 24\n */\nexport default function yearsToMonths(years) {\n requiredArgs(1, arguments);\n return Math.floor(years * monthsInYear);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { quartersInYear } from \"../constants/index.js\";\n/**\n * @name yearsToQuarters\n * @category Conversion Helpers\n * @summary Convert years to quarters.\n *\n * @description\n * Convert a number of years to a full number of quarters.\n *\n * @param {number} years - number of years to be converted\n *\n * @returns {number} the number of years converted in quarters\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Convert 2 years to quarters\n * const result = yearsToQuarters(2)\n * //=> 8\n */\nexport default function yearsToQuarters(years) {\n requiredArgs(1, arguments);\n return Math.floor(years * quartersInYear);\n}","'use strict';\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.deepKeysFromList = exports.deepKeys = void 0;\nconst utils = __importStar(require(\"./utils\"));\n__exportStar(require(\"./types\"), exports);\n/**\n * Return the deep keys list for a single document\n * @param object\n * @param options\n * @returns {Array}\n */\nfunction deepKeys(object, options) {\n const parsedOptions = mergeOptions(options);\n if (typeof object === 'object' && object !== null) {\n return generateDeepKeysList('', object, parsedOptions);\n }\n return [];\n}\nexports.deepKeys = deepKeys;\n/**\n * Return the deep keys list for all documents in the provided list\n * @param list\n * @param options\n * @returns Array[Array[String]]\n */\nfunction deepKeysFromList(list, options) {\n const parsedOptions = mergeOptions(options);\n return list.map((document) => {\n if (typeof document === 'object' && document !== null) {\n // if the data at the key is a document, then we retrieve the subHeading starting with an empty string heading and the doc\n return deepKeys(document, parsedOptions);\n }\n return [];\n });\n}\nexports.deepKeysFromList = deepKeysFromList;\nfunction generateDeepKeysList(heading, data, options) {\n const keys = Object.keys(data).map((currentKey) => {\n // If the given heading is empty, then we set the heading to be the subKey, otherwise set it as a nested heading w/ a dot\n const keyName = buildKeyName(heading, escapeNestedDotsIfSpecified(currentKey, options));\n // If we have another nested document, recur on the sub-document to retrieve the full key name\n if (options.expandNestedObjects && utils.isDocumentToRecurOn(data[currentKey])) {\n return generateDeepKeysList(keyName, data[currentKey], options);\n }\n else if (options.expandArrayObjects && Array.isArray(data[currentKey])) {\n // If we have a nested array that we need to recur on\n return processArrayKeys(data[currentKey], keyName, options);\n }\n else if (options.ignoreEmptyArrays && Array.isArray(data[currentKey]) && !data[currentKey].length) {\n return [];\n }\n // Otherwise return this key name since we don't have a sub document\n return keyName;\n });\n return utils.flatten(keys);\n}\n/**\n * Helper function to handle the processing of arrays when the expandArrayObjects\n * option is specified.\n * @param subArray\n * @param currentKeyPath\n * @param options\n * @returns {*}\n */\nfunction processArrayKeys(subArray, currentKeyPath, options) {\n let subArrayKeys = deepKeysFromList(subArray, options);\n if (!subArray.length) {\n return options.ignoreEmptyArraysWhenExpanding ? [] : [currentKeyPath];\n }\n else if (subArray.length && utils.flatten(subArrayKeys).length === 0) {\n // Has items in the array, but no objects\n return [currentKeyPath];\n }\n else {\n subArrayKeys = subArrayKeys.map((schemaKeys) => {\n if (Array.isArray(schemaKeys) && schemaKeys.length === 0) {\n return [currentKeyPath];\n }\n return schemaKeys.map((subKey) => buildKeyName(currentKeyPath, escapeNestedDotsIfSpecified(subKey, options)));\n });\n return utils.unique(utils.flatten(subArrayKeys));\n }\n}\nfunction escapeNestedDotsIfSpecified(key, options) {\n if (options.escapeNestedDots) {\n return key.replace(/\\./g, '\\\\.');\n }\n return key;\n}\n/**\n * Function used to generate the key path\n * @param upperKeyName String accumulated key path\n * @param currentKeyName String current key name\n * @returns String\n */\nfunction buildKeyName(upperKeyName, currentKeyName) {\n if (upperKeyName) {\n return upperKeyName + '.' + currentKeyName;\n }\n return currentKeyName;\n}\nfunction mergeOptions(options) {\n return {\n expandNestedObjects: true,\n expandArrayObjects: false,\n ignoreEmptyArraysWhenExpanding: false,\n escapeNestedDots: false,\n ignoreEmptyArrays: false,\n ...(options ?? {})\n };\n}\n","'use strict';\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","'use strict';\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isDocumentToRecurOn = exports.flatten = exports.unique = void 0;\nfunction unique(array) {\n return [...new Set(array)];\n}\nexports.unique = unique;\nfunction flatten(array) {\n return [].concat(...array);\n}\nexports.flatten = flatten;\n/**\n * Returns whether this value is a document to recur on or not\n * @param val Any item whose type will be evaluated\n * @returns {boolean}\n */\nfunction isDocumentToRecurOn(val) {\n return typeof val === 'object' && val !== null && !Array.isArray(val) && Object.keys(val).length;\n}\nexports.isDocumentToRecurOn = isDocumentToRecurOn;\n","/**\n * @license MIT\n * doc-path \n * Copyright (c) 2015-present, Michael Rodrigues.\n */\n'use strict';\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.setPath = exports.evaluatePath = void 0;\n/**\n * Main function that evaluates the path in a particular object\n * @throws {Error} possible error if call stack size is exceeded\n */\nfunction evaluatePath(obj, kp) {\n if (!obj) {\n return null;\n }\n const { dotIndex, key, remaining } = state(kp);\n const kpVal = typeof obj === 'object' && kp in obj ? obj[kp] : undefined;\n const keyVal = typeof obj === 'object' && key in obj ? obj[key] : undefined;\n // If there is a '.' in the key path and the key path doesn't appear in the object, recur on the subobject\n if (dotIndex >= 0 && typeof obj === 'object' && !(kp in obj)) {\n // If there's an array at the current key in the object, then iterate over those items evaluating the remaining path\n if (Array.isArray(keyVal)) {\n return keyVal.map((doc) => evaluatePath(doc, remaining));\n }\n // Otherwise, we can just recur\n return evaluatePath(keyVal, remaining);\n }\n else if (Array.isArray(obj)) {\n // If this object is actually an array, then iterate over those items evaluating the path\n return obj.map((doc) => evaluatePath(doc, kp));\n }\n else if (dotIndex >= 0 && kp !== key && typeof obj === 'object' && key in obj) {\n // If there's a field with a non-nested dot, then recur into that sub-value\n return evaluatePath(keyVal, remaining);\n }\n else if (dotIndex === -1 && typeof obj === 'object' && key in obj && !(kp in obj)) {\n // If the field is here, but the key was escaped\n return keyVal;\n }\n // Otherwise, we can just return value directly\n return kpVal;\n}\nexports.evaluatePath = evaluatePath;\n/**\n * Main function that performs validation before passing off to _sp\n * @throws {Error} possible error if call stack size is exceeded\n */\nfunction setPath(obj, kp, v) {\n if (!obj) {\n throw new Error('No object was provided.');\n }\n else if (!kp) {\n throw new Error('No keyPath was provided.');\n }\n return _sp(obj, kp, v);\n}\nexports.setPath = setPath;\n// Helper function that will set the value in the provided object/array.\nfunction _sp(obj, kp, v) {\n const { dotIndex, key, remaining } = state(kp);\n // If this is clearly a prototype pollution attempt, then refuse to modify the path\n if (kp.startsWith('__proto__') || kp.startsWith('constructor') || kp.startsWith('prototype')) {\n return obj;\n }\n if (dotIndex >= 0) {\n // If there is a '.' in the key path, recur on the subdoc and ...\n if (typeof obj === 'object' && obj !== null && !(key in obj) && Array.isArray(obj)) {\n // If this is an array and there are multiple levels of keys to iterate over, recur.\n obj.forEach((doc) => _sp(doc, kp, v));\n return obj;\n }\n else if (typeof obj === 'object' && obj !== null && !(key in obj) && !Array.isArray(obj)) {\n // If the current key doesn't exist yet, populate it\n obj[key] = {};\n }\n _sp(obj[key], remaining, v);\n }\n else if (Array.isArray(obj)) {\n // If this \"obj\" is actually an array, then we can loop over each of the values and set the path\n obj.forEach((doc) => _sp(doc, remaining, v));\n return obj;\n }\n else {\n // Otherwise, we can set the path directly\n obj[key] = v;\n }\n return obj;\n}\n// Helper function that returns some information necessary to evaluate or set a path based on the provided keyPath value\nfunction state(kp) {\n const dotIndex = findFirstNonEscapedDotIndex(kp);\n return {\n dotIndex,\n key: kp.slice(0, dotIndex >= 0 ? dotIndex : undefined).replace(/\\\\./g, '.'),\n remaining: kp.slice(dotIndex + 1)\n };\n}\nfunction findFirstNonEscapedDotIndex(kp) {\n for (let i = 0; i < kp.length; i++) {\n const previousChar = i > 0 ? kp[i - 1] : '', currentChar = kp[i];\n if (currentChar === '.' && previousChar !== '\\\\')\n return i;\n }\n return -1;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Doctype = exports.CDATA = exports.Tag = exports.Style = exports.Script = exports.Comment = exports.Directive = exports.Text = exports.Root = exports.isTag = exports.ElementType = void 0;\n/** Types of elements found in htmlparser2's DOM */\nvar ElementType;\n(function (ElementType) {\n /** Type for the root element of a document */\n ElementType[\"Root\"] = \"root\";\n /** Type for Text */\n ElementType[\"Text\"] = \"text\";\n /** Type for */\n ElementType[\"Directive\"] = \"directive\";\n /** Type for */\n ElementType[\"Comment\"] = \"comment\";\n /** Type for ';\n }\n const iframeContents = '' + script + '';\n try {\n this.myIFrame.doc.open();\n this.myIFrame.doc.write(iframeContents);\n this.myIFrame.doc.close();\n }\n catch (e) {\n log('frame writing exception');\n if (e.stack) {\n log(e.stack);\n }\n log(e);\n }\n }\n else {\n this.commandCB = commandCB;\n this.onMessageCB = onMessageCB;\n }\n }\n /**\n * Each browser has its own funny way to handle iframes. Here we mush them all together into one object that I can\n * actually use.\n */\n static createIFrame_() {\n const iframe = document.createElement('iframe');\n iframe.style.display = 'none';\n // This is necessary in order to initialize the document inside the iframe\n if (document.body) {\n document.body.appendChild(iframe);\n try {\n // If document.domain has been modified in IE, this will throw an error, and we need to set the\n // domain of the iframe's document manually. We can do this via a javascript: url as the src attribute\n // Also note that we must do this *after* the iframe has been appended to the page. Otherwise it doesn't work.\n const a = iframe.contentWindow.document;\n if (!a) {\n // Apologies for the log-spam, I need to do something to keep closure from optimizing out the assignment above.\n log('No IE domain setting required');\n }\n }\n catch (e) {\n const domain = document.domain;\n iframe.src =\n \"javascript:void((function(){document.open();document.domain='\" +\n domain +\n \"';document.close();})())\";\n }\n }\n else {\n // LongPollConnection attempts to delay initialization until the document is ready, so hopefully this\n // never gets hit.\n throw 'Document body has not initialized. Wait to initialize Firebase until after the document is ready.';\n }\n // Get the document of the iframe in a browser-specific way.\n if (iframe.contentDocument) {\n iframe.doc = iframe.contentDocument; // Firefox, Opera, Safari\n }\n else if (iframe.contentWindow) {\n iframe.doc = iframe.contentWindow.document; // Internet Explorer\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n else if (iframe.document) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n iframe.doc = iframe.document; //others?\n }\n return iframe;\n }\n /**\n * Cancel all outstanding queries and remove the frame.\n */\n close() {\n //Mark this iframe as dead, so no new requests are sent.\n this.alive = false;\n if (this.myIFrame) {\n //We have to actually remove all of the html inside this iframe before removing it from the\n //window, or IE will continue loading and executing the script tags we've already added, which\n //can lead to some errors being thrown. Setting textContent seems to be the safest way to do this.\n this.myIFrame.doc.body.textContent = '';\n setTimeout(() => {\n if (this.myIFrame !== null) {\n document.body.removeChild(this.myIFrame);\n this.myIFrame = null;\n }\n }, Math.floor(0));\n }\n // Protect from being called recursively.\n const onDisconnect = this.onDisconnect;\n if (onDisconnect) {\n this.onDisconnect = null;\n onDisconnect();\n }\n }\n /**\n * Actually start the long-polling session by adding the first script tag(s) to the iframe.\n * @param id - The ID of this connection\n * @param pw - The password for this connection\n */\n startLongPoll(id, pw) {\n this.myID = id;\n this.myPW = pw;\n this.alive = true;\n //send the initial request. If there are requests queued, make sure that we transmit as many as we are currently able to.\n while (this.newRequest_()) { }\n }\n /**\n * This is called any time someone might want a script tag to be added. It adds a script tag when there aren't\n * too many outstanding requests and we are still alive.\n *\n * If there are outstanding packet segments to send, it sends one. If there aren't, it sends a long-poll anyways if\n * needed.\n */\n newRequest_() {\n // We keep one outstanding request open all the time to receive data, but if we need to send data\n // (pendingSegs.length > 0) then we create a new request to send the data. The server will automatically\n // close the old request.\n if (this.alive &&\n this.sendNewPolls &&\n this.outstandingRequests.size < (this.pendingSegs.length > 0 ? 2 : 1)) {\n //construct our url\n this.currentSerial++;\n const urlParams = {};\n urlParams[FIREBASE_LONGPOLL_ID_PARAM] = this.myID;\n urlParams[FIREBASE_LONGPOLL_PW_PARAM] = this.myPW;\n urlParams[FIREBASE_LONGPOLL_SERIAL_PARAM] = this.currentSerial;\n let theURL = this.urlFn(urlParams);\n //Now add as much data as we can.\n let curDataString = '';\n let i = 0;\n while (this.pendingSegs.length > 0) {\n //first, lets see if the next segment will fit.\n const nextSeg = this.pendingSegs[0];\n if (nextSeg.d.length +\n SEG_HEADER_SIZE +\n curDataString.length <=\n MAX_URL_DATA_SIZE) {\n //great, the segment will fit. Lets append it.\n const theSeg = this.pendingSegs.shift();\n curDataString =\n curDataString +\n '&' +\n FIREBASE_LONGPOLL_SEGMENT_NUM_PARAM +\n i +\n '=' +\n theSeg.seg +\n '&' +\n FIREBASE_LONGPOLL_SEGMENTS_IN_PACKET +\n i +\n '=' +\n theSeg.ts +\n '&' +\n FIREBASE_LONGPOLL_DATA_PARAM +\n i +\n '=' +\n theSeg.d;\n i++;\n }\n else {\n break;\n }\n }\n theURL = theURL + curDataString;\n this.addLongPollTag_(theURL, this.currentSerial);\n return true;\n }\n else {\n return false;\n }\n }\n /**\n * Queue a packet for transmission to the server.\n * @param segnum - A sequential id for this packet segment used for reassembly\n * @param totalsegs - The total number of segments in this packet\n * @param data - The data for this segment.\n */\n enqueueSegment(segnum, totalsegs, data) {\n //add this to the queue of segments to send.\n this.pendingSegs.push({ seg: segnum, ts: totalsegs, d: data });\n //send the data immediately if there isn't already data being transmitted, unless\n //startLongPoll hasn't been called yet.\n if (this.alive) {\n this.newRequest_();\n }\n }\n /**\n * Add a script tag for a regular long-poll request.\n * @param url - The URL of the script tag.\n * @param serial - The serial number of the request.\n */\n addLongPollTag_(url, serial) {\n //remember that we sent this request.\n this.outstandingRequests.add(serial);\n const doNewRequest = () => {\n this.outstandingRequests.delete(serial);\n this.newRequest_();\n };\n // If this request doesn't return on its own accord (by the server sending us some data), we'll\n // create a new one after the KEEPALIVE interval to make sure we always keep a fresh request open.\n const keepaliveTimeout = setTimeout(doNewRequest, Math.floor(KEEPALIVE_REQUEST_INTERVAL));\n const readyStateCB = () => {\n // Request completed. Cancel the keepalive.\n clearTimeout(keepaliveTimeout);\n // Trigger a new request so we can continue receiving data.\n doNewRequest();\n };\n this.addTag(url, readyStateCB);\n }\n /**\n * Add an arbitrary script tag to the iframe.\n * @param url - The URL for the script tag source.\n * @param loadCB - A callback to be triggered once the script has loaded.\n */\n addTag(url, loadCB) {\n if (isNodeSdk()) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.doNodeLongPoll(url, loadCB);\n }\n else {\n setTimeout(() => {\n try {\n // if we're already closed, don't add this poll\n if (!this.sendNewPolls) {\n return;\n }\n const newScript = this.myIFrame.doc.createElement('script');\n newScript.type = 'text/javascript';\n newScript.async = true;\n newScript.src = url;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newScript.onload = newScript.onreadystatechange =\n function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const rstate = newScript.readyState;\n if (!rstate || rstate === 'loaded' || rstate === 'complete') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newScript.onload = newScript.onreadystatechange = null;\n if (newScript.parentNode) {\n newScript.parentNode.removeChild(newScript);\n }\n loadCB();\n }\n };\n newScript.onerror = () => {\n log('Long-poll script failed to load: ' + url);\n this.sendNewPolls = false;\n this.close();\n };\n this.myIFrame.doc.body.appendChild(newScript);\n }\n catch (e) {\n // TODO: we should make this error visible somehow\n }\n }, Math.floor(1));\n }\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst WEBSOCKET_MAX_FRAME_SIZE = 16384;\nconst WEBSOCKET_KEEPALIVE_INTERVAL = 45000;\nlet WebSocketImpl = null;\nif (typeof MozWebSocket !== 'undefined') {\n WebSocketImpl = MozWebSocket;\n}\nelse if (typeof WebSocket !== 'undefined') {\n WebSocketImpl = WebSocket;\n}\n/**\n * Create a new websocket connection with the given callbacks.\n */\nclass WebSocketConnection {\n /**\n * @param connId identifier for this transport\n * @param repoInfo The info for the websocket endpoint.\n * @param applicationId The Firebase App ID for this project.\n * @param appCheckToken The App Check Token for this client.\n * @param authToken The Auth Token for this client.\n * @param transportSessionId Optional transportSessionId if this is connecting\n * to an existing transport session\n * @param lastSessionId Optional lastSessionId if there was a previous\n * connection\n */\n constructor(connId, repoInfo, applicationId, appCheckToken, authToken, transportSessionId, lastSessionId) {\n this.connId = connId;\n this.applicationId = applicationId;\n this.appCheckToken = appCheckToken;\n this.authToken = authToken;\n this.keepaliveTimer = null;\n this.frames = null;\n this.totalFrames = 0;\n this.bytesSent = 0;\n this.bytesReceived = 0;\n this.log_ = logWrapper(this.connId);\n this.stats_ = statsManagerGetCollection(repoInfo);\n this.connURL = WebSocketConnection.connectionURL_(repoInfo, transportSessionId, lastSessionId, appCheckToken, applicationId);\n this.nodeAdmin = repoInfo.nodeAdmin;\n }\n /**\n * @param repoInfo - The info for the websocket endpoint.\n * @param transportSessionId - Optional transportSessionId if this is connecting to an existing transport\n * session\n * @param lastSessionId - Optional lastSessionId if there was a previous connection\n * @returns connection url\n */\n static connectionURL_(repoInfo, transportSessionId, lastSessionId, appCheckToken, applicationId) {\n const urlParams = {};\n urlParams[VERSION_PARAM] = PROTOCOL_VERSION;\n if (!isNodeSdk() &&\n typeof location !== 'undefined' &&\n location.hostname &&\n FORGE_DOMAIN_RE.test(location.hostname)) {\n urlParams[REFERER_PARAM] = FORGE_REF;\n }\n if (transportSessionId) {\n urlParams[TRANSPORT_SESSION_PARAM] = transportSessionId;\n }\n if (lastSessionId) {\n urlParams[LAST_SESSION_PARAM] = lastSessionId;\n }\n if (appCheckToken) {\n urlParams[APP_CHECK_TOKEN_PARAM] = appCheckToken;\n }\n if (applicationId) {\n urlParams[APPLICATION_ID_PARAM] = applicationId;\n }\n return repoInfoConnectionURL(repoInfo, WEBSOCKET, urlParams);\n }\n /**\n * @param onMessage - Callback when messages arrive\n * @param onDisconnect - Callback with connection lost.\n */\n open(onMessage, onDisconnect) {\n this.onDisconnect = onDisconnect;\n this.onMessage = onMessage;\n this.log_('Websocket connecting to ' + this.connURL);\n this.everConnected_ = false;\n // Assume failure until proven otherwise.\n PersistentStorage.set('previous_websocket_failure', true);\n try {\n let options;\n if (isNodeSdk()) {\n const device = this.nodeAdmin ? 'AdminNode' : 'Node';\n // UA Format: Firebase////\n options = {\n headers: {\n 'User-Agent': `Firebase/${PROTOCOL_VERSION}/${SDK_VERSION}/${process.platform}/${device}`,\n 'X-Firebase-GMPID': this.applicationId || ''\n }\n };\n // If using Node with admin creds, AppCheck-related checks are unnecessary.\n // Note that we send the credentials here even if they aren't admin credentials, which is\n // not a problem.\n // Note that this header is just used to bypass appcheck, and the token should still be sent\n // through the websocket connection once it is established.\n if (this.authToken) {\n options.headers['Authorization'] = `Bearer ${this.authToken}`;\n }\n if (this.appCheckToken) {\n options.headers['X-Firebase-AppCheck'] = this.appCheckToken;\n }\n // Plumb appropriate http_proxy environment variable into faye-websocket if it exists.\n const env = process['env'];\n const proxy = this.connURL.indexOf('wss://') === 0\n ? env['HTTPS_PROXY'] || env['https_proxy']\n : env['HTTP_PROXY'] || env['http_proxy'];\n if (proxy) {\n options['proxy'] = { origin: proxy };\n }\n }\n this.mySock = new WebSocketImpl(this.connURL, [], options);\n }\n catch (e) {\n this.log_('Error instantiating WebSocket.');\n const error = e.message || e.data;\n if (error) {\n this.log_(error);\n }\n this.onClosed_();\n return;\n }\n this.mySock.onopen = () => {\n this.log_('Websocket connected.');\n this.everConnected_ = true;\n };\n this.mySock.onclose = () => {\n this.log_('Websocket connection was disconnected.');\n this.mySock = null;\n this.onClosed_();\n };\n this.mySock.onmessage = m => {\n this.handleIncomingFrame(m);\n };\n this.mySock.onerror = e => {\n this.log_('WebSocket error. Closing connection.');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const error = e.message || e.data;\n if (error) {\n this.log_(error);\n }\n this.onClosed_();\n };\n }\n /**\n * No-op for websockets, we don't need to do anything once the connection is confirmed as open\n */\n start() { }\n static forceDisallow() {\n WebSocketConnection.forceDisallow_ = true;\n }\n static isAvailable() {\n let isOldAndroid = false;\n if (typeof navigator !== 'undefined' && navigator.userAgent) {\n const oldAndroidRegex = /Android ([0-9]{0,}\\.[0-9]{0,})/;\n const oldAndroidMatch = navigator.userAgent.match(oldAndroidRegex);\n if (oldAndroidMatch && oldAndroidMatch.length > 1) {\n if (parseFloat(oldAndroidMatch[1]) < 4.4) {\n isOldAndroid = true;\n }\n }\n }\n return (!isOldAndroid &&\n WebSocketImpl !== null &&\n !WebSocketConnection.forceDisallow_);\n }\n /**\n * Returns true if we previously failed to connect with this transport.\n */\n static previouslyFailed() {\n // If our persistent storage is actually only in-memory storage,\n // we default to assuming that it previously failed to be safe.\n return (PersistentStorage.isInMemoryStorage ||\n PersistentStorage.get('previous_websocket_failure') === true);\n }\n markConnectionHealthy() {\n PersistentStorage.remove('previous_websocket_failure');\n }\n appendFrame_(data) {\n this.frames.push(data);\n if (this.frames.length === this.totalFrames) {\n const fullMess = this.frames.join('');\n this.frames = null;\n const jsonMess = jsonEval(fullMess);\n //handle the message\n this.onMessage(jsonMess);\n }\n }\n /**\n * @param frameCount - The number of frames we are expecting from the server\n */\n handleNewFrameCount_(frameCount) {\n this.totalFrames = frameCount;\n this.frames = [];\n }\n /**\n * Attempts to parse a frame count out of some text. If it can't, assumes a value of 1\n * @returns Any remaining data to be process, or null if there is none\n */\n extractFrameCount_(data) {\n assert(this.frames === null, 'We already have a frame buffer');\n // TODO: The server is only supposed to send up to 9999 frames (i.e. length <= 4), but that isn't being enforced\n // currently. So allowing larger frame counts (length <= 6). See https://app.asana.com/0/search/8688598998380/8237608042508\n if (data.length <= 6) {\n const frameCount = Number(data);\n if (!isNaN(frameCount)) {\n this.handleNewFrameCount_(frameCount);\n return null;\n }\n }\n this.handleNewFrameCount_(1);\n return data;\n }\n /**\n * Process a websocket frame that has arrived from the server.\n * @param mess - The frame data\n */\n handleIncomingFrame(mess) {\n if (this.mySock === null) {\n return; // Chrome apparently delivers incoming packets even after we .close() the connection sometimes.\n }\n const data = mess['data'];\n this.bytesReceived += data.length;\n this.stats_.incrementCounter('bytes_received', data.length);\n this.resetKeepAlive();\n if (this.frames !== null) {\n // we're buffering\n this.appendFrame_(data);\n }\n else {\n // try to parse out a frame count, otherwise, assume 1 and process it\n const remainingData = this.extractFrameCount_(data);\n if (remainingData !== null) {\n this.appendFrame_(remainingData);\n }\n }\n }\n /**\n * Send a message to the server\n * @param data - The JSON object to transmit\n */\n send(data) {\n this.resetKeepAlive();\n const dataStr = stringify(data);\n this.bytesSent += dataStr.length;\n this.stats_.incrementCounter('bytes_sent', dataStr.length);\n //We can only fit a certain amount in each websocket frame, so we need to split this request\n //up into multiple pieces if it doesn't fit in one request.\n const dataSegs = splitStringBySize(dataStr, WEBSOCKET_MAX_FRAME_SIZE);\n //Send the length header\n if (dataSegs.length > 1) {\n this.sendString_(String(dataSegs.length));\n }\n //Send the actual data in segments.\n for (let i = 0; i < dataSegs.length; i++) {\n this.sendString_(dataSegs[i]);\n }\n }\n shutdown_() {\n this.isClosed_ = true;\n if (this.keepaliveTimer) {\n clearInterval(this.keepaliveTimer);\n this.keepaliveTimer = null;\n }\n if (this.mySock) {\n this.mySock.close();\n this.mySock = null;\n }\n }\n onClosed_() {\n if (!this.isClosed_) {\n this.log_('WebSocket is closing itself');\n this.shutdown_();\n // since this is an internal close, trigger the close listener\n if (this.onDisconnect) {\n this.onDisconnect(this.everConnected_);\n this.onDisconnect = null;\n }\n }\n }\n /**\n * External-facing close handler.\n * Close the websocket and kill the connection.\n */\n close() {\n if (!this.isClosed_) {\n this.log_('WebSocket is being closed');\n this.shutdown_();\n }\n }\n /**\n * Kill the current keepalive timer and start a new one, to ensure that it always fires N seconds after\n * the last activity.\n */\n resetKeepAlive() {\n clearInterval(this.keepaliveTimer);\n this.keepaliveTimer = setInterval(() => {\n //If there has been no websocket activity for a while, send a no-op\n if (this.mySock) {\n this.sendString_('0');\n }\n this.resetKeepAlive();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }, Math.floor(WEBSOCKET_KEEPALIVE_INTERVAL));\n }\n /**\n * Send a string over the websocket.\n *\n * @param str - String to send.\n */\n sendString_(str) {\n // Firefox seems to sometimes throw exceptions (NS_ERROR_UNEXPECTED) from websocket .send()\n // calls for some unknown reason. We treat these as an error and disconnect.\n // See https://app.asana.com/0/58926111402292/68021340250410\n try {\n this.mySock.send(str);\n }\n catch (e) {\n this.log_('Exception thrown from WebSocket.send():', e.message || e.data, 'Closing connection.');\n setTimeout(this.onClosed_.bind(this), 0);\n }\n }\n}\n/**\n * Number of response before we consider the connection \"healthy.\"\n */\nWebSocketConnection.responsesRequiredToBeHealthy = 2;\n/**\n * Time to wait for the connection te become healthy before giving up.\n */\nWebSocketConnection.healthyTimeout = 30000;\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Currently simplistic, this class manages what transport a Connection should use at various stages of its\n * lifecycle.\n *\n * It starts with longpolling in a browser, and httppolling on node. It then upgrades to websockets if\n * they are available.\n */\nclass TransportManager {\n static get ALL_TRANSPORTS() {\n return [BrowserPollConnection, WebSocketConnection];\n }\n /**\n * Returns whether transport has been selected to ensure WebSocketConnection or BrowserPollConnection are not called after\n * TransportManager has already set up transports_\n */\n static get IS_TRANSPORT_INITIALIZED() {\n return this.globalTransportInitialized_;\n }\n /**\n * @param repoInfo - Metadata around the namespace we're connecting to\n */\n constructor(repoInfo) {\n this.initTransports_(repoInfo);\n }\n initTransports_(repoInfo) {\n const isWebSocketsAvailable = WebSocketConnection && WebSocketConnection['isAvailable']();\n let isSkipPollConnection = isWebSocketsAvailable && !WebSocketConnection.previouslyFailed();\n if (repoInfo.webSocketOnly) {\n if (!isWebSocketsAvailable) {\n warn(\"wss:// URL used, but browser isn't known to support websockets. Trying anyway.\");\n }\n isSkipPollConnection = true;\n }\n if (isSkipPollConnection) {\n this.transports_ = [WebSocketConnection];\n }\n else {\n const transports = (this.transports_ = []);\n for (const transport of TransportManager.ALL_TRANSPORTS) {\n if (transport && transport['isAvailable']()) {\n transports.push(transport);\n }\n }\n TransportManager.globalTransportInitialized_ = true;\n }\n }\n /**\n * @returns The constructor for the initial transport to use\n */\n initialTransport() {\n if (this.transports_.length > 0) {\n return this.transports_[0];\n }\n else {\n throw new Error('No transports available');\n }\n }\n /**\n * @returns The constructor for the next transport, or null\n */\n upgradeTransport() {\n if (this.transports_.length > 1) {\n return this.transports_[1];\n }\n else {\n return null;\n }\n }\n}\n// Keeps track of whether the TransportManager has already chosen a transport to use\nTransportManager.globalTransportInitialized_ = false;\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// Abort upgrade attempt if it takes longer than 60s.\nconst UPGRADE_TIMEOUT = 60000;\n// For some transports (WebSockets), we need to \"validate\" the transport by exchanging a few requests and responses.\n// If we haven't sent enough requests within 5s, we'll start sending noop ping requests.\nconst DELAY_BEFORE_SENDING_EXTRA_REQUESTS = 5000;\n// If the initial data sent triggers a lot of bandwidth (i.e. it's a large put or a listen for a large amount of data)\n// then we may not be able to exchange our ping/pong requests within the healthy timeout. So if we reach the timeout\n// but we've sent/received enough bytes, we don't cancel the connection.\nconst BYTES_SENT_HEALTHY_OVERRIDE = 10 * 1024;\nconst BYTES_RECEIVED_HEALTHY_OVERRIDE = 100 * 1024;\nconst MESSAGE_TYPE = 't';\nconst MESSAGE_DATA = 'd';\nconst CONTROL_SHUTDOWN = 's';\nconst CONTROL_RESET = 'r';\nconst CONTROL_ERROR = 'e';\nconst CONTROL_PONG = 'o';\nconst SWITCH_ACK = 'a';\nconst END_TRANSMISSION = 'n';\nconst PING = 'p';\nconst SERVER_HELLO = 'h';\n/**\n * Creates a new real-time connection to the server using whichever method works\n * best in the current browser.\n */\nclass Connection {\n /**\n * @param id - an id for this connection\n * @param repoInfo_ - the info for the endpoint to connect to\n * @param applicationId_ - the Firebase App ID for this project\n * @param appCheckToken_ - The App Check Token for this device.\n * @param authToken_ - The auth token for this session.\n * @param onMessage_ - the callback to be triggered when a server-push message arrives\n * @param onReady_ - the callback to be triggered when this connection is ready to send messages.\n * @param onDisconnect_ - the callback to be triggered when a connection was lost\n * @param onKill_ - the callback to be triggered when this connection has permanently shut down.\n * @param lastSessionId - last session id in persistent connection. is used to clean up old session in real-time server\n */\n constructor(id, repoInfo_, applicationId_, appCheckToken_, authToken_, onMessage_, onReady_, onDisconnect_, onKill_, lastSessionId) {\n this.id = id;\n this.repoInfo_ = repoInfo_;\n this.applicationId_ = applicationId_;\n this.appCheckToken_ = appCheckToken_;\n this.authToken_ = authToken_;\n this.onMessage_ = onMessage_;\n this.onReady_ = onReady_;\n this.onDisconnect_ = onDisconnect_;\n this.onKill_ = onKill_;\n this.lastSessionId = lastSessionId;\n this.connectionCount = 0;\n this.pendingDataMessages = [];\n this.state_ = 0 /* RealtimeState.CONNECTING */;\n this.log_ = logWrapper('c:' + this.id + ':');\n this.transportManager_ = new TransportManager(repoInfo_);\n this.log_('Connection created');\n this.start_();\n }\n /**\n * Starts a connection attempt\n */\n start_() {\n const conn = this.transportManager_.initialTransport();\n this.conn_ = new conn(this.nextTransportId_(), this.repoInfo_, this.applicationId_, this.appCheckToken_, this.authToken_, null, this.lastSessionId);\n // For certain transports (WebSockets), we need to send and receive several messages back and forth before we\n // can consider the transport healthy.\n this.primaryResponsesRequired_ = conn['responsesRequiredToBeHealthy'] || 0;\n const onMessageReceived = this.connReceiver_(this.conn_);\n const onConnectionLost = this.disconnReceiver_(this.conn_);\n this.tx_ = this.conn_;\n this.rx_ = this.conn_;\n this.secondaryConn_ = null;\n this.isHealthy_ = false;\n /*\n * Firefox doesn't like when code from one iframe tries to create another iframe by way of the parent frame.\n * This can occur in the case of a redirect, i.e. we guessed wrong on what server to connect to and received a reset.\n * Somehow, setTimeout seems to make this ok. That doesn't make sense from a security perspective, since you should\n * still have the context of your originating frame.\n */\n setTimeout(() => {\n // this.conn_ gets set to null in some of the tests. Check to make sure it still exists before using it\n this.conn_ && this.conn_.open(onMessageReceived, onConnectionLost);\n }, Math.floor(0));\n const healthyTimeoutMS = conn['healthyTimeout'] || 0;\n if (healthyTimeoutMS > 0) {\n this.healthyTimeout_ = setTimeoutNonBlocking(() => {\n this.healthyTimeout_ = null;\n if (!this.isHealthy_) {\n if (this.conn_ &&\n this.conn_.bytesReceived > BYTES_RECEIVED_HEALTHY_OVERRIDE) {\n this.log_('Connection exceeded healthy timeout but has received ' +\n this.conn_.bytesReceived +\n ' bytes. Marking connection healthy.');\n this.isHealthy_ = true;\n this.conn_.markConnectionHealthy();\n }\n else if (this.conn_ &&\n this.conn_.bytesSent > BYTES_SENT_HEALTHY_OVERRIDE) {\n this.log_('Connection exceeded healthy timeout but has sent ' +\n this.conn_.bytesSent +\n ' bytes. Leaving connection alive.');\n // NOTE: We don't want to mark it healthy, since we have no guarantee that the bytes have made it to\n // the server.\n }\n else {\n this.log_('Closing unhealthy connection after timeout.');\n this.close();\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }, Math.floor(healthyTimeoutMS));\n }\n }\n nextTransportId_() {\n return 'c:' + this.id + ':' + this.connectionCount++;\n }\n disconnReceiver_(conn) {\n return everConnected => {\n if (conn === this.conn_) {\n this.onConnectionLost_(everConnected);\n }\n else if (conn === this.secondaryConn_) {\n this.log_('Secondary connection lost.');\n this.onSecondaryConnectionLost_();\n }\n else {\n this.log_('closing an old connection');\n }\n };\n }\n connReceiver_(conn) {\n return (message) => {\n if (this.state_ !== 2 /* RealtimeState.DISCONNECTED */) {\n if (conn === this.rx_) {\n this.onPrimaryMessageReceived_(message);\n }\n else if (conn === this.secondaryConn_) {\n this.onSecondaryMessageReceived_(message);\n }\n else {\n this.log_('message on old connection');\n }\n }\n };\n }\n /**\n * @param dataMsg - An arbitrary data message to be sent to the server\n */\n sendRequest(dataMsg) {\n // wrap in a data message envelope and send it on\n const msg = { t: 'd', d: dataMsg };\n this.sendData_(msg);\n }\n tryCleanupConnection() {\n if (this.tx_ === this.secondaryConn_ && this.rx_ === this.secondaryConn_) {\n this.log_('cleaning up and promoting a connection: ' + this.secondaryConn_.connId);\n this.conn_ = this.secondaryConn_;\n this.secondaryConn_ = null;\n // the server will shutdown the old connection\n }\n }\n onSecondaryControl_(controlData) {\n if (MESSAGE_TYPE in controlData) {\n const cmd = controlData[MESSAGE_TYPE];\n if (cmd === SWITCH_ACK) {\n this.upgradeIfSecondaryHealthy_();\n }\n else if (cmd === CONTROL_RESET) {\n // Most likely the session wasn't valid. Abandon the switch attempt\n this.log_('Got a reset on secondary, closing it');\n this.secondaryConn_.close();\n // If we were already using this connection for something, than we need to fully close\n if (this.tx_ === this.secondaryConn_ ||\n this.rx_ === this.secondaryConn_) {\n this.close();\n }\n }\n else if (cmd === CONTROL_PONG) {\n this.log_('got pong on secondary.');\n this.secondaryResponsesRequired_--;\n this.upgradeIfSecondaryHealthy_();\n }\n }\n }\n onSecondaryMessageReceived_(parsedData) {\n const layer = requireKey('t', parsedData);\n const data = requireKey('d', parsedData);\n if (layer === 'c') {\n this.onSecondaryControl_(data);\n }\n else if (layer === 'd') {\n // got a data message, but we're still second connection. Need to buffer it up\n this.pendingDataMessages.push(data);\n }\n else {\n throw new Error('Unknown protocol layer: ' + layer);\n }\n }\n upgradeIfSecondaryHealthy_() {\n if (this.secondaryResponsesRequired_ <= 0) {\n this.log_('Secondary connection is healthy.');\n this.isHealthy_ = true;\n this.secondaryConn_.markConnectionHealthy();\n this.proceedWithUpgrade_();\n }\n else {\n // Send a ping to make sure the connection is healthy.\n this.log_('sending ping on secondary.');\n this.secondaryConn_.send({ t: 'c', d: { t: PING, d: {} } });\n }\n }\n proceedWithUpgrade_() {\n // tell this connection to consider itself open\n this.secondaryConn_.start();\n // send ack\n this.log_('sending client ack on secondary');\n this.secondaryConn_.send({ t: 'c', d: { t: SWITCH_ACK, d: {} } });\n // send end packet on primary transport, switch to sending on this one\n // can receive on this one, buffer responses until end received on primary transport\n this.log_('Ending transmission on primary');\n this.conn_.send({ t: 'c', d: { t: END_TRANSMISSION, d: {} } });\n this.tx_ = this.secondaryConn_;\n this.tryCleanupConnection();\n }\n onPrimaryMessageReceived_(parsedData) {\n // Must refer to parsedData properties in quotes, so closure doesn't touch them.\n const layer = requireKey('t', parsedData);\n const data = requireKey('d', parsedData);\n if (layer === 'c') {\n this.onControl_(data);\n }\n else if (layer === 'd') {\n this.onDataMessage_(data);\n }\n }\n onDataMessage_(message) {\n this.onPrimaryResponse_();\n // We don't do anything with data messages, just kick them up a level\n this.onMessage_(message);\n }\n onPrimaryResponse_() {\n if (!this.isHealthy_) {\n this.primaryResponsesRequired_--;\n if (this.primaryResponsesRequired_ <= 0) {\n this.log_('Primary connection is healthy.');\n this.isHealthy_ = true;\n this.conn_.markConnectionHealthy();\n }\n }\n }\n onControl_(controlData) {\n const cmd = requireKey(MESSAGE_TYPE, controlData);\n if (MESSAGE_DATA in controlData) {\n const payload = controlData[MESSAGE_DATA];\n if (cmd === SERVER_HELLO) {\n const handshakePayload = Object.assign({}, payload);\n if (this.repoInfo_.isUsingEmulator) {\n // Upon connecting, the emulator will pass the hostname that it's aware of, but we prefer the user's set hostname via `connectDatabaseEmulator` over what the emulator passes.\n handshakePayload.h = this.repoInfo_.host;\n }\n this.onHandshake_(handshakePayload);\n }\n else if (cmd === END_TRANSMISSION) {\n this.log_('recvd end transmission on primary');\n this.rx_ = this.secondaryConn_;\n for (let i = 0; i < this.pendingDataMessages.length; ++i) {\n this.onDataMessage_(this.pendingDataMessages[i]);\n }\n this.pendingDataMessages = [];\n this.tryCleanupConnection();\n }\n else if (cmd === CONTROL_SHUTDOWN) {\n // This was previously the 'onKill' callback passed to the lower-level connection\n // payload in this case is the reason for the shutdown. Generally a human-readable error\n this.onConnectionShutdown_(payload);\n }\n else if (cmd === CONTROL_RESET) {\n // payload in this case is the host we should contact\n this.onReset_(payload);\n }\n else if (cmd === CONTROL_ERROR) {\n error('Server Error: ' + payload);\n }\n else if (cmd === CONTROL_PONG) {\n this.log_('got pong on primary.');\n this.onPrimaryResponse_();\n this.sendPingOnPrimaryIfNecessary_();\n }\n else {\n error('Unknown control packet command: ' + cmd);\n }\n }\n }\n /**\n * @param handshake - The handshake data returned from the server\n */\n onHandshake_(handshake) {\n const timestamp = handshake.ts;\n const version = handshake.v;\n const host = handshake.h;\n this.sessionId = handshake.s;\n this.repoInfo_.host = host;\n // if we've already closed the connection, then don't bother trying to progress further\n if (this.state_ === 0 /* RealtimeState.CONNECTING */) {\n this.conn_.start();\n this.onConnectionEstablished_(this.conn_, timestamp);\n if (PROTOCOL_VERSION !== version) {\n warn('Protocol version mismatch detected');\n }\n // TODO: do we want to upgrade? when? maybe a delay?\n this.tryStartUpgrade_();\n }\n }\n tryStartUpgrade_() {\n const conn = this.transportManager_.upgradeTransport();\n if (conn) {\n this.startUpgrade_(conn);\n }\n }\n startUpgrade_(conn) {\n this.secondaryConn_ = new conn(this.nextTransportId_(), this.repoInfo_, this.applicationId_, this.appCheckToken_, this.authToken_, this.sessionId);\n // For certain transports (WebSockets), we need to send and receive several messages back and forth before we\n // can consider the transport healthy.\n this.secondaryResponsesRequired_ =\n conn['responsesRequiredToBeHealthy'] || 0;\n const onMessage = this.connReceiver_(this.secondaryConn_);\n const onDisconnect = this.disconnReceiver_(this.secondaryConn_);\n this.secondaryConn_.open(onMessage, onDisconnect);\n // If we haven't successfully upgraded after UPGRADE_TIMEOUT, give up and kill the secondary.\n setTimeoutNonBlocking(() => {\n if (this.secondaryConn_) {\n this.log_('Timed out trying to upgrade.');\n this.secondaryConn_.close();\n }\n }, Math.floor(UPGRADE_TIMEOUT));\n }\n onReset_(host) {\n this.log_('Reset packet received. New host: ' + host);\n this.repoInfo_.host = host;\n // TODO: if we're already \"connected\", we need to trigger a disconnect at the next layer up.\n // We don't currently support resets after the connection has already been established\n if (this.state_ === 1 /* RealtimeState.CONNECTED */) {\n this.close();\n }\n else {\n // Close whatever connections we have open and start again.\n this.closeConnections_();\n this.start_();\n }\n }\n onConnectionEstablished_(conn, timestamp) {\n this.log_('Realtime connection established.');\n this.conn_ = conn;\n this.state_ = 1 /* RealtimeState.CONNECTED */;\n if (this.onReady_) {\n this.onReady_(timestamp, this.sessionId);\n this.onReady_ = null;\n }\n // If after 5 seconds we haven't sent enough requests to the server to get the connection healthy,\n // send some pings.\n if (this.primaryResponsesRequired_ === 0) {\n this.log_('Primary connection is healthy.');\n this.isHealthy_ = true;\n }\n else {\n setTimeoutNonBlocking(() => {\n this.sendPingOnPrimaryIfNecessary_();\n }, Math.floor(DELAY_BEFORE_SENDING_EXTRA_REQUESTS));\n }\n }\n sendPingOnPrimaryIfNecessary_() {\n // If the connection isn't considered healthy yet, we'll send a noop ping packet request.\n if (!this.isHealthy_ && this.state_ === 1 /* RealtimeState.CONNECTED */) {\n this.log_('sending ping on primary.');\n this.sendData_({ t: 'c', d: { t: PING, d: {} } });\n }\n }\n onSecondaryConnectionLost_() {\n const conn = this.secondaryConn_;\n this.secondaryConn_ = null;\n if (this.tx_ === conn || this.rx_ === conn) {\n // we are relying on this connection already in some capacity. Therefore, a failure is real\n this.close();\n }\n }\n /**\n * @param everConnected - Whether or not the connection ever reached a server. Used to determine if\n * we should flush the host cache\n */\n onConnectionLost_(everConnected) {\n this.conn_ = null;\n // NOTE: IF you're seeing a Firefox error for this line, I think it might be because it's getting\n // called on window close and RealtimeState.CONNECTING is no longer defined. Just a guess.\n if (!everConnected && this.state_ === 0 /* RealtimeState.CONNECTING */) {\n this.log_('Realtime connection failed.');\n // Since we failed to connect at all, clear any cached entry for this namespace in case the machine went away\n if (this.repoInfo_.isCacheableHost()) {\n PersistentStorage.remove('host:' + this.repoInfo_.host);\n // reset the internal host to what we would show the user, i.e. .firebaseio.com\n this.repoInfo_.internalHost = this.repoInfo_.host;\n }\n }\n else if (this.state_ === 1 /* RealtimeState.CONNECTED */) {\n this.log_('Realtime connection lost.');\n }\n this.close();\n }\n onConnectionShutdown_(reason) {\n this.log_('Connection shutdown command received. Shutting down...');\n if (this.onKill_) {\n this.onKill_(reason);\n this.onKill_ = null;\n }\n // We intentionally don't want to fire onDisconnect (kill is a different case),\n // so clear the callback.\n this.onDisconnect_ = null;\n this.close();\n }\n sendData_(data) {\n if (this.state_ !== 1 /* RealtimeState.CONNECTED */) {\n throw 'Connection is not connected';\n }\n else {\n this.tx_.send(data);\n }\n }\n /**\n * Cleans up this connection, calling the appropriate callbacks\n */\n close() {\n if (this.state_ !== 2 /* RealtimeState.DISCONNECTED */) {\n this.log_('Closing realtime connection.');\n this.state_ = 2 /* RealtimeState.DISCONNECTED */;\n this.closeConnections_();\n if (this.onDisconnect_) {\n this.onDisconnect_();\n this.onDisconnect_ = null;\n }\n }\n }\n closeConnections_() {\n this.log_('Shutting down all connections');\n if (this.conn_) {\n this.conn_.close();\n this.conn_ = null;\n }\n if (this.secondaryConn_) {\n this.secondaryConn_.close();\n this.secondaryConn_ = null;\n }\n if (this.healthyTimeout_) {\n clearTimeout(this.healthyTimeout_);\n this.healthyTimeout_ = null;\n }\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Interface defining the set of actions that can be performed against the Firebase server\n * (basically corresponds to our wire protocol).\n *\n * @interface\n */\nclass ServerActions {\n put(pathString, data, onComplete, hash) { }\n merge(pathString, data, onComplete, hash) { }\n /**\n * Refreshes the auth token for the current connection.\n * @param token - The authentication token\n */\n refreshAuthToken(token) { }\n /**\n * Refreshes the app check token for the current connection.\n * @param token The app check token\n */\n refreshAppCheckToken(token) { }\n onDisconnectPut(pathString, data, onComplete) { }\n onDisconnectMerge(pathString, data, onComplete) { }\n onDisconnectCancel(pathString, onComplete) { }\n reportStats(stats) { }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Base class to be used if you want to emit events. Call the constructor with\n * the set of allowed event names.\n */\nclass EventEmitter {\n constructor(allowedEvents_) {\n this.allowedEvents_ = allowedEvents_;\n this.listeners_ = {};\n assert(Array.isArray(allowedEvents_) && allowedEvents_.length > 0, 'Requires a non-empty array');\n }\n /**\n * To be called by derived classes to trigger events.\n */\n trigger(eventType, ...varArgs) {\n if (Array.isArray(this.listeners_[eventType])) {\n // Clone the list, since callbacks could add/remove listeners.\n const listeners = [...this.listeners_[eventType]];\n for (let i = 0; i < listeners.length; i++) {\n listeners[i].callback.apply(listeners[i].context, varArgs);\n }\n }\n }\n on(eventType, callback, context) {\n this.validateEventType_(eventType);\n this.listeners_[eventType] = this.listeners_[eventType] || [];\n this.listeners_[eventType].push({ callback, context });\n const eventData = this.getInitialEvent(eventType);\n if (eventData) {\n callback.apply(context, eventData);\n }\n }\n off(eventType, callback, context) {\n this.validateEventType_(eventType);\n const listeners = this.listeners_[eventType] || [];\n for (let i = 0; i < listeners.length; i++) {\n if (listeners[i].callback === callback &&\n (!context || context === listeners[i].context)) {\n listeners.splice(i, 1);\n return;\n }\n }\n }\n validateEventType_(eventType) {\n assert(this.allowedEvents_.find(et => {\n return et === eventType;\n }), 'Unknown event: ' + eventType);\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Monitors online state (as reported by window.online/offline events).\n *\n * The expectation is that this could have many false positives (thinks we are online\n * when we're not), but no false negatives. So we can safely use it to determine when\n * we definitely cannot reach the internet.\n */\nclass OnlineMonitor extends EventEmitter {\n static getInstance() {\n return new OnlineMonitor();\n }\n constructor() {\n super(['online']);\n this.online_ = true;\n // We've had repeated complaints that Cordova apps can get stuck \"offline\", e.g.\n // https://forum.ionicframework.com/t/firebase-connection-is-lost-and-never-come-back/43810\n // It would seem that the 'online' event does not always fire consistently. So we disable it\n // for Cordova.\n if (typeof window !== 'undefined' &&\n typeof window.addEventListener !== 'undefined' &&\n !isMobileCordova()) {\n window.addEventListener('online', () => {\n if (!this.online_) {\n this.online_ = true;\n this.trigger('online', true);\n }\n }, false);\n window.addEventListener('offline', () => {\n if (this.online_) {\n this.online_ = false;\n this.trigger('online', false);\n }\n }, false);\n }\n }\n getInitialEvent(eventType) {\n assert(eventType === 'online', 'Unknown event type: ' + eventType);\n return [this.online_];\n }\n currentlyOnline() {\n return this.online_;\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/** Maximum key depth. */\nconst MAX_PATH_DEPTH = 32;\n/** Maximum number of (UTF8) bytes in a Firebase path. */\nconst MAX_PATH_LENGTH_BYTES = 768;\n/**\n * An immutable object representing a parsed path. It's immutable so that you\n * can pass them around to other functions without worrying about them changing\n * it.\n */\nclass Path {\n /**\n * @param pathOrString - Path string to parse, or another path, or the raw\n * tokens array\n */\n constructor(pathOrString, pieceNum) {\n if (pieceNum === void 0) {\n this.pieces_ = pathOrString.split('/');\n // Remove empty pieces.\n let copyTo = 0;\n for (let i = 0; i < this.pieces_.length; i++) {\n if (this.pieces_[i].length > 0) {\n this.pieces_[copyTo] = this.pieces_[i];\n copyTo++;\n }\n }\n this.pieces_.length = copyTo;\n this.pieceNum_ = 0;\n }\n else {\n this.pieces_ = pathOrString;\n this.pieceNum_ = pieceNum;\n }\n }\n toString() {\n let pathString = '';\n for (let i = this.pieceNum_; i < this.pieces_.length; i++) {\n if (this.pieces_[i] !== '') {\n pathString += '/' + this.pieces_[i];\n }\n }\n return pathString || '/';\n }\n}\nfunction newEmptyPath() {\n return new Path('');\n}\nfunction pathGetFront(path) {\n if (path.pieceNum_ >= path.pieces_.length) {\n return null;\n }\n return path.pieces_[path.pieceNum_];\n}\n/**\n * @returns The number of segments in this path\n */\nfunction pathGetLength(path) {\n return path.pieces_.length - path.pieceNum_;\n}\nfunction pathPopFront(path) {\n let pieceNum = path.pieceNum_;\n if (pieceNum < path.pieces_.length) {\n pieceNum++;\n }\n return new Path(path.pieces_, pieceNum);\n}\nfunction pathGetBack(path) {\n if (path.pieceNum_ < path.pieces_.length) {\n return path.pieces_[path.pieces_.length - 1];\n }\n return null;\n}\nfunction pathToUrlEncodedString(path) {\n let pathString = '';\n for (let i = path.pieceNum_; i < path.pieces_.length; i++) {\n if (path.pieces_[i] !== '') {\n pathString += '/' + encodeURIComponent(String(path.pieces_[i]));\n }\n }\n return pathString || '/';\n}\n/**\n * Shallow copy of the parts of the path.\n *\n */\nfunction pathSlice(path, begin = 0) {\n return path.pieces_.slice(path.pieceNum_ + begin);\n}\nfunction pathParent(path) {\n if (path.pieceNum_ >= path.pieces_.length) {\n return null;\n }\n const pieces = [];\n for (let i = path.pieceNum_; i < path.pieces_.length - 1; i++) {\n pieces.push(path.pieces_[i]);\n }\n return new Path(pieces, 0);\n}\nfunction pathChild(path, childPathObj) {\n const pieces = [];\n for (let i = path.pieceNum_; i < path.pieces_.length; i++) {\n pieces.push(path.pieces_[i]);\n }\n if (childPathObj instanceof Path) {\n for (let i = childPathObj.pieceNum_; i < childPathObj.pieces_.length; i++) {\n pieces.push(childPathObj.pieces_[i]);\n }\n }\n else {\n const childPieces = childPathObj.split('/');\n for (let i = 0; i < childPieces.length; i++) {\n if (childPieces[i].length > 0) {\n pieces.push(childPieces[i]);\n }\n }\n }\n return new Path(pieces, 0);\n}\n/**\n * @returns True if there are no segments in this path\n */\nfunction pathIsEmpty(path) {\n return path.pieceNum_ >= path.pieces_.length;\n}\n/**\n * @returns The path from outerPath to innerPath\n */\nfunction newRelativePath(outerPath, innerPath) {\n const outer = pathGetFront(outerPath), inner = pathGetFront(innerPath);\n if (outer === null) {\n return innerPath;\n }\n else if (outer === inner) {\n return newRelativePath(pathPopFront(outerPath), pathPopFront(innerPath));\n }\n else {\n throw new Error('INTERNAL ERROR: innerPath (' +\n innerPath +\n ') is not within ' +\n 'outerPath (' +\n outerPath +\n ')');\n }\n}\n/**\n * @returns -1, 0, 1 if left is less, equal, or greater than the right.\n */\nfunction pathCompare(left, right) {\n const leftKeys = pathSlice(left, 0);\n const rightKeys = pathSlice(right, 0);\n for (let i = 0; i < leftKeys.length && i < rightKeys.length; i++) {\n const cmp = nameCompare(leftKeys[i], rightKeys[i]);\n if (cmp !== 0) {\n return cmp;\n }\n }\n if (leftKeys.length === rightKeys.length) {\n return 0;\n }\n return leftKeys.length < rightKeys.length ? -1 : 1;\n}\n/**\n * @returns true if paths are the same.\n */\nfunction pathEquals(path, other) {\n if (pathGetLength(path) !== pathGetLength(other)) {\n return false;\n }\n for (let i = path.pieceNum_, j = other.pieceNum_; i <= path.pieces_.length; i++, j++) {\n if (path.pieces_[i] !== other.pieces_[j]) {\n return false;\n }\n }\n return true;\n}\n/**\n * @returns True if this path is a parent of (or the same as) other\n */\nfunction pathContains(path, other) {\n let i = path.pieceNum_;\n let j = other.pieceNum_;\n if (pathGetLength(path) > pathGetLength(other)) {\n return false;\n }\n while (i < path.pieces_.length) {\n if (path.pieces_[i] !== other.pieces_[j]) {\n return false;\n }\n ++i;\n ++j;\n }\n return true;\n}\n/**\n * Dynamic (mutable) path used to count path lengths.\n *\n * This class is used to efficiently check paths for valid\n * length (in UTF8 bytes) and depth (used in path validation).\n *\n * Throws Error exception if path is ever invalid.\n *\n * The definition of a path always begins with '/'.\n */\nclass ValidationPath {\n /**\n * @param path - Initial Path.\n * @param errorPrefix_ - Prefix for any error messages.\n */\n constructor(path, errorPrefix_) {\n this.errorPrefix_ = errorPrefix_;\n this.parts_ = pathSlice(path, 0);\n /** Initialize to number of '/' chars needed in path. */\n this.byteLength_ = Math.max(1, this.parts_.length);\n for (let i = 0; i < this.parts_.length; i++) {\n this.byteLength_ += stringLength(this.parts_[i]);\n }\n validationPathCheckValid(this);\n }\n}\nfunction validationPathPush(validationPath, child) {\n // Count the needed '/'\n if (validationPath.parts_.length > 0) {\n validationPath.byteLength_ += 1;\n }\n validationPath.parts_.push(child);\n validationPath.byteLength_ += stringLength(child);\n validationPathCheckValid(validationPath);\n}\nfunction validationPathPop(validationPath) {\n const last = validationPath.parts_.pop();\n validationPath.byteLength_ -= stringLength(last);\n // Un-count the previous '/'\n if (validationPath.parts_.length > 0) {\n validationPath.byteLength_ -= 1;\n }\n}\nfunction validationPathCheckValid(validationPath) {\n if (validationPath.byteLength_ > MAX_PATH_LENGTH_BYTES) {\n throw new Error(validationPath.errorPrefix_ +\n 'has a key path longer than ' +\n MAX_PATH_LENGTH_BYTES +\n ' bytes (' +\n validationPath.byteLength_ +\n ').');\n }\n if (validationPath.parts_.length > MAX_PATH_DEPTH) {\n throw new Error(validationPath.errorPrefix_ +\n 'path specified exceeds the maximum depth that can be written (' +\n MAX_PATH_DEPTH +\n ') or object contains a cycle ' +\n validationPathToErrorString(validationPath));\n }\n}\n/**\n * String for use in error messages - uses '.' notation for path.\n */\nfunction validationPathToErrorString(validationPath) {\n if (validationPath.parts_.length === 0) {\n return '';\n }\n return \"in property '\" + validationPath.parts_.join('.') + \"'\";\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nclass VisibilityMonitor extends EventEmitter {\n static getInstance() {\n return new VisibilityMonitor();\n }\n constructor() {\n super(['visible']);\n let hidden;\n let visibilityChange;\n if (typeof document !== 'undefined' &&\n typeof document.addEventListener !== 'undefined') {\n if (typeof document['hidden'] !== 'undefined') {\n // Opera 12.10 and Firefox 18 and later support\n visibilityChange = 'visibilitychange';\n hidden = 'hidden';\n }\n else if (typeof document['mozHidden'] !== 'undefined') {\n visibilityChange = 'mozvisibilitychange';\n hidden = 'mozHidden';\n }\n else if (typeof document['msHidden'] !== 'undefined') {\n visibilityChange = 'msvisibilitychange';\n hidden = 'msHidden';\n }\n else if (typeof document['webkitHidden'] !== 'undefined') {\n visibilityChange = 'webkitvisibilitychange';\n hidden = 'webkitHidden';\n }\n }\n // Initially, we always assume we are visible. This ensures that in browsers\n // without page visibility support or in cases where we are never visible\n // (e.g. chrome extension), we act as if we are visible, i.e. don't delay\n // reconnects\n this.visible_ = true;\n if (visibilityChange) {\n document.addEventListener(visibilityChange, () => {\n const visible = !document[hidden];\n if (visible !== this.visible_) {\n this.visible_ = visible;\n this.trigger('visible', visible);\n }\n }, false);\n }\n }\n getInitialEvent(eventType) {\n assert(eventType === 'visible', 'Unknown event type: ' + eventType);\n return [this.visible_];\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst RECONNECT_MIN_DELAY = 1000;\nconst RECONNECT_MAX_DELAY_DEFAULT = 60 * 5 * 1000; // 5 minutes in milliseconds (Case: 1858)\nconst RECONNECT_MAX_DELAY_FOR_ADMINS = 30 * 1000; // 30 seconds for admin clients (likely to be a backend server)\nconst RECONNECT_DELAY_MULTIPLIER = 1.3;\nconst RECONNECT_DELAY_RESET_TIMEOUT = 30000; // Reset delay back to MIN_DELAY after being connected for 30sec.\nconst SERVER_KILL_INTERRUPT_REASON = 'server_kill';\n// If auth fails repeatedly, we'll assume something is wrong and log a warning / back off.\nconst INVALID_TOKEN_THRESHOLD = 3;\n/**\n * Firebase connection. Abstracts wire protocol and handles reconnecting.\n *\n * NOTE: All JSON objects sent to the realtime connection must have property names enclosed\n * in quotes to make sure the closure compiler does not minify them.\n */\nclass PersistentConnection extends ServerActions {\n /**\n * @param repoInfo_ - Data about the namespace we are connecting to\n * @param applicationId_ - The Firebase App ID for this project\n * @param onDataUpdate_ - A callback for new data from the server\n */\n constructor(repoInfo_, applicationId_, onDataUpdate_, onConnectStatus_, onServerInfoUpdate_, authTokenProvider_, appCheckTokenProvider_, authOverride_) {\n super();\n this.repoInfo_ = repoInfo_;\n this.applicationId_ = applicationId_;\n this.onDataUpdate_ = onDataUpdate_;\n this.onConnectStatus_ = onConnectStatus_;\n this.onServerInfoUpdate_ = onServerInfoUpdate_;\n this.authTokenProvider_ = authTokenProvider_;\n this.appCheckTokenProvider_ = appCheckTokenProvider_;\n this.authOverride_ = authOverride_;\n // Used for diagnostic logging.\n this.id = PersistentConnection.nextPersistentConnectionId_++;\n this.log_ = logWrapper('p:' + this.id + ':');\n this.interruptReasons_ = {};\n this.listens = new Map();\n this.outstandingPuts_ = [];\n this.outstandingGets_ = [];\n this.outstandingPutCount_ = 0;\n this.outstandingGetCount_ = 0;\n this.onDisconnectRequestQueue_ = [];\n this.connected_ = false;\n this.reconnectDelay_ = RECONNECT_MIN_DELAY;\n this.maxReconnectDelay_ = RECONNECT_MAX_DELAY_DEFAULT;\n this.securityDebugCallback_ = null;\n this.lastSessionId = null;\n this.establishConnectionTimer_ = null;\n this.visible_ = false;\n // Before we get connected, we keep a queue of pending messages to send.\n this.requestCBHash_ = {};\n this.requestNumber_ = 0;\n this.realtime_ = null;\n this.authToken_ = null;\n this.appCheckToken_ = null;\n this.forceTokenRefresh_ = false;\n this.invalidAuthTokenCount_ = 0;\n this.invalidAppCheckTokenCount_ = 0;\n this.firstConnection_ = true;\n this.lastConnectionAttemptTime_ = null;\n this.lastConnectionEstablishedTime_ = null;\n if (authOverride_ && !isNodeSdk()) {\n throw new Error('Auth override specified in options, but not supported on non Node.js platforms');\n }\n VisibilityMonitor.getInstance().on('visible', this.onVisible_, this);\n if (repoInfo_.host.indexOf('fblocal') === -1) {\n OnlineMonitor.getInstance().on('online', this.onOnline_, this);\n }\n }\n sendRequest(action, body, onResponse) {\n const curReqNum = ++this.requestNumber_;\n const msg = { r: curReqNum, a: action, b: body };\n this.log_(stringify(msg));\n assert(this.connected_, \"sendRequest call when we're not connected not allowed.\");\n this.realtime_.sendRequest(msg);\n if (onResponse) {\n this.requestCBHash_[curReqNum] = onResponse;\n }\n }\n get(query) {\n this.initConnection_();\n const deferred = new Deferred();\n const request = {\n p: query._path.toString(),\n q: query._queryObject\n };\n const outstandingGet = {\n action: 'g',\n request,\n onComplete: (message) => {\n const payload = message['d'];\n if (message['s'] === 'ok') {\n deferred.resolve(payload);\n }\n else {\n deferred.reject(payload);\n }\n }\n };\n this.outstandingGets_.push(outstandingGet);\n this.outstandingGetCount_++;\n const index = this.outstandingGets_.length - 1;\n if (this.connected_) {\n this.sendGet_(index);\n }\n return deferred.promise;\n }\n listen(query, currentHashFn, tag, onComplete) {\n this.initConnection_();\n const queryId = query._queryIdentifier;\n const pathString = query._path.toString();\n this.log_('Listen called for ' + pathString + ' ' + queryId);\n if (!this.listens.has(pathString)) {\n this.listens.set(pathString, new Map());\n }\n assert(query._queryParams.isDefault() || !query._queryParams.loadsAllData(), 'listen() called for non-default but complete query');\n assert(!this.listens.get(pathString).has(queryId), `listen() called twice for same path/queryId.`);\n const listenSpec = {\n onComplete,\n hashFn: currentHashFn,\n query,\n tag\n };\n this.listens.get(pathString).set(queryId, listenSpec);\n if (this.connected_) {\n this.sendListen_(listenSpec);\n }\n }\n sendGet_(index) {\n const get = this.outstandingGets_[index];\n this.sendRequest('g', get.request, (message) => {\n delete this.outstandingGets_[index];\n this.outstandingGetCount_--;\n if (this.outstandingGetCount_ === 0) {\n this.outstandingGets_ = [];\n }\n if (get.onComplete) {\n get.onComplete(message);\n }\n });\n }\n sendListen_(listenSpec) {\n const query = listenSpec.query;\n const pathString = query._path.toString();\n const queryId = query._queryIdentifier;\n this.log_('Listen on ' + pathString + ' for ' + queryId);\n const req = { /*path*/ p: pathString };\n const action = 'q';\n // Only bother to send query if it's non-default.\n if (listenSpec.tag) {\n req['q'] = query._queryObject;\n req['t'] = listenSpec.tag;\n }\n req[ /*hash*/'h'] = listenSpec.hashFn();\n this.sendRequest(action, req, (message) => {\n const payload = message[ /*data*/'d'];\n const status = message[ /*status*/'s'];\n // print warnings in any case...\n PersistentConnection.warnOnListenWarnings_(payload, query);\n const currentListenSpec = this.listens.get(pathString) &&\n this.listens.get(pathString).get(queryId);\n // only trigger actions if the listen hasn't been removed and readded\n if (currentListenSpec === listenSpec) {\n this.log_('listen response', message);\n if (status !== 'ok') {\n this.removeListen_(pathString, queryId);\n }\n if (listenSpec.onComplete) {\n listenSpec.onComplete(status, payload);\n }\n }\n });\n }\n static warnOnListenWarnings_(payload, query) {\n if (payload && typeof payload === 'object' && contains(payload, 'w')) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const warnings = safeGet(payload, 'w');\n if (Array.isArray(warnings) && ~warnings.indexOf('no_index')) {\n const indexSpec = '\".indexOn\": \"' + query._queryParams.getIndex().toString() + '\"';\n const indexPath = query._path.toString();\n warn(`Using an unspecified index. Your data will be downloaded and ` +\n `filtered on the client. Consider adding ${indexSpec} at ` +\n `${indexPath} to your security rules for better performance.`);\n }\n }\n }\n refreshAuthToken(token) {\n this.authToken_ = token;\n this.log_('Auth token refreshed');\n if (this.authToken_) {\n this.tryAuth();\n }\n else {\n //If we're connected we want to let the server know to unauthenticate us. If we're not connected, simply delete\n //the credential so we dont become authenticated next time we connect.\n if (this.connected_) {\n this.sendRequest('unauth', {}, () => { });\n }\n }\n this.reduceReconnectDelayIfAdminCredential_(token);\n }\n reduceReconnectDelayIfAdminCredential_(credential) {\n // NOTE: This isn't intended to be bulletproof (a malicious developer can always just modify the client).\n // Additionally, we don't bother resetting the max delay back to the default if auth fails / expires.\n const isFirebaseSecret = credential && credential.length === 40;\n if (isFirebaseSecret || isAdmin(credential)) {\n this.log_('Admin auth credential detected. Reducing max reconnect time.');\n this.maxReconnectDelay_ = RECONNECT_MAX_DELAY_FOR_ADMINS;\n }\n }\n refreshAppCheckToken(token) {\n this.appCheckToken_ = token;\n this.log_('App check token refreshed');\n if (this.appCheckToken_) {\n this.tryAppCheck();\n }\n else {\n //If we're connected we want to let the server know to unauthenticate us.\n //If we're not connected, simply delete the credential so we dont become\n // authenticated next time we connect.\n if (this.connected_) {\n this.sendRequest('unappeck', {}, () => { });\n }\n }\n }\n /**\n * Attempts to authenticate with the given credentials. If the authentication attempt fails, it's triggered like\n * a auth revoked (the connection is closed).\n */\n tryAuth() {\n if (this.connected_ && this.authToken_) {\n const token = this.authToken_;\n const authMethod = isValidFormat(token) ? 'auth' : 'gauth';\n const requestData = { cred: token };\n if (this.authOverride_ === null) {\n requestData['noauth'] = true;\n }\n else if (typeof this.authOverride_ === 'object') {\n requestData['authvar'] = this.authOverride_;\n }\n this.sendRequest(authMethod, requestData, (res) => {\n const status = res[ /*status*/'s'];\n const data = res[ /*data*/'d'] || 'error';\n if (this.authToken_ === token) {\n if (status === 'ok') {\n this.invalidAuthTokenCount_ = 0;\n }\n else {\n // Triggers reconnect and force refresh for auth token\n this.onAuthRevoked_(status, data);\n }\n }\n });\n }\n }\n /**\n * Attempts to authenticate with the given token. If the authentication\n * attempt fails, it's triggered like the token was revoked (the connection is\n * closed).\n */\n tryAppCheck() {\n if (this.connected_ && this.appCheckToken_) {\n this.sendRequest('appcheck', { 'token': this.appCheckToken_ }, (res) => {\n const status = res[ /*status*/'s'];\n const data = res[ /*data*/'d'] || 'error';\n if (status === 'ok') {\n this.invalidAppCheckTokenCount_ = 0;\n }\n else {\n this.onAppCheckRevoked_(status, data);\n }\n });\n }\n }\n /**\n * @inheritDoc\n */\n unlisten(query, tag) {\n const pathString = query._path.toString();\n const queryId = query._queryIdentifier;\n this.log_('Unlisten called for ' + pathString + ' ' + queryId);\n assert(query._queryParams.isDefault() || !query._queryParams.loadsAllData(), 'unlisten() called for non-default but complete query');\n const listen = this.removeListen_(pathString, queryId);\n if (listen && this.connected_) {\n this.sendUnlisten_(pathString, queryId, query._queryObject, tag);\n }\n }\n sendUnlisten_(pathString, queryId, queryObj, tag) {\n this.log_('Unlisten on ' + pathString + ' for ' + queryId);\n const req = { /*path*/ p: pathString };\n const action = 'n';\n // Only bother sending queryId if it's non-default.\n if (tag) {\n req['q'] = queryObj;\n req['t'] = tag;\n }\n this.sendRequest(action, req);\n }\n onDisconnectPut(pathString, data, onComplete) {\n this.initConnection_();\n if (this.connected_) {\n this.sendOnDisconnect_('o', pathString, data, onComplete);\n }\n else {\n this.onDisconnectRequestQueue_.push({\n pathString,\n action: 'o',\n data,\n onComplete\n });\n }\n }\n onDisconnectMerge(pathString, data, onComplete) {\n this.initConnection_();\n if (this.connected_) {\n this.sendOnDisconnect_('om', pathString, data, onComplete);\n }\n else {\n this.onDisconnectRequestQueue_.push({\n pathString,\n action: 'om',\n data,\n onComplete\n });\n }\n }\n onDisconnectCancel(pathString, onComplete) {\n this.initConnection_();\n if (this.connected_) {\n this.sendOnDisconnect_('oc', pathString, null, onComplete);\n }\n else {\n this.onDisconnectRequestQueue_.push({\n pathString,\n action: 'oc',\n data: null,\n onComplete\n });\n }\n }\n sendOnDisconnect_(action, pathString, data, onComplete) {\n const request = { /*path*/ p: pathString, /*data*/ d: data };\n this.log_('onDisconnect ' + action, request);\n this.sendRequest(action, request, (response) => {\n if (onComplete) {\n setTimeout(() => {\n onComplete(response[ /*status*/'s'], response[ /* data */'d']);\n }, Math.floor(0));\n }\n });\n }\n put(pathString, data, onComplete, hash) {\n this.putInternal('p', pathString, data, onComplete, hash);\n }\n merge(pathString, data, onComplete, hash) {\n this.putInternal('m', pathString, data, onComplete, hash);\n }\n putInternal(action, pathString, data, onComplete, hash) {\n this.initConnection_();\n const request = {\n /*path*/ p: pathString,\n /*data*/ d: data\n };\n if (hash !== undefined) {\n request[ /*hash*/'h'] = hash;\n }\n // TODO: Only keep track of the most recent put for a given path?\n this.outstandingPuts_.push({\n action,\n request,\n onComplete\n });\n this.outstandingPutCount_++;\n const index = this.outstandingPuts_.length - 1;\n if (this.connected_) {\n this.sendPut_(index);\n }\n else {\n this.log_('Buffering put: ' + pathString);\n }\n }\n sendPut_(index) {\n const action = this.outstandingPuts_[index].action;\n const request = this.outstandingPuts_[index].request;\n const onComplete = this.outstandingPuts_[index].onComplete;\n this.outstandingPuts_[index].queued = this.connected_;\n this.sendRequest(action, request, (message) => {\n this.log_(action + ' response', message);\n delete this.outstandingPuts_[index];\n this.outstandingPutCount_--;\n // Clean up array occasionally.\n if (this.outstandingPutCount_ === 0) {\n this.outstandingPuts_ = [];\n }\n if (onComplete) {\n onComplete(message[ /*status*/'s'], message[ /* data */'d']);\n }\n });\n }\n reportStats(stats) {\n // If we're not connected, we just drop the stats.\n if (this.connected_) {\n const request = { /*counters*/ c: stats };\n this.log_('reportStats', request);\n this.sendRequest(/*stats*/ 's', request, result => {\n const status = result[ /*status*/'s'];\n if (status !== 'ok') {\n const errorReason = result[ /* data */'d'];\n this.log_('reportStats', 'Error sending stats: ' + errorReason);\n }\n });\n }\n }\n onDataMessage_(message) {\n if ('r' in message) {\n // this is a response\n this.log_('from server: ' + stringify(message));\n const reqNum = message['r'];\n const onResponse = this.requestCBHash_[reqNum];\n if (onResponse) {\n delete this.requestCBHash_[reqNum];\n onResponse(message[ /*body*/'b']);\n }\n }\n else if ('error' in message) {\n throw 'A server-side error has occurred: ' + message['error'];\n }\n else if ('a' in message) {\n // a and b are action and body, respectively\n this.onDataPush_(message['a'], message['b']);\n }\n }\n onDataPush_(action, body) {\n this.log_('handleServerMessage', action, body);\n if (action === 'd') {\n this.onDataUpdate_(body[ /*path*/'p'], body[ /*data*/'d'], \n /*isMerge*/ false, body['t']);\n }\n else if (action === 'm') {\n this.onDataUpdate_(body[ /*path*/'p'], body[ /*data*/'d'], \n /*isMerge=*/ true, body['t']);\n }\n else if (action === 'c') {\n this.onListenRevoked_(body[ /*path*/'p'], body[ /*query*/'q']);\n }\n else if (action === 'ac') {\n this.onAuthRevoked_(body[ /*status code*/'s'], body[ /* explanation */'d']);\n }\n else if (action === 'apc') {\n this.onAppCheckRevoked_(body[ /*status code*/'s'], body[ /* explanation */'d']);\n }\n else if (action === 'sd') {\n this.onSecurityDebugPacket_(body);\n }\n else {\n error('Unrecognized action received from server: ' +\n stringify(action) +\n '\\nAre you using the latest client?');\n }\n }\n onReady_(timestamp, sessionId) {\n this.log_('connection ready');\n this.connected_ = true;\n this.lastConnectionEstablishedTime_ = new Date().getTime();\n this.handleTimestamp_(timestamp);\n this.lastSessionId = sessionId;\n if (this.firstConnection_) {\n this.sendConnectStats_();\n }\n this.restoreState_();\n this.firstConnection_ = false;\n this.onConnectStatus_(true);\n }\n scheduleConnect_(timeout) {\n assert(!this.realtime_, \"Scheduling a connect when we're already connected/ing?\");\n if (this.establishConnectionTimer_) {\n clearTimeout(this.establishConnectionTimer_);\n }\n // NOTE: Even when timeout is 0, it's important to do a setTimeout to work around an infuriating \"Security Error\" in\n // Firefox when trying to write to our long-polling iframe in some scenarios (e.g. Forge or our unit tests).\n this.establishConnectionTimer_ = setTimeout(() => {\n this.establishConnectionTimer_ = null;\n this.establishConnection_();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }, Math.floor(timeout));\n }\n initConnection_() {\n if (!this.realtime_ && this.firstConnection_) {\n this.scheduleConnect_(0);\n }\n }\n onVisible_(visible) {\n // NOTE: Tabbing away and back to a window will defeat our reconnect backoff, but I think that's fine.\n if (visible &&\n !this.visible_ &&\n this.reconnectDelay_ === this.maxReconnectDelay_) {\n this.log_('Window became visible. Reducing delay.');\n this.reconnectDelay_ = RECONNECT_MIN_DELAY;\n if (!this.realtime_) {\n this.scheduleConnect_(0);\n }\n }\n this.visible_ = visible;\n }\n onOnline_(online) {\n if (online) {\n this.log_('Browser went online.');\n this.reconnectDelay_ = RECONNECT_MIN_DELAY;\n if (!this.realtime_) {\n this.scheduleConnect_(0);\n }\n }\n else {\n this.log_('Browser went offline. Killing connection.');\n if (this.realtime_) {\n this.realtime_.close();\n }\n }\n }\n onRealtimeDisconnect_() {\n this.log_('data client disconnected');\n this.connected_ = false;\n this.realtime_ = null;\n // Since we don't know if our sent transactions succeeded or not, we need to cancel them.\n this.cancelSentTransactions_();\n // Clear out the pending requests.\n this.requestCBHash_ = {};\n if (this.shouldReconnect_()) {\n if (!this.visible_) {\n this.log_(\"Window isn't visible. Delaying reconnect.\");\n this.reconnectDelay_ = this.maxReconnectDelay_;\n this.lastConnectionAttemptTime_ = new Date().getTime();\n }\n else if (this.lastConnectionEstablishedTime_) {\n // If we've been connected long enough, reset reconnect delay to minimum.\n const timeSinceLastConnectSucceeded = new Date().getTime() - this.lastConnectionEstablishedTime_;\n if (timeSinceLastConnectSucceeded > RECONNECT_DELAY_RESET_TIMEOUT) {\n this.reconnectDelay_ = RECONNECT_MIN_DELAY;\n }\n this.lastConnectionEstablishedTime_ = null;\n }\n const timeSinceLastConnectAttempt = new Date().getTime() - this.lastConnectionAttemptTime_;\n let reconnectDelay = Math.max(0, this.reconnectDelay_ - timeSinceLastConnectAttempt);\n reconnectDelay = Math.random() * reconnectDelay;\n this.log_('Trying to reconnect in ' + reconnectDelay + 'ms');\n this.scheduleConnect_(reconnectDelay);\n // Adjust reconnect delay for next time.\n this.reconnectDelay_ = Math.min(this.maxReconnectDelay_, this.reconnectDelay_ * RECONNECT_DELAY_MULTIPLIER);\n }\n this.onConnectStatus_(false);\n }\n async establishConnection_() {\n if (this.shouldReconnect_()) {\n this.log_('Making a connection attempt');\n this.lastConnectionAttemptTime_ = new Date().getTime();\n this.lastConnectionEstablishedTime_ = null;\n const onDataMessage = this.onDataMessage_.bind(this);\n const onReady = this.onReady_.bind(this);\n const onDisconnect = this.onRealtimeDisconnect_.bind(this);\n const connId = this.id + ':' + PersistentConnection.nextConnectionId_++;\n const lastSessionId = this.lastSessionId;\n let canceled = false;\n let connection = null;\n const closeFn = function () {\n if (connection) {\n connection.close();\n }\n else {\n canceled = true;\n onDisconnect();\n }\n };\n const sendRequestFn = function (msg) {\n assert(connection, \"sendRequest call when we're not connected not allowed.\");\n connection.sendRequest(msg);\n };\n this.realtime_ = {\n close: closeFn,\n sendRequest: sendRequestFn\n };\n const forceRefresh = this.forceTokenRefresh_;\n this.forceTokenRefresh_ = false;\n try {\n // First fetch auth and app check token, and establish connection after\n // fetching the token was successful\n const [authToken, appCheckToken] = await Promise.all([\n this.authTokenProvider_.getToken(forceRefresh),\n this.appCheckTokenProvider_.getToken(forceRefresh)\n ]);\n if (!canceled) {\n log('getToken() completed. Creating connection.');\n this.authToken_ = authToken && authToken.accessToken;\n this.appCheckToken_ = appCheckToken && appCheckToken.token;\n connection = new Connection(connId, this.repoInfo_, this.applicationId_, this.appCheckToken_, this.authToken_, onDataMessage, onReady, onDisconnect, \n /* onKill= */ reason => {\n warn(reason + ' (' + this.repoInfo_.toString() + ')');\n this.interrupt(SERVER_KILL_INTERRUPT_REASON);\n }, lastSessionId);\n }\n else {\n log('getToken() completed but was canceled');\n }\n }\n catch (error) {\n this.log_('Failed to get token: ' + error);\n if (!canceled) {\n if (this.repoInfo_.nodeAdmin) {\n // This may be a critical error for the Admin Node.js SDK, so log a warning.\n // But getToken() may also just have temporarily failed, so we still want to\n // continue retrying.\n warn(error);\n }\n closeFn();\n }\n }\n }\n }\n interrupt(reason) {\n log('Interrupting connection for reason: ' + reason);\n this.interruptReasons_[reason] = true;\n if (this.realtime_) {\n this.realtime_.close();\n }\n else {\n if (this.establishConnectionTimer_) {\n clearTimeout(this.establishConnectionTimer_);\n this.establishConnectionTimer_ = null;\n }\n if (this.connected_) {\n this.onRealtimeDisconnect_();\n }\n }\n }\n resume(reason) {\n log('Resuming connection for reason: ' + reason);\n delete this.interruptReasons_[reason];\n if (isEmpty(this.interruptReasons_)) {\n this.reconnectDelay_ = RECONNECT_MIN_DELAY;\n if (!this.realtime_) {\n this.scheduleConnect_(0);\n }\n }\n }\n handleTimestamp_(timestamp) {\n const delta = timestamp - new Date().getTime();\n this.onServerInfoUpdate_({ serverTimeOffset: delta });\n }\n cancelSentTransactions_() {\n for (let i = 0; i < this.outstandingPuts_.length; i++) {\n const put = this.outstandingPuts_[i];\n if (put && /*hash*/ 'h' in put.request && put.queued) {\n if (put.onComplete) {\n put.onComplete('disconnect');\n }\n delete this.outstandingPuts_[i];\n this.outstandingPutCount_--;\n }\n }\n // Clean up array occasionally.\n if (this.outstandingPutCount_ === 0) {\n this.outstandingPuts_ = [];\n }\n }\n onListenRevoked_(pathString, query) {\n // Remove the listen and manufacture a \"permission_denied\" error for the failed listen.\n let queryId;\n if (!query) {\n queryId = 'default';\n }\n else {\n queryId = query.map(q => ObjectToUniqueKey(q)).join('$');\n }\n const listen = this.removeListen_(pathString, queryId);\n if (listen && listen.onComplete) {\n listen.onComplete('permission_denied');\n }\n }\n removeListen_(pathString, queryId) {\n const normalizedPathString = new Path(pathString).toString(); // normalize path.\n let listen;\n if (this.listens.has(normalizedPathString)) {\n const map = this.listens.get(normalizedPathString);\n listen = map.get(queryId);\n map.delete(queryId);\n if (map.size === 0) {\n this.listens.delete(normalizedPathString);\n }\n }\n else {\n // all listens for this path has already been removed\n listen = undefined;\n }\n return listen;\n }\n onAuthRevoked_(statusCode, explanation) {\n log('Auth token revoked: ' + statusCode + '/' + explanation);\n this.authToken_ = null;\n this.forceTokenRefresh_ = true;\n this.realtime_.close();\n if (statusCode === 'invalid_token' || statusCode === 'permission_denied') {\n // We'll wait a couple times before logging the warning / increasing the\n // retry period since oauth tokens will report as \"invalid\" if they're\n // just expired. Plus there may be transient issues that resolve themselves.\n this.invalidAuthTokenCount_++;\n if (this.invalidAuthTokenCount_ >= INVALID_TOKEN_THRESHOLD) {\n // Set a long reconnect delay because recovery is unlikely\n this.reconnectDelay_ = RECONNECT_MAX_DELAY_FOR_ADMINS;\n // Notify the auth token provider that the token is invalid, which will log\n // a warning\n this.authTokenProvider_.notifyForInvalidToken();\n }\n }\n }\n onAppCheckRevoked_(statusCode, explanation) {\n log('App check token revoked: ' + statusCode + '/' + explanation);\n this.appCheckToken_ = null;\n this.forceTokenRefresh_ = true;\n // Note: We don't close the connection as the developer may not have\n // enforcement enabled. The backend closes connections with enforcements.\n if (statusCode === 'invalid_token' || statusCode === 'permission_denied') {\n // We'll wait a couple times before logging the warning / increasing the\n // retry period since oauth tokens will report as \"invalid\" if they're\n // just expired. Plus there may be transient issues that resolve themselves.\n this.invalidAppCheckTokenCount_++;\n if (this.invalidAppCheckTokenCount_ >= INVALID_TOKEN_THRESHOLD) {\n this.appCheckTokenProvider_.notifyForInvalidToken();\n }\n }\n }\n onSecurityDebugPacket_(body) {\n if (this.securityDebugCallback_) {\n this.securityDebugCallback_(body);\n }\n else {\n if ('msg' in body) {\n console.log('FIREBASE: ' + body['msg'].replace('\\n', '\\nFIREBASE: '));\n }\n }\n }\n restoreState_() {\n //Re-authenticate ourselves if we have a credential stored.\n this.tryAuth();\n this.tryAppCheck();\n // Puts depend on having received the corresponding data update from the server before they complete, so we must\n // make sure to send listens before puts.\n for (const queries of this.listens.values()) {\n for (const listenSpec of queries.values()) {\n this.sendListen_(listenSpec);\n }\n }\n for (let i = 0; i < this.outstandingPuts_.length; i++) {\n if (this.outstandingPuts_[i]) {\n this.sendPut_(i);\n }\n }\n while (this.onDisconnectRequestQueue_.length) {\n const request = this.onDisconnectRequestQueue_.shift();\n this.sendOnDisconnect_(request.action, request.pathString, request.data, request.onComplete);\n }\n for (let i = 0; i < this.outstandingGets_.length; i++) {\n if (this.outstandingGets_[i]) {\n this.sendGet_(i);\n }\n }\n }\n /**\n * Sends client stats for first connection\n */\n sendConnectStats_() {\n const stats = {};\n let clientName = 'js';\n if (isNodeSdk()) {\n if (this.repoInfo_.nodeAdmin) {\n clientName = 'admin_node';\n }\n else {\n clientName = 'node';\n }\n }\n stats['sdk.' + clientName + '.' + SDK_VERSION.replace(/\\./g, '-')] = 1;\n if (isMobileCordova()) {\n stats['framework.cordova'] = 1;\n }\n else if (isReactNative()) {\n stats['framework.reactnative'] = 1;\n }\n this.reportStats(stats);\n }\n shouldReconnect_() {\n const online = OnlineMonitor.getInstance().currentlyOnline();\n return isEmpty(this.interruptReasons_) && online;\n }\n}\nPersistentConnection.nextPersistentConnectionId_ = 0;\n/**\n * Counter for number of connections created. Mainly used for tagging in the logs\n */\nPersistentConnection.nextConnectionId_ = 0;\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nclass NamedNode {\n constructor(name, node) {\n this.name = name;\n this.node = node;\n }\n static Wrap(name, node) {\n return new NamedNode(name, node);\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nclass Index {\n /**\n * @returns A standalone comparison function for\n * this index\n */\n getCompare() {\n return this.compare.bind(this);\n }\n /**\n * Given a before and after value for a node, determine if the indexed value has changed. Even if they are different,\n * it's possible that the changes are isolated to parts of the snapshot that are not indexed.\n *\n *\n * @returns True if the portion of the snapshot being indexed changed between oldNode and newNode\n */\n indexedValueChanged(oldNode, newNode) {\n const oldWrapped = new NamedNode(MIN_NAME, oldNode);\n const newWrapped = new NamedNode(MIN_NAME, newNode);\n return this.compare(oldWrapped, newWrapped) !== 0;\n }\n /**\n * @returns a node wrapper that will sort equal to or less than\n * any other node wrapper, using this index\n */\n minPost() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return NamedNode.MIN;\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nlet __EMPTY_NODE;\nclass KeyIndex extends Index {\n static get __EMPTY_NODE() {\n return __EMPTY_NODE;\n }\n static set __EMPTY_NODE(val) {\n __EMPTY_NODE = val;\n }\n compare(a, b) {\n return nameCompare(a.name, b.name);\n }\n isDefinedOn(node) {\n // We could probably return true here (since every node has a key), but it's never called\n // so just leaving unimplemented for now.\n throw assertionError('KeyIndex.isDefinedOn not expected to be called.');\n }\n indexedValueChanged(oldNode, newNode) {\n return false; // The key for a node never changes.\n }\n minPost() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return NamedNode.MIN;\n }\n maxPost() {\n // TODO: This should really be created once and cached in a static property, but\n // NamedNode isn't defined yet, so I can't use it in a static. Bleh.\n return new NamedNode(MAX_NAME, __EMPTY_NODE);\n }\n makePost(indexValue, name) {\n assert(typeof indexValue === 'string', 'KeyIndex indexValue must always be a string.');\n // We just use empty node, but it'll never be compared, since our comparator only looks at name.\n return new NamedNode(indexValue, __EMPTY_NODE);\n }\n /**\n * @returns String representation for inclusion in a query spec\n */\n toString() {\n return '.key';\n }\n}\nconst KEY_INDEX = new KeyIndex();\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * An iterator over an LLRBNode.\n */\nclass SortedMapIterator {\n /**\n * @param node - Node to iterate.\n * @param isReverse_ - Whether or not to iterate in reverse\n */\n constructor(node, startKey, comparator, isReverse_, resultGenerator_ = null) {\n this.isReverse_ = isReverse_;\n this.resultGenerator_ = resultGenerator_;\n this.nodeStack_ = [];\n let cmp = 1;\n while (!node.isEmpty()) {\n node = node;\n cmp = startKey ? comparator(node.key, startKey) : 1;\n // flip the comparison if we're going in reverse\n if (isReverse_) {\n cmp *= -1;\n }\n if (cmp < 0) {\n // This node is less than our start key. ignore it\n if (this.isReverse_) {\n node = node.left;\n }\n else {\n node = node.right;\n }\n }\n else if (cmp === 0) {\n // This node is exactly equal to our start key. Push it on the stack, but stop iterating;\n this.nodeStack_.push(node);\n break;\n }\n else {\n // This node is greater than our start key, add it to the stack and move to the next one\n this.nodeStack_.push(node);\n if (this.isReverse_) {\n node = node.right;\n }\n else {\n node = node.left;\n }\n }\n }\n }\n getNext() {\n if (this.nodeStack_.length === 0) {\n return null;\n }\n let node = this.nodeStack_.pop();\n let result;\n if (this.resultGenerator_) {\n result = this.resultGenerator_(node.key, node.value);\n }\n else {\n result = { key: node.key, value: node.value };\n }\n if (this.isReverse_) {\n node = node.left;\n while (!node.isEmpty()) {\n this.nodeStack_.push(node);\n node = node.right;\n }\n }\n else {\n node = node.right;\n while (!node.isEmpty()) {\n this.nodeStack_.push(node);\n node = node.left;\n }\n }\n return result;\n }\n hasNext() {\n return this.nodeStack_.length > 0;\n }\n peek() {\n if (this.nodeStack_.length === 0) {\n return null;\n }\n const node = this.nodeStack_[this.nodeStack_.length - 1];\n if (this.resultGenerator_) {\n return this.resultGenerator_(node.key, node.value);\n }\n else {\n return { key: node.key, value: node.value };\n }\n }\n}\n/**\n * Represents a node in a Left-leaning Red-Black tree.\n */\nclass LLRBNode {\n /**\n * @param key - Key associated with this node.\n * @param value - Value associated with this node.\n * @param color - Whether this node is red.\n * @param left - Left child.\n * @param right - Right child.\n */\n constructor(key, value, color, left, right) {\n this.key = key;\n this.value = value;\n this.color = color != null ? color : LLRBNode.RED;\n this.left =\n left != null ? left : SortedMap.EMPTY_NODE;\n this.right =\n right != null ? right : SortedMap.EMPTY_NODE;\n }\n /**\n * Returns a copy of the current node, optionally replacing pieces of it.\n *\n * @param key - New key for the node, or null.\n * @param value - New value for the node, or null.\n * @param color - New color for the node, or null.\n * @param left - New left child for the node, or null.\n * @param right - New right child for the node, or null.\n * @returns The node copy.\n */\n copy(key, value, color, left, right) {\n return new LLRBNode(key != null ? key : this.key, value != null ? value : this.value, color != null ? color : this.color, left != null ? left : this.left, right != null ? right : this.right);\n }\n /**\n * @returns The total number of nodes in the tree.\n */\n count() {\n return this.left.count() + 1 + this.right.count();\n }\n /**\n * @returns True if the tree is empty.\n */\n isEmpty() {\n return false;\n }\n /**\n * Traverses the tree in key order and calls the specified action function\n * for each node.\n *\n * @param action - Callback function to be called for each\n * node. If it returns true, traversal is aborted.\n * @returns The first truthy value returned by action, or the last falsey\n * value returned by action\n */\n inorderTraversal(action) {\n return (this.left.inorderTraversal(action) ||\n !!action(this.key, this.value) ||\n this.right.inorderTraversal(action));\n }\n /**\n * Traverses the tree in reverse key order and calls the specified action function\n * for each node.\n *\n * @param action - Callback function to be called for each\n * node. If it returns true, traversal is aborted.\n * @returns True if traversal was aborted.\n */\n reverseTraversal(action) {\n return (this.right.reverseTraversal(action) ||\n action(this.key, this.value) ||\n this.left.reverseTraversal(action));\n }\n /**\n * @returns The minimum node in the tree.\n */\n min_() {\n if (this.left.isEmpty()) {\n return this;\n }\n else {\n return this.left.min_();\n }\n }\n /**\n * @returns The maximum key in the tree.\n */\n minKey() {\n return this.min_().key;\n }\n /**\n * @returns The maximum key in the tree.\n */\n maxKey() {\n if (this.right.isEmpty()) {\n return this.key;\n }\n else {\n return this.right.maxKey();\n }\n }\n /**\n * @param key - Key to insert.\n * @param value - Value to insert.\n * @param comparator - Comparator.\n * @returns New tree, with the key/value added.\n */\n insert(key, value, comparator) {\n let n = this;\n const cmp = comparator(key, n.key);\n if (cmp < 0) {\n n = n.copy(null, null, null, n.left.insert(key, value, comparator), null);\n }\n else if (cmp === 0) {\n n = n.copy(null, value, null, null, null);\n }\n else {\n n = n.copy(null, null, null, null, n.right.insert(key, value, comparator));\n }\n return n.fixUp_();\n }\n /**\n * @returns New tree, with the minimum key removed.\n */\n removeMin_() {\n if (this.left.isEmpty()) {\n return SortedMap.EMPTY_NODE;\n }\n let n = this;\n if (!n.left.isRed_() && !n.left.left.isRed_()) {\n n = n.moveRedLeft_();\n }\n n = n.copy(null, null, null, n.left.removeMin_(), null);\n return n.fixUp_();\n }\n /**\n * @param key - The key of the item to remove.\n * @param comparator - Comparator.\n * @returns New tree, with the specified item removed.\n */\n remove(key, comparator) {\n let n, smallest;\n n = this;\n if (comparator(key, n.key) < 0) {\n if (!n.left.isEmpty() && !n.left.isRed_() && !n.left.left.isRed_()) {\n n = n.moveRedLeft_();\n }\n n = n.copy(null, null, null, n.left.remove(key, comparator), null);\n }\n else {\n if (n.left.isRed_()) {\n n = n.rotateRight_();\n }\n if (!n.right.isEmpty() && !n.right.isRed_() && !n.right.left.isRed_()) {\n n = n.moveRedRight_();\n }\n if (comparator(key, n.key) === 0) {\n if (n.right.isEmpty()) {\n return SortedMap.EMPTY_NODE;\n }\n else {\n smallest = n.right.min_();\n n = n.copy(smallest.key, smallest.value, null, null, n.right.removeMin_());\n }\n }\n n = n.copy(null, null, null, null, n.right.remove(key, comparator));\n }\n return n.fixUp_();\n }\n /**\n * @returns Whether this is a RED node.\n */\n isRed_() {\n return this.color;\n }\n /**\n * @returns New tree after performing any needed rotations.\n */\n fixUp_() {\n let n = this;\n if (n.right.isRed_() && !n.left.isRed_()) {\n n = n.rotateLeft_();\n }\n if (n.left.isRed_() && n.left.left.isRed_()) {\n n = n.rotateRight_();\n }\n if (n.left.isRed_() && n.right.isRed_()) {\n n = n.colorFlip_();\n }\n return n;\n }\n /**\n * @returns New tree, after moveRedLeft.\n */\n moveRedLeft_() {\n let n = this.colorFlip_();\n if (n.right.left.isRed_()) {\n n = n.copy(null, null, null, null, n.right.rotateRight_());\n n = n.rotateLeft_();\n n = n.colorFlip_();\n }\n return n;\n }\n /**\n * @returns New tree, after moveRedRight.\n */\n moveRedRight_() {\n let n = this.colorFlip_();\n if (n.left.left.isRed_()) {\n n = n.rotateRight_();\n n = n.colorFlip_();\n }\n return n;\n }\n /**\n * @returns New tree, after rotateLeft.\n */\n rotateLeft_() {\n const nl = this.copy(null, null, LLRBNode.RED, null, this.right.left);\n return this.right.copy(null, null, this.color, nl, null);\n }\n /**\n * @returns New tree, after rotateRight.\n */\n rotateRight_() {\n const nr = this.copy(null, null, LLRBNode.RED, this.left.right, null);\n return this.left.copy(null, null, this.color, null, nr);\n }\n /**\n * @returns Newt ree, after colorFlip.\n */\n colorFlip_() {\n const left = this.left.copy(null, null, !this.left.color, null, null);\n const right = this.right.copy(null, null, !this.right.color, null, null);\n return this.copy(null, null, !this.color, left, right);\n }\n /**\n * For testing.\n *\n * @returns True if all is well.\n */\n checkMaxDepth_() {\n const blackDepth = this.check_();\n return Math.pow(2.0, blackDepth) <= this.count() + 1;\n }\n check_() {\n if (this.isRed_() && this.left.isRed_()) {\n throw new Error('Red node has red child(' + this.key + ',' + this.value + ')');\n }\n if (this.right.isRed_()) {\n throw new Error('Right child of (' + this.key + ',' + this.value + ') is red');\n }\n const blackDepth = this.left.check_();\n if (blackDepth !== this.right.check_()) {\n throw new Error('Black depths differ');\n }\n else {\n return blackDepth + (this.isRed_() ? 0 : 1);\n }\n }\n}\nLLRBNode.RED = true;\nLLRBNode.BLACK = false;\n/**\n * Represents an empty node (a leaf node in the Red-Black Tree).\n */\nclass LLRBEmptyNode {\n /**\n * Returns a copy of the current node.\n *\n * @returns The node copy.\n */\n copy(key, value, color, left, right) {\n return this;\n }\n /**\n * Returns a copy of the tree, with the specified key/value added.\n *\n * @param key - Key to be added.\n * @param value - Value to be added.\n * @param comparator - Comparator.\n * @returns New tree, with item added.\n */\n insert(key, value, comparator) {\n return new LLRBNode(key, value, null);\n }\n /**\n * Returns a copy of the tree, with the specified key removed.\n *\n * @param key - The key to remove.\n * @param comparator - Comparator.\n * @returns New tree, with item removed.\n */\n remove(key, comparator) {\n return this;\n }\n /**\n * @returns The total number of nodes in the tree.\n */\n count() {\n return 0;\n }\n /**\n * @returns True if the tree is empty.\n */\n isEmpty() {\n return true;\n }\n /**\n * Traverses the tree in key order and calls the specified action function\n * for each node.\n *\n * @param action - Callback function to be called for each\n * node. If it returns true, traversal is aborted.\n * @returns True if traversal was aborted.\n */\n inorderTraversal(action) {\n return false;\n }\n /**\n * Traverses the tree in reverse key order and calls the specified action function\n * for each node.\n *\n * @param action - Callback function to be called for each\n * node. If it returns true, traversal is aborted.\n * @returns True if traversal was aborted.\n */\n reverseTraversal(action) {\n return false;\n }\n minKey() {\n return null;\n }\n maxKey() {\n return null;\n }\n check_() {\n return 0;\n }\n /**\n * @returns Whether this node is red.\n */\n isRed_() {\n return false;\n }\n}\n/**\n * An immutable sorted map implementation, based on a Left-leaning Red-Black\n * tree.\n */\nclass SortedMap {\n /**\n * @param comparator_ - Key comparator.\n * @param root_ - Optional root node for the map.\n */\n constructor(comparator_, root_ = SortedMap.EMPTY_NODE) {\n this.comparator_ = comparator_;\n this.root_ = root_;\n }\n /**\n * Returns a copy of the map, with the specified key/value added or replaced.\n * (TODO: We should perhaps rename this method to 'put')\n *\n * @param key - Key to be added.\n * @param value - Value to be added.\n * @returns New map, with item added.\n */\n insert(key, value) {\n return new SortedMap(this.comparator_, this.root_\n .insert(key, value, this.comparator_)\n .copy(null, null, LLRBNode.BLACK, null, null));\n }\n /**\n * Returns a copy of the map, with the specified key removed.\n *\n * @param key - The key to remove.\n * @returns New map, with item removed.\n */\n remove(key) {\n return new SortedMap(this.comparator_, this.root_\n .remove(key, this.comparator_)\n .copy(null, null, LLRBNode.BLACK, null, null));\n }\n /**\n * Returns the value of the node with the given key, or null.\n *\n * @param key - The key to look up.\n * @returns The value of the node with the given key, or null if the\n * key doesn't exist.\n */\n get(key) {\n let cmp;\n let node = this.root_;\n while (!node.isEmpty()) {\n cmp = this.comparator_(key, node.key);\n if (cmp === 0) {\n return node.value;\n }\n else if (cmp < 0) {\n node = node.left;\n }\n else if (cmp > 0) {\n node = node.right;\n }\n }\n return null;\n }\n /**\n * Returns the key of the item *before* the specified key, or null if key is the first item.\n * @param key - The key to find the predecessor of\n * @returns The predecessor key.\n */\n getPredecessorKey(key) {\n let cmp, node = this.root_, rightParent = null;\n while (!node.isEmpty()) {\n cmp = this.comparator_(key, node.key);\n if (cmp === 0) {\n if (!node.left.isEmpty()) {\n node = node.left;\n while (!node.right.isEmpty()) {\n node = node.right;\n }\n return node.key;\n }\n else if (rightParent) {\n return rightParent.key;\n }\n else {\n return null; // first item.\n }\n }\n else if (cmp < 0) {\n node = node.left;\n }\n else if (cmp > 0) {\n rightParent = node;\n node = node.right;\n }\n }\n throw new Error('Attempted to find predecessor key for a nonexistent key. What gives?');\n }\n /**\n * @returns True if the map is empty.\n */\n isEmpty() {\n return this.root_.isEmpty();\n }\n /**\n * @returns The total number of nodes in the map.\n */\n count() {\n return this.root_.count();\n }\n /**\n * @returns The minimum key in the map.\n */\n minKey() {\n return this.root_.minKey();\n }\n /**\n * @returns The maximum key in the map.\n */\n maxKey() {\n return this.root_.maxKey();\n }\n /**\n * Traverses the map in key order and calls the specified action function\n * for each key/value pair.\n *\n * @param action - Callback function to be called\n * for each key/value pair. If action returns true, traversal is aborted.\n * @returns The first truthy value returned by action, or the last falsey\n * value returned by action\n */\n inorderTraversal(action) {\n return this.root_.inorderTraversal(action);\n }\n /**\n * Traverses the map in reverse key order and calls the specified action function\n * for each key/value pair.\n *\n * @param action - Callback function to be called\n * for each key/value pair. If action returns true, traversal is aborted.\n * @returns True if the traversal was aborted.\n */\n reverseTraversal(action) {\n return this.root_.reverseTraversal(action);\n }\n /**\n * Returns an iterator over the SortedMap.\n * @returns The iterator.\n */\n getIterator(resultGenerator) {\n return new SortedMapIterator(this.root_, null, this.comparator_, false, resultGenerator);\n }\n getIteratorFrom(key, resultGenerator) {\n return new SortedMapIterator(this.root_, key, this.comparator_, false, resultGenerator);\n }\n getReverseIteratorFrom(key, resultGenerator) {\n return new SortedMapIterator(this.root_, key, this.comparator_, true, resultGenerator);\n }\n getReverseIterator(resultGenerator) {\n return new SortedMapIterator(this.root_, null, this.comparator_, true, resultGenerator);\n }\n}\n/**\n * Always use the same empty node, to reduce memory.\n */\nSortedMap.EMPTY_NODE = new LLRBEmptyNode();\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction NAME_ONLY_COMPARATOR(left, right) {\n return nameCompare(left.name, right.name);\n}\nfunction NAME_COMPARATOR(left, right) {\n return nameCompare(left, right);\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nlet MAX_NODE$2;\nfunction setMaxNode$1(val) {\n MAX_NODE$2 = val;\n}\nconst priorityHashText = function (priority) {\n if (typeof priority === 'number') {\n return 'number:' + doubleToIEEE754String(priority);\n }\n else {\n return 'string:' + priority;\n }\n};\n/**\n * Validates that a priority snapshot Node is valid.\n */\nconst validatePriorityNode = function (priorityNode) {\n if (priorityNode.isLeafNode()) {\n const val = priorityNode.val();\n assert(typeof val === 'string' ||\n typeof val === 'number' ||\n (typeof val === 'object' && contains(val, '.sv')), 'Priority must be a string or number.');\n }\n else {\n assert(priorityNode === MAX_NODE$2 || priorityNode.isEmpty(), 'priority of unexpected type.');\n }\n // Don't call getPriority() on MAX_NODE to avoid hitting assertion.\n assert(priorityNode === MAX_NODE$2 || priorityNode.getPriority().isEmpty(), \"Priority nodes can't have a priority of their own.\");\n};\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nlet __childrenNodeConstructor;\n/**\n * LeafNode is a class for storing leaf nodes in a DataSnapshot. It\n * implements Node and stores the value of the node (a string,\n * number, or boolean) accessible via getValue().\n */\nclass LeafNode {\n static set __childrenNodeConstructor(val) {\n __childrenNodeConstructor = val;\n }\n static get __childrenNodeConstructor() {\n return __childrenNodeConstructor;\n }\n /**\n * @param value_ - The value to store in this leaf node. The object type is\n * possible in the event of a deferred value\n * @param priorityNode_ - The priority of this node.\n */\n constructor(value_, priorityNode_ = LeafNode.__childrenNodeConstructor.EMPTY_NODE) {\n this.value_ = value_;\n this.priorityNode_ = priorityNode_;\n this.lazyHash_ = null;\n assert(this.value_ !== undefined && this.value_ !== null, \"LeafNode shouldn't be created with null/undefined value.\");\n validatePriorityNode(this.priorityNode_);\n }\n /** @inheritDoc */\n isLeafNode() {\n return true;\n }\n /** @inheritDoc */\n getPriority() {\n return this.priorityNode_;\n }\n /** @inheritDoc */\n updatePriority(newPriorityNode) {\n return new LeafNode(this.value_, newPriorityNode);\n }\n /** @inheritDoc */\n getImmediateChild(childName) {\n // Hack to treat priority as a regular child\n if (childName === '.priority') {\n return this.priorityNode_;\n }\n else {\n return LeafNode.__childrenNodeConstructor.EMPTY_NODE;\n }\n }\n /** @inheritDoc */\n getChild(path) {\n if (pathIsEmpty(path)) {\n return this;\n }\n else if (pathGetFront(path) === '.priority') {\n return this.priorityNode_;\n }\n else {\n return LeafNode.__childrenNodeConstructor.EMPTY_NODE;\n }\n }\n hasChild() {\n return false;\n }\n /** @inheritDoc */\n getPredecessorChildName(childName, childNode) {\n return null;\n }\n /** @inheritDoc */\n updateImmediateChild(childName, newChildNode) {\n if (childName === '.priority') {\n return this.updatePriority(newChildNode);\n }\n else if (newChildNode.isEmpty() && childName !== '.priority') {\n return this;\n }\n else {\n return LeafNode.__childrenNodeConstructor.EMPTY_NODE.updateImmediateChild(childName, newChildNode).updatePriority(this.priorityNode_);\n }\n }\n /** @inheritDoc */\n updateChild(path, newChildNode) {\n const front = pathGetFront(path);\n if (front === null) {\n return newChildNode;\n }\n else if (newChildNode.isEmpty() && front !== '.priority') {\n return this;\n }\n else {\n assert(front !== '.priority' || pathGetLength(path) === 1, '.priority must be the last token in a path');\n return this.updateImmediateChild(front, LeafNode.__childrenNodeConstructor.EMPTY_NODE.updateChild(pathPopFront(path), newChildNode));\n }\n }\n /** @inheritDoc */\n isEmpty() {\n return false;\n }\n /** @inheritDoc */\n numChildren() {\n return 0;\n }\n /** @inheritDoc */\n forEachChild(index, action) {\n return false;\n }\n val(exportFormat) {\n if (exportFormat && !this.getPriority().isEmpty()) {\n return {\n '.value': this.getValue(),\n '.priority': this.getPriority().val()\n };\n }\n else {\n return this.getValue();\n }\n }\n /** @inheritDoc */\n hash() {\n if (this.lazyHash_ === null) {\n let toHash = '';\n if (!this.priorityNode_.isEmpty()) {\n toHash +=\n 'priority:' +\n priorityHashText(this.priorityNode_.val()) +\n ':';\n }\n const type = typeof this.value_;\n toHash += type + ':';\n if (type === 'number') {\n toHash += doubleToIEEE754String(this.value_);\n }\n else {\n toHash += this.value_;\n }\n this.lazyHash_ = sha1(toHash);\n }\n return this.lazyHash_;\n }\n /**\n * Returns the value of the leaf node.\n * @returns The value of the node.\n */\n getValue() {\n return this.value_;\n }\n compareTo(other) {\n if (other === LeafNode.__childrenNodeConstructor.EMPTY_NODE) {\n return 1;\n }\n else if (other instanceof LeafNode.__childrenNodeConstructor) {\n return -1;\n }\n else {\n assert(other.isLeafNode(), 'Unknown node type');\n return this.compareToLeafNode_(other);\n }\n }\n /**\n * Comparison specifically for two leaf nodes\n */\n compareToLeafNode_(otherLeaf) {\n const otherLeafType = typeof otherLeaf.value_;\n const thisLeafType = typeof this.value_;\n const otherIndex = LeafNode.VALUE_TYPE_ORDER.indexOf(otherLeafType);\n const thisIndex = LeafNode.VALUE_TYPE_ORDER.indexOf(thisLeafType);\n assert(otherIndex >= 0, 'Unknown leaf type: ' + otherLeafType);\n assert(thisIndex >= 0, 'Unknown leaf type: ' + thisLeafType);\n if (otherIndex === thisIndex) {\n // Same type, compare values\n if (thisLeafType === 'object') {\n // Deferred value nodes are all equal, but we should also never get to this point...\n return 0;\n }\n else {\n // Note that this works because true > false, all others are number or string comparisons\n if (this.value_ < otherLeaf.value_) {\n return -1;\n }\n else if (this.value_ === otherLeaf.value_) {\n return 0;\n }\n else {\n return 1;\n }\n }\n }\n else {\n return thisIndex - otherIndex;\n }\n }\n withIndex() {\n return this;\n }\n isIndexed() {\n return true;\n }\n equals(other) {\n if (other === this) {\n return true;\n }\n else if (other.isLeafNode()) {\n const otherLeaf = other;\n return (this.value_ === otherLeaf.value_ &&\n this.priorityNode_.equals(otherLeaf.priorityNode_));\n }\n else {\n return false;\n }\n }\n}\n/**\n * The sort order for comparing leaf nodes of different types. If two leaf nodes have\n * the same type, the comparison falls back to their value\n */\nLeafNode.VALUE_TYPE_ORDER = ['object', 'boolean', 'number', 'string'];\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nlet nodeFromJSON$1;\nlet MAX_NODE$1;\nfunction setNodeFromJSON(val) {\n nodeFromJSON$1 = val;\n}\nfunction setMaxNode(val) {\n MAX_NODE$1 = val;\n}\nclass PriorityIndex extends Index {\n compare(a, b) {\n const aPriority = a.node.getPriority();\n const bPriority = b.node.getPriority();\n const indexCmp = aPriority.compareTo(bPriority);\n if (indexCmp === 0) {\n return nameCompare(a.name, b.name);\n }\n else {\n return indexCmp;\n }\n }\n isDefinedOn(node) {\n return !node.getPriority().isEmpty();\n }\n indexedValueChanged(oldNode, newNode) {\n return !oldNode.getPriority().equals(newNode.getPriority());\n }\n minPost() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return NamedNode.MIN;\n }\n maxPost() {\n return new NamedNode(MAX_NAME, new LeafNode('[PRIORITY-POST]', MAX_NODE$1));\n }\n makePost(indexValue, name) {\n const priorityNode = nodeFromJSON$1(indexValue);\n return new NamedNode(name, new LeafNode('[PRIORITY-POST]', priorityNode));\n }\n /**\n * @returns String representation for inclusion in a query spec\n */\n toString() {\n return '.priority';\n }\n}\nconst PRIORITY_INDEX = new PriorityIndex();\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst LOG_2 = Math.log(2);\nclass Base12Num {\n constructor(length) {\n const logBase2 = (num) => \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n parseInt((Math.log(num) / LOG_2), 10);\n const bitMask = (bits) => parseInt(Array(bits + 1).join('1'), 2);\n this.count = logBase2(length + 1);\n this.current_ = this.count - 1;\n const mask = bitMask(this.count);\n this.bits_ = (length + 1) & mask;\n }\n nextBitIsOne() {\n //noinspection JSBitwiseOperatorUsage\n const result = !(this.bits_ & (0x1 << this.current_));\n this.current_--;\n return result;\n }\n}\n/**\n * Takes a list of child nodes and constructs a SortedSet using the given comparison\n * function\n *\n * Uses the algorithm described in the paper linked here:\n * http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.46.1458\n *\n * @param childList - Unsorted list of children\n * @param cmp - The comparison method to be used\n * @param keyFn - An optional function to extract K from a node wrapper, if K's\n * type is not NamedNode\n * @param mapSortFn - An optional override for comparator used by the generated sorted map\n */\nconst buildChildSet = function (childList, cmp, keyFn, mapSortFn) {\n childList.sort(cmp);\n const buildBalancedTree = function (low, high) {\n const length = high - low;\n let namedNode;\n let key;\n if (length === 0) {\n return null;\n }\n else if (length === 1) {\n namedNode = childList[low];\n key = keyFn ? keyFn(namedNode) : namedNode;\n return new LLRBNode(key, namedNode.node, LLRBNode.BLACK, null, null);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const middle = parseInt((length / 2), 10) + low;\n const left = buildBalancedTree(low, middle);\n const right = buildBalancedTree(middle + 1, high);\n namedNode = childList[middle];\n key = keyFn ? keyFn(namedNode) : namedNode;\n return new LLRBNode(key, namedNode.node, LLRBNode.BLACK, left, right);\n }\n };\n const buildFrom12Array = function (base12) {\n let node = null;\n let root = null;\n let index = childList.length;\n const buildPennant = function (chunkSize, color) {\n const low = index - chunkSize;\n const high = index;\n index -= chunkSize;\n const childTree = buildBalancedTree(low + 1, high);\n const namedNode = childList[low];\n const key = keyFn ? keyFn(namedNode) : namedNode;\n attachPennant(new LLRBNode(key, namedNode.node, color, null, childTree));\n };\n const attachPennant = function (pennant) {\n if (node) {\n node.left = pennant;\n node = pennant;\n }\n else {\n root = pennant;\n node = pennant;\n }\n };\n for (let i = 0; i < base12.count; ++i) {\n const isOne = base12.nextBitIsOne();\n // The number of nodes taken in each slice is 2^(arr.length - (i + 1))\n const chunkSize = Math.pow(2, base12.count - (i + 1));\n if (isOne) {\n buildPennant(chunkSize, LLRBNode.BLACK);\n }\n else {\n // current == 2\n buildPennant(chunkSize, LLRBNode.BLACK);\n buildPennant(chunkSize, LLRBNode.RED);\n }\n }\n return root;\n };\n const base12 = new Base12Num(childList.length);\n const root = buildFrom12Array(base12);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new SortedMap(mapSortFn || cmp, root);\n};\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nlet _defaultIndexMap;\nconst fallbackObject = {};\nclass IndexMap {\n /**\n * The default IndexMap for nodes without a priority\n */\n static get Default() {\n assert(fallbackObject && PRIORITY_INDEX, 'ChildrenNode.ts has not been loaded');\n _defaultIndexMap =\n _defaultIndexMap ||\n new IndexMap({ '.priority': fallbackObject }, { '.priority': PRIORITY_INDEX });\n return _defaultIndexMap;\n }\n constructor(indexes_, indexSet_) {\n this.indexes_ = indexes_;\n this.indexSet_ = indexSet_;\n }\n get(indexKey) {\n const sortedMap = safeGet(this.indexes_, indexKey);\n if (!sortedMap) {\n throw new Error('No index defined for ' + indexKey);\n }\n if (sortedMap instanceof SortedMap) {\n return sortedMap;\n }\n else {\n // The index exists, but it falls back to just name comparison. Return null so that the calling code uses the\n // regular child map\n return null;\n }\n }\n hasIndex(indexDefinition) {\n return contains(this.indexSet_, indexDefinition.toString());\n }\n addIndex(indexDefinition, existingChildren) {\n assert(indexDefinition !== KEY_INDEX, \"KeyIndex always exists and isn't meant to be added to the IndexMap.\");\n const childList = [];\n let sawIndexedValue = false;\n const iter = existingChildren.getIterator(NamedNode.Wrap);\n let next = iter.getNext();\n while (next) {\n sawIndexedValue =\n sawIndexedValue || indexDefinition.isDefinedOn(next.node);\n childList.push(next);\n next = iter.getNext();\n }\n let newIndex;\n if (sawIndexedValue) {\n newIndex = buildChildSet(childList, indexDefinition.getCompare());\n }\n else {\n newIndex = fallbackObject;\n }\n const indexName = indexDefinition.toString();\n const newIndexSet = Object.assign({}, this.indexSet_);\n newIndexSet[indexName] = indexDefinition;\n const newIndexes = Object.assign({}, this.indexes_);\n newIndexes[indexName] = newIndex;\n return new IndexMap(newIndexes, newIndexSet);\n }\n /**\n * Ensure that this node is properly tracked in any indexes that we're maintaining\n */\n addToIndexes(namedNode, existingChildren) {\n const newIndexes = map(this.indexes_, (indexedChildren, indexName) => {\n const index = safeGet(this.indexSet_, indexName);\n assert(index, 'Missing index implementation for ' + indexName);\n if (indexedChildren === fallbackObject) {\n // Check to see if we need to index everything\n if (index.isDefinedOn(namedNode.node)) {\n // We need to build this index\n const childList = [];\n const iter = existingChildren.getIterator(NamedNode.Wrap);\n let next = iter.getNext();\n while (next) {\n if (next.name !== namedNode.name) {\n childList.push(next);\n }\n next = iter.getNext();\n }\n childList.push(namedNode);\n return buildChildSet(childList, index.getCompare());\n }\n else {\n // No change, this remains a fallback\n return fallbackObject;\n }\n }\n else {\n const existingSnap = existingChildren.get(namedNode.name);\n let newChildren = indexedChildren;\n if (existingSnap) {\n newChildren = newChildren.remove(new NamedNode(namedNode.name, existingSnap));\n }\n return newChildren.insert(namedNode, namedNode.node);\n }\n });\n return new IndexMap(newIndexes, this.indexSet_);\n }\n /**\n * Create a new IndexMap instance with the given value removed\n */\n removeFromIndexes(namedNode, existingChildren) {\n const newIndexes = map(this.indexes_, (indexedChildren) => {\n if (indexedChildren === fallbackObject) {\n // This is the fallback. Just return it, nothing to do in this case\n return indexedChildren;\n }\n else {\n const existingSnap = existingChildren.get(namedNode.name);\n if (existingSnap) {\n return indexedChildren.remove(new NamedNode(namedNode.name, existingSnap));\n }\n else {\n // No record of this child\n return indexedChildren;\n }\n }\n });\n return new IndexMap(newIndexes, this.indexSet_);\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// TODO: For memory savings, don't store priorityNode_ if it's empty.\nlet EMPTY_NODE;\n/**\n * ChildrenNode is a class for storing internal nodes in a DataSnapshot\n * (i.e. nodes with children). It implements Node and stores the\n * list of children in the children property, sorted by child name.\n */\nclass ChildrenNode {\n static get EMPTY_NODE() {\n return (EMPTY_NODE ||\n (EMPTY_NODE = new ChildrenNode(new SortedMap(NAME_COMPARATOR), null, IndexMap.Default)));\n }\n /**\n * @param children_ - List of children of this node..\n * @param priorityNode_ - The priority of this node (as a snapshot node).\n */\n constructor(children_, priorityNode_, indexMap_) {\n this.children_ = children_;\n this.priorityNode_ = priorityNode_;\n this.indexMap_ = indexMap_;\n this.lazyHash_ = null;\n /**\n * Note: The only reason we allow null priority is for EMPTY_NODE, since we can't use\n * EMPTY_NODE as the priority of EMPTY_NODE. We might want to consider making EMPTY_NODE its own\n * class instead of an empty ChildrenNode.\n */\n if (this.priorityNode_) {\n validatePriorityNode(this.priorityNode_);\n }\n if (this.children_.isEmpty()) {\n assert(!this.priorityNode_ || this.priorityNode_.isEmpty(), 'An empty node cannot have a priority');\n }\n }\n /** @inheritDoc */\n isLeafNode() {\n return false;\n }\n /** @inheritDoc */\n getPriority() {\n return this.priorityNode_ || EMPTY_NODE;\n }\n /** @inheritDoc */\n updatePriority(newPriorityNode) {\n if (this.children_.isEmpty()) {\n // Don't allow priorities on empty nodes\n return this;\n }\n else {\n return new ChildrenNode(this.children_, newPriorityNode, this.indexMap_);\n }\n }\n /** @inheritDoc */\n getImmediateChild(childName) {\n // Hack to treat priority as a regular child\n if (childName === '.priority') {\n return this.getPriority();\n }\n else {\n const child = this.children_.get(childName);\n return child === null ? EMPTY_NODE : child;\n }\n }\n /** @inheritDoc */\n getChild(path) {\n const front = pathGetFront(path);\n if (front === null) {\n return this;\n }\n return this.getImmediateChild(front).getChild(pathPopFront(path));\n }\n /** @inheritDoc */\n hasChild(childName) {\n return this.children_.get(childName) !== null;\n }\n /** @inheritDoc */\n updateImmediateChild(childName, newChildNode) {\n assert(newChildNode, 'We should always be passing snapshot nodes');\n if (childName === '.priority') {\n return this.updatePriority(newChildNode);\n }\n else {\n const namedNode = new NamedNode(childName, newChildNode);\n let newChildren, newIndexMap;\n if (newChildNode.isEmpty()) {\n newChildren = this.children_.remove(childName);\n newIndexMap = this.indexMap_.removeFromIndexes(namedNode, this.children_);\n }\n else {\n newChildren = this.children_.insert(childName, newChildNode);\n newIndexMap = this.indexMap_.addToIndexes(namedNode, this.children_);\n }\n const newPriority = newChildren.isEmpty()\n ? EMPTY_NODE\n : this.priorityNode_;\n return new ChildrenNode(newChildren, newPriority, newIndexMap);\n }\n }\n /** @inheritDoc */\n updateChild(path, newChildNode) {\n const front = pathGetFront(path);\n if (front === null) {\n return newChildNode;\n }\n else {\n assert(pathGetFront(path) !== '.priority' || pathGetLength(path) === 1, '.priority must be the last token in a path');\n const newImmediateChild = this.getImmediateChild(front).updateChild(pathPopFront(path), newChildNode);\n return this.updateImmediateChild(front, newImmediateChild);\n }\n }\n /** @inheritDoc */\n isEmpty() {\n return this.children_.isEmpty();\n }\n /** @inheritDoc */\n numChildren() {\n return this.children_.count();\n }\n /** @inheritDoc */\n val(exportFormat) {\n if (this.isEmpty()) {\n return null;\n }\n const obj = {};\n let numKeys = 0, maxKey = 0, allIntegerKeys = true;\n this.forEachChild(PRIORITY_INDEX, (key, childNode) => {\n obj[key] = childNode.val(exportFormat);\n numKeys++;\n if (allIntegerKeys && ChildrenNode.INTEGER_REGEXP_.test(key)) {\n maxKey = Math.max(maxKey, Number(key));\n }\n else {\n allIntegerKeys = false;\n }\n });\n if (!exportFormat && allIntegerKeys && maxKey < 2 * numKeys) {\n // convert to array.\n const array = [];\n // eslint-disable-next-line guard-for-in\n for (const key in obj) {\n array[key] = obj[key];\n }\n return array;\n }\n else {\n if (exportFormat && !this.getPriority().isEmpty()) {\n obj['.priority'] = this.getPriority().val();\n }\n return obj;\n }\n }\n /** @inheritDoc */\n hash() {\n if (this.lazyHash_ === null) {\n let toHash = '';\n if (!this.getPriority().isEmpty()) {\n toHash +=\n 'priority:' +\n priorityHashText(this.getPriority().val()) +\n ':';\n }\n this.forEachChild(PRIORITY_INDEX, (key, childNode) => {\n const childHash = childNode.hash();\n if (childHash !== '') {\n toHash += ':' + key + ':' + childHash;\n }\n });\n this.lazyHash_ = toHash === '' ? '' : sha1(toHash);\n }\n return this.lazyHash_;\n }\n /** @inheritDoc */\n getPredecessorChildName(childName, childNode, index) {\n const idx = this.resolveIndex_(index);\n if (idx) {\n const predecessor = idx.getPredecessorKey(new NamedNode(childName, childNode));\n return predecessor ? predecessor.name : null;\n }\n else {\n return this.children_.getPredecessorKey(childName);\n }\n }\n getFirstChildName(indexDefinition) {\n const idx = this.resolveIndex_(indexDefinition);\n if (idx) {\n const minKey = idx.minKey();\n return minKey && minKey.name;\n }\n else {\n return this.children_.minKey();\n }\n }\n getFirstChild(indexDefinition) {\n const minKey = this.getFirstChildName(indexDefinition);\n if (minKey) {\n return new NamedNode(minKey, this.children_.get(minKey));\n }\n else {\n return null;\n }\n }\n /**\n * Given an index, return the key name of the largest value we have, according to that index\n */\n getLastChildName(indexDefinition) {\n const idx = this.resolveIndex_(indexDefinition);\n if (idx) {\n const maxKey = idx.maxKey();\n return maxKey && maxKey.name;\n }\n else {\n return this.children_.maxKey();\n }\n }\n getLastChild(indexDefinition) {\n const maxKey = this.getLastChildName(indexDefinition);\n if (maxKey) {\n return new NamedNode(maxKey, this.children_.get(maxKey));\n }\n else {\n return null;\n }\n }\n forEachChild(index, action) {\n const idx = this.resolveIndex_(index);\n if (idx) {\n return idx.inorderTraversal(wrappedNode => {\n return action(wrappedNode.name, wrappedNode.node);\n });\n }\n else {\n return this.children_.inorderTraversal(action);\n }\n }\n getIterator(indexDefinition) {\n return this.getIteratorFrom(indexDefinition.minPost(), indexDefinition);\n }\n getIteratorFrom(startPost, indexDefinition) {\n const idx = this.resolveIndex_(indexDefinition);\n if (idx) {\n return idx.getIteratorFrom(startPost, key => key);\n }\n else {\n const iterator = this.children_.getIteratorFrom(startPost.name, NamedNode.Wrap);\n let next = iterator.peek();\n while (next != null && indexDefinition.compare(next, startPost) < 0) {\n iterator.getNext();\n next = iterator.peek();\n }\n return iterator;\n }\n }\n getReverseIterator(indexDefinition) {\n return this.getReverseIteratorFrom(indexDefinition.maxPost(), indexDefinition);\n }\n getReverseIteratorFrom(endPost, indexDefinition) {\n const idx = this.resolveIndex_(indexDefinition);\n if (idx) {\n return idx.getReverseIteratorFrom(endPost, key => {\n return key;\n });\n }\n else {\n const iterator = this.children_.getReverseIteratorFrom(endPost.name, NamedNode.Wrap);\n let next = iterator.peek();\n while (next != null && indexDefinition.compare(next, endPost) > 0) {\n iterator.getNext();\n next = iterator.peek();\n }\n return iterator;\n }\n }\n compareTo(other) {\n if (this.isEmpty()) {\n if (other.isEmpty()) {\n return 0;\n }\n else {\n return -1;\n }\n }\n else if (other.isLeafNode() || other.isEmpty()) {\n return 1;\n }\n else if (other === MAX_NODE) {\n return -1;\n }\n else {\n // Must be another node with children.\n return 0;\n }\n }\n withIndex(indexDefinition) {\n if (indexDefinition === KEY_INDEX ||\n this.indexMap_.hasIndex(indexDefinition)) {\n return this;\n }\n else {\n const newIndexMap = this.indexMap_.addIndex(indexDefinition, this.children_);\n return new ChildrenNode(this.children_, this.priorityNode_, newIndexMap);\n }\n }\n isIndexed(index) {\n return index === KEY_INDEX || this.indexMap_.hasIndex(index);\n }\n equals(other) {\n if (other === this) {\n return true;\n }\n else if (other.isLeafNode()) {\n return false;\n }\n else {\n const otherChildrenNode = other;\n if (!this.getPriority().equals(otherChildrenNode.getPriority())) {\n return false;\n }\n else if (this.children_.count() === otherChildrenNode.children_.count()) {\n const thisIter = this.getIterator(PRIORITY_INDEX);\n const otherIter = otherChildrenNode.getIterator(PRIORITY_INDEX);\n let thisCurrent = thisIter.getNext();\n let otherCurrent = otherIter.getNext();\n while (thisCurrent && otherCurrent) {\n if (thisCurrent.name !== otherCurrent.name ||\n !thisCurrent.node.equals(otherCurrent.node)) {\n return false;\n }\n thisCurrent = thisIter.getNext();\n otherCurrent = otherIter.getNext();\n }\n return thisCurrent === null && otherCurrent === null;\n }\n else {\n return false;\n }\n }\n }\n /**\n * Returns a SortedMap ordered by index, or null if the default (by-key) ordering can be used\n * instead.\n *\n */\n resolveIndex_(indexDefinition) {\n if (indexDefinition === KEY_INDEX) {\n return null;\n }\n else {\n return this.indexMap_.get(indexDefinition.toString());\n }\n }\n}\nChildrenNode.INTEGER_REGEXP_ = /^(0|[1-9]\\d*)$/;\nclass MaxNode extends ChildrenNode {\n constructor() {\n super(new SortedMap(NAME_COMPARATOR), ChildrenNode.EMPTY_NODE, IndexMap.Default);\n }\n compareTo(other) {\n if (other === this) {\n return 0;\n }\n else {\n return 1;\n }\n }\n equals(other) {\n // Not that we every compare it, but MAX_NODE is only ever equal to itself\n return other === this;\n }\n getPriority() {\n return this;\n }\n getImmediateChild(childName) {\n return ChildrenNode.EMPTY_NODE;\n }\n isEmpty() {\n return false;\n }\n}\n/**\n * Marker that will sort higher than any other snapshot.\n */\nconst MAX_NODE = new MaxNode();\nObject.defineProperties(NamedNode, {\n MIN: {\n value: new NamedNode(MIN_NAME, ChildrenNode.EMPTY_NODE)\n },\n MAX: {\n value: new NamedNode(MAX_NAME, MAX_NODE)\n }\n});\n/**\n * Reference Extensions\n */\nKeyIndex.__EMPTY_NODE = ChildrenNode.EMPTY_NODE;\nLeafNode.__childrenNodeConstructor = ChildrenNode;\nsetMaxNode$1(MAX_NODE);\nsetMaxNode(MAX_NODE);\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst USE_HINZE = true;\n/**\n * Constructs a snapshot node representing the passed JSON and returns it.\n * @param json - JSON to create a node for.\n * @param priority - Optional priority to use. This will be ignored if the\n * passed JSON contains a .priority property.\n */\nfunction nodeFromJSON(json, priority = null) {\n if (json === null) {\n return ChildrenNode.EMPTY_NODE;\n }\n if (typeof json === 'object' && '.priority' in json) {\n priority = json['.priority'];\n }\n assert(priority === null ||\n typeof priority === 'string' ||\n typeof priority === 'number' ||\n (typeof priority === 'object' && '.sv' in priority), 'Invalid priority type found: ' + typeof priority);\n if (typeof json === 'object' && '.value' in json && json['.value'] !== null) {\n json = json['.value'];\n }\n // Valid leaf nodes include non-objects or server-value wrapper objects\n if (typeof json !== 'object' || '.sv' in json) {\n const jsonLeaf = json;\n return new LeafNode(jsonLeaf, nodeFromJSON(priority));\n }\n if (!(json instanceof Array) && USE_HINZE) {\n const children = [];\n let childrenHavePriority = false;\n const hinzeJsonObj = json;\n each(hinzeJsonObj, (key, child) => {\n if (key.substring(0, 1) !== '.') {\n // Ignore metadata nodes\n const childNode = nodeFromJSON(child);\n if (!childNode.isEmpty()) {\n childrenHavePriority =\n childrenHavePriority || !childNode.getPriority().isEmpty();\n children.push(new NamedNode(key, childNode));\n }\n }\n });\n if (children.length === 0) {\n return ChildrenNode.EMPTY_NODE;\n }\n const childSet = buildChildSet(children, NAME_ONLY_COMPARATOR, namedNode => namedNode.name, NAME_COMPARATOR);\n if (childrenHavePriority) {\n const sortedChildSet = buildChildSet(children, PRIORITY_INDEX.getCompare());\n return new ChildrenNode(childSet, nodeFromJSON(priority), new IndexMap({ '.priority': sortedChildSet }, { '.priority': PRIORITY_INDEX }));\n }\n else {\n return new ChildrenNode(childSet, nodeFromJSON(priority), IndexMap.Default);\n }\n }\n else {\n let node = ChildrenNode.EMPTY_NODE;\n each(json, (key, childData) => {\n if (contains(json, key)) {\n if (key.substring(0, 1) !== '.') {\n // ignore metadata nodes.\n const childNode = nodeFromJSON(childData);\n if (childNode.isLeafNode() || !childNode.isEmpty()) {\n node = node.updateImmediateChild(key, childNode);\n }\n }\n }\n });\n return node.updatePriority(nodeFromJSON(priority));\n }\n}\nsetNodeFromJSON(nodeFromJSON);\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nclass PathIndex extends Index {\n constructor(indexPath_) {\n super();\n this.indexPath_ = indexPath_;\n assert(!pathIsEmpty(indexPath_) && pathGetFront(indexPath_) !== '.priority', \"Can't create PathIndex with empty path or .priority key\");\n }\n extractChild(snap) {\n return snap.getChild(this.indexPath_);\n }\n isDefinedOn(node) {\n return !node.getChild(this.indexPath_).isEmpty();\n }\n compare(a, b) {\n const aChild = this.extractChild(a.node);\n const bChild = this.extractChild(b.node);\n const indexCmp = aChild.compareTo(bChild);\n if (indexCmp === 0) {\n return nameCompare(a.name, b.name);\n }\n else {\n return indexCmp;\n }\n }\n makePost(indexValue, name) {\n const valueNode = nodeFromJSON(indexValue);\n const node = ChildrenNode.EMPTY_NODE.updateChild(this.indexPath_, valueNode);\n return new NamedNode(name, node);\n }\n maxPost() {\n const node = ChildrenNode.EMPTY_NODE.updateChild(this.indexPath_, MAX_NODE);\n return new NamedNode(MAX_NAME, node);\n }\n toString() {\n return pathSlice(this.indexPath_, 0).join('/');\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nclass ValueIndex extends Index {\n compare(a, b) {\n const indexCmp = a.node.compareTo(b.node);\n if (indexCmp === 0) {\n return nameCompare(a.name, b.name);\n }\n else {\n return indexCmp;\n }\n }\n isDefinedOn(node) {\n return true;\n }\n indexedValueChanged(oldNode, newNode) {\n return !oldNode.equals(newNode);\n }\n minPost() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return NamedNode.MIN;\n }\n maxPost() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return NamedNode.MAX;\n }\n makePost(indexValue, name) {\n const valueNode = nodeFromJSON(indexValue);\n return new NamedNode(name, valueNode);\n }\n /**\n * @returns String representation for inclusion in a query spec\n */\n toString() {\n return '.value';\n }\n}\nconst VALUE_INDEX = new ValueIndex();\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction changeValue(snapshotNode) {\n return { type: \"value\" /* ChangeType.VALUE */, snapshotNode };\n}\nfunction changeChildAdded(childName, snapshotNode) {\n return { type: \"child_added\" /* ChangeType.CHILD_ADDED */, snapshotNode, childName };\n}\nfunction changeChildRemoved(childName, snapshotNode) {\n return { type: \"child_removed\" /* ChangeType.CHILD_REMOVED */, snapshotNode, childName };\n}\nfunction changeChildChanged(childName, snapshotNode, oldSnap) {\n return {\n type: \"child_changed\" /* ChangeType.CHILD_CHANGED */,\n snapshotNode,\n childName,\n oldSnap\n };\n}\nfunction changeChildMoved(childName, snapshotNode) {\n return { type: \"child_moved\" /* ChangeType.CHILD_MOVED */, snapshotNode, childName };\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Doesn't really filter nodes but applies an index to the node and keeps track of any changes\n */\nclass IndexedFilter {\n constructor(index_) {\n this.index_ = index_;\n }\n updateChild(snap, key, newChild, affectedPath, source, optChangeAccumulator) {\n assert(snap.isIndexed(this.index_), 'A node must be indexed if only a child is updated');\n const oldChild = snap.getImmediateChild(key);\n // Check if anything actually changed.\n if (oldChild.getChild(affectedPath).equals(newChild.getChild(affectedPath))) {\n // There's an edge case where a child can enter or leave the view because affectedPath was set to null.\n // In this case, affectedPath will appear null in both the old and new snapshots. So we need\n // to avoid treating these cases as \"nothing changed.\"\n if (oldChild.isEmpty() === newChild.isEmpty()) {\n // Nothing changed.\n // This assert should be valid, but it's expensive (can dominate perf testing) so don't actually do it.\n //assert(oldChild.equals(newChild), 'Old and new snapshots should be equal.');\n return snap;\n }\n }\n if (optChangeAccumulator != null) {\n if (newChild.isEmpty()) {\n if (snap.hasChild(key)) {\n optChangeAccumulator.trackChildChange(changeChildRemoved(key, oldChild));\n }\n else {\n assert(snap.isLeafNode(), 'A child remove without an old child only makes sense on a leaf node');\n }\n }\n else if (oldChild.isEmpty()) {\n optChangeAccumulator.trackChildChange(changeChildAdded(key, newChild));\n }\n else {\n optChangeAccumulator.trackChildChange(changeChildChanged(key, newChild, oldChild));\n }\n }\n if (snap.isLeafNode() && newChild.isEmpty()) {\n return snap;\n }\n else {\n // Make sure the node is indexed\n return snap.updateImmediateChild(key, newChild).withIndex(this.index_);\n }\n }\n updateFullNode(oldSnap, newSnap, optChangeAccumulator) {\n if (optChangeAccumulator != null) {\n if (!oldSnap.isLeafNode()) {\n oldSnap.forEachChild(PRIORITY_INDEX, (key, childNode) => {\n if (!newSnap.hasChild(key)) {\n optChangeAccumulator.trackChildChange(changeChildRemoved(key, childNode));\n }\n });\n }\n if (!newSnap.isLeafNode()) {\n newSnap.forEachChild(PRIORITY_INDEX, (key, childNode) => {\n if (oldSnap.hasChild(key)) {\n const oldChild = oldSnap.getImmediateChild(key);\n if (!oldChild.equals(childNode)) {\n optChangeAccumulator.trackChildChange(changeChildChanged(key, childNode, oldChild));\n }\n }\n else {\n optChangeAccumulator.trackChildChange(changeChildAdded(key, childNode));\n }\n });\n }\n }\n return newSnap.withIndex(this.index_);\n }\n updatePriority(oldSnap, newPriority) {\n if (oldSnap.isEmpty()) {\n return ChildrenNode.EMPTY_NODE;\n }\n else {\n return oldSnap.updatePriority(newPriority);\n }\n }\n filtersNodes() {\n return false;\n }\n getIndexedFilter() {\n return this;\n }\n getIndex() {\n return this.index_;\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Filters nodes by range and uses an IndexFilter to track any changes after filtering the node\n */\nclass RangedFilter {\n constructor(params) {\n this.indexedFilter_ = new IndexedFilter(params.getIndex());\n this.index_ = params.getIndex();\n this.startPost_ = RangedFilter.getStartPost_(params);\n this.endPost_ = RangedFilter.getEndPost_(params);\n this.startIsInclusive_ = !params.startAfterSet_;\n this.endIsInclusive_ = !params.endBeforeSet_;\n }\n getStartPost() {\n return this.startPost_;\n }\n getEndPost() {\n return this.endPost_;\n }\n matches(node) {\n const isWithinStart = this.startIsInclusive_\n ? this.index_.compare(this.getStartPost(), node) <= 0\n : this.index_.compare(this.getStartPost(), node) < 0;\n const isWithinEnd = this.endIsInclusive_\n ? this.index_.compare(node, this.getEndPost()) <= 0\n : this.index_.compare(node, this.getEndPost()) < 0;\n return isWithinStart && isWithinEnd;\n }\n updateChild(snap, key, newChild, affectedPath, source, optChangeAccumulator) {\n if (!this.matches(new NamedNode(key, newChild))) {\n newChild = ChildrenNode.EMPTY_NODE;\n }\n return this.indexedFilter_.updateChild(snap, key, newChild, affectedPath, source, optChangeAccumulator);\n }\n updateFullNode(oldSnap, newSnap, optChangeAccumulator) {\n if (newSnap.isLeafNode()) {\n // Make sure we have a children node with the correct index, not a leaf node;\n newSnap = ChildrenNode.EMPTY_NODE;\n }\n let filtered = newSnap.withIndex(this.index_);\n // Don't support priorities on queries\n filtered = filtered.updatePriority(ChildrenNode.EMPTY_NODE);\n const self = this;\n newSnap.forEachChild(PRIORITY_INDEX, (key, childNode) => {\n if (!self.matches(new NamedNode(key, childNode))) {\n filtered = filtered.updateImmediateChild(key, ChildrenNode.EMPTY_NODE);\n }\n });\n return this.indexedFilter_.updateFullNode(oldSnap, filtered, optChangeAccumulator);\n }\n updatePriority(oldSnap, newPriority) {\n // Don't support priorities on queries\n return oldSnap;\n }\n filtersNodes() {\n return true;\n }\n getIndexedFilter() {\n return this.indexedFilter_;\n }\n getIndex() {\n return this.index_;\n }\n static getStartPost_(params) {\n if (params.hasStart()) {\n const startName = params.getIndexStartName();\n return params.getIndex().makePost(params.getIndexStartValue(), startName);\n }\n else {\n return params.getIndex().minPost();\n }\n }\n static getEndPost_(params) {\n if (params.hasEnd()) {\n const endName = params.getIndexEndName();\n return params.getIndex().makePost(params.getIndexEndValue(), endName);\n }\n else {\n return params.getIndex().maxPost();\n }\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Applies a limit and a range to a node and uses RangedFilter to do the heavy lifting where possible\n */\nclass LimitedFilter {\n constructor(params) {\n this.withinDirectionalStart = (node) => this.reverse_ ? this.withinEndPost(node) : this.withinStartPost(node);\n this.withinDirectionalEnd = (node) => this.reverse_ ? this.withinStartPost(node) : this.withinEndPost(node);\n this.withinStartPost = (node) => {\n const compareRes = this.index_.compare(this.rangedFilter_.getStartPost(), node);\n return this.startIsInclusive_ ? compareRes <= 0 : compareRes < 0;\n };\n this.withinEndPost = (node) => {\n const compareRes = this.index_.compare(node, this.rangedFilter_.getEndPost());\n return this.endIsInclusive_ ? compareRes <= 0 : compareRes < 0;\n };\n this.rangedFilter_ = new RangedFilter(params);\n this.index_ = params.getIndex();\n this.limit_ = params.getLimit();\n this.reverse_ = !params.isViewFromLeft();\n this.startIsInclusive_ = !params.startAfterSet_;\n this.endIsInclusive_ = !params.endBeforeSet_;\n }\n updateChild(snap, key, newChild, affectedPath, source, optChangeAccumulator) {\n if (!this.rangedFilter_.matches(new NamedNode(key, newChild))) {\n newChild = ChildrenNode.EMPTY_NODE;\n }\n if (snap.getImmediateChild(key).equals(newChild)) {\n // No change\n return snap;\n }\n else if (snap.numChildren() < this.limit_) {\n return this.rangedFilter_\n .getIndexedFilter()\n .updateChild(snap, key, newChild, affectedPath, source, optChangeAccumulator);\n }\n else {\n return this.fullLimitUpdateChild_(snap, key, newChild, source, optChangeAccumulator);\n }\n }\n updateFullNode(oldSnap, newSnap, optChangeAccumulator) {\n let filtered;\n if (newSnap.isLeafNode() || newSnap.isEmpty()) {\n // Make sure we have a children node with the correct index, not a leaf node;\n filtered = ChildrenNode.EMPTY_NODE.withIndex(this.index_);\n }\n else {\n if (this.limit_ * 2 < newSnap.numChildren() &&\n newSnap.isIndexed(this.index_)) {\n // Easier to build up a snapshot, since what we're given has more than twice the elements we want\n filtered = ChildrenNode.EMPTY_NODE.withIndex(this.index_);\n // anchor to the startPost, endPost, or last element as appropriate\n let iterator;\n if (this.reverse_) {\n iterator = newSnap.getReverseIteratorFrom(this.rangedFilter_.getEndPost(), this.index_);\n }\n else {\n iterator = newSnap.getIteratorFrom(this.rangedFilter_.getStartPost(), this.index_);\n }\n let count = 0;\n while (iterator.hasNext() && count < this.limit_) {\n const next = iterator.getNext();\n if (!this.withinDirectionalStart(next)) {\n // if we have not reached the start, skip to the next element\n continue;\n }\n else if (!this.withinDirectionalEnd(next)) {\n // if we have reached the end, stop adding elements\n break;\n }\n else {\n filtered = filtered.updateImmediateChild(next.name, next.node);\n count++;\n }\n }\n }\n else {\n // The snap contains less than twice the limit. Faster to delete from the snap than build up a new one\n filtered = newSnap.withIndex(this.index_);\n // Don't support priorities on queries\n filtered = filtered.updatePriority(ChildrenNode.EMPTY_NODE);\n let iterator;\n if (this.reverse_) {\n iterator = filtered.getReverseIterator(this.index_);\n }\n else {\n iterator = filtered.getIterator(this.index_);\n }\n let count = 0;\n while (iterator.hasNext()) {\n const next = iterator.getNext();\n const inRange = count < this.limit_ &&\n this.withinDirectionalStart(next) &&\n this.withinDirectionalEnd(next);\n if (inRange) {\n count++;\n }\n else {\n filtered = filtered.updateImmediateChild(next.name, ChildrenNode.EMPTY_NODE);\n }\n }\n }\n }\n return this.rangedFilter_\n .getIndexedFilter()\n .updateFullNode(oldSnap, filtered, optChangeAccumulator);\n }\n updatePriority(oldSnap, newPriority) {\n // Don't support priorities on queries\n return oldSnap;\n }\n filtersNodes() {\n return true;\n }\n getIndexedFilter() {\n return this.rangedFilter_.getIndexedFilter();\n }\n getIndex() {\n return this.index_;\n }\n fullLimitUpdateChild_(snap, childKey, childSnap, source, changeAccumulator) {\n // TODO: rename all cache stuff etc to general snap terminology\n let cmp;\n if (this.reverse_) {\n const indexCmp = this.index_.getCompare();\n cmp = (a, b) => indexCmp(b, a);\n }\n else {\n cmp = this.index_.getCompare();\n }\n const oldEventCache = snap;\n assert(oldEventCache.numChildren() === this.limit_, '');\n const newChildNamedNode = new NamedNode(childKey, childSnap);\n const windowBoundary = this.reverse_\n ? oldEventCache.getFirstChild(this.index_)\n : oldEventCache.getLastChild(this.index_);\n const inRange = this.rangedFilter_.matches(newChildNamedNode);\n if (oldEventCache.hasChild(childKey)) {\n const oldChildSnap = oldEventCache.getImmediateChild(childKey);\n let nextChild = source.getChildAfterChild(this.index_, windowBoundary, this.reverse_);\n while (nextChild != null &&\n (nextChild.name === childKey || oldEventCache.hasChild(nextChild.name))) {\n // There is a weird edge case where a node is updated as part of a merge in the write tree, but hasn't\n // been applied to the limited filter yet. Ignore this next child which will be updated later in\n // the limited filter...\n nextChild = source.getChildAfterChild(this.index_, nextChild, this.reverse_);\n }\n const compareNext = nextChild == null ? 1 : cmp(nextChild, newChildNamedNode);\n const remainsInWindow = inRange && !childSnap.isEmpty() && compareNext >= 0;\n if (remainsInWindow) {\n if (changeAccumulator != null) {\n changeAccumulator.trackChildChange(changeChildChanged(childKey, childSnap, oldChildSnap));\n }\n return oldEventCache.updateImmediateChild(childKey, childSnap);\n }\n else {\n if (changeAccumulator != null) {\n changeAccumulator.trackChildChange(changeChildRemoved(childKey, oldChildSnap));\n }\n const newEventCache = oldEventCache.updateImmediateChild(childKey, ChildrenNode.EMPTY_NODE);\n const nextChildInRange = nextChild != null && this.rangedFilter_.matches(nextChild);\n if (nextChildInRange) {\n if (changeAccumulator != null) {\n changeAccumulator.trackChildChange(changeChildAdded(nextChild.name, nextChild.node));\n }\n return newEventCache.updateImmediateChild(nextChild.name, nextChild.node);\n }\n else {\n return newEventCache;\n }\n }\n }\n else if (childSnap.isEmpty()) {\n // we're deleting a node, but it was not in the window, so ignore it\n return snap;\n }\n else if (inRange) {\n if (cmp(windowBoundary, newChildNamedNode) >= 0) {\n if (changeAccumulator != null) {\n changeAccumulator.trackChildChange(changeChildRemoved(windowBoundary.name, windowBoundary.node));\n changeAccumulator.trackChildChange(changeChildAdded(childKey, childSnap));\n }\n return oldEventCache\n .updateImmediateChild(childKey, childSnap)\n .updateImmediateChild(windowBoundary.name, ChildrenNode.EMPTY_NODE);\n }\n else {\n return snap;\n }\n }\n else {\n return snap;\n }\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * This class is an immutable-from-the-public-api struct containing a set of query parameters defining a\n * range to be returned for a particular location. It is assumed that validation of parameters is done at the\n * user-facing API level, so it is not done here.\n *\n * @internal\n */\nclass QueryParams {\n constructor() {\n this.limitSet_ = false;\n this.startSet_ = false;\n this.startNameSet_ = false;\n this.startAfterSet_ = false; // can only be true if startSet_ is true\n this.endSet_ = false;\n this.endNameSet_ = false;\n this.endBeforeSet_ = false; // can only be true if endSet_ is true\n this.limit_ = 0;\n this.viewFrom_ = '';\n this.indexStartValue_ = null;\n this.indexStartName_ = '';\n this.indexEndValue_ = null;\n this.indexEndName_ = '';\n this.index_ = PRIORITY_INDEX;\n }\n hasStart() {\n return this.startSet_;\n }\n /**\n * @returns True if it would return from left.\n */\n isViewFromLeft() {\n if (this.viewFrom_ === '') {\n // limit(), rather than limitToFirst or limitToLast was called.\n // This means that only one of startSet_ and endSet_ is true. Use them\n // to calculate which side of the view to anchor to. If neither is set,\n // anchor to the end.\n return this.startSet_;\n }\n else {\n return this.viewFrom_ === \"l\" /* WIRE_PROTOCOL_CONSTANTS.VIEW_FROM_LEFT */;\n }\n }\n /**\n * Only valid to call if hasStart() returns true\n */\n getIndexStartValue() {\n assert(this.startSet_, 'Only valid if start has been set');\n return this.indexStartValue_;\n }\n /**\n * Only valid to call if hasStart() returns true.\n * Returns the starting key name for the range defined by these query parameters\n */\n getIndexStartName() {\n assert(this.startSet_, 'Only valid if start has been set');\n if (this.startNameSet_) {\n return this.indexStartName_;\n }\n else {\n return MIN_NAME;\n }\n }\n hasEnd() {\n return this.endSet_;\n }\n /**\n * Only valid to call if hasEnd() returns true.\n */\n getIndexEndValue() {\n assert(this.endSet_, 'Only valid if end has been set');\n return this.indexEndValue_;\n }\n /**\n * Only valid to call if hasEnd() returns true.\n * Returns the end key name for the range defined by these query parameters\n */\n getIndexEndName() {\n assert(this.endSet_, 'Only valid if end has been set');\n if (this.endNameSet_) {\n return this.indexEndName_;\n }\n else {\n return MAX_NAME;\n }\n }\n hasLimit() {\n return this.limitSet_;\n }\n /**\n * @returns True if a limit has been set and it has been explicitly anchored\n */\n hasAnchoredLimit() {\n return this.limitSet_ && this.viewFrom_ !== '';\n }\n /**\n * Only valid to call if hasLimit() returns true\n */\n getLimit() {\n assert(this.limitSet_, 'Only valid if limit has been set');\n return this.limit_;\n }\n getIndex() {\n return this.index_;\n }\n loadsAllData() {\n return !(this.startSet_ || this.endSet_ || this.limitSet_);\n }\n isDefault() {\n return this.loadsAllData() && this.index_ === PRIORITY_INDEX;\n }\n copy() {\n const copy = new QueryParams();\n copy.limitSet_ = this.limitSet_;\n copy.limit_ = this.limit_;\n copy.startSet_ = this.startSet_;\n copy.startAfterSet_ = this.startAfterSet_;\n copy.indexStartValue_ = this.indexStartValue_;\n copy.startNameSet_ = this.startNameSet_;\n copy.indexStartName_ = this.indexStartName_;\n copy.endSet_ = this.endSet_;\n copy.endBeforeSet_ = this.endBeforeSet_;\n copy.indexEndValue_ = this.indexEndValue_;\n copy.endNameSet_ = this.endNameSet_;\n copy.indexEndName_ = this.indexEndName_;\n copy.index_ = this.index_;\n copy.viewFrom_ = this.viewFrom_;\n return copy;\n }\n}\nfunction queryParamsGetNodeFilter(queryParams) {\n if (queryParams.loadsAllData()) {\n return new IndexedFilter(queryParams.getIndex());\n }\n else if (queryParams.hasLimit()) {\n return new LimitedFilter(queryParams);\n }\n else {\n return new RangedFilter(queryParams);\n }\n}\nfunction queryParamsLimitToFirst(queryParams, newLimit) {\n const newParams = queryParams.copy();\n newParams.limitSet_ = true;\n newParams.limit_ = newLimit;\n newParams.viewFrom_ = \"l\" /* WIRE_PROTOCOL_CONSTANTS.VIEW_FROM_LEFT */;\n return newParams;\n}\nfunction queryParamsLimitToLast(queryParams, newLimit) {\n const newParams = queryParams.copy();\n newParams.limitSet_ = true;\n newParams.limit_ = newLimit;\n newParams.viewFrom_ = \"r\" /* WIRE_PROTOCOL_CONSTANTS.VIEW_FROM_RIGHT */;\n return newParams;\n}\nfunction queryParamsStartAt(queryParams, indexValue, key) {\n const newParams = queryParams.copy();\n newParams.startSet_ = true;\n if (indexValue === undefined) {\n indexValue = null;\n }\n newParams.indexStartValue_ = indexValue;\n if (key != null) {\n newParams.startNameSet_ = true;\n newParams.indexStartName_ = key;\n }\n else {\n newParams.startNameSet_ = false;\n newParams.indexStartName_ = '';\n }\n return newParams;\n}\nfunction queryParamsStartAfter(queryParams, indexValue, key) {\n let params;\n if (queryParams.index_ === KEY_INDEX || !!key) {\n params = queryParamsStartAt(queryParams, indexValue, key);\n }\n else {\n params = queryParamsStartAt(queryParams, indexValue, MAX_NAME);\n }\n params.startAfterSet_ = true;\n return params;\n}\nfunction queryParamsEndAt(queryParams, indexValue, key) {\n const newParams = queryParams.copy();\n newParams.endSet_ = true;\n if (indexValue === undefined) {\n indexValue = null;\n }\n newParams.indexEndValue_ = indexValue;\n if (key !== undefined) {\n newParams.endNameSet_ = true;\n newParams.indexEndName_ = key;\n }\n else {\n newParams.endNameSet_ = false;\n newParams.indexEndName_ = '';\n }\n return newParams;\n}\nfunction queryParamsEndBefore(queryParams, indexValue, key) {\n let params;\n if (queryParams.index_ === KEY_INDEX || !!key) {\n params = queryParamsEndAt(queryParams, indexValue, key);\n }\n else {\n params = queryParamsEndAt(queryParams, indexValue, MIN_NAME);\n }\n params.endBeforeSet_ = true;\n return params;\n}\nfunction queryParamsOrderBy(queryParams, index) {\n const newParams = queryParams.copy();\n newParams.index_ = index;\n return newParams;\n}\n/**\n * Returns a set of REST query string parameters representing this query.\n *\n * @returns query string parameters\n */\nfunction queryParamsToRestQueryStringParameters(queryParams) {\n const qs = {};\n if (queryParams.isDefault()) {\n return qs;\n }\n let orderBy;\n if (queryParams.index_ === PRIORITY_INDEX) {\n orderBy = \"$priority\" /* REST_QUERY_CONSTANTS.PRIORITY_INDEX */;\n }\n else if (queryParams.index_ === VALUE_INDEX) {\n orderBy = \"$value\" /* REST_QUERY_CONSTANTS.VALUE_INDEX */;\n }\n else if (queryParams.index_ === KEY_INDEX) {\n orderBy = \"$key\" /* REST_QUERY_CONSTANTS.KEY_INDEX */;\n }\n else {\n assert(queryParams.index_ instanceof PathIndex, 'Unrecognized index type!');\n orderBy = queryParams.index_.toString();\n }\n qs[\"orderBy\" /* REST_QUERY_CONSTANTS.ORDER_BY */] = stringify(orderBy);\n if (queryParams.startSet_) {\n const startParam = queryParams.startAfterSet_\n ? \"startAfter\" /* REST_QUERY_CONSTANTS.START_AFTER */\n : \"startAt\" /* REST_QUERY_CONSTANTS.START_AT */;\n qs[startParam] = stringify(queryParams.indexStartValue_);\n if (queryParams.startNameSet_) {\n qs[startParam] += ',' + stringify(queryParams.indexStartName_);\n }\n }\n if (queryParams.endSet_) {\n const endParam = queryParams.endBeforeSet_\n ? \"endBefore\" /* REST_QUERY_CONSTANTS.END_BEFORE */\n : \"endAt\" /* REST_QUERY_CONSTANTS.END_AT */;\n qs[endParam] = stringify(queryParams.indexEndValue_);\n if (queryParams.endNameSet_) {\n qs[endParam] += ',' + stringify(queryParams.indexEndName_);\n }\n }\n if (queryParams.limitSet_) {\n if (queryParams.isViewFromLeft()) {\n qs[\"limitToFirst\" /* REST_QUERY_CONSTANTS.LIMIT_TO_FIRST */] = queryParams.limit_;\n }\n else {\n qs[\"limitToLast\" /* REST_QUERY_CONSTANTS.LIMIT_TO_LAST */] = queryParams.limit_;\n }\n }\n return qs;\n}\nfunction queryParamsGetQueryObject(queryParams) {\n const obj = {};\n if (queryParams.startSet_) {\n obj[\"sp\" /* WIRE_PROTOCOL_CONSTANTS.INDEX_START_VALUE */] =\n queryParams.indexStartValue_;\n if (queryParams.startNameSet_) {\n obj[\"sn\" /* WIRE_PROTOCOL_CONSTANTS.INDEX_START_NAME */] =\n queryParams.indexStartName_;\n }\n obj[\"sin\" /* WIRE_PROTOCOL_CONSTANTS.INDEX_START_IS_INCLUSIVE */] =\n !queryParams.startAfterSet_;\n }\n if (queryParams.endSet_) {\n obj[\"ep\" /* WIRE_PROTOCOL_CONSTANTS.INDEX_END_VALUE */] = queryParams.indexEndValue_;\n if (queryParams.endNameSet_) {\n obj[\"en\" /* WIRE_PROTOCOL_CONSTANTS.INDEX_END_NAME */] = queryParams.indexEndName_;\n }\n obj[\"ein\" /* WIRE_PROTOCOL_CONSTANTS.INDEX_END_IS_INCLUSIVE */] =\n !queryParams.endBeforeSet_;\n }\n if (queryParams.limitSet_) {\n obj[\"l\" /* WIRE_PROTOCOL_CONSTANTS.LIMIT */] = queryParams.limit_;\n let viewFrom = queryParams.viewFrom_;\n if (viewFrom === '') {\n if (queryParams.isViewFromLeft()) {\n viewFrom = \"l\" /* WIRE_PROTOCOL_CONSTANTS.VIEW_FROM_LEFT */;\n }\n else {\n viewFrom = \"r\" /* WIRE_PROTOCOL_CONSTANTS.VIEW_FROM_RIGHT */;\n }\n }\n obj[\"vf\" /* WIRE_PROTOCOL_CONSTANTS.VIEW_FROM */] = viewFrom;\n }\n // For now, priority index is the default, so we only specify if it's some other index\n if (queryParams.index_ !== PRIORITY_INDEX) {\n obj[\"i\" /* WIRE_PROTOCOL_CONSTANTS.INDEX */] = queryParams.index_.toString();\n }\n return obj;\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * An implementation of ServerActions that communicates with the server via REST requests.\n * This is mostly useful for compatibility with crawlers, where we don't want to spin up a full\n * persistent connection (using WebSockets or long-polling)\n */\nclass ReadonlyRestClient extends ServerActions {\n reportStats(stats) {\n throw new Error('Method not implemented.');\n }\n static getListenId_(query, tag) {\n if (tag !== undefined) {\n return 'tag$' + tag;\n }\n else {\n assert(query._queryParams.isDefault(), \"should have a tag if it's not a default query.\");\n return query._path.toString();\n }\n }\n /**\n * @param repoInfo_ - Data about the namespace we are connecting to\n * @param onDataUpdate_ - A callback for new data from the server\n */\n constructor(repoInfo_, onDataUpdate_, authTokenProvider_, appCheckTokenProvider_) {\n super();\n this.repoInfo_ = repoInfo_;\n this.onDataUpdate_ = onDataUpdate_;\n this.authTokenProvider_ = authTokenProvider_;\n this.appCheckTokenProvider_ = appCheckTokenProvider_;\n /** @private {function(...[*])} */\n this.log_ = logWrapper('p:rest:');\n /**\n * We don't actually need to track listens, except to prevent us calling an onComplete for a listen\n * that's been removed. :-/\n */\n this.listens_ = {};\n }\n /** @inheritDoc */\n listen(query, currentHashFn, tag, onComplete) {\n const pathString = query._path.toString();\n this.log_('Listen called for ' + pathString + ' ' + query._queryIdentifier);\n // Mark this listener so we can tell if it's removed.\n const listenId = ReadonlyRestClient.getListenId_(query, tag);\n const thisListen = {};\n this.listens_[listenId] = thisListen;\n const queryStringParameters = queryParamsToRestQueryStringParameters(query._queryParams);\n this.restRequest_(pathString + '.json', queryStringParameters, (error, result) => {\n let data = result;\n if (error === 404) {\n data = null;\n error = null;\n }\n if (error === null) {\n this.onDataUpdate_(pathString, data, /*isMerge=*/ false, tag);\n }\n if (safeGet(this.listens_, listenId) === thisListen) {\n let status;\n if (!error) {\n status = 'ok';\n }\n else if (error === 401) {\n status = 'permission_denied';\n }\n else {\n status = 'rest_error:' + error;\n }\n onComplete(status, null);\n }\n });\n }\n /** @inheritDoc */\n unlisten(query, tag) {\n const listenId = ReadonlyRestClient.getListenId_(query, tag);\n delete this.listens_[listenId];\n }\n get(query) {\n const queryStringParameters = queryParamsToRestQueryStringParameters(query._queryParams);\n const pathString = query._path.toString();\n const deferred = new Deferred();\n this.restRequest_(pathString + '.json', queryStringParameters, (error, result) => {\n let data = result;\n if (error === 404) {\n data = null;\n error = null;\n }\n if (error === null) {\n this.onDataUpdate_(pathString, data, \n /*isMerge=*/ false, \n /*tag=*/ null);\n deferred.resolve(data);\n }\n else {\n deferred.reject(new Error(data));\n }\n });\n return deferred.promise;\n }\n /** @inheritDoc */\n refreshAuthToken(token) {\n // no-op since we just always call getToken.\n }\n /**\n * Performs a REST request to the given path, with the provided query string parameters,\n * and any auth credentials we have.\n */\n restRequest_(pathString, queryStringParameters = {}, callback) {\n queryStringParameters['format'] = 'export';\n return Promise.all([\n this.authTokenProvider_.getToken(/*forceRefresh=*/ false),\n this.appCheckTokenProvider_.getToken(/*forceRefresh=*/ false)\n ]).then(([authToken, appCheckToken]) => {\n if (authToken && authToken.accessToken) {\n queryStringParameters['auth'] = authToken.accessToken;\n }\n if (appCheckToken && appCheckToken.token) {\n queryStringParameters['ac'] = appCheckToken.token;\n }\n const url = (this.repoInfo_.secure ? 'https://' : 'http://') +\n this.repoInfo_.host +\n pathString +\n '?' +\n 'ns=' +\n this.repoInfo_.namespace +\n querystring(queryStringParameters);\n this.log_('Sending REST request for ' + url);\n const xhr = new XMLHttpRequest();\n xhr.onreadystatechange = () => {\n if (callback && xhr.readyState === 4) {\n this.log_('REST Response for ' + url + ' received. status:', xhr.status, 'response:', xhr.responseText);\n let res = null;\n if (xhr.status >= 200 && xhr.status < 300) {\n try {\n res = jsonEval(xhr.responseText);\n }\n catch (e) {\n warn('Failed to parse JSON response for ' +\n url +\n ': ' +\n xhr.responseText);\n }\n callback(null, res);\n }\n else {\n // 401 and 404 are expected.\n if (xhr.status !== 401 && xhr.status !== 404) {\n warn('Got unsuccessful REST response for ' +\n url +\n ' Status: ' +\n xhr.status);\n }\n callback(xhr.status);\n }\n callback = null;\n }\n };\n xhr.open('GET', url, /*asynchronous=*/ true);\n xhr.send();\n });\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Mutable object which basically just stores a reference to the \"latest\" immutable snapshot.\n */\nclass SnapshotHolder {\n constructor() {\n this.rootNode_ = ChildrenNode.EMPTY_NODE;\n }\n getNode(path) {\n return this.rootNode_.getChild(path);\n }\n updateSnapshot(path, newSnapshotNode) {\n this.rootNode_ = this.rootNode_.updateChild(path, newSnapshotNode);\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction newSparseSnapshotTree() {\n return {\n value: null,\n children: new Map()\n };\n}\n/**\n * Stores the given node at the specified path. If there is already a node\n * at a shallower path, it merges the new data into that snapshot node.\n *\n * @param path - Path to look up snapshot for.\n * @param data - The new data, or null.\n */\nfunction sparseSnapshotTreeRemember(sparseSnapshotTree, path, data) {\n if (pathIsEmpty(path)) {\n sparseSnapshotTree.value = data;\n sparseSnapshotTree.children.clear();\n }\n else if (sparseSnapshotTree.value !== null) {\n sparseSnapshotTree.value = sparseSnapshotTree.value.updateChild(path, data);\n }\n else {\n const childKey = pathGetFront(path);\n if (!sparseSnapshotTree.children.has(childKey)) {\n sparseSnapshotTree.children.set(childKey, newSparseSnapshotTree());\n }\n const child = sparseSnapshotTree.children.get(childKey);\n path = pathPopFront(path);\n sparseSnapshotTreeRemember(child, path, data);\n }\n}\n/**\n * Purge the data at path from the cache.\n *\n * @param path - Path to look up snapshot for.\n * @returns True if this node should now be removed.\n */\nfunction sparseSnapshotTreeForget(sparseSnapshotTree, path) {\n if (pathIsEmpty(path)) {\n sparseSnapshotTree.value = null;\n sparseSnapshotTree.children.clear();\n return true;\n }\n else {\n if (sparseSnapshotTree.value !== null) {\n if (sparseSnapshotTree.value.isLeafNode()) {\n // We're trying to forget a node that doesn't exist\n return false;\n }\n else {\n const value = sparseSnapshotTree.value;\n sparseSnapshotTree.value = null;\n value.forEachChild(PRIORITY_INDEX, (key, tree) => {\n sparseSnapshotTreeRemember(sparseSnapshotTree, new Path(key), tree);\n });\n return sparseSnapshotTreeForget(sparseSnapshotTree, path);\n }\n }\n else if (sparseSnapshotTree.children.size > 0) {\n const childKey = pathGetFront(path);\n path = pathPopFront(path);\n if (sparseSnapshotTree.children.has(childKey)) {\n const safeToRemove = sparseSnapshotTreeForget(sparseSnapshotTree.children.get(childKey), path);\n if (safeToRemove) {\n sparseSnapshotTree.children.delete(childKey);\n }\n }\n return sparseSnapshotTree.children.size === 0;\n }\n else {\n return true;\n }\n }\n}\n/**\n * Recursively iterates through all of the stored tree and calls the\n * callback on each one.\n *\n * @param prefixPath - Path to look up node for.\n * @param func - The function to invoke for each tree.\n */\nfunction sparseSnapshotTreeForEachTree(sparseSnapshotTree, prefixPath, func) {\n if (sparseSnapshotTree.value !== null) {\n func(prefixPath, sparseSnapshotTree.value);\n }\n else {\n sparseSnapshotTreeForEachChild(sparseSnapshotTree, (key, tree) => {\n const path = new Path(prefixPath.toString() + '/' + key);\n sparseSnapshotTreeForEachTree(tree, path, func);\n });\n }\n}\n/**\n * Iterates through each immediate child and triggers the callback.\n * Only seems to be used in tests.\n *\n * @param func - The function to invoke for each child.\n */\nfunction sparseSnapshotTreeForEachChild(sparseSnapshotTree, func) {\n sparseSnapshotTree.children.forEach((tree, key) => {\n func(key, tree);\n });\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Returns the delta from the previous call to get stats.\n *\n * @param collection_ - The collection to \"listen\" to.\n */\nclass StatsListener {\n constructor(collection_) {\n this.collection_ = collection_;\n this.last_ = null;\n }\n get() {\n const newStats = this.collection_.get();\n const delta = Object.assign({}, newStats);\n if (this.last_) {\n each(this.last_, (stat, value) => {\n delta[stat] = delta[stat] - value;\n });\n }\n this.last_ = newStats;\n return delta;\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// Assuming some apps may have a short amount of time on page, and a bulk of firebase operations probably\n// happen on page load, we try to report our first set of stats pretty quickly, but we wait at least 10\n// seconds to try to ensure the Firebase connection is established / settled.\nconst FIRST_STATS_MIN_TIME = 10 * 1000;\nconst FIRST_STATS_MAX_TIME = 30 * 1000;\n// We'll continue to report stats on average every 5 minutes.\nconst REPORT_STATS_INTERVAL = 5 * 60 * 1000;\nclass StatsReporter {\n constructor(collection, server_) {\n this.server_ = server_;\n this.statsToReport_ = {};\n this.statsListener_ = new StatsListener(collection);\n const timeout = FIRST_STATS_MIN_TIME +\n (FIRST_STATS_MAX_TIME - FIRST_STATS_MIN_TIME) * Math.random();\n setTimeoutNonBlocking(this.reportStats_.bind(this), Math.floor(timeout));\n }\n reportStats_() {\n const stats = this.statsListener_.get();\n const reportedStats = {};\n let haveStatsToReport = false;\n each(stats, (stat, value) => {\n if (value > 0 && contains(this.statsToReport_, stat)) {\n reportedStats[stat] = value;\n haveStatsToReport = true;\n }\n });\n if (haveStatsToReport) {\n this.server_.reportStats(reportedStats);\n }\n // queue our next run.\n setTimeoutNonBlocking(this.reportStats_.bind(this), Math.floor(Math.random() * 2 * REPORT_STATS_INTERVAL));\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n *\n * @enum\n */\nvar OperationType;\n(function (OperationType) {\n OperationType[OperationType[\"OVERWRITE\"] = 0] = \"OVERWRITE\";\n OperationType[OperationType[\"MERGE\"] = 1] = \"MERGE\";\n OperationType[OperationType[\"ACK_USER_WRITE\"] = 2] = \"ACK_USER_WRITE\";\n OperationType[OperationType[\"LISTEN_COMPLETE\"] = 3] = \"LISTEN_COMPLETE\";\n})(OperationType || (OperationType = {}));\nfunction newOperationSourceUser() {\n return {\n fromUser: true,\n fromServer: false,\n queryId: null,\n tagged: false\n };\n}\nfunction newOperationSourceServer() {\n return {\n fromUser: false,\n fromServer: true,\n queryId: null,\n tagged: false\n };\n}\nfunction newOperationSourceServerTaggedQuery(queryId) {\n return {\n fromUser: false,\n fromServer: true,\n queryId,\n tagged: true\n };\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nclass AckUserWrite {\n /**\n * @param affectedTree - A tree containing true for each affected path. Affected paths can't overlap.\n */\n constructor(\n /** @inheritDoc */ path, \n /** @inheritDoc */ affectedTree, \n /** @inheritDoc */ revert) {\n this.path = path;\n this.affectedTree = affectedTree;\n this.revert = revert;\n /** @inheritDoc */\n this.type = OperationType.ACK_USER_WRITE;\n /** @inheritDoc */\n this.source = newOperationSourceUser();\n }\n operationForChild(childName) {\n if (!pathIsEmpty(this.path)) {\n assert(pathGetFront(this.path) === childName, 'operationForChild called for unrelated child.');\n return new AckUserWrite(pathPopFront(this.path), this.affectedTree, this.revert);\n }\n else if (this.affectedTree.value != null) {\n assert(this.affectedTree.children.isEmpty(), 'affectedTree should not have overlapping affected paths.');\n // All child locations are affected as well; just return same operation.\n return this;\n }\n else {\n const childTree = this.affectedTree.subtree(new Path(childName));\n return new AckUserWrite(newEmptyPath(), childTree, this.revert);\n }\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nclass ListenComplete {\n constructor(source, path) {\n this.source = source;\n this.path = path;\n /** @inheritDoc */\n this.type = OperationType.LISTEN_COMPLETE;\n }\n operationForChild(childName) {\n if (pathIsEmpty(this.path)) {\n return new ListenComplete(this.source, newEmptyPath());\n }\n else {\n return new ListenComplete(this.source, pathPopFront(this.path));\n }\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nclass Overwrite {\n constructor(source, path, snap) {\n this.source = source;\n this.path = path;\n this.snap = snap;\n /** @inheritDoc */\n this.type = OperationType.OVERWRITE;\n }\n operationForChild(childName) {\n if (pathIsEmpty(this.path)) {\n return new Overwrite(this.source, newEmptyPath(), this.snap.getImmediateChild(childName));\n }\n else {\n return new Overwrite(this.source, pathPopFront(this.path), this.snap);\n }\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nclass Merge {\n constructor(\n /** @inheritDoc */ source, \n /** @inheritDoc */ path, \n /** @inheritDoc */ children) {\n this.source = source;\n this.path = path;\n this.children = children;\n /** @inheritDoc */\n this.type = OperationType.MERGE;\n }\n operationForChild(childName) {\n if (pathIsEmpty(this.path)) {\n const childTree = this.children.subtree(new Path(childName));\n if (childTree.isEmpty()) {\n // This child is unaffected\n return null;\n }\n else if (childTree.value) {\n // We have a snapshot for the child in question. This becomes an overwrite of the child.\n return new Overwrite(this.source, newEmptyPath(), childTree.value);\n }\n else {\n // This is a merge at a deeper level\n return new Merge(this.source, newEmptyPath(), childTree);\n }\n }\n else {\n assert(pathGetFront(this.path) === childName, \"Can't get a merge for a child not on the path of the operation\");\n return new Merge(this.source, pathPopFront(this.path), this.children);\n }\n }\n toString() {\n return ('Operation(' +\n this.path +\n ': ' +\n this.source.toString() +\n ' merge: ' +\n this.children.toString() +\n ')');\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A cache node only stores complete children. Additionally it holds a flag whether the node can be considered fully\n * initialized in the sense that we know at one point in time this represented a valid state of the world, e.g.\n * initialized with data from the server, or a complete overwrite by the client. The filtered flag also tracks\n * whether a node potentially had children removed due to a filter.\n */\nclass CacheNode {\n constructor(node_, fullyInitialized_, filtered_) {\n this.node_ = node_;\n this.fullyInitialized_ = fullyInitialized_;\n this.filtered_ = filtered_;\n }\n /**\n * Returns whether this node was fully initialized with either server data or a complete overwrite by the client\n */\n isFullyInitialized() {\n return this.fullyInitialized_;\n }\n /**\n * Returns whether this node is potentially missing children due to a filter applied to the node\n */\n isFiltered() {\n return this.filtered_;\n }\n isCompleteForPath(path) {\n if (pathIsEmpty(path)) {\n return this.isFullyInitialized() && !this.filtered_;\n }\n const childKey = pathGetFront(path);\n return this.isCompleteForChild(childKey);\n }\n isCompleteForChild(key) {\n return ((this.isFullyInitialized() && !this.filtered_) || this.node_.hasChild(key));\n }\n getNode() {\n return this.node_;\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * An EventGenerator is used to convert \"raw\" changes (Change) as computed by the\n * CacheDiffer into actual events (Event) that can be raised. See generateEventsForChanges()\n * for details.\n *\n */\nclass EventGenerator {\n constructor(query_) {\n this.query_ = query_;\n this.index_ = this.query_._queryParams.getIndex();\n }\n}\n/**\n * Given a set of raw changes (no moved events and prevName not specified yet), and a set of\n * EventRegistrations that should be notified of these changes, generate the actual events to be raised.\n *\n * Notes:\n * - child_moved events will be synthesized at this time for any child_changed events that affect\n * our index.\n * - prevName will be calculated based on the index ordering.\n */\nfunction eventGeneratorGenerateEventsForChanges(eventGenerator, changes, eventCache, eventRegistrations) {\n const events = [];\n const moves = [];\n changes.forEach(change => {\n if (change.type === \"child_changed\" /* ChangeType.CHILD_CHANGED */ &&\n eventGenerator.index_.indexedValueChanged(change.oldSnap, change.snapshotNode)) {\n moves.push(changeChildMoved(change.childName, change.snapshotNode));\n }\n });\n eventGeneratorGenerateEventsForType(eventGenerator, events, \"child_removed\" /* ChangeType.CHILD_REMOVED */, changes, eventRegistrations, eventCache);\n eventGeneratorGenerateEventsForType(eventGenerator, events, \"child_added\" /* ChangeType.CHILD_ADDED */, changes, eventRegistrations, eventCache);\n eventGeneratorGenerateEventsForType(eventGenerator, events, \"child_moved\" /* ChangeType.CHILD_MOVED */, moves, eventRegistrations, eventCache);\n eventGeneratorGenerateEventsForType(eventGenerator, events, \"child_changed\" /* ChangeType.CHILD_CHANGED */, changes, eventRegistrations, eventCache);\n eventGeneratorGenerateEventsForType(eventGenerator, events, \"value\" /* ChangeType.VALUE */, changes, eventRegistrations, eventCache);\n return events;\n}\n/**\n * Given changes of a single change type, generate the corresponding events.\n */\nfunction eventGeneratorGenerateEventsForType(eventGenerator, events, eventType, changes, registrations, eventCache) {\n const filteredChanges = changes.filter(change => change.type === eventType);\n filteredChanges.sort((a, b) => eventGeneratorCompareChanges(eventGenerator, a, b));\n filteredChanges.forEach(change => {\n const materializedChange = eventGeneratorMaterializeSingleChange(eventGenerator, change, eventCache);\n registrations.forEach(registration => {\n if (registration.respondsTo(change.type)) {\n events.push(registration.createEvent(materializedChange, eventGenerator.query_));\n }\n });\n });\n}\nfunction eventGeneratorMaterializeSingleChange(eventGenerator, change, eventCache) {\n if (change.type === 'value' || change.type === 'child_removed') {\n return change;\n }\n else {\n change.prevName = eventCache.getPredecessorChildName(change.childName, change.snapshotNode, eventGenerator.index_);\n return change;\n }\n}\nfunction eventGeneratorCompareChanges(eventGenerator, a, b) {\n if (a.childName == null || b.childName == null) {\n throw assertionError('Should only compare child_ events.');\n }\n const aWrapped = new NamedNode(a.childName, a.snapshotNode);\n const bWrapped = new NamedNode(b.childName, b.snapshotNode);\n return eventGenerator.index_.compare(aWrapped, bWrapped);\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction newViewCache(eventCache, serverCache) {\n return { eventCache, serverCache };\n}\nfunction viewCacheUpdateEventSnap(viewCache, eventSnap, complete, filtered) {\n return newViewCache(new CacheNode(eventSnap, complete, filtered), viewCache.serverCache);\n}\nfunction viewCacheUpdateServerSnap(viewCache, serverSnap, complete, filtered) {\n return newViewCache(viewCache.eventCache, new CacheNode(serverSnap, complete, filtered));\n}\nfunction viewCacheGetCompleteEventSnap(viewCache) {\n return viewCache.eventCache.isFullyInitialized()\n ? viewCache.eventCache.getNode()\n : null;\n}\nfunction viewCacheGetCompleteServerSnap(viewCache) {\n return viewCache.serverCache.isFullyInitialized()\n ? viewCache.serverCache.getNode()\n : null;\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nlet emptyChildrenSingleton;\n/**\n * Singleton empty children collection.\n *\n */\nconst EmptyChildren = () => {\n if (!emptyChildrenSingleton) {\n emptyChildrenSingleton = new SortedMap(stringCompare);\n }\n return emptyChildrenSingleton;\n};\n/**\n * A tree with immutable elements.\n */\nclass ImmutableTree {\n static fromObject(obj) {\n let tree = new ImmutableTree(null);\n each(obj, (childPath, childSnap) => {\n tree = tree.set(new Path(childPath), childSnap);\n });\n return tree;\n }\n constructor(value, children = EmptyChildren()) {\n this.value = value;\n this.children = children;\n }\n /**\n * True if the value is empty and there are no children\n */\n isEmpty() {\n return this.value === null && this.children.isEmpty();\n }\n /**\n * Given a path and predicate, return the first node and the path to that node\n * where the predicate returns true.\n *\n * TODO Do a perf test -- If we're creating a bunch of `{path: value:}`\n * objects on the way back out, it may be better to pass down a pathSoFar obj.\n *\n * @param relativePath - The remainder of the path\n * @param predicate - The predicate to satisfy to return a node\n */\n findRootMostMatchingPathAndValue(relativePath, predicate) {\n if (this.value != null && predicate(this.value)) {\n return { path: newEmptyPath(), value: this.value };\n }\n else {\n if (pathIsEmpty(relativePath)) {\n return null;\n }\n else {\n const front = pathGetFront(relativePath);\n const child = this.children.get(front);\n if (child !== null) {\n const childExistingPathAndValue = child.findRootMostMatchingPathAndValue(pathPopFront(relativePath), predicate);\n if (childExistingPathAndValue != null) {\n const fullPath = pathChild(new Path(front), childExistingPathAndValue.path);\n return { path: fullPath, value: childExistingPathAndValue.value };\n }\n else {\n return null;\n }\n }\n else {\n return null;\n }\n }\n }\n }\n /**\n * Find, if it exists, the shortest subpath of the given path that points a defined\n * value in the tree\n */\n findRootMostValueAndPath(relativePath) {\n return this.findRootMostMatchingPathAndValue(relativePath, () => true);\n }\n /**\n * @returns The subtree at the given path\n */\n subtree(relativePath) {\n if (pathIsEmpty(relativePath)) {\n return this;\n }\n else {\n const front = pathGetFront(relativePath);\n const childTree = this.children.get(front);\n if (childTree !== null) {\n return childTree.subtree(pathPopFront(relativePath));\n }\n else {\n return new ImmutableTree(null);\n }\n }\n }\n /**\n * Sets a value at the specified path.\n *\n * @param relativePath - Path to set value at.\n * @param toSet - Value to set.\n * @returns Resulting tree.\n */\n set(relativePath, toSet) {\n if (pathIsEmpty(relativePath)) {\n return new ImmutableTree(toSet, this.children);\n }\n else {\n const front = pathGetFront(relativePath);\n const child = this.children.get(front) || new ImmutableTree(null);\n const newChild = child.set(pathPopFront(relativePath), toSet);\n const newChildren = this.children.insert(front, newChild);\n return new ImmutableTree(this.value, newChildren);\n }\n }\n /**\n * Removes the value at the specified path.\n *\n * @param relativePath - Path to value to remove.\n * @returns Resulting tree.\n */\n remove(relativePath) {\n if (pathIsEmpty(relativePath)) {\n if (this.children.isEmpty()) {\n return new ImmutableTree(null);\n }\n else {\n return new ImmutableTree(null, this.children);\n }\n }\n else {\n const front = pathGetFront(relativePath);\n const child = this.children.get(front);\n if (child) {\n const newChild = child.remove(pathPopFront(relativePath));\n let newChildren;\n if (newChild.isEmpty()) {\n newChildren = this.children.remove(front);\n }\n else {\n newChildren = this.children.insert(front, newChild);\n }\n if (this.value === null && newChildren.isEmpty()) {\n return new ImmutableTree(null);\n }\n else {\n return new ImmutableTree(this.value, newChildren);\n }\n }\n else {\n return this;\n }\n }\n }\n /**\n * Gets a value from the tree.\n *\n * @param relativePath - Path to get value for.\n * @returns Value at path, or null.\n */\n get(relativePath) {\n if (pathIsEmpty(relativePath)) {\n return this.value;\n }\n else {\n const front = pathGetFront(relativePath);\n const child = this.children.get(front);\n if (child) {\n return child.get(pathPopFront(relativePath));\n }\n else {\n return null;\n }\n }\n }\n /**\n * Replace the subtree at the specified path with the given new tree.\n *\n * @param relativePath - Path to replace subtree for.\n * @param newTree - New tree.\n * @returns Resulting tree.\n */\n setTree(relativePath, newTree) {\n if (pathIsEmpty(relativePath)) {\n return newTree;\n }\n else {\n const front = pathGetFront(relativePath);\n const child = this.children.get(front) || new ImmutableTree(null);\n const newChild = child.setTree(pathPopFront(relativePath), newTree);\n let newChildren;\n if (newChild.isEmpty()) {\n newChildren = this.children.remove(front);\n }\n else {\n newChildren = this.children.insert(front, newChild);\n }\n return new ImmutableTree(this.value, newChildren);\n }\n }\n /**\n * Performs a depth first fold on this tree. Transforms a tree into a single\n * value, given a function that operates on the path to a node, an optional\n * current value, and a map of child names to folded subtrees\n */\n fold(fn) {\n return this.fold_(newEmptyPath(), fn);\n }\n /**\n * Recursive helper for public-facing fold() method\n */\n fold_(pathSoFar, fn) {\n const accum = {};\n this.children.inorderTraversal((childKey, childTree) => {\n accum[childKey] = childTree.fold_(pathChild(pathSoFar, childKey), fn);\n });\n return fn(pathSoFar, this.value, accum);\n }\n /**\n * Find the first matching value on the given path. Return the result of applying f to it.\n */\n findOnPath(path, f) {\n return this.findOnPath_(path, newEmptyPath(), f);\n }\n findOnPath_(pathToFollow, pathSoFar, f) {\n const result = this.value ? f(pathSoFar, this.value) : false;\n if (result) {\n return result;\n }\n else {\n if (pathIsEmpty(pathToFollow)) {\n return null;\n }\n else {\n const front = pathGetFront(pathToFollow);\n const nextChild = this.children.get(front);\n if (nextChild) {\n return nextChild.findOnPath_(pathPopFront(pathToFollow), pathChild(pathSoFar, front), f);\n }\n else {\n return null;\n }\n }\n }\n }\n foreachOnPath(path, f) {\n return this.foreachOnPath_(path, newEmptyPath(), f);\n }\n foreachOnPath_(pathToFollow, currentRelativePath, f) {\n if (pathIsEmpty(pathToFollow)) {\n return this;\n }\n else {\n if (this.value) {\n f(currentRelativePath, this.value);\n }\n const front = pathGetFront(pathToFollow);\n const nextChild = this.children.get(front);\n if (nextChild) {\n return nextChild.foreachOnPath_(pathPopFront(pathToFollow), pathChild(currentRelativePath, front), f);\n }\n else {\n return new ImmutableTree(null);\n }\n }\n }\n /**\n * Calls the given function for each node in the tree that has a value.\n *\n * @param f - A function to be called with the path from the root of the tree to\n * a node, and the value at that node. Called in depth-first order.\n */\n foreach(f) {\n this.foreach_(newEmptyPath(), f);\n }\n foreach_(currentRelativePath, f) {\n this.children.inorderTraversal((childName, childTree) => {\n childTree.foreach_(pathChild(currentRelativePath, childName), f);\n });\n if (this.value) {\n f(currentRelativePath, this.value);\n }\n }\n foreachChild(f) {\n this.children.inorderTraversal((childName, childTree) => {\n if (childTree.value) {\n f(childName, childTree.value);\n }\n });\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * This class holds a collection of writes that can be applied to nodes in unison. It abstracts away the logic with\n * dealing with priority writes and multiple nested writes. At any given path there is only allowed to be one write\n * modifying that path. Any write to an existing path or shadowing an existing path will modify that existing write\n * to reflect the write added.\n */\nclass CompoundWrite {\n constructor(writeTree_) {\n this.writeTree_ = writeTree_;\n }\n static empty() {\n return new CompoundWrite(new ImmutableTree(null));\n }\n}\nfunction compoundWriteAddWrite(compoundWrite, path, node) {\n if (pathIsEmpty(path)) {\n return new CompoundWrite(new ImmutableTree(node));\n }\n else {\n const rootmost = compoundWrite.writeTree_.findRootMostValueAndPath(path);\n if (rootmost != null) {\n const rootMostPath = rootmost.path;\n let value = rootmost.value;\n const relativePath = newRelativePath(rootMostPath, path);\n value = value.updateChild(relativePath, node);\n return new CompoundWrite(compoundWrite.writeTree_.set(rootMostPath, value));\n }\n else {\n const subtree = new ImmutableTree(node);\n const newWriteTree = compoundWrite.writeTree_.setTree(path, subtree);\n return new CompoundWrite(newWriteTree);\n }\n }\n}\nfunction compoundWriteAddWrites(compoundWrite, path, updates) {\n let newWrite = compoundWrite;\n each(updates, (childKey, node) => {\n newWrite = compoundWriteAddWrite(newWrite, pathChild(path, childKey), node);\n });\n return newWrite;\n}\n/**\n * Will remove a write at the given path and deeper paths. This will not modify a write at a higher\n * location, which must be removed by calling this method with that path.\n *\n * @param compoundWrite - The CompoundWrite to remove.\n * @param path - The path at which a write and all deeper writes should be removed\n * @returns The new CompoundWrite with the removed path\n */\nfunction compoundWriteRemoveWrite(compoundWrite, path) {\n if (pathIsEmpty(path)) {\n return CompoundWrite.empty();\n }\n else {\n const newWriteTree = compoundWrite.writeTree_.setTree(path, new ImmutableTree(null));\n return new CompoundWrite(newWriteTree);\n }\n}\n/**\n * Returns whether this CompoundWrite will fully overwrite a node at a given location and can therefore be\n * considered \"complete\".\n *\n * @param compoundWrite - The CompoundWrite to check.\n * @param path - The path to check for\n * @returns Whether there is a complete write at that path\n */\nfunction compoundWriteHasCompleteWrite(compoundWrite, path) {\n return compoundWriteGetCompleteNode(compoundWrite, path) != null;\n}\n/**\n * Returns a node for a path if and only if the node is a \"complete\" overwrite at that path. This will not aggregate\n * writes from deeper paths, but will return child nodes from a more shallow path.\n *\n * @param compoundWrite - The CompoundWrite to get the node from.\n * @param path - The path to get a complete write\n * @returns The node if complete at that path, or null otherwise.\n */\nfunction compoundWriteGetCompleteNode(compoundWrite, path) {\n const rootmost = compoundWrite.writeTree_.findRootMostValueAndPath(path);\n if (rootmost != null) {\n return compoundWrite.writeTree_\n .get(rootmost.path)\n .getChild(newRelativePath(rootmost.path, path));\n }\n else {\n return null;\n }\n}\n/**\n * Returns all children that are guaranteed to be a complete overwrite.\n *\n * @param compoundWrite - The CompoundWrite to get children from.\n * @returns A list of all complete children.\n */\nfunction compoundWriteGetCompleteChildren(compoundWrite) {\n const children = [];\n const node = compoundWrite.writeTree_.value;\n if (node != null) {\n // If it's a leaf node, it has no children; so nothing to do.\n if (!node.isLeafNode()) {\n node.forEachChild(PRIORITY_INDEX, (childName, childNode) => {\n children.push(new NamedNode(childName, childNode));\n });\n }\n }\n else {\n compoundWrite.writeTree_.children.inorderTraversal((childName, childTree) => {\n if (childTree.value != null) {\n children.push(new NamedNode(childName, childTree.value));\n }\n });\n }\n return children;\n}\nfunction compoundWriteChildCompoundWrite(compoundWrite, path) {\n if (pathIsEmpty(path)) {\n return compoundWrite;\n }\n else {\n const shadowingNode = compoundWriteGetCompleteNode(compoundWrite, path);\n if (shadowingNode != null) {\n return new CompoundWrite(new ImmutableTree(shadowingNode));\n }\n else {\n return new CompoundWrite(compoundWrite.writeTree_.subtree(path));\n }\n }\n}\n/**\n * Returns true if this CompoundWrite is empty and therefore does not modify any nodes.\n * @returns Whether this CompoundWrite is empty\n */\nfunction compoundWriteIsEmpty(compoundWrite) {\n return compoundWrite.writeTree_.isEmpty();\n}\n/**\n * Applies this CompoundWrite to a node. The node is returned with all writes from this CompoundWrite applied to the\n * node\n * @param node - The node to apply this CompoundWrite to\n * @returns The node with all writes applied\n */\nfunction compoundWriteApply(compoundWrite, node) {\n return applySubtreeWrite(newEmptyPath(), compoundWrite.writeTree_, node);\n}\nfunction applySubtreeWrite(relativePath, writeTree, node) {\n if (writeTree.value != null) {\n // Since there a write is always a leaf, we're done here\n return node.updateChild(relativePath, writeTree.value);\n }\n else {\n let priorityWrite = null;\n writeTree.children.inorderTraversal((childKey, childTree) => {\n if (childKey === '.priority') {\n // Apply priorities at the end so we don't update priorities for either empty nodes or forget\n // to apply priorities to empty nodes that are later filled\n assert(childTree.value !== null, 'Priority writes must always be leaf nodes');\n priorityWrite = childTree.value;\n }\n else {\n node = applySubtreeWrite(pathChild(relativePath, childKey), childTree, node);\n }\n });\n // If there was a priority write, we only apply it if the node is not empty\n if (!node.getChild(relativePath).isEmpty() && priorityWrite !== null) {\n node = node.updateChild(pathChild(relativePath, '.priority'), priorityWrite);\n }\n return node;\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Create a new WriteTreeRef for the given path. For use with a new sync point at the given path.\n *\n */\nfunction writeTreeChildWrites(writeTree, path) {\n return newWriteTreeRef(path, writeTree);\n}\n/**\n * Record a new overwrite from user code.\n *\n * @param visible - This is set to false by some transactions. It should be excluded from event caches\n */\nfunction writeTreeAddOverwrite(writeTree, path, snap, writeId, visible) {\n assert(writeId > writeTree.lastWriteId, 'Stacking an older write on top of newer ones');\n if (visible === undefined) {\n visible = true;\n }\n writeTree.allWrites.push({\n path,\n snap,\n writeId,\n visible\n });\n if (visible) {\n writeTree.visibleWrites = compoundWriteAddWrite(writeTree.visibleWrites, path, snap);\n }\n writeTree.lastWriteId = writeId;\n}\n/**\n * Record a new merge from user code.\n */\nfunction writeTreeAddMerge(writeTree, path, changedChildren, writeId) {\n assert(writeId > writeTree.lastWriteId, 'Stacking an older merge on top of newer ones');\n writeTree.allWrites.push({\n path,\n children: changedChildren,\n writeId,\n visible: true\n });\n writeTree.visibleWrites = compoundWriteAddWrites(writeTree.visibleWrites, path, changedChildren);\n writeTree.lastWriteId = writeId;\n}\nfunction writeTreeGetWrite(writeTree, writeId) {\n for (let i = 0; i < writeTree.allWrites.length; i++) {\n const record = writeTree.allWrites[i];\n if (record.writeId === writeId) {\n return record;\n }\n }\n return null;\n}\n/**\n * Remove a write (either an overwrite or merge) that has been successfully acknowledge by the server. Recalculates\n * the tree if necessary. We return true if it may have been visible, meaning views need to reevaluate.\n *\n * @returns true if the write may have been visible (meaning we'll need to reevaluate / raise\n * events as a result).\n */\nfunction writeTreeRemoveWrite(writeTree, writeId) {\n // Note: disabling this check. It could be a transaction that preempted another transaction, and thus was applied\n // out of order.\n //const validClear = revert || this.allWrites_.length === 0 || writeId <= this.allWrites_[0].writeId;\n //assert(validClear, \"Either we don't have this write, or it's the first one in the queue\");\n const idx = writeTree.allWrites.findIndex(s => {\n return s.writeId === writeId;\n });\n assert(idx >= 0, 'removeWrite called with nonexistent writeId.');\n const writeToRemove = writeTree.allWrites[idx];\n writeTree.allWrites.splice(idx, 1);\n let removedWriteWasVisible = writeToRemove.visible;\n let removedWriteOverlapsWithOtherWrites = false;\n let i = writeTree.allWrites.length - 1;\n while (removedWriteWasVisible && i >= 0) {\n const currentWrite = writeTree.allWrites[i];\n if (currentWrite.visible) {\n if (i >= idx &&\n writeTreeRecordContainsPath_(currentWrite, writeToRemove.path)) {\n // The removed write was completely shadowed by a subsequent write.\n removedWriteWasVisible = false;\n }\n else if (pathContains(writeToRemove.path, currentWrite.path)) {\n // Either we're covering some writes or they're covering part of us (depending on which came first).\n removedWriteOverlapsWithOtherWrites = true;\n }\n }\n i--;\n }\n if (!removedWriteWasVisible) {\n return false;\n }\n else if (removedWriteOverlapsWithOtherWrites) {\n // There's some shadowing going on. Just rebuild the visible writes from scratch.\n writeTreeResetTree_(writeTree);\n return true;\n }\n else {\n // There's no shadowing. We can safely just remove the write(s) from visibleWrites.\n if (writeToRemove.snap) {\n writeTree.visibleWrites = compoundWriteRemoveWrite(writeTree.visibleWrites, writeToRemove.path);\n }\n else {\n const children = writeToRemove.children;\n each(children, (childName) => {\n writeTree.visibleWrites = compoundWriteRemoveWrite(writeTree.visibleWrites, pathChild(writeToRemove.path, childName));\n });\n }\n return true;\n }\n}\nfunction writeTreeRecordContainsPath_(writeRecord, path) {\n if (writeRecord.snap) {\n return pathContains(writeRecord.path, path);\n }\n else {\n for (const childName in writeRecord.children) {\n if (writeRecord.children.hasOwnProperty(childName) &&\n pathContains(pathChild(writeRecord.path, childName), path)) {\n return true;\n }\n }\n return false;\n }\n}\n/**\n * Re-layer the writes and merges into a tree so we can efficiently calculate event snapshots\n */\nfunction writeTreeResetTree_(writeTree) {\n writeTree.visibleWrites = writeTreeLayerTree_(writeTree.allWrites, writeTreeDefaultFilter_, newEmptyPath());\n if (writeTree.allWrites.length > 0) {\n writeTree.lastWriteId =\n writeTree.allWrites[writeTree.allWrites.length - 1].writeId;\n }\n else {\n writeTree.lastWriteId = -1;\n }\n}\n/**\n * The default filter used when constructing the tree. Keep everything that's visible.\n */\nfunction writeTreeDefaultFilter_(write) {\n return write.visible;\n}\n/**\n * Static method. Given an array of WriteRecords, a filter for which ones to include, and a path, construct the tree of\n * event data at that path.\n */\nfunction writeTreeLayerTree_(writes, filter, treeRoot) {\n let compoundWrite = CompoundWrite.empty();\n for (let i = 0; i < writes.length; ++i) {\n const write = writes[i];\n // Theory, a later set will either:\n // a) abort a relevant transaction, so no need to worry about excluding it from calculating that transaction\n // b) not be relevant to a transaction (separate branch), so again will not affect the data for that transaction\n if (filter(write)) {\n const writePath = write.path;\n let relativePath;\n if (write.snap) {\n if (pathContains(treeRoot, writePath)) {\n relativePath = newRelativePath(treeRoot, writePath);\n compoundWrite = compoundWriteAddWrite(compoundWrite, relativePath, write.snap);\n }\n else if (pathContains(writePath, treeRoot)) {\n relativePath = newRelativePath(writePath, treeRoot);\n compoundWrite = compoundWriteAddWrite(compoundWrite, newEmptyPath(), write.snap.getChild(relativePath));\n }\n else ;\n }\n else if (write.children) {\n if (pathContains(treeRoot, writePath)) {\n relativePath = newRelativePath(treeRoot, writePath);\n compoundWrite = compoundWriteAddWrites(compoundWrite, relativePath, write.children);\n }\n else if (pathContains(writePath, treeRoot)) {\n relativePath = newRelativePath(writePath, treeRoot);\n if (pathIsEmpty(relativePath)) {\n compoundWrite = compoundWriteAddWrites(compoundWrite, newEmptyPath(), write.children);\n }\n else {\n const child = safeGet(write.children, pathGetFront(relativePath));\n if (child) {\n // There exists a child in this node that matches the root path\n const deepNode = child.getChild(pathPopFront(relativePath));\n compoundWrite = compoundWriteAddWrite(compoundWrite, newEmptyPath(), deepNode);\n }\n }\n }\n else ;\n }\n else {\n throw assertionError('WriteRecord should have .snap or .children');\n }\n }\n }\n return compoundWrite;\n}\n/**\n * Given optional, underlying server data, and an optional set of constraints (exclude some sets, include hidden\n * writes), attempt to calculate a complete snapshot for the given path\n *\n * @param writeIdsToExclude - An optional set to be excluded\n * @param includeHiddenWrites - Defaults to false, whether or not to layer on writes with visible set to false\n */\nfunction writeTreeCalcCompleteEventCache(writeTree, treePath, completeServerCache, writeIdsToExclude, includeHiddenWrites) {\n if (!writeIdsToExclude && !includeHiddenWrites) {\n const shadowingNode = compoundWriteGetCompleteNode(writeTree.visibleWrites, treePath);\n if (shadowingNode != null) {\n return shadowingNode;\n }\n else {\n const subMerge = compoundWriteChildCompoundWrite(writeTree.visibleWrites, treePath);\n if (compoundWriteIsEmpty(subMerge)) {\n return completeServerCache;\n }\n else if (completeServerCache == null &&\n !compoundWriteHasCompleteWrite(subMerge, newEmptyPath())) {\n // We wouldn't have a complete snapshot, since there's no underlying data and no complete shadow\n return null;\n }\n else {\n const layeredCache = completeServerCache || ChildrenNode.EMPTY_NODE;\n return compoundWriteApply(subMerge, layeredCache);\n }\n }\n }\n else {\n const merge = compoundWriteChildCompoundWrite(writeTree.visibleWrites, treePath);\n if (!includeHiddenWrites && compoundWriteIsEmpty(merge)) {\n return completeServerCache;\n }\n else {\n // If the server cache is null, and we don't have a complete cache, we need to return null\n if (!includeHiddenWrites &&\n completeServerCache == null &&\n !compoundWriteHasCompleteWrite(merge, newEmptyPath())) {\n return null;\n }\n else {\n const filter = function (write) {\n return ((write.visible || includeHiddenWrites) &&\n (!writeIdsToExclude ||\n !~writeIdsToExclude.indexOf(write.writeId)) &&\n (pathContains(write.path, treePath) ||\n pathContains(treePath, write.path)));\n };\n const mergeAtPath = writeTreeLayerTree_(writeTree.allWrites, filter, treePath);\n const layeredCache = completeServerCache || ChildrenNode.EMPTY_NODE;\n return compoundWriteApply(mergeAtPath, layeredCache);\n }\n }\n }\n}\n/**\n * With optional, underlying server data, attempt to return a children node of children that we have complete data for.\n * Used when creating new views, to pre-fill their complete event children snapshot.\n */\nfunction writeTreeCalcCompleteEventChildren(writeTree, treePath, completeServerChildren) {\n let completeChildren = ChildrenNode.EMPTY_NODE;\n const topLevelSet = compoundWriteGetCompleteNode(writeTree.visibleWrites, treePath);\n if (topLevelSet) {\n if (!topLevelSet.isLeafNode()) {\n // we're shadowing everything. Return the children.\n topLevelSet.forEachChild(PRIORITY_INDEX, (childName, childSnap) => {\n completeChildren = completeChildren.updateImmediateChild(childName, childSnap);\n });\n }\n return completeChildren;\n }\n else if (completeServerChildren) {\n // Layer any children we have on top of this\n // We know we don't have a top-level set, so just enumerate existing children\n const merge = compoundWriteChildCompoundWrite(writeTree.visibleWrites, treePath);\n completeServerChildren.forEachChild(PRIORITY_INDEX, (childName, childNode) => {\n const node = compoundWriteApply(compoundWriteChildCompoundWrite(merge, new Path(childName)), childNode);\n completeChildren = completeChildren.updateImmediateChild(childName, node);\n });\n // Add any complete children we have from the set\n compoundWriteGetCompleteChildren(merge).forEach(namedNode => {\n completeChildren = completeChildren.updateImmediateChild(namedNode.name, namedNode.node);\n });\n return completeChildren;\n }\n else {\n // We don't have anything to layer on top of. Layer on any children we have\n // Note that we can return an empty snap if we have a defined delete\n const merge = compoundWriteChildCompoundWrite(writeTree.visibleWrites, treePath);\n compoundWriteGetCompleteChildren(merge).forEach(namedNode => {\n completeChildren = completeChildren.updateImmediateChild(namedNode.name, namedNode.node);\n });\n return completeChildren;\n }\n}\n/**\n * Given that the underlying server data has updated, determine what, if anything, needs to be\n * applied to the event cache.\n *\n * Possibilities:\n *\n * 1. No writes are shadowing. Events should be raised, the snap to be applied comes from the server data\n *\n * 2. Some write is completely shadowing. No events to be raised\n *\n * 3. Is partially shadowed. Events\n *\n * Either existingEventSnap or existingServerSnap must exist\n */\nfunction writeTreeCalcEventCacheAfterServerOverwrite(writeTree, treePath, childPath, existingEventSnap, existingServerSnap) {\n assert(existingEventSnap || existingServerSnap, 'Either existingEventSnap or existingServerSnap must exist');\n const path = pathChild(treePath, childPath);\n if (compoundWriteHasCompleteWrite(writeTree.visibleWrites, path)) {\n // At this point we can probably guarantee that we're in case 2, meaning no events\n // May need to check visibility while doing the findRootMostValueAndPath call\n return null;\n }\n else {\n // No complete shadowing. We're either partially shadowing or not shadowing at all.\n const childMerge = compoundWriteChildCompoundWrite(writeTree.visibleWrites, path);\n if (compoundWriteIsEmpty(childMerge)) {\n // We're not shadowing at all. Case 1\n return existingServerSnap.getChild(childPath);\n }\n else {\n // This could be more efficient if the serverNode + updates doesn't change the eventSnap\n // However this is tricky to find out, since user updates don't necessary change the server\n // snap, e.g. priority updates on empty nodes, or deep deletes. Another special case is if the server\n // adds nodes, but doesn't change any existing writes. It is therefore not enough to\n // only check if the updates change the serverNode.\n // Maybe check if the merge tree contains these special cases and only do a full overwrite in that case?\n return compoundWriteApply(childMerge, existingServerSnap.getChild(childPath));\n }\n }\n}\n/**\n * Returns a complete child for a given server snap after applying all user writes or null if there is no\n * complete child for this ChildKey.\n */\nfunction writeTreeCalcCompleteChild(writeTree, treePath, childKey, existingServerSnap) {\n const path = pathChild(treePath, childKey);\n const shadowingNode = compoundWriteGetCompleteNode(writeTree.visibleWrites, path);\n if (shadowingNode != null) {\n return shadowingNode;\n }\n else {\n if (existingServerSnap.isCompleteForChild(childKey)) {\n const childMerge = compoundWriteChildCompoundWrite(writeTree.visibleWrites, path);\n return compoundWriteApply(childMerge, existingServerSnap.getNode().getImmediateChild(childKey));\n }\n else {\n return null;\n }\n }\n}\n/**\n * Returns a node if there is a complete overwrite for this path. More specifically, if there is a write at\n * a higher path, this will return the child of that write relative to the write and this path.\n * Returns null if there is no write at this path.\n */\nfunction writeTreeShadowingWrite(writeTree, path) {\n return compoundWriteGetCompleteNode(writeTree.visibleWrites, path);\n}\n/**\n * This method is used when processing child remove events on a query. If we can, we pull in children that were outside\n * the window, but may now be in the window.\n */\nfunction writeTreeCalcIndexedSlice(writeTree, treePath, completeServerData, startPost, count, reverse, index) {\n let toIterate;\n const merge = compoundWriteChildCompoundWrite(writeTree.visibleWrites, treePath);\n const shadowingNode = compoundWriteGetCompleteNode(merge, newEmptyPath());\n if (shadowingNode != null) {\n toIterate = shadowingNode;\n }\n else if (completeServerData != null) {\n toIterate = compoundWriteApply(merge, completeServerData);\n }\n else {\n // no children to iterate on\n return [];\n }\n toIterate = toIterate.withIndex(index);\n if (!toIterate.isEmpty() && !toIterate.isLeafNode()) {\n const nodes = [];\n const cmp = index.getCompare();\n const iter = reverse\n ? toIterate.getReverseIteratorFrom(startPost, index)\n : toIterate.getIteratorFrom(startPost, index);\n let next = iter.getNext();\n while (next && nodes.length < count) {\n if (cmp(next, startPost) !== 0) {\n nodes.push(next);\n }\n next = iter.getNext();\n }\n return nodes;\n }\n else {\n return [];\n }\n}\nfunction newWriteTree() {\n return {\n visibleWrites: CompoundWrite.empty(),\n allWrites: [],\n lastWriteId: -1\n };\n}\n/**\n * If possible, returns a complete event cache, using the underlying server data if possible. In addition, can be used\n * to get a cache that includes hidden writes, and excludes arbitrary writes. Note that customizing the returned node\n * can lead to a more expensive calculation.\n *\n * @param writeIdsToExclude - Optional writes to exclude.\n * @param includeHiddenWrites - Defaults to false, whether or not to layer on writes with visible set to false\n */\nfunction writeTreeRefCalcCompleteEventCache(writeTreeRef, completeServerCache, writeIdsToExclude, includeHiddenWrites) {\n return writeTreeCalcCompleteEventCache(writeTreeRef.writeTree, writeTreeRef.treePath, completeServerCache, writeIdsToExclude, includeHiddenWrites);\n}\n/**\n * If possible, returns a children node containing all of the complete children we have data for. The returned data is a\n * mix of the given server data and write data.\n *\n */\nfunction writeTreeRefCalcCompleteEventChildren(writeTreeRef, completeServerChildren) {\n return writeTreeCalcCompleteEventChildren(writeTreeRef.writeTree, writeTreeRef.treePath, completeServerChildren);\n}\n/**\n * Given that either the underlying server data has updated or the outstanding writes have updated, determine what,\n * if anything, needs to be applied to the event cache.\n *\n * Possibilities:\n *\n * 1. No writes are shadowing. Events should be raised, the snap to be applied comes from the server data\n *\n * 2. Some write is completely shadowing. No events to be raised\n *\n * 3. Is partially shadowed. Events should be raised\n *\n * Either existingEventSnap or existingServerSnap must exist, this is validated via an assert\n *\n *\n */\nfunction writeTreeRefCalcEventCacheAfterServerOverwrite(writeTreeRef, path, existingEventSnap, existingServerSnap) {\n return writeTreeCalcEventCacheAfterServerOverwrite(writeTreeRef.writeTree, writeTreeRef.treePath, path, existingEventSnap, existingServerSnap);\n}\n/**\n * Returns a node if there is a complete overwrite for this path. More specifically, if there is a write at\n * a higher path, this will return the child of that write relative to the write and this path.\n * Returns null if there is no write at this path.\n *\n */\nfunction writeTreeRefShadowingWrite(writeTreeRef, path) {\n return writeTreeShadowingWrite(writeTreeRef.writeTree, pathChild(writeTreeRef.treePath, path));\n}\n/**\n * This method is used when processing child remove events on a query. If we can, we pull in children that were outside\n * the window, but may now be in the window\n */\nfunction writeTreeRefCalcIndexedSlice(writeTreeRef, completeServerData, startPost, count, reverse, index) {\n return writeTreeCalcIndexedSlice(writeTreeRef.writeTree, writeTreeRef.treePath, completeServerData, startPost, count, reverse, index);\n}\n/**\n * Returns a complete child for a given server snap after applying all user writes or null if there is no\n * complete child for this ChildKey.\n */\nfunction writeTreeRefCalcCompleteChild(writeTreeRef, childKey, existingServerCache) {\n return writeTreeCalcCompleteChild(writeTreeRef.writeTree, writeTreeRef.treePath, childKey, existingServerCache);\n}\n/**\n * Return a WriteTreeRef for a child.\n */\nfunction writeTreeRefChild(writeTreeRef, childName) {\n return newWriteTreeRef(pathChild(writeTreeRef.treePath, childName), writeTreeRef.writeTree);\n}\nfunction newWriteTreeRef(path, writeTree) {\n return {\n treePath: path,\n writeTree\n };\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nclass ChildChangeAccumulator {\n constructor() {\n this.changeMap = new Map();\n }\n trackChildChange(change) {\n const type = change.type;\n const childKey = change.childName;\n assert(type === \"child_added\" /* ChangeType.CHILD_ADDED */ ||\n type === \"child_changed\" /* ChangeType.CHILD_CHANGED */ ||\n type === \"child_removed\" /* ChangeType.CHILD_REMOVED */, 'Only child changes supported for tracking');\n assert(childKey !== '.priority', 'Only non-priority child changes can be tracked.');\n const oldChange = this.changeMap.get(childKey);\n if (oldChange) {\n const oldType = oldChange.type;\n if (type === \"child_added\" /* ChangeType.CHILD_ADDED */ &&\n oldType === \"child_removed\" /* ChangeType.CHILD_REMOVED */) {\n this.changeMap.set(childKey, changeChildChanged(childKey, change.snapshotNode, oldChange.snapshotNode));\n }\n else if (type === \"child_removed\" /* ChangeType.CHILD_REMOVED */ &&\n oldType === \"child_added\" /* ChangeType.CHILD_ADDED */) {\n this.changeMap.delete(childKey);\n }\n else if (type === \"child_removed\" /* ChangeType.CHILD_REMOVED */ &&\n oldType === \"child_changed\" /* ChangeType.CHILD_CHANGED */) {\n this.changeMap.set(childKey, changeChildRemoved(childKey, oldChange.oldSnap));\n }\n else if (type === \"child_changed\" /* ChangeType.CHILD_CHANGED */ &&\n oldType === \"child_added\" /* ChangeType.CHILD_ADDED */) {\n this.changeMap.set(childKey, changeChildAdded(childKey, change.snapshotNode));\n }\n else if (type === \"child_changed\" /* ChangeType.CHILD_CHANGED */ &&\n oldType === \"child_changed\" /* ChangeType.CHILD_CHANGED */) {\n this.changeMap.set(childKey, changeChildChanged(childKey, change.snapshotNode, oldChange.oldSnap));\n }\n else {\n throw assertionError('Illegal combination of changes: ' +\n change +\n ' occurred after ' +\n oldChange);\n }\n }\n else {\n this.changeMap.set(childKey, change);\n }\n }\n getChanges() {\n return Array.from(this.changeMap.values());\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * An implementation of CompleteChildSource that never returns any additional children\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nclass NoCompleteChildSource_ {\n getCompleteChild(childKey) {\n return null;\n }\n getChildAfterChild(index, child, reverse) {\n return null;\n }\n}\n/**\n * Singleton instance.\n */\nconst NO_COMPLETE_CHILD_SOURCE = new NoCompleteChildSource_();\n/**\n * An implementation of CompleteChildSource that uses a WriteTree in addition to any other server data or\n * old event caches available to calculate complete children.\n */\nclass WriteTreeCompleteChildSource {\n constructor(writes_, viewCache_, optCompleteServerCache_ = null) {\n this.writes_ = writes_;\n this.viewCache_ = viewCache_;\n this.optCompleteServerCache_ = optCompleteServerCache_;\n }\n getCompleteChild(childKey) {\n const node = this.viewCache_.eventCache;\n if (node.isCompleteForChild(childKey)) {\n return node.getNode().getImmediateChild(childKey);\n }\n else {\n const serverNode = this.optCompleteServerCache_ != null\n ? new CacheNode(this.optCompleteServerCache_, true, false)\n : this.viewCache_.serverCache;\n return writeTreeRefCalcCompleteChild(this.writes_, childKey, serverNode);\n }\n }\n getChildAfterChild(index, child, reverse) {\n const completeServerData = this.optCompleteServerCache_ != null\n ? this.optCompleteServerCache_\n : viewCacheGetCompleteServerSnap(this.viewCache_);\n const nodes = writeTreeRefCalcIndexedSlice(this.writes_, completeServerData, child, 1, reverse, index);\n if (nodes.length === 0) {\n return null;\n }\n else {\n return nodes[0];\n }\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction newViewProcessor(filter) {\n return { filter };\n}\nfunction viewProcessorAssertIndexed(viewProcessor, viewCache) {\n assert(viewCache.eventCache.getNode().isIndexed(viewProcessor.filter.getIndex()), 'Event snap not indexed');\n assert(viewCache.serverCache.getNode().isIndexed(viewProcessor.filter.getIndex()), 'Server snap not indexed');\n}\nfunction viewProcessorApplyOperation(viewProcessor, oldViewCache, operation, writesCache, completeCache) {\n const accumulator = new ChildChangeAccumulator();\n let newViewCache, filterServerNode;\n if (operation.type === OperationType.OVERWRITE) {\n const overwrite = operation;\n if (overwrite.source.fromUser) {\n newViewCache = viewProcessorApplyUserOverwrite(viewProcessor, oldViewCache, overwrite.path, overwrite.snap, writesCache, completeCache, accumulator);\n }\n else {\n assert(overwrite.source.fromServer, 'Unknown source.');\n // We filter the node if it's a tagged update or the node has been previously filtered and the\n // update is not at the root in which case it is ok (and necessary) to mark the node unfiltered\n // again\n filterServerNode =\n overwrite.source.tagged ||\n (oldViewCache.serverCache.isFiltered() && !pathIsEmpty(overwrite.path));\n newViewCache = viewProcessorApplyServerOverwrite(viewProcessor, oldViewCache, overwrite.path, overwrite.snap, writesCache, completeCache, filterServerNode, accumulator);\n }\n }\n else if (operation.type === OperationType.MERGE) {\n const merge = operation;\n if (merge.source.fromUser) {\n newViewCache = viewProcessorApplyUserMerge(viewProcessor, oldViewCache, merge.path, merge.children, writesCache, completeCache, accumulator);\n }\n else {\n assert(merge.source.fromServer, 'Unknown source.');\n // We filter the node if it's a tagged update or the node has been previously filtered\n filterServerNode =\n merge.source.tagged || oldViewCache.serverCache.isFiltered();\n newViewCache = viewProcessorApplyServerMerge(viewProcessor, oldViewCache, merge.path, merge.children, writesCache, completeCache, filterServerNode, accumulator);\n }\n }\n else if (operation.type === OperationType.ACK_USER_WRITE) {\n const ackUserWrite = operation;\n if (!ackUserWrite.revert) {\n newViewCache = viewProcessorAckUserWrite(viewProcessor, oldViewCache, ackUserWrite.path, ackUserWrite.affectedTree, writesCache, completeCache, accumulator);\n }\n else {\n newViewCache = viewProcessorRevertUserWrite(viewProcessor, oldViewCache, ackUserWrite.path, writesCache, completeCache, accumulator);\n }\n }\n else if (operation.type === OperationType.LISTEN_COMPLETE) {\n newViewCache = viewProcessorListenComplete(viewProcessor, oldViewCache, operation.path, writesCache, accumulator);\n }\n else {\n throw assertionError('Unknown operation type: ' + operation.type);\n }\n const changes = accumulator.getChanges();\n viewProcessorMaybeAddValueEvent(oldViewCache, newViewCache, changes);\n return { viewCache: newViewCache, changes };\n}\nfunction viewProcessorMaybeAddValueEvent(oldViewCache, newViewCache, accumulator) {\n const eventSnap = newViewCache.eventCache;\n if (eventSnap.isFullyInitialized()) {\n const isLeafOrEmpty = eventSnap.getNode().isLeafNode() || eventSnap.getNode().isEmpty();\n const oldCompleteSnap = viewCacheGetCompleteEventSnap(oldViewCache);\n if (accumulator.length > 0 ||\n !oldViewCache.eventCache.isFullyInitialized() ||\n (isLeafOrEmpty && !eventSnap.getNode().equals(oldCompleteSnap)) ||\n !eventSnap.getNode().getPriority().equals(oldCompleteSnap.getPriority())) {\n accumulator.push(changeValue(viewCacheGetCompleteEventSnap(newViewCache)));\n }\n }\n}\nfunction viewProcessorGenerateEventCacheAfterServerEvent(viewProcessor, viewCache, changePath, writesCache, source, accumulator) {\n const oldEventSnap = viewCache.eventCache;\n if (writeTreeRefShadowingWrite(writesCache, changePath) != null) {\n // we have a shadowing write, ignore changes\n return viewCache;\n }\n else {\n let newEventCache, serverNode;\n if (pathIsEmpty(changePath)) {\n // TODO: figure out how this plays with \"sliding ack windows\"\n assert(viewCache.serverCache.isFullyInitialized(), 'If change path is empty, we must have complete server data');\n if (viewCache.serverCache.isFiltered()) {\n // We need to special case this, because we need to only apply writes to complete children, or\n // we might end up raising events for incomplete children. If the server data is filtered deep\n // writes cannot be guaranteed to be complete\n const serverCache = viewCacheGetCompleteServerSnap(viewCache);\n const completeChildren = serverCache instanceof ChildrenNode\n ? serverCache\n : ChildrenNode.EMPTY_NODE;\n const completeEventChildren = writeTreeRefCalcCompleteEventChildren(writesCache, completeChildren);\n newEventCache = viewProcessor.filter.updateFullNode(viewCache.eventCache.getNode(), completeEventChildren, accumulator);\n }\n else {\n const completeNode = writeTreeRefCalcCompleteEventCache(writesCache, viewCacheGetCompleteServerSnap(viewCache));\n newEventCache = viewProcessor.filter.updateFullNode(viewCache.eventCache.getNode(), completeNode, accumulator);\n }\n }\n else {\n const childKey = pathGetFront(changePath);\n if (childKey === '.priority') {\n assert(pathGetLength(changePath) === 1, \"Can't have a priority with additional path components\");\n const oldEventNode = oldEventSnap.getNode();\n serverNode = viewCache.serverCache.getNode();\n // we might have overwrites for this priority\n const updatedPriority = writeTreeRefCalcEventCacheAfterServerOverwrite(writesCache, changePath, oldEventNode, serverNode);\n if (updatedPriority != null) {\n newEventCache = viewProcessor.filter.updatePriority(oldEventNode, updatedPriority);\n }\n else {\n // priority didn't change, keep old node\n newEventCache = oldEventSnap.getNode();\n }\n }\n else {\n const childChangePath = pathPopFront(changePath);\n // update child\n let newEventChild;\n if (oldEventSnap.isCompleteForChild(childKey)) {\n serverNode = viewCache.serverCache.getNode();\n const eventChildUpdate = writeTreeRefCalcEventCacheAfterServerOverwrite(writesCache, changePath, oldEventSnap.getNode(), serverNode);\n if (eventChildUpdate != null) {\n newEventChild = oldEventSnap\n .getNode()\n .getImmediateChild(childKey)\n .updateChild(childChangePath, eventChildUpdate);\n }\n else {\n // Nothing changed, just keep the old child\n newEventChild = oldEventSnap.getNode().getImmediateChild(childKey);\n }\n }\n else {\n newEventChild = writeTreeRefCalcCompleteChild(writesCache, childKey, viewCache.serverCache);\n }\n if (newEventChild != null) {\n newEventCache = viewProcessor.filter.updateChild(oldEventSnap.getNode(), childKey, newEventChild, childChangePath, source, accumulator);\n }\n else {\n // no complete child available or no change\n newEventCache = oldEventSnap.getNode();\n }\n }\n }\n return viewCacheUpdateEventSnap(viewCache, newEventCache, oldEventSnap.isFullyInitialized() || pathIsEmpty(changePath), viewProcessor.filter.filtersNodes());\n }\n}\nfunction viewProcessorApplyServerOverwrite(viewProcessor, oldViewCache, changePath, changedSnap, writesCache, completeCache, filterServerNode, accumulator) {\n const oldServerSnap = oldViewCache.serverCache;\n let newServerCache;\n const serverFilter = filterServerNode\n ? viewProcessor.filter\n : viewProcessor.filter.getIndexedFilter();\n if (pathIsEmpty(changePath)) {\n newServerCache = serverFilter.updateFullNode(oldServerSnap.getNode(), changedSnap, null);\n }\n else if (serverFilter.filtersNodes() && !oldServerSnap.isFiltered()) {\n // we want to filter the server node, but we didn't filter the server node yet, so simulate a full update\n const newServerNode = oldServerSnap\n .getNode()\n .updateChild(changePath, changedSnap);\n newServerCache = serverFilter.updateFullNode(oldServerSnap.getNode(), newServerNode, null);\n }\n else {\n const childKey = pathGetFront(changePath);\n if (!oldServerSnap.isCompleteForPath(changePath) &&\n pathGetLength(changePath) > 1) {\n // We don't update incomplete nodes with updates intended for other listeners\n return oldViewCache;\n }\n const childChangePath = pathPopFront(changePath);\n const childNode = oldServerSnap.getNode().getImmediateChild(childKey);\n const newChildNode = childNode.updateChild(childChangePath, changedSnap);\n if (childKey === '.priority') {\n newServerCache = serverFilter.updatePriority(oldServerSnap.getNode(), newChildNode);\n }\n else {\n newServerCache = serverFilter.updateChild(oldServerSnap.getNode(), childKey, newChildNode, childChangePath, NO_COMPLETE_CHILD_SOURCE, null);\n }\n }\n const newViewCache = viewCacheUpdateServerSnap(oldViewCache, newServerCache, oldServerSnap.isFullyInitialized() || pathIsEmpty(changePath), serverFilter.filtersNodes());\n const source = new WriteTreeCompleteChildSource(writesCache, newViewCache, completeCache);\n return viewProcessorGenerateEventCacheAfterServerEvent(viewProcessor, newViewCache, changePath, writesCache, source, accumulator);\n}\nfunction viewProcessorApplyUserOverwrite(viewProcessor, oldViewCache, changePath, changedSnap, writesCache, completeCache, accumulator) {\n const oldEventSnap = oldViewCache.eventCache;\n let newViewCache, newEventCache;\n const source = new WriteTreeCompleteChildSource(writesCache, oldViewCache, completeCache);\n if (pathIsEmpty(changePath)) {\n newEventCache = viewProcessor.filter.updateFullNode(oldViewCache.eventCache.getNode(), changedSnap, accumulator);\n newViewCache = viewCacheUpdateEventSnap(oldViewCache, newEventCache, true, viewProcessor.filter.filtersNodes());\n }\n else {\n const childKey = pathGetFront(changePath);\n if (childKey === '.priority') {\n newEventCache = viewProcessor.filter.updatePriority(oldViewCache.eventCache.getNode(), changedSnap);\n newViewCache = viewCacheUpdateEventSnap(oldViewCache, newEventCache, oldEventSnap.isFullyInitialized(), oldEventSnap.isFiltered());\n }\n else {\n const childChangePath = pathPopFront(changePath);\n const oldChild = oldEventSnap.getNode().getImmediateChild(childKey);\n let newChild;\n if (pathIsEmpty(childChangePath)) {\n // Child overwrite, we can replace the child\n newChild = changedSnap;\n }\n else {\n const childNode = source.getCompleteChild(childKey);\n if (childNode != null) {\n if (pathGetBack(childChangePath) === '.priority' &&\n childNode.getChild(pathParent(childChangePath)).isEmpty()) {\n // This is a priority update on an empty node. If this node exists on the server, the\n // server will send down the priority in the update, so ignore for now\n newChild = childNode;\n }\n else {\n newChild = childNode.updateChild(childChangePath, changedSnap);\n }\n }\n else {\n // There is no complete child node available\n newChild = ChildrenNode.EMPTY_NODE;\n }\n }\n if (!oldChild.equals(newChild)) {\n const newEventSnap = viewProcessor.filter.updateChild(oldEventSnap.getNode(), childKey, newChild, childChangePath, source, accumulator);\n newViewCache = viewCacheUpdateEventSnap(oldViewCache, newEventSnap, oldEventSnap.isFullyInitialized(), viewProcessor.filter.filtersNodes());\n }\n else {\n newViewCache = oldViewCache;\n }\n }\n }\n return newViewCache;\n}\nfunction viewProcessorCacheHasChild(viewCache, childKey) {\n return viewCache.eventCache.isCompleteForChild(childKey);\n}\nfunction viewProcessorApplyUserMerge(viewProcessor, viewCache, path, changedChildren, writesCache, serverCache, accumulator) {\n // HACK: In the case of a limit query, there may be some changes that bump things out of the\n // window leaving room for new items. It's important we process these changes first, so we\n // iterate the changes twice, first processing any that affect items currently in view.\n // TODO: I consider an item \"in view\" if cacheHasChild is true, which checks both the server\n // and event snap. I'm not sure if this will result in edge cases when a child is in one but\n // not the other.\n let curViewCache = viewCache;\n changedChildren.foreach((relativePath, childNode) => {\n const writePath = pathChild(path, relativePath);\n if (viewProcessorCacheHasChild(viewCache, pathGetFront(writePath))) {\n curViewCache = viewProcessorApplyUserOverwrite(viewProcessor, curViewCache, writePath, childNode, writesCache, serverCache, accumulator);\n }\n });\n changedChildren.foreach((relativePath, childNode) => {\n const writePath = pathChild(path, relativePath);\n if (!viewProcessorCacheHasChild(viewCache, pathGetFront(writePath))) {\n curViewCache = viewProcessorApplyUserOverwrite(viewProcessor, curViewCache, writePath, childNode, writesCache, serverCache, accumulator);\n }\n });\n return curViewCache;\n}\nfunction viewProcessorApplyMerge(viewProcessor, node, merge) {\n merge.foreach((relativePath, childNode) => {\n node = node.updateChild(relativePath, childNode);\n });\n return node;\n}\nfunction viewProcessorApplyServerMerge(viewProcessor, viewCache, path, changedChildren, writesCache, serverCache, filterServerNode, accumulator) {\n // If we don't have a cache yet, this merge was intended for a previously listen in the same location. Ignore it and\n // wait for the complete data update coming soon.\n if (viewCache.serverCache.getNode().isEmpty() &&\n !viewCache.serverCache.isFullyInitialized()) {\n return viewCache;\n }\n // HACK: In the case of a limit query, there may be some changes that bump things out of the\n // window leaving room for new items. It's important we process these changes first, so we\n // iterate the changes twice, first processing any that affect items currently in view.\n // TODO: I consider an item \"in view\" if cacheHasChild is true, which checks both the server\n // and event snap. I'm not sure if this will result in edge cases when a child is in one but\n // not the other.\n let curViewCache = viewCache;\n let viewMergeTree;\n if (pathIsEmpty(path)) {\n viewMergeTree = changedChildren;\n }\n else {\n viewMergeTree = new ImmutableTree(null).setTree(path, changedChildren);\n }\n const serverNode = viewCache.serverCache.getNode();\n viewMergeTree.children.inorderTraversal((childKey, childTree) => {\n if (serverNode.hasChild(childKey)) {\n const serverChild = viewCache.serverCache\n .getNode()\n .getImmediateChild(childKey);\n const newChild = viewProcessorApplyMerge(viewProcessor, serverChild, childTree);\n curViewCache = viewProcessorApplyServerOverwrite(viewProcessor, curViewCache, new Path(childKey), newChild, writesCache, serverCache, filterServerNode, accumulator);\n }\n });\n viewMergeTree.children.inorderTraversal((childKey, childMergeTree) => {\n const isUnknownDeepMerge = !viewCache.serverCache.isCompleteForChild(childKey) &&\n childMergeTree.value === null;\n if (!serverNode.hasChild(childKey) && !isUnknownDeepMerge) {\n const serverChild = viewCache.serverCache\n .getNode()\n .getImmediateChild(childKey);\n const newChild = viewProcessorApplyMerge(viewProcessor, serverChild, childMergeTree);\n curViewCache = viewProcessorApplyServerOverwrite(viewProcessor, curViewCache, new Path(childKey), newChild, writesCache, serverCache, filterServerNode, accumulator);\n }\n });\n return curViewCache;\n}\nfunction viewProcessorAckUserWrite(viewProcessor, viewCache, ackPath, affectedTree, writesCache, completeCache, accumulator) {\n if (writeTreeRefShadowingWrite(writesCache, ackPath) != null) {\n return viewCache;\n }\n // Only filter server node if it is currently filtered\n const filterServerNode = viewCache.serverCache.isFiltered();\n // Essentially we'll just get our existing server cache for the affected paths and re-apply it as a server update\n // now that it won't be shadowed.\n const serverCache = viewCache.serverCache;\n if (affectedTree.value != null) {\n // This is an overwrite.\n if ((pathIsEmpty(ackPath) && serverCache.isFullyInitialized()) ||\n serverCache.isCompleteForPath(ackPath)) {\n return viewProcessorApplyServerOverwrite(viewProcessor, viewCache, ackPath, serverCache.getNode().getChild(ackPath), writesCache, completeCache, filterServerNode, accumulator);\n }\n else if (pathIsEmpty(ackPath)) {\n // This is a goofy edge case where we are acking data at this location but don't have full data. We\n // should just re-apply whatever we have in our cache as a merge.\n let changedChildren = new ImmutableTree(null);\n serverCache.getNode().forEachChild(KEY_INDEX, (name, node) => {\n changedChildren = changedChildren.set(new Path(name), node);\n });\n return viewProcessorApplyServerMerge(viewProcessor, viewCache, ackPath, changedChildren, writesCache, completeCache, filterServerNode, accumulator);\n }\n else {\n return viewCache;\n }\n }\n else {\n // This is a merge.\n let changedChildren = new ImmutableTree(null);\n affectedTree.foreach((mergePath, value) => {\n const serverCachePath = pathChild(ackPath, mergePath);\n if (serverCache.isCompleteForPath(serverCachePath)) {\n changedChildren = changedChildren.set(mergePath, serverCache.getNode().getChild(serverCachePath));\n }\n });\n return viewProcessorApplyServerMerge(viewProcessor, viewCache, ackPath, changedChildren, writesCache, completeCache, filterServerNode, accumulator);\n }\n}\nfunction viewProcessorListenComplete(viewProcessor, viewCache, path, writesCache, accumulator) {\n const oldServerNode = viewCache.serverCache;\n const newViewCache = viewCacheUpdateServerSnap(viewCache, oldServerNode.getNode(), oldServerNode.isFullyInitialized() || pathIsEmpty(path), oldServerNode.isFiltered());\n return viewProcessorGenerateEventCacheAfterServerEvent(viewProcessor, newViewCache, path, writesCache, NO_COMPLETE_CHILD_SOURCE, accumulator);\n}\nfunction viewProcessorRevertUserWrite(viewProcessor, viewCache, path, writesCache, completeServerCache, accumulator) {\n let complete;\n if (writeTreeRefShadowingWrite(writesCache, path) != null) {\n return viewCache;\n }\n else {\n const source = new WriteTreeCompleteChildSource(writesCache, viewCache, completeServerCache);\n const oldEventCache = viewCache.eventCache.getNode();\n let newEventCache;\n if (pathIsEmpty(path) || pathGetFront(path) === '.priority') {\n let newNode;\n if (viewCache.serverCache.isFullyInitialized()) {\n newNode = writeTreeRefCalcCompleteEventCache(writesCache, viewCacheGetCompleteServerSnap(viewCache));\n }\n else {\n const serverChildren = viewCache.serverCache.getNode();\n assert(serverChildren instanceof ChildrenNode, 'serverChildren would be complete if leaf node');\n newNode = writeTreeRefCalcCompleteEventChildren(writesCache, serverChildren);\n }\n newNode = newNode;\n newEventCache = viewProcessor.filter.updateFullNode(oldEventCache, newNode, accumulator);\n }\n else {\n const childKey = pathGetFront(path);\n let newChild = writeTreeRefCalcCompleteChild(writesCache, childKey, viewCache.serverCache);\n if (newChild == null &&\n viewCache.serverCache.isCompleteForChild(childKey)) {\n newChild = oldEventCache.getImmediateChild(childKey);\n }\n if (newChild != null) {\n newEventCache = viewProcessor.filter.updateChild(oldEventCache, childKey, newChild, pathPopFront(path), source, accumulator);\n }\n else if (viewCache.eventCache.getNode().hasChild(childKey)) {\n // No complete child available, delete the existing one, if any\n newEventCache = viewProcessor.filter.updateChild(oldEventCache, childKey, ChildrenNode.EMPTY_NODE, pathPopFront(path), source, accumulator);\n }\n else {\n newEventCache = oldEventCache;\n }\n if (newEventCache.isEmpty() &&\n viewCache.serverCache.isFullyInitialized()) {\n // We might have reverted all child writes. Maybe the old event was a leaf node\n complete = writeTreeRefCalcCompleteEventCache(writesCache, viewCacheGetCompleteServerSnap(viewCache));\n if (complete.isLeafNode()) {\n newEventCache = viewProcessor.filter.updateFullNode(newEventCache, complete, accumulator);\n }\n }\n }\n complete =\n viewCache.serverCache.isFullyInitialized() ||\n writeTreeRefShadowingWrite(writesCache, newEmptyPath()) != null;\n return viewCacheUpdateEventSnap(viewCache, newEventCache, complete, viewProcessor.filter.filtersNodes());\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A view represents a specific location and query that has 1 or more event registrations.\n *\n * It does several things:\n * - Maintains the list of event registrations for this location/query.\n * - Maintains a cache of the data visible for this location/query.\n * - Applies new operations (via applyOperation), updates the cache, and based on the event\n * registrations returns the set of events to be raised.\n */\nclass View {\n constructor(query_, initialViewCache) {\n this.query_ = query_;\n this.eventRegistrations_ = [];\n const params = this.query_._queryParams;\n const indexFilter = new IndexedFilter(params.getIndex());\n const filter = queryParamsGetNodeFilter(params);\n this.processor_ = newViewProcessor(filter);\n const initialServerCache = initialViewCache.serverCache;\n const initialEventCache = initialViewCache.eventCache;\n // Don't filter server node with other filter than index, wait for tagged listen\n const serverSnap = indexFilter.updateFullNode(ChildrenNode.EMPTY_NODE, initialServerCache.getNode(), null);\n const eventSnap = filter.updateFullNode(ChildrenNode.EMPTY_NODE, initialEventCache.getNode(), null);\n const newServerCache = new CacheNode(serverSnap, initialServerCache.isFullyInitialized(), indexFilter.filtersNodes());\n const newEventCache = new CacheNode(eventSnap, initialEventCache.isFullyInitialized(), filter.filtersNodes());\n this.viewCache_ = newViewCache(newEventCache, newServerCache);\n this.eventGenerator_ = new EventGenerator(this.query_);\n }\n get query() {\n return this.query_;\n }\n}\nfunction viewGetServerCache(view) {\n return view.viewCache_.serverCache.getNode();\n}\nfunction viewGetCompleteNode(view) {\n return viewCacheGetCompleteEventSnap(view.viewCache_);\n}\nfunction viewGetCompleteServerCache(view, path) {\n const cache = viewCacheGetCompleteServerSnap(view.viewCache_);\n if (cache) {\n // If this isn't a \"loadsAllData\" view, then cache isn't actually a complete cache and\n // we need to see if it contains the child we're interested in.\n if (view.query._queryParams.loadsAllData() ||\n (!pathIsEmpty(path) &&\n !cache.getImmediateChild(pathGetFront(path)).isEmpty())) {\n return cache.getChild(path);\n }\n }\n return null;\n}\nfunction viewIsEmpty(view) {\n return view.eventRegistrations_.length === 0;\n}\nfunction viewAddEventRegistration(view, eventRegistration) {\n view.eventRegistrations_.push(eventRegistration);\n}\n/**\n * @param eventRegistration - If null, remove all callbacks.\n * @param cancelError - If a cancelError is provided, appropriate cancel events will be returned.\n * @returns Cancel events, if cancelError was provided.\n */\nfunction viewRemoveEventRegistration(view, eventRegistration, cancelError) {\n const cancelEvents = [];\n if (cancelError) {\n assert(eventRegistration == null, 'A cancel should cancel all event registrations.');\n const path = view.query._path;\n view.eventRegistrations_.forEach(registration => {\n const maybeEvent = registration.createCancelEvent(cancelError, path);\n if (maybeEvent) {\n cancelEvents.push(maybeEvent);\n }\n });\n }\n if (eventRegistration) {\n let remaining = [];\n for (let i = 0; i < view.eventRegistrations_.length; ++i) {\n const existing = view.eventRegistrations_[i];\n if (!existing.matches(eventRegistration)) {\n remaining.push(existing);\n }\n else if (eventRegistration.hasAnyCallback()) {\n // We're removing just this one\n remaining = remaining.concat(view.eventRegistrations_.slice(i + 1));\n break;\n }\n }\n view.eventRegistrations_ = remaining;\n }\n else {\n view.eventRegistrations_ = [];\n }\n return cancelEvents;\n}\n/**\n * Applies the given Operation, updates our cache, and returns the appropriate events.\n */\nfunction viewApplyOperation(view, operation, writesCache, completeServerCache) {\n if (operation.type === OperationType.MERGE &&\n operation.source.queryId !== null) {\n assert(viewCacheGetCompleteServerSnap(view.viewCache_), 'We should always have a full cache before handling merges');\n assert(viewCacheGetCompleteEventSnap(view.viewCache_), 'Missing event cache, even though we have a server cache');\n }\n const oldViewCache = view.viewCache_;\n const result = viewProcessorApplyOperation(view.processor_, oldViewCache, operation, writesCache, completeServerCache);\n viewProcessorAssertIndexed(view.processor_, result.viewCache);\n assert(result.viewCache.serverCache.isFullyInitialized() ||\n !oldViewCache.serverCache.isFullyInitialized(), 'Once a server snap is complete, it should never go back');\n view.viewCache_ = result.viewCache;\n return viewGenerateEventsForChanges_(view, result.changes, result.viewCache.eventCache.getNode(), null);\n}\nfunction viewGetInitialEvents(view, registration) {\n const eventSnap = view.viewCache_.eventCache;\n const initialChanges = [];\n if (!eventSnap.getNode().isLeafNode()) {\n const eventNode = eventSnap.getNode();\n eventNode.forEachChild(PRIORITY_INDEX, (key, childNode) => {\n initialChanges.push(changeChildAdded(key, childNode));\n });\n }\n if (eventSnap.isFullyInitialized()) {\n initialChanges.push(changeValue(eventSnap.getNode()));\n }\n return viewGenerateEventsForChanges_(view, initialChanges, eventSnap.getNode(), registration);\n}\nfunction viewGenerateEventsForChanges_(view, changes, eventCache, eventRegistration) {\n const registrations = eventRegistration\n ? [eventRegistration]\n : view.eventRegistrations_;\n return eventGeneratorGenerateEventsForChanges(view.eventGenerator_, changes, eventCache, registrations);\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nlet referenceConstructor$1;\n/**\n * SyncPoint represents a single location in a SyncTree with 1 or more event registrations, meaning we need to\n * maintain 1 or more Views at this location to cache server data and raise appropriate events for server changes\n * and user writes (set, transaction, update).\n *\n * It's responsible for:\n * - Maintaining the set of 1 or more views necessary at this location (a SyncPoint with 0 views should be removed).\n * - Proxying user / server operations to the views as appropriate (i.e. applyServerOverwrite,\n * applyUserOverwrite, etc.)\n */\nclass SyncPoint {\n constructor() {\n /**\n * The Views being tracked at this location in the tree, stored as a map where the key is a\n * queryId and the value is the View for that query.\n *\n * NOTE: This list will be quite small (usually 1, but perhaps 2 or 3; any more is an odd use case).\n */\n this.views = new Map();\n }\n}\nfunction syncPointSetReferenceConstructor(val) {\n assert(!referenceConstructor$1, '__referenceConstructor has already been defined');\n referenceConstructor$1 = val;\n}\nfunction syncPointGetReferenceConstructor() {\n assert(referenceConstructor$1, 'Reference.ts has not been loaded');\n return referenceConstructor$1;\n}\nfunction syncPointIsEmpty(syncPoint) {\n return syncPoint.views.size === 0;\n}\nfunction syncPointApplyOperation(syncPoint, operation, writesCache, optCompleteServerCache) {\n const queryId = operation.source.queryId;\n if (queryId !== null) {\n const view = syncPoint.views.get(queryId);\n assert(view != null, 'SyncTree gave us an op for an invalid query.');\n return viewApplyOperation(view, operation, writesCache, optCompleteServerCache);\n }\n else {\n let events = [];\n for (const view of syncPoint.views.values()) {\n events = events.concat(viewApplyOperation(view, operation, writesCache, optCompleteServerCache));\n }\n return events;\n }\n}\n/**\n * Get a view for the specified query.\n *\n * @param query - The query to return a view for\n * @param writesCache\n * @param serverCache\n * @param serverCacheComplete\n * @returns Events to raise.\n */\nfunction syncPointGetView(syncPoint, query, writesCache, serverCache, serverCacheComplete) {\n const queryId = query._queryIdentifier;\n const view = syncPoint.views.get(queryId);\n if (!view) {\n // TODO: make writesCache take flag for complete server node\n let eventCache = writeTreeRefCalcCompleteEventCache(writesCache, serverCacheComplete ? serverCache : null);\n let eventCacheComplete = false;\n if (eventCache) {\n eventCacheComplete = true;\n }\n else if (serverCache instanceof ChildrenNode) {\n eventCache = writeTreeRefCalcCompleteEventChildren(writesCache, serverCache);\n eventCacheComplete = false;\n }\n else {\n eventCache = ChildrenNode.EMPTY_NODE;\n eventCacheComplete = false;\n }\n const viewCache = newViewCache(new CacheNode(eventCache, eventCacheComplete, false), new CacheNode(serverCache, serverCacheComplete, false));\n return new View(query, viewCache);\n }\n return view;\n}\n/**\n * Add an event callback for the specified query.\n *\n * @param query\n * @param eventRegistration\n * @param writesCache\n * @param serverCache - Complete server cache, if we have it.\n * @param serverCacheComplete\n * @returns Events to raise.\n */\nfunction syncPointAddEventRegistration(syncPoint, query, eventRegistration, writesCache, serverCache, serverCacheComplete) {\n const view = syncPointGetView(syncPoint, query, writesCache, serverCache, serverCacheComplete);\n if (!syncPoint.views.has(query._queryIdentifier)) {\n syncPoint.views.set(query._queryIdentifier, view);\n }\n // This is guaranteed to exist now, we just created anything that was missing\n viewAddEventRegistration(view, eventRegistration);\n return viewGetInitialEvents(view, eventRegistration);\n}\n/**\n * Remove event callback(s). Return cancelEvents if a cancelError is specified.\n *\n * If query is the default query, we'll check all views for the specified eventRegistration.\n * If eventRegistration is null, we'll remove all callbacks for the specified view(s).\n *\n * @param eventRegistration - If null, remove all callbacks.\n * @param cancelError - If a cancelError is provided, appropriate cancel events will be returned.\n * @returns removed queries and any cancel events\n */\nfunction syncPointRemoveEventRegistration(syncPoint, query, eventRegistration, cancelError) {\n const queryId = query._queryIdentifier;\n const removed = [];\n let cancelEvents = [];\n const hadCompleteView = syncPointHasCompleteView(syncPoint);\n if (queryId === 'default') {\n // When you do ref.off(...), we search all views for the registration to remove.\n for (const [viewQueryId, view] of syncPoint.views.entries()) {\n cancelEvents = cancelEvents.concat(viewRemoveEventRegistration(view, eventRegistration, cancelError));\n if (viewIsEmpty(view)) {\n syncPoint.views.delete(viewQueryId);\n // We'll deal with complete views later.\n if (!view.query._queryParams.loadsAllData()) {\n removed.push(view.query);\n }\n }\n }\n }\n else {\n // remove the callback from the specific view.\n const view = syncPoint.views.get(queryId);\n if (view) {\n cancelEvents = cancelEvents.concat(viewRemoveEventRegistration(view, eventRegistration, cancelError));\n if (viewIsEmpty(view)) {\n syncPoint.views.delete(queryId);\n // We'll deal with complete views later.\n if (!view.query._queryParams.loadsAllData()) {\n removed.push(view.query);\n }\n }\n }\n }\n if (hadCompleteView && !syncPointHasCompleteView(syncPoint)) {\n // We removed our last complete view.\n removed.push(new (syncPointGetReferenceConstructor())(query._repo, query._path));\n }\n return { removed, events: cancelEvents };\n}\nfunction syncPointGetQueryViews(syncPoint) {\n const result = [];\n for (const view of syncPoint.views.values()) {\n if (!view.query._queryParams.loadsAllData()) {\n result.push(view);\n }\n }\n return result;\n}\n/**\n * @param path - The path to the desired complete snapshot\n * @returns A complete cache, if it exists\n */\nfunction syncPointGetCompleteServerCache(syncPoint, path) {\n let serverCache = null;\n for (const view of syncPoint.views.values()) {\n serverCache = serverCache || viewGetCompleteServerCache(view, path);\n }\n return serverCache;\n}\nfunction syncPointViewForQuery(syncPoint, query) {\n const params = query._queryParams;\n if (params.loadsAllData()) {\n return syncPointGetCompleteView(syncPoint);\n }\n else {\n const queryId = query._queryIdentifier;\n return syncPoint.views.get(queryId);\n }\n}\nfunction syncPointViewExistsForQuery(syncPoint, query) {\n return syncPointViewForQuery(syncPoint, query) != null;\n}\nfunction syncPointHasCompleteView(syncPoint) {\n return syncPointGetCompleteView(syncPoint) != null;\n}\nfunction syncPointGetCompleteView(syncPoint) {\n for (const view of syncPoint.views.values()) {\n if (view.query._queryParams.loadsAllData()) {\n return view;\n }\n }\n return null;\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nlet referenceConstructor;\nfunction syncTreeSetReferenceConstructor(val) {\n assert(!referenceConstructor, '__referenceConstructor has already been defined');\n referenceConstructor = val;\n}\nfunction syncTreeGetReferenceConstructor() {\n assert(referenceConstructor, 'Reference.ts has not been loaded');\n return referenceConstructor;\n}\n/**\n * Static tracker for next query tag.\n */\nlet syncTreeNextQueryTag_ = 1;\n/**\n * SyncTree is the central class for managing event callback registration, data caching, views\n * (query processing), and event generation. There are typically two SyncTree instances for\n * each Repo, one for the normal Firebase data, and one for the .info data.\n *\n * It has a number of responsibilities, including:\n * - Tracking all user event callbacks (registered via addEventRegistration() and removeEventRegistration()).\n * - Applying and caching data changes for user set(), transaction(), and update() calls\n * (applyUserOverwrite(), applyUserMerge()).\n * - Applying and caching data changes for server data changes (applyServerOverwrite(),\n * applyServerMerge()).\n * - Generating user-facing events for server and user changes (all of the apply* methods\n * return the set of events that need to be raised as a result).\n * - Maintaining the appropriate set of server listens to ensure we are always subscribed\n * to the correct set of paths and queries to satisfy the current set of user event\n * callbacks (listens are started/stopped using the provided listenProvider).\n *\n * NOTE: Although SyncTree tracks event callbacks and calculates events to raise, the actual\n * events are returned to the caller rather than raised synchronously.\n *\n */\nclass SyncTree {\n /**\n * @param listenProvider_ - Used by SyncTree to start / stop listening\n * to server data.\n */\n constructor(listenProvider_) {\n this.listenProvider_ = listenProvider_;\n /**\n * Tree of SyncPoints. There's a SyncPoint at any location that has 1 or more views.\n */\n this.syncPointTree_ = new ImmutableTree(null);\n /**\n * A tree of all pending user writes (user-initiated set()'s, transaction()'s, update()'s, etc.).\n */\n this.pendingWriteTree_ = newWriteTree();\n this.tagToQueryMap = new Map();\n this.queryToTagMap = new Map();\n }\n}\n/**\n * Apply the data changes for a user-generated set() or transaction() call.\n *\n * @returns Events to raise.\n */\nfunction syncTreeApplyUserOverwrite(syncTree, path, newData, writeId, visible) {\n // Record pending write.\n writeTreeAddOverwrite(syncTree.pendingWriteTree_, path, newData, writeId, visible);\n if (!visible) {\n return [];\n }\n else {\n return syncTreeApplyOperationToSyncPoints_(syncTree, new Overwrite(newOperationSourceUser(), path, newData));\n }\n}\n/**\n * Apply the data from a user-generated update() call\n *\n * @returns Events to raise.\n */\nfunction syncTreeApplyUserMerge(syncTree, path, changedChildren, writeId) {\n // Record pending merge.\n writeTreeAddMerge(syncTree.pendingWriteTree_, path, changedChildren, writeId);\n const changeTree = ImmutableTree.fromObject(changedChildren);\n return syncTreeApplyOperationToSyncPoints_(syncTree, new Merge(newOperationSourceUser(), path, changeTree));\n}\n/**\n * Acknowledge a pending user write that was previously registered with applyUserOverwrite() or applyUserMerge().\n *\n * @param revert - True if the given write failed and needs to be reverted\n * @returns Events to raise.\n */\nfunction syncTreeAckUserWrite(syncTree, writeId, revert = false) {\n const write = writeTreeGetWrite(syncTree.pendingWriteTree_, writeId);\n const needToReevaluate = writeTreeRemoveWrite(syncTree.pendingWriteTree_, writeId);\n if (!needToReevaluate) {\n return [];\n }\n else {\n let affectedTree = new ImmutableTree(null);\n if (write.snap != null) {\n // overwrite\n affectedTree = affectedTree.set(newEmptyPath(), true);\n }\n else {\n each(write.children, (pathString) => {\n affectedTree = affectedTree.set(new Path(pathString), true);\n });\n }\n return syncTreeApplyOperationToSyncPoints_(syncTree, new AckUserWrite(write.path, affectedTree, revert));\n }\n}\n/**\n * Apply new server data for the specified path..\n *\n * @returns Events to raise.\n */\nfunction syncTreeApplyServerOverwrite(syncTree, path, newData) {\n return syncTreeApplyOperationToSyncPoints_(syncTree, new Overwrite(newOperationSourceServer(), path, newData));\n}\n/**\n * Apply new server data to be merged in at the specified path.\n *\n * @returns Events to raise.\n */\nfunction syncTreeApplyServerMerge(syncTree, path, changedChildren) {\n const changeTree = ImmutableTree.fromObject(changedChildren);\n return syncTreeApplyOperationToSyncPoints_(syncTree, new Merge(newOperationSourceServer(), path, changeTree));\n}\n/**\n * Apply a listen complete for a query\n *\n * @returns Events to raise.\n */\nfunction syncTreeApplyListenComplete(syncTree, path) {\n return syncTreeApplyOperationToSyncPoints_(syncTree, new ListenComplete(newOperationSourceServer(), path));\n}\n/**\n * Apply a listen complete for a tagged query\n *\n * @returns Events to raise.\n */\nfunction syncTreeApplyTaggedListenComplete(syncTree, path, tag) {\n const queryKey = syncTreeQueryKeyForTag_(syncTree, tag);\n if (queryKey) {\n const r = syncTreeParseQueryKey_(queryKey);\n const queryPath = r.path, queryId = r.queryId;\n const relativePath = newRelativePath(queryPath, path);\n const op = new ListenComplete(newOperationSourceServerTaggedQuery(queryId), relativePath);\n return syncTreeApplyTaggedOperation_(syncTree, queryPath, op);\n }\n else {\n // We've already removed the query. No big deal, ignore the update\n return [];\n }\n}\n/**\n * Remove event callback(s).\n *\n * If query is the default query, we'll check all queries for the specified eventRegistration.\n * If eventRegistration is null, we'll remove all callbacks for the specified query/queries.\n *\n * @param eventRegistration - If null, all callbacks are removed.\n * @param cancelError - If a cancelError is provided, appropriate cancel events will be returned.\n * @param skipListenerDedup - When performing a `get()`, we don't add any new listeners, so no\n * deduping needs to take place. This flag allows toggling of that behavior\n * @returns Cancel events, if cancelError was provided.\n */\nfunction syncTreeRemoveEventRegistration(syncTree, query, eventRegistration, cancelError, skipListenerDedup = false) {\n // Find the syncPoint first. Then deal with whether or not it has matching listeners\n const path = query._path;\n const maybeSyncPoint = syncTree.syncPointTree_.get(path);\n let cancelEvents = [];\n // A removal on a default query affects all queries at that location. A removal on an indexed query, even one without\n // other query constraints, does *not* affect all queries at that location. So this check must be for 'default', and\n // not loadsAllData().\n if (maybeSyncPoint &&\n (query._queryIdentifier === 'default' ||\n syncPointViewExistsForQuery(maybeSyncPoint, query))) {\n const removedAndEvents = syncPointRemoveEventRegistration(maybeSyncPoint, query, eventRegistration, cancelError);\n if (syncPointIsEmpty(maybeSyncPoint)) {\n syncTree.syncPointTree_ = syncTree.syncPointTree_.remove(path);\n }\n const removed = removedAndEvents.removed;\n cancelEvents = removedAndEvents.events;\n if (!skipListenerDedup) {\n /**\n * We may have just removed one of many listeners and can short-circuit this whole process\n * We may also not have removed a default listener, in which case all of the descendant listeners should already be\n * properly set up.\n */\n // Since indexed queries can shadow if they don't have other query constraints, check for loadsAllData(), instead of\n // queryId === 'default'\n const removingDefault = -1 !==\n removed.findIndex(query => {\n return query._queryParams.loadsAllData();\n });\n const covered = syncTree.syncPointTree_.findOnPath(path, (relativePath, parentSyncPoint) => syncPointHasCompleteView(parentSyncPoint));\n if (removingDefault && !covered) {\n const subtree = syncTree.syncPointTree_.subtree(path);\n // There are potentially child listeners. Determine what if any listens we need to send before executing the\n // removal\n if (!subtree.isEmpty()) {\n // We need to fold over our subtree and collect the listeners to send\n const newViews = syncTreeCollectDistinctViewsForSubTree_(subtree);\n // Ok, we've collected all the listens we need. Set them up.\n for (let i = 0; i < newViews.length; ++i) {\n const view = newViews[i], newQuery = view.query;\n const listener = syncTreeCreateListenerForView_(syncTree, view);\n syncTree.listenProvider_.startListening(syncTreeQueryForListening_(newQuery), syncTreeTagForQuery(syncTree, newQuery), listener.hashFn, listener.onComplete);\n }\n }\n // Otherwise there's nothing below us, so nothing we need to start listening on\n }\n // If we removed anything and we're not covered by a higher up listen, we need to stop listening on this query\n // The above block has us covered in terms of making sure we're set up on listens lower in the tree.\n // Also, note that if we have a cancelError, it's already been removed at the provider level.\n if (!covered && removed.length > 0 && !cancelError) {\n // If we removed a default, then we weren't listening on any of the other queries here. Just cancel the one\n // default. Otherwise, we need to iterate through and cancel each individual query\n if (removingDefault) {\n // We don't tag default listeners\n const defaultTag = null;\n syncTree.listenProvider_.stopListening(syncTreeQueryForListening_(query), defaultTag);\n }\n else {\n removed.forEach((queryToRemove) => {\n const tagToRemove = syncTree.queryToTagMap.get(syncTreeMakeQueryKey_(queryToRemove));\n syncTree.listenProvider_.stopListening(syncTreeQueryForListening_(queryToRemove), tagToRemove);\n });\n }\n }\n }\n // Now, clear all of the tags we're tracking for the removed listens\n syncTreeRemoveTags_(syncTree, removed);\n }\n return cancelEvents;\n}\n/**\n * Apply new server data for the specified tagged query.\n *\n * @returns Events to raise.\n */\nfunction syncTreeApplyTaggedQueryOverwrite(syncTree, path, snap, tag) {\n const queryKey = syncTreeQueryKeyForTag_(syncTree, tag);\n if (queryKey != null) {\n const r = syncTreeParseQueryKey_(queryKey);\n const queryPath = r.path, queryId = r.queryId;\n const relativePath = newRelativePath(queryPath, path);\n const op = new Overwrite(newOperationSourceServerTaggedQuery(queryId), relativePath, snap);\n return syncTreeApplyTaggedOperation_(syncTree, queryPath, op);\n }\n else {\n // Query must have been removed already\n return [];\n }\n}\n/**\n * Apply server data to be merged in for the specified tagged query.\n *\n * @returns Events to raise.\n */\nfunction syncTreeApplyTaggedQueryMerge(syncTree, path, changedChildren, tag) {\n const queryKey = syncTreeQueryKeyForTag_(syncTree, tag);\n if (queryKey) {\n const r = syncTreeParseQueryKey_(queryKey);\n const queryPath = r.path, queryId = r.queryId;\n const relativePath = newRelativePath(queryPath, path);\n const changeTree = ImmutableTree.fromObject(changedChildren);\n const op = new Merge(newOperationSourceServerTaggedQuery(queryId), relativePath, changeTree);\n return syncTreeApplyTaggedOperation_(syncTree, queryPath, op);\n }\n else {\n // We've already removed the query. No big deal, ignore the update\n return [];\n }\n}\n/**\n * Add an event callback for the specified query.\n *\n * @returns Events to raise.\n */\nfunction syncTreeAddEventRegistration(syncTree, query, eventRegistration, skipSetupListener = false) {\n const path = query._path;\n let serverCache = null;\n let foundAncestorDefaultView = false;\n // Any covering writes will necessarily be at the root, so really all we need to find is the server cache.\n // Consider optimizing this once there's a better understanding of what actual behavior will be.\n syncTree.syncPointTree_.foreachOnPath(path, (pathToSyncPoint, sp) => {\n const relativePath = newRelativePath(pathToSyncPoint, path);\n serverCache =\n serverCache || syncPointGetCompleteServerCache(sp, relativePath);\n foundAncestorDefaultView =\n foundAncestorDefaultView || syncPointHasCompleteView(sp);\n });\n let syncPoint = syncTree.syncPointTree_.get(path);\n if (!syncPoint) {\n syncPoint = new SyncPoint();\n syncTree.syncPointTree_ = syncTree.syncPointTree_.set(path, syncPoint);\n }\n else {\n foundAncestorDefaultView =\n foundAncestorDefaultView || syncPointHasCompleteView(syncPoint);\n serverCache =\n serverCache || syncPointGetCompleteServerCache(syncPoint, newEmptyPath());\n }\n let serverCacheComplete;\n if (serverCache != null) {\n serverCacheComplete = true;\n }\n else {\n serverCacheComplete = false;\n serverCache = ChildrenNode.EMPTY_NODE;\n const subtree = syncTree.syncPointTree_.subtree(path);\n subtree.foreachChild((childName, childSyncPoint) => {\n const completeCache = syncPointGetCompleteServerCache(childSyncPoint, newEmptyPath());\n if (completeCache) {\n serverCache = serverCache.updateImmediateChild(childName, completeCache);\n }\n });\n }\n const viewAlreadyExists = syncPointViewExistsForQuery(syncPoint, query);\n if (!viewAlreadyExists && !query._queryParams.loadsAllData()) {\n // We need to track a tag for this query\n const queryKey = syncTreeMakeQueryKey_(query);\n assert(!syncTree.queryToTagMap.has(queryKey), 'View does not exist, but we have a tag');\n const tag = syncTreeGetNextQueryTag_();\n syncTree.queryToTagMap.set(queryKey, tag);\n syncTree.tagToQueryMap.set(tag, queryKey);\n }\n const writesCache = writeTreeChildWrites(syncTree.pendingWriteTree_, path);\n let events = syncPointAddEventRegistration(syncPoint, query, eventRegistration, writesCache, serverCache, serverCacheComplete);\n if (!viewAlreadyExists && !foundAncestorDefaultView && !skipSetupListener) {\n const view = syncPointViewForQuery(syncPoint, query);\n events = events.concat(syncTreeSetupListener_(syncTree, query, view));\n }\n return events;\n}\n/**\n * Returns a complete cache, if we have one, of the data at a particular path. If the location does not have a\n * listener above it, we will get a false \"null\". This shouldn't be a problem because transactions will always\n * have a listener above, and atomic operations would correctly show a jitter of ->\n * as the write is applied locally and then acknowledged at the server.\n *\n * Note: this method will *include* hidden writes from transaction with applyLocally set to false.\n *\n * @param path - The path to the data we want\n * @param writeIdsToExclude - A specific set to be excluded\n */\nfunction syncTreeCalcCompleteEventCache(syncTree, path, writeIdsToExclude) {\n const includeHiddenSets = true;\n const writeTree = syncTree.pendingWriteTree_;\n const serverCache = syncTree.syncPointTree_.findOnPath(path, (pathSoFar, syncPoint) => {\n const relativePath = newRelativePath(pathSoFar, path);\n const serverCache = syncPointGetCompleteServerCache(syncPoint, relativePath);\n if (serverCache) {\n return serverCache;\n }\n });\n return writeTreeCalcCompleteEventCache(writeTree, path, serverCache, writeIdsToExclude, includeHiddenSets);\n}\nfunction syncTreeGetServerValue(syncTree, query) {\n const path = query._path;\n let serverCache = null;\n // Any covering writes will necessarily be at the root, so really all we need to find is the server cache.\n // Consider optimizing this once there's a better understanding of what actual behavior will be.\n syncTree.syncPointTree_.foreachOnPath(path, (pathToSyncPoint, sp) => {\n const relativePath = newRelativePath(pathToSyncPoint, path);\n serverCache =\n serverCache || syncPointGetCompleteServerCache(sp, relativePath);\n });\n let syncPoint = syncTree.syncPointTree_.get(path);\n if (!syncPoint) {\n syncPoint = new SyncPoint();\n syncTree.syncPointTree_ = syncTree.syncPointTree_.set(path, syncPoint);\n }\n else {\n serverCache =\n serverCache || syncPointGetCompleteServerCache(syncPoint, newEmptyPath());\n }\n const serverCacheComplete = serverCache != null;\n const serverCacheNode = serverCacheComplete\n ? new CacheNode(serverCache, true, false)\n : null;\n const writesCache = writeTreeChildWrites(syncTree.pendingWriteTree_, query._path);\n const view = syncPointGetView(syncPoint, query, writesCache, serverCacheComplete ? serverCacheNode.getNode() : ChildrenNode.EMPTY_NODE, serverCacheComplete);\n return viewGetCompleteNode(view);\n}\n/**\n * A helper method that visits all descendant and ancestor SyncPoints, applying the operation.\n *\n * NOTES:\n * - Descendant SyncPoints will be visited first (since we raise events depth-first).\n *\n * - We call applyOperation() on each SyncPoint passing three things:\n * 1. A version of the Operation that has been made relative to the SyncPoint location.\n * 2. A WriteTreeRef of any writes we have cached at the SyncPoint location.\n * 3. A snapshot Node with cached server data, if we have it.\n *\n * - We concatenate all of the events returned by each SyncPoint and return the result.\n */\nfunction syncTreeApplyOperationToSyncPoints_(syncTree, operation) {\n return syncTreeApplyOperationHelper_(operation, syncTree.syncPointTree_, \n /*serverCache=*/ null, writeTreeChildWrites(syncTree.pendingWriteTree_, newEmptyPath()));\n}\n/**\n * Recursive helper for applyOperationToSyncPoints_\n */\nfunction syncTreeApplyOperationHelper_(operation, syncPointTree, serverCache, writesCache) {\n if (pathIsEmpty(operation.path)) {\n return syncTreeApplyOperationDescendantsHelper_(operation, syncPointTree, serverCache, writesCache);\n }\n else {\n const syncPoint = syncPointTree.get(newEmptyPath());\n // If we don't have cached server data, see if we can get it from this SyncPoint.\n if (serverCache == null && syncPoint != null) {\n serverCache = syncPointGetCompleteServerCache(syncPoint, newEmptyPath());\n }\n let events = [];\n const childName = pathGetFront(operation.path);\n const childOperation = operation.operationForChild(childName);\n const childTree = syncPointTree.children.get(childName);\n if (childTree && childOperation) {\n const childServerCache = serverCache\n ? serverCache.getImmediateChild(childName)\n : null;\n const childWritesCache = writeTreeRefChild(writesCache, childName);\n events = events.concat(syncTreeApplyOperationHelper_(childOperation, childTree, childServerCache, childWritesCache));\n }\n if (syncPoint) {\n events = events.concat(syncPointApplyOperation(syncPoint, operation, writesCache, serverCache));\n }\n return events;\n }\n}\n/**\n * Recursive helper for applyOperationToSyncPoints_\n */\nfunction syncTreeApplyOperationDescendantsHelper_(operation, syncPointTree, serverCache, writesCache) {\n const syncPoint = syncPointTree.get(newEmptyPath());\n // If we don't have cached server data, see if we can get it from this SyncPoint.\n if (serverCache == null && syncPoint != null) {\n serverCache = syncPointGetCompleteServerCache(syncPoint, newEmptyPath());\n }\n let events = [];\n syncPointTree.children.inorderTraversal((childName, childTree) => {\n const childServerCache = serverCache\n ? serverCache.getImmediateChild(childName)\n : null;\n const childWritesCache = writeTreeRefChild(writesCache, childName);\n const childOperation = operation.operationForChild(childName);\n if (childOperation) {\n events = events.concat(syncTreeApplyOperationDescendantsHelper_(childOperation, childTree, childServerCache, childWritesCache));\n }\n });\n if (syncPoint) {\n events = events.concat(syncPointApplyOperation(syncPoint, operation, writesCache, serverCache));\n }\n return events;\n}\nfunction syncTreeCreateListenerForView_(syncTree, view) {\n const query = view.query;\n const tag = syncTreeTagForQuery(syncTree, query);\n return {\n hashFn: () => {\n const cache = viewGetServerCache(view) || ChildrenNode.EMPTY_NODE;\n return cache.hash();\n },\n onComplete: (status) => {\n if (status === 'ok') {\n if (tag) {\n return syncTreeApplyTaggedListenComplete(syncTree, query._path, tag);\n }\n else {\n return syncTreeApplyListenComplete(syncTree, query._path);\n }\n }\n else {\n // If a listen failed, kill all of the listeners here, not just the one that triggered the error.\n // Note that this may need to be scoped to just this listener if we change permissions on filtered children\n const error = errorForServerCode(status, query);\n return syncTreeRemoveEventRegistration(syncTree, query, \n /*eventRegistration*/ null, error);\n }\n }\n };\n}\n/**\n * Return the tag associated with the given query.\n */\nfunction syncTreeTagForQuery(syncTree, query) {\n const queryKey = syncTreeMakeQueryKey_(query);\n return syncTree.queryToTagMap.get(queryKey);\n}\n/**\n * Given a query, computes a \"queryKey\" suitable for use in our queryToTagMap_.\n */\nfunction syncTreeMakeQueryKey_(query) {\n return query._path.toString() + '$' + query._queryIdentifier;\n}\n/**\n * Return the query associated with the given tag, if we have one\n */\nfunction syncTreeQueryKeyForTag_(syncTree, tag) {\n return syncTree.tagToQueryMap.get(tag);\n}\n/**\n * Given a queryKey (created by makeQueryKey), parse it back into a path and queryId.\n */\nfunction syncTreeParseQueryKey_(queryKey) {\n const splitIndex = queryKey.indexOf('$');\n assert(splitIndex !== -1 && splitIndex < queryKey.length - 1, 'Bad queryKey.');\n return {\n queryId: queryKey.substr(splitIndex + 1),\n path: new Path(queryKey.substr(0, splitIndex))\n };\n}\n/**\n * A helper method to apply tagged operations\n */\nfunction syncTreeApplyTaggedOperation_(syncTree, queryPath, operation) {\n const syncPoint = syncTree.syncPointTree_.get(queryPath);\n assert(syncPoint, \"Missing sync point for query tag that we're tracking\");\n const writesCache = writeTreeChildWrites(syncTree.pendingWriteTree_, queryPath);\n return syncPointApplyOperation(syncPoint, operation, writesCache, null);\n}\n/**\n * This collapses multiple unfiltered views into a single view, since we only need a single\n * listener for them.\n */\nfunction syncTreeCollectDistinctViewsForSubTree_(subtree) {\n return subtree.fold((relativePath, maybeChildSyncPoint, childMap) => {\n if (maybeChildSyncPoint && syncPointHasCompleteView(maybeChildSyncPoint)) {\n const completeView = syncPointGetCompleteView(maybeChildSyncPoint);\n return [completeView];\n }\n else {\n // No complete view here, flatten any deeper listens into an array\n let views = [];\n if (maybeChildSyncPoint) {\n views = syncPointGetQueryViews(maybeChildSyncPoint);\n }\n each(childMap, (_key, childViews) => {\n views = views.concat(childViews);\n });\n return views;\n }\n });\n}\n/**\n * Normalizes a query to a query we send the server for listening\n *\n * @returns The normalized query\n */\nfunction syncTreeQueryForListening_(query) {\n if (query._queryParams.loadsAllData() && !query._queryParams.isDefault()) {\n // We treat queries that load all data as default queries\n // Cast is necessary because ref() technically returns Firebase which is actually fb.api.Firebase which inherits\n // from Query\n return new (syncTreeGetReferenceConstructor())(query._repo, query._path);\n }\n else {\n return query;\n }\n}\nfunction syncTreeRemoveTags_(syncTree, queries) {\n for (let j = 0; j < queries.length; ++j) {\n const removedQuery = queries[j];\n if (!removedQuery._queryParams.loadsAllData()) {\n // We should have a tag for this\n const removedQueryKey = syncTreeMakeQueryKey_(removedQuery);\n const removedQueryTag = syncTree.queryToTagMap.get(removedQueryKey);\n syncTree.queryToTagMap.delete(removedQueryKey);\n syncTree.tagToQueryMap.delete(removedQueryTag);\n }\n }\n}\n/**\n * Static accessor for query tags.\n */\nfunction syncTreeGetNextQueryTag_() {\n return syncTreeNextQueryTag_++;\n}\n/**\n * For a given new listen, manage the de-duplication of outstanding subscriptions.\n *\n * @returns This method can return events to support synchronous data sources\n */\nfunction syncTreeSetupListener_(syncTree, query, view) {\n const path = query._path;\n const tag = syncTreeTagForQuery(syncTree, query);\n const listener = syncTreeCreateListenerForView_(syncTree, view);\n const events = syncTree.listenProvider_.startListening(syncTreeQueryForListening_(query), tag, listener.hashFn, listener.onComplete);\n const subtree = syncTree.syncPointTree_.subtree(path);\n // The root of this subtree has our query. We're here because we definitely need to send a listen for that, but we\n // may need to shadow other listens as well.\n if (tag) {\n assert(!syncPointHasCompleteView(subtree.value), \"If we're adding a query, it shouldn't be shadowed\");\n }\n else {\n // Shadow everything at or below this location, this is a default listener.\n const queriesToStop = subtree.fold((relativePath, maybeChildSyncPoint, childMap) => {\n if (!pathIsEmpty(relativePath) &&\n maybeChildSyncPoint &&\n syncPointHasCompleteView(maybeChildSyncPoint)) {\n return [syncPointGetCompleteView(maybeChildSyncPoint).query];\n }\n else {\n // No default listener here, flatten any deeper queries into an array\n let queries = [];\n if (maybeChildSyncPoint) {\n queries = queries.concat(syncPointGetQueryViews(maybeChildSyncPoint).map(view => view.query));\n }\n each(childMap, (_key, childQueries) => {\n queries = queries.concat(childQueries);\n });\n return queries;\n }\n });\n for (let i = 0; i < queriesToStop.length; ++i) {\n const queryToStop = queriesToStop[i];\n syncTree.listenProvider_.stopListening(syncTreeQueryForListening_(queryToStop), syncTreeTagForQuery(syncTree, queryToStop));\n }\n }\n return events;\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nclass ExistingValueProvider {\n constructor(node_) {\n this.node_ = node_;\n }\n getImmediateChild(childName) {\n const child = this.node_.getImmediateChild(childName);\n return new ExistingValueProvider(child);\n }\n node() {\n return this.node_;\n }\n}\nclass DeferredValueProvider {\n constructor(syncTree, path) {\n this.syncTree_ = syncTree;\n this.path_ = path;\n }\n getImmediateChild(childName) {\n const childPath = pathChild(this.path_, childName);\n return new DeferredValueProvider(this.syncTree_, childPath);\n }\n node() {\n return syncTreeCalcCompleteEventCache(this.syncTree_, this.path_);\n }\n}\n/**\n * Generate placeholders for deferred values.\n */\nconst generateWithValues = function (values) {\n values = values || {};\n values['timestamp'] = values['timestamp'] || new Date().getTime();\n return values;\n};\n/**\n * Value to use when firing local events. When writing server values, fire\n * local events with an approximate value, otherwise return value as-is.\n */\nconst resolveDeferredLeafValue = function (value, existingVal, serverValues) {\n if (!value || typeof value !== 'object') {\n return value;\n }\n assert('.sv' in value, 'Unexpected leaf node or priority contents');\n if (typeof value['.sv'] === 'string') {\n return resolveScalarDeferredValue(value['.sv'], existingVal, serverValues);\n }\n else if (typeof value['.sv'] === 'object') {\n return resolveComplexDeferredValue(value['.sv'], existingVal);\n }\n else {\n assert(false, 'Unexpected server value: ' + JSON.stringify(value, null, 2));\n }\n};\nconst resolveScalarDeferredValue = function (op, existing, serverValues) {\n switch (op) {\n case 'timestamp':\n return serverValues['timestamp'];\n default:\n assert(false, 'Unexpected server value: ' + op);\n }\n};\nconst resolveComplexDeferredValue = function (op, existing, unused) {\n if (!op.hasOwnProperty('increment')) {\n assert(false, 'Unexpected server value: ' + JSON.stringify(op, null, 2));\n }\n const delta = op['increment'];\n if (typeof delta !== 'number') {\n assert(false, 'Unexpected increment value: ' + delta);\n }\n const existingNode = existing.node();\n assert(existingNode !== null && typeof existingNode !== 'undefined', 'Expected ChildrenNode.EMPTY_NODE for nulls');\n // Incrementing a non-number sets the value to the incremented amount\n if (!existingNode.isLeafNode()) {\n return delta;\n }\n const leaf = existingNode;\n const existingVal = leaf.getValue();\n if (typeof existingVal !== 'number') {\n return delta;\n }\n // No need to do over/underflow arithmetic here because JS only handles floats under the covers\n return existingVal + delta;\n};\n/**\n * Recursively replace all deferred values and priorities in the tree with the\n * specified generated replacement values.\n * @param path - path to which write is relative\n * @param node - new data written at path\n * @param syncTree - current data\n */\nconst resolveDeferredValueTree = function (path, node, syncTree, serverValues) {\n return resolveDeferredValue(node, new DeferredValueProvider(syncTree, path), serverValues);\n};\n/**\n * Recursively replace all deferred values and priorities in the node with the\n * specified generated replacement values. If there are no server values in the node,\n * it'll be returned as-is.\n */\nconst resolveDeferredValueSnapshot = function (node, existing, serverValues) {\n return resolveDeferredValue(node, new ExistingValueProvider(existing), serverValues);\n};\nfunction resolveDeferredValue(node, existingVal, serverValues) {\n const rawPri = node.getPriority().val();\n const priority = resolveDeferredLeafValue(rawPri, existingVal.getImmediateChild('.priority'), serverValues);\n let newNode;\n if (node.isLeafNode()) {\n const leafNode = node;\n const value = resolveDeferredLeafValue(leafNode.getValue(), existingVal, serverValues);\n if (value !== leafNode.getValue() ||\n priority !== leafNode.getPriority().val()) {\n return new LeafNode(value, nodeFromJSON(priority));\n }\n else {\n return node;\n }\n }\n else {\n const childrenNode = node;\n newNode = childrenNode;\n if (priority !== childrenNode.getPriority().val()) {\n newNode = newNode.updatePriority(new LeafNode(priority));\n }\n childrenNode.forEachChild(PRIORITY_INDEX, (childName, childNode) => {\n const newChildNode = resolveDeferredValue(childNode, existingVal.getImmediateChild(childName), serverValues);\n if (newChildNode !== childNode) {\n newNode = newNode.updateImmediateChild(childName, newChildNode);\n }\n });\n return newNode;\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A light-weight tree, traversable by path. Nodes can have both values and children.\n * Nodes are not enumerated (by forEachChild) unless they have a value or non-empty\n * children.\n */\nclass Tree {\n /**\n * @param name - Optional name of the node.\n * @param parent - Optional parent node.\n * @param node - Optional node to wrap.\n */\n constructor(name = '', parent = null, node = { children: {}, childCount: 0 }) {\n this.name = name;\n this.parent = parent;\n this.node = node;\n }\n}\n/**\n * Returns a sub-Tree for the given path.\n *\n * @param pathObj - Path to look up.\n * @returns Tree for path.\n */\nfunction treeSubTree(tree, pathObj) {\n // TODO: Require pathObj to be Path?\n let path = pathObj instanceof Path ? pathObj : new Path(pathObj);\n let child = tree, next = pathGetFront(path);\n while (next !== null) {\n const childNode = safeGet(child.node.children, next) || {\n children: {},\n childCount: 0\n };\n child = new Tree(next, child, childNode);\n path = pathPopFront(path);\n next = pathGetFront(path);\n }\n return child;\n}\n/**\n * Returns the data associated with this tree node.\n *\n * @returns The data or null if no data exists.\n */\nfunction treeGetValue(tree) {\n return tree.node.value;\n}\n/**\n * Sets data to this tree node.\n *\n * @param value - Value to set.\n */\nfunction treeSetValue(tree, value) {\n tree.node.value = value;\n treeUpdateParents(tree);\n}\n/**\n * @returns Whether the tree has any children.\n */\nfunction treeHasChildren(tree) {\n return tree.node.childCount > 0;\n}\n/**\n * @returns Whether the tree is empty (no value or children).\n */\nfunction treeIsEmpty(tree) {\n return treeGetValue(tree) === undefined && !treeHasChildren(tree);\n}\n/**\n * Calls action for each child of this tree node.\n *\n * @param action - Action to be called for each child.\n */\nfunction treeForEachChild(tree, action) {\n each(tree.node.children, (child, childTree) => {\n action(new Tree(child, tree, childTree));\n });\n}\n/**\n * Does a depth-first traversal of this node's descendants, calling action for each one.\n *\n * @param action - Action to be called for each child.\n * @param includeSelf - Whether to call action on this node as well. Defaults to\n * false.\n * @param childrenFirst - Whether to call action on children before calling it on\n * parent.\n */\nfunction treeForEachDescendant(tree, action, includeSelf, childrenFirst) {\n if (includeSelf && !childrenFirst) {\n action(tree);\n }\n treeForEachChild(tree, child => {\n treeForEachDescendant(child, action, true, childrenFirst);\n });\n if (includeSelf && childrenFirst) {\n action(tree);\n }\n}\n/**\n * Calls action on each ancestor node.\n *\n * @param action - Action to be called on each parent; return\n * true to abort.\n * @param includeSelf - Whether to call action on this node as well.\n * @returns true if the action callback returned true.\n */\nfunction treeForEachAncestor(tree, action, includeSelf) {\n let node = includeSelf ? tree : tree.parent;\n while (node !== null) {\n if (action(node)) {\n return true;\n }\n node = node.parent;\n }\n return false;\n}\n/**\n * @returns The path of this tree node, as a Path.\n */\nfunction treeGetPath(tree) {\n return new Path(tree.parent === null\n ? tree.name\n : treeGetPath(tree.parent) + '/' + tree.name);\n}\n/**\n * Adds or removes this child from its parent based on whether it's empty or not.\n */\nfunction treeUpdateParents(tree) {\n if (tree.parent !== null) {\n treeUpdateChild(tree.parent, tree.name, tree);\n }\n}\n/**\n * Adds or removes the passed child to this tree node, depending on whether it's empty.\n *\n * @param childName - The name of the child to update.\n * @param child - The child to update.\n */\nfunction treeUpdateChild(tree, childName, child) {\n const childEmpty = treeIsEmpty(child);\n const childExists = contains(tree.node.children, childName);\n if (childEmpty && childExists) {\n delete tree.node.children[childName];\n tree.node.childCount--;\n treeUpdateParents(tree);\n }\n else if (!childEmpty && !childExists) {\n tree.node.children[childName] = child.node;\n tree.node.childCount++;\n treeUpdateParents(tree);\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * True for invalid Firebase keys\n */\nconst INVALID_KEY_REGEX_ = /[\\[\\].#$\\/\\u0000-\\u001F\\u007F]/;\n/**\n * True for invalid Firebase paths.\n * Allows '/' in paths.\n */\nconst INVALID_PATH_REGEX_ = /[\\[\\].#$\\u0000-\\u001F\\u007F]/;\n/**\n * Maximum number of characters to allow in leaf value\n */\nconst MAX_LEAF_SIZE_ = 10 * 1024 * 1024;\nconst isValidKey = function (key) {\n return (typeof key === 'string' && key.length !== 0 && !INVALID_KEY_REGEX_.test(key));\n};\nconst isValidPathString = function (pathString) {\n return (typeof pathString === 'string' &&\n pathString.length !== 0 &&\n !INVALID_PATH_REGEX_.test(pathString));\n};\nconst isValidRootPathString = function (pathString) {\n if (pathString) {\n // Allow '/.info/' at the beginning.\n pathString = pathString.replace(/^\\/*\\.info(\\/|$)/, '/');\n }\n return isValidPathString(pathString);\n};\nconst isValidPriority = function (priority) {\n return (priority === null ||\n typeof priority === 'string' ||\n (typeof priority === 'number' && !isInvalidJSONNumber(priority)) ||\n (priority &&\n typeof priority === 'object' &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n contains(priority, '.sv')));\n};\n/**\n * Pre-validate a datum passed as an argument to Firebase function.\n */\nconst validateFirebaseDataArg = function (fnName, value, path, optional) {\n if (optional && value === undefined) {\n return;\n }\n validateFirebaseData(errorPrefix(fnName, 'value'), value, path);\n};\n/**\n * Validate a data object client-side before sending to server.\n */\nconst validateFirebaseData = function (errorPrefix, data, path_) {\n const path = path_ instanceof Path ? new ValidationPath(path_, errorPrefix) : path_;\n if (data === undefined) {\n throw new Error(errorPrefix + 'contains undefined ' + validationPathToErrorString(path));\n }\n if (typeof data === 'function') {\n throw new Error(errorPrefix +\n 'contains a function ' +\n validationPathToErrorString(path) +\n ' with contents = ' +\n data.toString());\n }\n if (isInvalidJSONNumber(data)) {\n throw new Error(errorPrefix +\n 'contains ' +\n data.toString() +\n ' ' +\n validationPathToErrorString(path));\n }\n // Check max leaf size, but try to avoid the utf8 conversion if we can.\n if (typeof data === 'string' &&\n data.length > MAX_LEAF_SIZE_ / 3 &&\n stringLength(data) > MAX_LEAF_SIZE_) {\n throw new Error(errorPrefix +\n 'contains a string greater than ' +\n MAX_LEAF_SIZE_ +\n ' utf8 bytes ' +\n validationPathToErrorString(path) +\n \" ('\" +\n data.substring(0, 50) +\n \"...')\");\n }\n // TODO = Perf = Consider combining the recursive validation of keys into NodeFromJSON\n // to save extra walking of large objects.\n if (data && typeof data === 'object') {\n let hasDotValue = false;\n let hasActualChild = false;\n each(data, (key, value) => {\n if (key === '.value') {\n hasDotValue = true;\n }\n else if (key !== '.priority' && key !== '.sv') {\n hasActualChild = true;\n if (!isValidKey(key)) {\n throw new Error(errorPrefix +\n ' contains an invalid key (' +\n key +\n ') ' +\n validationPathToErrorString(path) +\n '. Keys must be non-empty strings ' +\n 'and can\\'t contain \".\", \"#\", \"$\", \"/\", \"[\", or \"]\"');\n }\n }\n validationPathPush(path, key);\n validateFirebaseData(errorPrefix, value, path);\n validationPathPop(path);\n });\n if (hasDotValue && hasActualChild) {\n throw new Error(errorPrefix +\n ' contains \".value\" child ' +\n validationPathToErrorString(path) +\n ' in addition to actual children.');\n }\n }\n};\n/**\n * Pre-validate paths passed in the firebase function.\n */\nconst validateFirebaseMergePaths = function (errorPrefix, mergePaths) {\n let i, curPath;\n for (i = 0; i < mergePaths.length; i++) {\n curPath = mergePaths[i];\n const keys = pathSlice(curPath);\n for (let j = 0; j < keys.length; j++) {\n if (keys[j] === '.priority' && j === keys.length - 1) ;\n else if (!isValidKey(keys[j])) {\n throw new Error(errorPrefix +\n 'contains an invalid key (' +\n keys[j] +\n ') in path ' +\n curPath.toString() +\n '. Keys must be non-empty strings ' +\n 'and can\\'t contain \".\", \"#\", \"$\", \"/\", \"[\", or \"]\"');\n }\n }\n }\n // Check that update keys are not descendants of each other.\n // We rely on the property that sorting guarantees that ancestors come\n // right before descendants.\n mergePaths.sort(pathCompare);\n let prevPath = null;\n for (i = 0; i < mergePaths.length; i++) {\n curPath = mergePaths[i];\n if (prevPath !== null && pathContains(prevPath, curPath)) {\n throw new Error(errorPrefix +\n 'contains a path ' +\n prevPath.toString() +\n ' that is ancestor of another path ' +\n curPath.toString());\n }\n prevPath = curPath;\n }\n};\n/**\n * pre-validate an object passed as an argument to firebase function (\n * must be an object - e.g. for firebase.update()).\n */\nconst validateFirebaseMergeDataArg = function (fnName, data, path, optional) {\n if (optional && data === undefined) {\n return;\n }\n const errorPrefix$1 = errorPrefix(fnName, 'values');\n if (!(data && typeof data === 'object') || Array.isArray(data)) {\n throw new Error(errorPrefix$1 + ' must be an object containing the children to replace.');\n }\n const mergePaths = [];\n each(data, (key, value) => {\n const curPath = new Path(key);\n validateFirebaseData(errorPrefix$1, value, pathChild(path, curPath));\n if (pathGetBack(curPath) === '.priority') {\n if (!isValidPriority(value)) {\n throw new Error(errorPrefix$1 +\n \"contains an invalid value for '\" +\n curPath.toString() +\n \"', which must be a valid \" +\n 'Firebase priority (a string, finite number, server value, or null).');\n }\n }\n mergePaths.push(curPath);\n });\n validateFirebaseMergePaths(errorPrefix$1, mergePaths);\n};\nconst validatePriority = function (fnName, priority, optional) {\n if (optional && priority === undefined) {\n return;\n }\n if (isInvalidJSONNumber(priority)) {\n throw new Error(errorPrefix(fnName, 'priority') +\n 'is ' +\n priority.toString() +\n ', but must be a valid Firebase priority (a string, finite number, ' +\n 'server value, or null).');\n }\n // Special case to allow importing data with a .sv.\n if (!isValidPriority(priority)) {\n throw new Error(errorPrefix(fnName, 'priority') +\n 'must be a valid Firebase priority ' +\n '(a string, finite number, server value, or null).');\n }\n};\nconst validateKey = function (fnName, argumentName, key, optional) {\n if (optional && key === undefined) {\n return;\n }\n if (!isValidKey(key)) {\n throw new Error(errorPrefix(fnName, argumentName) +\n 'was an invalid key = \"' +\n key +\n '\". Firebase keys must be non-empty strings and ' +\n 'can\\'t contain \".\", \"#\", \"$\", \"/\", \"[\", or \"]\").');\n }\n};\n/**\n * @internal\n */\nconst validatePathString = function (fnName, argumentName, pathString, optional) {\n if (optional && pathString === undefined) {\n return;\n }\n if (!isValidPathString(pathString)) {\n throw new Error(errorPrefix(fnName, argumentName) +\n 'was an invalid path = \"' +\n pathString +\n '\". Paths must be non-empty strings and ' +\n 'can\\'t contain \".\", \"#\", \"$\", \"[\", or \"]\"');\n }\n};\nconst validateRootPathString = function (fnName, argumentName, pathString, optional) {\n if (pathString) {\n // Allow '/.info/' at the beginning.\n pathString = pathString.replace(/^\\/*\\.info(\\/|$)/, '/');\n }\n validatePathString(fnName, argumentName, pathString, optional);\n};\n/**\n * @internal\n */\nconst validateWritablePath = function (fnName, path) {\n if (pathGetFront(path) === '.info') {\n throw new Error(fnName + \" failed = Can't modify data under /.info/\");\n }\n};\nconst validateUrl = function (fnName, parsedUrl) {\n // TODO = Validate server better.\n const pathString = parsedUrl.path.toString();\n if (!(typeof parsedUrl.repoInfo.host === 'string') ||\n parsedUrl.repoInfo.host.length === 0 ||\n (!isValidKey(parsedUrl.repoInfo.namespace) &&\n parsedUrl.repoInfo.host.split(':')[0] !== 'localhost') ||\n (pathString.length !== 0 && !isValidRootPathString(pathString))) {\n throw new Error(errorPrefix(fnName, 'url') +\n 'must be a valid firebase URL and ' +\n 'the path can\\'t contain \".\", \"#\", \"$\", \"[\", or \"]\".');\n }\n};\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * The event queue serves a few purposes:\n * 1. It ensures we maintain event order in the face of event callbacks doing operations that result in more\n * events being queued.\n * 2. raiseQueuedEvents() handles being called reentrantly nicely. That is, if in the course of raising events,\n * raiseQueuedEvents() is called again, the \"inner\" call will pick up raising events where the \"outer\" call\n * left off, ensuring that the events are still raised synchronously and in order.\n * 3. You can use raiseEventsAtPath and raiseEventsForChangedPath to ensure only relevant previously-queued\n * events are raised synchronously.\n *\n * NOTE: This can all go away if/when we move to async events.\n *\n */\nclass EventQueue {\n constructor() {\n this.eventLists_ = [];\n /**\n * Tracks recursion depth of raiseQueuedEvents_, for debugging purposes.\n */\n this.recursionDepth_ = 0;\n }\n}\n/**\n * @param eventDataList - The new events to queue.\n */\nfunction eventQueueQueueEvents(eventQueue, eventDataList) {\n // We group events by path, storing them in a single EventList, to make it easier to skip over them quickly.\n let currList = null;\n for (let i = 0; i < eventDataList.length; i++) {\n const data = eventDataList[i];\n const path = data.getPath();\n if (currList !== null && !pathEquals(path, currList.path)) {\n eventQueue.eventLists_.push(currList);\n currList = null;\n }\n if (currList === null) {\n currList = { events: [], path };\n }\n currList.events.push(data);\n }\n if (currList) {\n eventQueue.eventLists_.push(currList);\n }\n}\n/**\n * Queues the specified events and synchronously raises all events (including previously queued ones)\n * for the specified path.\n *\n * It is assumed that the new events are all for the specified path.\n *\n * @param path - The path to raise events for.\n * @param eventDataList - The new events to raise.\n */\nfunction eventQueueRaiseEventsAtPath(eventQueue, path, eventDataList) {\n eventQueueQueueEvents(eventQueue, eventDataList);\n eventQueueRaiseQueuedEventsMatchingPredicate(eventQueue, eventPath => pathEquals(eventPath, path));\n}\n/**\n * Queues the specified events and synchronously raises all events (including previously queued ones) for\n * locations related to the specified change path (i.e. all ancestors and descendants).\n *\n * It is assumed that the new events are all related (ancestor or descendant) to the specified path.\n *\n * @param changedPath - The path to raise events for.\n * @param eventDataList - The events to raise\n */\nfunction eventQueueRaiseEventsForChangedPath(eventQueue, changedPath, eventDataList) {\n eventQueueQueueEvents(eventQueue, eventDataList);\n eventQueueRaiseQueuedEventsMatchingPredicate(eventQueue, eventPath => pathContains(eventPath, changedPath) ||\n pathContains(changedPath, eventPath));\n}\nfunction eventQueueRaiseQueuedEventsMatchingPredicate(eventQueue, predicate) {\n eventQueue.recursionDepth_++;\n let sentAll = true;\n for (let i = 0; i < eventQueue.eventLists_.length; i++) {\n const eventList = eventQueue.eventLists_[i];\n if (eventList) {\n const eventPath = eventList.path;\n if (predicate(eventPath)) {\n eventListRaise(eventQueue.eventLists_[i]);\n eventQueue.eventLists_[i] = null;\n }\n else {\n sentAll = false;\n }\n }\n }\n if (sentAll) {\n eventQueue.eventLists_ = [];\n }\n eventQueue.recursionDepth_--;\n}\n/**\n * Iterates through the list and raises each event\n */\nfunction eventListRaise(eventList) {\n for (let i = 0; i < eventList.events.length; i++) {\n const eventData = eventList.events[i];\n if (eventData !== null) {\n eventList.events[i] = null;\n const eventFn = eventData.getEventRunner();\n if (logger) {\n log('event: ' + eventData.toString());\n }\n exceptionGuard(eventFn);\n }\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst INTERRUPT_REASON = 'repo_interrupt';\n/**\n * If a transaction does not succeed after 25 retries, we abort it. Among other\n * things this ensure that if there's ever a bug causing a mismatch between\n * client / server hashes for some data, we won't retry indefinitely.\n */\nconst MAX_TRANSACTION_RETRIES = 25;\n/**\n * A connection to a single data repository.\n */\nclass Repo {\n constructor(repoInfo_, forceRestClient_, authTokenProvider_, appCheckProvider_) {\n this.repoInfo_ = repoInfo_;\n this.forceRestClient_ = forceRestClient_;\n this.authTokenProvider_ = authTokenProvider_;\n this.appCheckProvider_ = appCheckProvider_;\n this.dataUpdateCount = 0;\n this.statsListener_ = null;\n this.eventQueue_ = new EventQueue();\n this.nextWriteId_ = 1;\n this.interceptServerDataCallback_ = null;\n /** A list of data pieces and paths to be set when this client disconnects. */\n this.onDisconnect_ = newSparseSnapshotTree();\n /** Stores queues of outstanding transactions for Firebase locations. */\n this.transactionQueueTree_ = new Tree();\n // TODO: This should be @private but it's used by test_access.js and internal.js\n this.persistentConnection_ = null;\n // This key is intentionally not updated if RepoInfo is later changed or replaced\n this.key = this.repoInfo_.toURLString();\n }\n /**\n * @returns The URL corresponding to the root of this Firebase.\n */\n toString() {\n return ((this.repoInfo_.secure ? 'https://' : 'http://') + this.repoInfo_.host);\n }\n}\nfunction repoStart(repo, appId, authOverride) {\n repo.stats_ = statsManagerGetCollection(repo.repoInfo_);\n if (repo.forceRestClient_ || beingCrawled()) {\n repo.server_ = new ReadonlyRestClient(repo.repoInfo_, (pathString, data, isMerge, tag) => {\n repoOnDataUpdate(repo, pathString, data, isMerge, tag);\n }, repo.authTokenProvider_, repo.appCheckProvider_);\n // Minor hack: Fire onConnect immediately, since there's no actual connection.\n setTimeout(() => repoOnConnectStatus(repo, /* connectStatus= */ true), 0);\n }\n else {\n // Validate authOverride\n if (typeof authOverride !== 'undefined' && authOverride !== null) {\n if (typeof authOverride !== 'object') {\n throw new Error('Only objects are supported for option databaseAuthVariableOverride');\n }\n try {\n stringify(authOverride);\n }\n catch (e) {\n throw new Error('Invalid authOverride provided: ' + e);\n }\n }\n repo.persistentConnection_ = new PersistentConnection(repo.repoInfo_, appId, (pathString, data, isMerge, tag) => {\n repoOnDataUpdate(repo, pathString, data, isMerge, tag);\n }, (connectStatus) => {\n repoOnConnectStatus(repo, connectStatus);\n }, (updates) => {\n repoOnServerInfoUpdate(repo, updates);\n }, repo.authTokenProvider_, repo.appCheckProvider_, authOverride);\n repo.server_ = repo.persistentConnection_;\n }\n repo.authTokenProvider_.addTokenChangeListener(token => {\n repo.server_.refreshAuthToken(token);\n });\n repo.appCheckProvider_.addTokenChangeListener(result => {\n repo.server_.refreshAppCheckToken(result.token);\n });\n // In the case of multiple Repos for the same repoInfo (i.e. there are multiple Firebase.Contexts being used),\n // we only want to create one StatsReporter. As such, we'll report stats over the first Repo created.\n repo.statsReporter_ = statsManagerGetOrCreateReporter(repo.repoInfo_, () => new StatsReporter(repo.stats_, repo.server_));\n // Used for .info.\n repo.infoData_ = new SnapshotHolder();\n repo.infoSyncTree_ = new SyncTree({\n startListening: (query, tag, currentHashFn, onComplete) => {\n let infoEvents = [];\n const node = repo.infoData_.getNode(query._path);\n // This is possibly a hack, but we have different semantics for .info endpoints. We don't raise null events\n // on initial data...\n if (!node.isEmpty()) {\n infoEvents = syncTreeApplyServerOverwrite(repo.infoSyncTree_, query._path, node);\n setTimeout(() => {\n onComplete('ok');\n }, 0);\n }\n return infoEvents;\n },\n stopListening: () => { }\n });\n repoUpdateInfo(repo, 'connected', false);\n repo.serverSyncTree_ = new SyncTree({\n startListening: (query, tag, currentHashFn, onComplete) => {\n repo.server_.listen(query, currentHashFn, tag, (status, data) => {\n const events = onComplete(status, data);\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, query._path, events);\n });\n // No synchronous events for network-backed sync trees\n return [];\n },\n stopListening: (query, tag) => {\n repo.server_.unlisten(query, tag);\n }\n });\n}\n/**\n * @returns The time in milliseconds, taking the server offset into account if we have one.\n */\nfunction repoServerTime(repo) {\n const offsetNode = repo.infoData_.getNode(new Path('.info/serverTimeOffset'));\n const offset = offsetNode.val() || 0;\n return new Date().getTime() + offset;\n}\n/**\n * Generate ServerValues using some variables from the repo object.\n */\nfunction repoGenerateServerValues(repo) {\n return generateWithValues({\n timestamp: repoServerTime(repo)\n });\n}\n/**\n * Called by realtime when we get new messages from the server.\n */\nfunction repoOnDataUpdate(repo, pathString, data, isMerge, tag) {\n // For testing.\n repo.dataUpdateCount++;\n const path = new Path(pathString);\n data = repo.interceptServerDataCallback_\n ? repo.interceptServerDataCallback_(pathString, data)\n : data;\n let events = [];\n if (tag) {\n if (isMerge) {\n const taggedChildren = map(data, (raw) => nodeFromJSON(raw));\n events = syncTreeApplyTaggedQueryMerge(repo.serverSyncTree_, path, taggedChildren, tag);\n }\n else {\n const taggedSnap = nodeFromJSON(data);\n events = syncTreeApplyTaggedQueryOverwrite(repo.serverSyncTree_, path, taggedSnap, tag);\n }\n }\n else if (isMerge) {\n const changedChildren = map(data, (raw) => nodeFromJSON(raw));\n events = syncTreeApplyServerMerge(repo.serverSyncTree_, path, changedChildren);\n }\n else {\n const snap = nodeFromJSON(data);\n events = syncTreeApplyServerOverwrite(repo.serverSyncTree_, path, snap);\n }\n let affectedPath = path;\n if (events.length > 0) {\n // Since we have a listener outstanding for each transaction, receiving any events\n // is a proxy for some change having occurred.\n affectedPath = repoRerunTransactions(repo, path);\n }\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, affectedPath, events);\n}\nfunction repoOnConnectStatus(repo, connectStatus) {\n repoUpdateInfo(repo, 'connected', connectStatus);\n if (connectStatus === false) {\n repoRunOnDisconnectEvents(repo);\n }\n}\nfunction repoOnServerInfoUpdate(repo, updates) {\n each(updates, (key, value) => {\n repoUpdateInfo(repo, key, value);\n });\n}\nfunction repoUpdateInfo(repo, pathString, value) {\n const path = new Path('/.info/' + pathString);\n const newNode = nodeFromJSON(value);\n repo.infoData_.updateSnapshot(path, newNode);\n const events = syncTreeApplyServerOverwrite(repo.infoSyncTree_, path, newNode);\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, path, events);\n}\nfunction repoGetNextWriteId(repo) {\n return repo.nextWriteId_++;\n}\n/**\n * The purpose of `getValue` is to return the latest known value\n * satisfying `query`.\n *\n * This method will first check for in-memory cached values\n * belonging to active listeners. If they are found, such values\n * are considered to be the most up-to-date.\n *\n * If the client is not connected, this method will wait until the\n * repo has established a connection and then request the value for `query`.\n * If the client is not able to retrieve the query result for another reason,\n * it reports an error.\n *\n * @param query - The query to surface a value for.\n */\nfunction repoGetValue(repo, query, eventRegistration) {\n // Only active queries are cached. There is no persisted cache.\n const cached = syncTreeGetServerValue(repo.serverSyncTree_, query);\n if (cached != null) {\n return Promise.resolve(cached);\n }\n return repo.server_.get(query).then(payload => {\n const node = nodeFromJSON(payload).withIndex(query._queryParams.getIndex());\n /**\n * Below we simulate the actions of an `onlyOnce` `onValue()` event where:\n * Add an event registration,\n * Update data at the path,\n * Raise any events,\n * Cleanup the SyncTree\n */\n syncTreeAddEventRegistration(repo.serverSyncTree_, query, eventRegistration, true);\n let events;\n if (query._queryParams.loadsAllData()) {\n events = syncTreeApplyServerOverwrite(repo.serverSyncTree_, query._path, node);\n }\n else {\n const tag = syncTreeTagForQuery(repo.serverSyncTree_, query);\n events = syncTreeApplyTaggedQueryOverwrite(repo.serverSyncTree_, query._path, node, tag);\n }\n /*\n * We need to raise events in the scenario where `get()` is called at a parent path, and\n * while the `get()` is pending, `onValue` is called at a child location. While get() is waiting\n * for the data, `onValue` will register a new event. Then, get() will come back, and update the syncTree\n * and its corresponding serverCache, including the child location where `onValue` is called. Then,\n * `onValue` will receive the event from the server, but look at the syncTree and see that the data received\n * from the server is already at the SyncPoint, and so the `onValue` callback will never get fired.\n * Calling `eventQueueRaiseEventsForChangedPath()` is the correct way to propagate the events and\n * ensure the corresponding child events will get fired.\n */\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, query._path, events);\n syncTreeRemoveEventRegistration(repo.serverSyncTree_, query, eventRegistration, null, true);\n return node;\n }, err => {\n repoLog(repo, 'get for query ' + stringify(query) + ' failed: ' + err);\n return Promise.reject(new Error(err));\n });\n}\nfunction repoSetWithPriority(repo, path, newVal, newPriority, onComplete) {\n repoLog(repo, 'set', {\n path: path.toString(),\n value: newVal,\n priority: newPriority\n });\n // TODO: Optimize this behavior to either (a) store flag to skip resolving where possible and / or\n // (b) store unresolved paths on JSON parse\n const serverValues = repoGenerateServerValues(repo);\n const newNodeUnresolved = nodeFromJSON(newVal, newPriority);\n const existing = syncTreeCalcCompleteEventCache(repo.serverSyncTree_, path);\n const newNode = resolveDeferredValueSnapshot(newNodeUnresolved, existing, serverValues);\n const writeId = repoGetNextWriteId(repo);\n const events = syncTreeApplyUserOverwrite(repo.serverSyncTree_, path, newNode, writeId, true);\n eventQueueQueueEvents(repo.eventQueue_, events);\n repo.server_.put(path.toString(), newNodeUnresolved.val(/*export=*/ true), (status, errorReason) => {\n const success = status === 'ok';\n if (!success) {\n warn('set at ' + path + ' failed: ' + status);\n }\n const clearEvents = syncTreeAckUserWrite(repo.serverSyncTree_, writeId, !success);\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, path, clearEvents);\n repoCallOnCompleteCallback(repo, onComplete, status, errorReason);\n });\n const affectedPath = repoAbortTransactions(repo, path);\n repoRerunTransactions(repo, affectedPath);\n // We queued the events above, so just flush the queue here\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, affectedPath, []);\n}\nfunction repoUpdate(repo, path, childrenToMerge, onComplete) {\n repoLog(repo, 'update', { path: path.toString(), value: childrenToMerge });\n // Start with our existing data and merge each child into it.\n let empty = true;\n const serverValues = repoGenerateServerValues(repo);\n const changedChildren = {};\n each(childrenToMerge, (changedKey, changedValue) => {\n empty = false;\n changedChildren[changedKey] = resolveDeferredValueTree(pathChild(path, changedKey), nodeFromJSON(changedValue), repo.serverSyncTree_, serverValues);\n });\n if (!empty) {\n const writeId = repoGetNextWriteId(repo);\n const events = syncTreeApplyUserMerge(repo.serverSyncTree_, path, changedChildren, writeId);\n eventQueueQueueEvents(repo.eventQueue_, events);\n repo.server_.merge(path.toString(), childrenToMerge, (status, errorReason) => {\n const success = status === 'ok';\n if (!success) {\n warn('update at ' + path + ' failed: ' + status);\n }\n const clearEvents = syncTreeAckUserWrite(repo.serverSyncTree_, writeId, !success);\n const affectedPath = clearEvents.length > 0 ? repoRerunTransactions(repo, path) : path;\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, affectedPath, clearEvents);\n repoCallOnCompleteCallback(repo, onComplete, status, errorReason);\n });\n each(childrenToMerge, (changedPath) => {\n const affectedPath = repoAbortTransactions(repo, pathChild(path, changedPath));\n repoRerunTransactions(repo, affectedPath);\n });\n // We queued the events above, so just flush the queue here\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, path, []);\n }\n else {\n log(\"update() called with empty data. Don't do anything.\");\n repoCallOnCompleteCallback(repo, onComplete, 'ok', undefined);\n }\n}\n/**\n * Applies all of the changes stored up in the onDisconnect_ tree.\n */\nfunction repoRunOnDisconnectEvents(repo) {\n repoLog(repo, 'onDisconnectEvents');\n const serverValues = repoGenerateServerValues(repo);\n const resolvedOnDisconnectTree = newSparseSnapshotTree();\n sparseSnapshotTreeForEachTree(repo.onDisconnect_, newEmptyPath(), (path, node) => {\n const resolved = resolveDeferredValueTree(path, node, repo.serverSyncTree_, serverValues);\n sparseSnapshotTreeRemember(resolvedOnDisconnectTree, path, resolved);\n });\n let events = [];\n sparseSnapshotTreeForEachTree(resolvedOnDisconnectTree, newEmptyPath(), (path, snap) => {\n events = events.concat(syncTreeApplyServerOverwrite(repo.serverSyncTree_, path, snap));\n const affectedPath = repoAbortTransactions(repo, path);\n repoRerunTransactions(repo, affectedPath);\n });\n repo.onDisconnect_ = newSparseSnapshotTree();\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, newEmptyPath(), events);\n}\nfunction repoOnDisconnectCancel(repo, path, onComplete) {\n repo.server_.onDisconnectCancel(path.toString(), (status, errorReason) => {\n if (status === 'ok') {\n sparseSnapshotTreeForget(repo.onDisconnect_, path);\n }\n repoCallOnCompleteCallback(repo, onComplete, status, errorReason);\n });\n}\nfunction repoOnDisconnectSet(repo, path, value, onComplete) {\n const newNode = nodeFromJSON(value);\n repo.server_.onDisconnectPut(path.toString(), newNode.val(/*export=*/ true), (status, errorReason) => {\n if (status === 'ok') {\n sparseSnapshotTreeRemember(repo.onDisconnect_, path, newNode);\n }\n repoCallOnCompleteCallback(repo, onComplete, status, errorReason);\n });\n}\nfunction repoOnDisconnectSetWithPriority(repo, path, value, priority, onComplete) {\n const newNode = nodeFromJSON(value, priority);\n repo.server_.onDisconnectPut(path.toString(), newNode.val(/*export=*/ true), (status, errorReason) => {\n if (status === 'ok') {\n sparseSnapshotTreeRemember(repo.onDisconnect_, path, newNode);\n }\n repoCallOnCompleteCallback(repo, onComplete, status, errorReason);\n });\n}\nfunction repoOnDisconnectUpdate(repo, path, childrenToMerge, onComplete) {\n if (isEmpty(childrenToMerge)) {\n log(\"onDisconnect().update() called with empty data. Don't do anything.\");\n repoCallOnCompleteCallback(repo, onComplete, 'ok', undefined);\n return;\n }\n repo.server_.onDisconnectMerge(path.toString(), childrenToMerge, (status, errorReason) => {\n if (status === 'ok') {\n each(childrenToMerge, (childName, childNode) => {\n const newChildNode = nodeFromJSON(childNode);\n sparseSnapshotTreeRemember(repo.onDisconnect_, pathChild(path, childName), newChildNode);\n });\n }\n repoCallOnCompleteCallback(repo, onComplete, status, errorReason);\n });\n}\nfunction repoAddEventCallbackForQuery(repo, query, eventRegistration) {\n let events;\n if (pathGetFront(query._path) === '.info') {\n events = syncTreeAddEventRegistration(repo.infoSyncTree_, query, eventRegistration);\n }\n else {\n events = syncTreeAddEventRegistration(repo.serverSyncTree_, query, eventRegistration);\n }\n eventQueueRaiseEventsAtPath(repo.eventQueue_, query._path, events);\n}\nfunction repoRemoveEventCallbackForQuery(repo, query, eventRegistration) {\n // These are guaranteed not to raise events, since we're not passing in a cancelError. However, we can future-proof\n // a little bit by handling the return values anyways.\n let events;\n if (pathGetFront(query._path) === '.info') {\n events = syncTreeRemoveEventRegistration(repo.infoSyncTree_, query, eventRegistration);\n }\n else {\n events = syncTreeRemoveEventRegistration(repo.serverSyncTree_, query, eventRegistration);\n }\n eventQueueRaiseEventsAtPath(repo.eventQueue_, query._path, events);\n}\nfunction repoInterrupt(repo) {\n if (repo.persistentConnection_) {\n repo.persistentConnection_.interrupt(INTERRUPT_REASON);\n }\n}\nfunction repoResume(repo) {\n if (repo.persistentConnection_) {\n repo.persistentConnection_.resume(INTERRUPT_REASON);\n }\n}\nfunction repoLog(repo, ...varArgs) {\n let prefix = '';\n if (repo.persistentConnection_) {\n prefix = repo.persistentConnection_.id + ':';\n }\n log(prefix, ...varArgs);\n}\nfunction repoCallOnCompleteCallback(repo, callback, status, errorReason) {\n if (callback) {\n exceptionGuard(() => {\n if (status === 'ok') {\n callback(null);\n }\n else {\n const code = (status || 'error').toUpperCase();\n let message = code;\n if (errorReason) {\n message += ': ' + errorReason;\n }\n const error = new Error(message);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n error.code = code;\n callback(error);\n }\n });\n }\n}\n/**\n * Creates a new transaction, adds it to the transactions we're tracking, and\n * sends it to the server if possible.\n *\n * @param path - Path at which to do transaction.\n * @param transactionUpdate - Update callback.\n * @param onComplete - Completion callback.\n * @param unwatcher - Function that will be called when the transaction no longer\n * need data updates for `path`.\n * @param applyLocally - Whether or not to make intermediate results visible\n */\nfunction repoStartTransaction(repo, path, transactionUpdate, onComplete, unwatcher, applyLocally) {\n repoLog(repo, 'transaction on ' + path);\n // Initialize transaction.\n const transaction = {\n path,\n update: transactionUpdate,\n onComplete,\n // One of TransactionStatus enums.\n status: null,\n // Used when combining transactions at different locations to figure out\n // which one goes first.\n order: LUIDGenerator(),\n // Whether to raise local events for this transaction.\n applyLocally,\n // Count of how many times we've retried the transaction.\n retryCount: 0,\n // Function to call to clean up our .on() listener.\n unwatcher,\n // Stores why a transaction was aborted.\n abortReason: null,\n currentWriteId: null,\n currentInputSnapshot: null,\n currentOutputSnapshotRaw: null,\n currentOutputSnapshotResolved: null\n };\n // Run transaction initially.\n const currentState = repoGetLatestState(repo, path, undefined);\n transaction.currentInputSnapshot = currentState;\n const newVal = transaction.update(currentState.val());\n if (newVal === undefined) {\n // Abort transaction.\n transaction.unwatcher();\n transaction.currentOutputSnapshotRaw = null;\n transaction.currentOutputSnapshotResolved = null;\n if (transaction.onComplete) {\n transaction.onComplete(null, false, transaction.currentInputSnapshot);\n }\n }\n else {\n validateFirebaseData('transaction failed: Data returned ', newVal, transaction.path);\n // Mark as run and add to our queue.\n transaction.status = 0 /* TransactionStatus.RUN */;\n const queueNode = treeSubTree(repo.transactionQueueTree_, path);\n const nodeQueue = treeGetValue(queueNode) || [];\n nodeQueue.push(transaction);\n treeSetValue(queueNode, nodeQueue);\n // Update visibleData and raise events\n // Note: We intentionally raise events after updating all of our\n // transaction state, since the user could start new transactions from the\n // event callbacks.\n let priorityForNode;\n if (typeof newVal === 'object' &&\n newVal !== null &&\n contains(newVal, '.priority')) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n priorityForNode = safeGet(newVal, '.priority');\n assert(isValidPriority(priorityForNode), 'Invalid priority returned by transaction. ' +\n 'Priority must be a valid string, finite number, server value, or null.');\n }\n else {\n const currentNode = syncTreeCalcCompleteEventCache(repo.serverSyncTree_, path) ||\n ChildrenNode.EMPTY_NODE;\n priorityForNode = currentNode.getPriority().val();\n }\n const serverValues = repoGenerateServerValues(repo);\n const newNodeUnresolved = nodeFromJSON(newVal, priorityForNode);\n const newNode = resolveDeferredValueSnapshot(newNodeUnresolved, currentState, serverValues);\n transaction.currentOutputSnapshotRaw = newNodeUnresolved;\n transaction.currentOutputSnapshotResolved = newNode;\n transaction.currentWriteId = repoGetNextWriteId(repo);\n const events = syncTreeApplyUserOverwrite(repo.serverSyncTree_, path, newNode, transaction.currentWriteId, transaction.applyLocally);\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, path, events);\n repoSendReadyTransactions(repo, repo.transactionQueueTree_);\n }\n}\n/**\n * @param excludeSets - A specific set to exclude\n */\nfunction repoGetLatestState(repo, path, excludeSets) {\n return (syncTreeCalcCompleteEventCache(repo.serverSyncTree_, path, excludeSets) ||\n ChildrenNode.EMPTY_NODE);\n}\n/**\n * Sends any already-run transactions that aren't waiting for outstanding\n * transactions to complete.\n *\n * Externally it's called with no arguments, but it calls itself recursively\n * with a particular transactionQueueTree node to recurse through the tree.\n *\n * @param node - transactionQueueTree node to start at.\n */\nfunction repoSendReadyTransactions(repo, node = repo.transactionQueueTree_) {\n // Before recursing, make sure any completed transactions are removed.\n if (!node) {\n repoPruneCompletedTransactionsBelowNode(repo, node);\n }\n if (treeGetValue(node)) {\n const queue = repoBuildTransactionQueue(repo, node);\n assert(queue.length > 0, 'Sending zero length transaction queue');\n const allRun = queue.every((transaction) => transaction.status === 0 /* TransactionStatus.RUN */);\n // If they're all run (and not sent), we can send them. Else, we must wait.\n if (allRun) {\n repoSendTransactionQueue(repo, treeGetPath(node), queue);\n }\n }\n else if (treeHasChildren(node)) {\n treeForEachChild(node, childNode => {\n repoSendReadyTransactions(repo, childNode);\n });\n }\n}\n/**\n * Given a list of run transactions, send them to the server and then handle\n * the result (success or failure).\n *\n * @param path - The location of the queue.\n * @param queue - Queue of transactions under the specified location.\n */\nfunction repoSendTransactionQueue(repo, path, queue) {\n // Mark transactions as sent and increment retry count!\n const setsToIgnore = queue.map(txn => {\n return txn.currentWriteId;\n });\n const latestState = repoGetLatestState(repo, path, setsToIgnore);\n let snapToSend = latestState;\n const latestHash = latestState.hash();\n for (let i = 0; i < queue.length; i++) {\n const txn = queue[i];\n assert(txn.status === 0 /* TransactionStatus.RUN */, 'tryToSendTransactionQueue_: items in queue should all be run.');\n txn.status = 1 /* TransactionStatus.SENT */;\n txn.retryCount++;\n const relativePath = newRelativePath(path, txn.path);\n // If we've gotten to this point, the output snapshot must be defined.\n snapToSend = snapToSend.updateChild(relativePath /** @type {!Node} */, txn.currentOutputSnapshotRaw);\n }\n const dataToSend = snapToSend.val(true);\n const pathToSend = path;\n // Send the put.\n repo.server_.put(pathToSend.toString(), dataToSend, (status) => {\n repoLog(repo, 'transaction put response', {\n path: pathToSend.toString(),\n status\n });\n let events = [];\n if (status === 'ok') {\n // Queue up the callbacks and fire them after cleaning up all of our\n // transaction state, since the callback could trigger more\n // transactions or sets.\n const callbacks = [];\n for (let i = 0; i < queue.length; i++) {\n queue[i].status = 2 /* TransactionStatus.COMPLETED */;\n events = events.concat(syncTreeAckUserWrite(repo.serverSyncTree_, queue[i].currentWriteId));\n if (queue[i].onComplete) {\n // We never unset the output snapshot, and given that this\n // transaction is complete, it should be set\n callbacks.push(() => queue[i].onComplete(null, true, queue[i].currentOutputSnapshotResolved));\n }\n queue[i].unwatcher();\n }\n // Now remove the completed transactions.\n repoPruneCompletedTransactionsBelowNode(repo, treeSubTree(repo.transactionQueueTree_, path));\n // There may be pending transactions that we can now send.\n repoSendReadyTransactions(repo, repo.transactionQueueTree_);\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, path, events);\n // Finally, trigger onComplete callbacks.\n for (let i = 0; i < callbacks.length; i++) {\n exceptionGuard(callbacks[i]);\n }\n }\n else {\n // transactions are no longer sent. Update their status appropriately.\n if (status === 'datastale') {\n for (let i = 0; i < queue.length; i++) {\n if (queue[i].status === 3 /* TransactionStatus.SENT_NEEDS_ABORT */) {\n queue[i].status = 4 /* TransactionStatus.NEEDS_ABORT */;\n }\n else {\n queue[i].status = 0 /* TransactionStatus.RUN */;\n }\n }\n }\n else {\n warn('transaction at ' + pathToSend.toString() + ' failed: ' + status);\n for (let i = 0; i < queue.length; i++) {\n queue[i].status = 4 /* TransactionStatus.NEEDS_ABORT */;\n queue[i].abortReason = status;\n }\n }\n repoRerunTransactions(repo, path);\n }\n }, latestHash);\n}\n/**\n * Finds all transactions dependent on the data at changedPath and reruns them.\n *\n * Should be called any time cached data changes.\n *\n * Return the highest path that was affected by rerunning transactions. This\n * is the path at which events need to be raised for.\n *\n * @param changedPath - The path in mergedData that changed.\n * @returns The rootmost path that was affected by rerunning transactions.\n */\nfunction repoRerunTransactions(repo, changedPath) {\n const rootMostTransactionNode = repoGetAncestorTransactionNode(repo, changedPath);\n const path = treeGetPath(rootMostTransactionNode);\n const queue = repoBuildTransactionQueue(repo, rootMostTransactionNode);\n repoRerunTransactionQueue(repo, queue, path);\n return path;\n}\n/**\n * Does all the work of rerunning transactions (as well as cleans up aborted\n * transactions and whatnot).\n *\n * @param queue - The queue of transactions to run.\n * @param path - The path the queue is for.\n */\nfunction repoRerunTransactionQueue(repo, queue, path) {\n if (queue.length === 0) {\n return; // Nothing to do!\n }\n // Queue up the callbacks and fire them after cleaning up all of our\n // transaction state, since the callback could trigger more transactions or\n // sets.\n const callbacks = [];\n let events = [];\n // Ignore all of the sets we're going to re-run.\n const txnsToRerun = queue.filter(q => {\n return q.status === 0 /* TransactionStatus.RUN */;\n });\n const setsToIgnore = txnsToRerun.map(q => {\n return q.currentWriteId;\n });\n for (let i = 0; i < queue.length; i++) {\n const transaction = queue[i];\n const relativePath = newRelativePath(path, transaction.path);\n let abortTransaction = false, abortReason;\n assert(relativePath !== null, 'rerunTransactionsUnderNode_: relativePath should not be null.');\n if (transaction.status === 4 /* TransactionStatus.NEEDS_ABORT */) {\n abortTransaction = true;\n abortReason = transaction.abortReason;\n events = events.concat(syncTreeAckUserWrite(repo.serverSyncTree_, transaction.currentWriteId, true));\n }\n else if (transaction.status === 0 /* TransactionStatus.RUN */) {\n if (transaction.retryCount >= MAX_TRANSACTION_RETRIES) {\n abortTransaction = true;\n abortReason = 'maxretry';\n events = events.concat(syncTreeAckUserWrite(repo.serverSyncTree_, transaction.currentWriteId, true));\n }\n else {\n // This code reruns a transaction\n const currentNode = repoGetLatestState(repo, transaction.path, setsToIgnore);\n transaction.currentInputSnapshot = currentNode;\n const newData = queue[i].update(currentNode.val());\n if (newData !== undefined) {\n validateFirebaseData('transaction failed: Data returned ', newData, transaction.path);\n let newDataNode = nodeFromJSON(newData);\n const hasExplicitPriority = typeof newData === 'object' &&\n newData != null &&\n contains(newData, '.priority');\n if (!hasExplicitPriority) {\n // Keep the old priority if there wasn't a priority explicitly specified.\n newDataNode = newDataNode.updatePriority(currentNode.getPriority());\n }\n const oldWriteId = transaction.currentWriteId;\n const serverValues = repoGenerateServerValues(repo);\n const newNodeResolved = resolveDeferredValueSnapshot(newDataNode, currentNode, serverValues);\n transaction.currentOutputSnapshotRaw = newDataNode;\n transaction.currentOutputSnapshotResolved = newNodeResolved;\n transaction.currentWriteId = repoGetNextWriteId(repo);\n // Mutates setsToIgnore in place\n setsToIgnore.splice(setsToIgnore.indexOf(oldWriteId), 1);\n events = events.concat(syncTreeApplyUserOverwrite(repo.serverSyncTree_, transaction.path, newNodeResolved, transaction.currentWriteId, transaction.applyLocally));\n events = events.concat(syncTreeAckUserWrite(repo.serverSyncTree_, oldWriteId, true));\n }\n else {\n abortTransaction = true;\n abortReason = 'nodata';\n events = events.concat(syncTreeAckUserWrite(repo.serverSyncTree_, transaction.currentWriteId, true));\n }\n }\n }\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, path, events);\n events = [];\n if (abortTransaction) {\n // Abort.\n queue[i].status = 2 /* TransactionStatus.COMPLETED */;\n // Removing a listener can trigger pruning which can muck with\n // mergedData/visibleData (as it prunes data). So defer the unwatcher\n // until we're done.\n (function (unwatcher) {\n setTimeout(unwatcher, Math.floor(0));\n })(queue[i].unwatcher);\n if (queue[i].onComplete) {\n if (abortReason === 'nodata') {\n callbacks.push(() => queue[i].onComplete(null, false, queue[i].currentInputSnapshot));\n }\n else {\n callbacks.push(() => queue[i].onComplete(new Error(abortReason), false, null));\n }\n }\n }\n }\n // Clean up completed transactions.\n repoPruneCompletedTransactionsBelowNode(repo, repo.transactionQueueTree_);\n // Now fire callbacks, now that we're in a good, known state.\n for (let i = 0; i < callbacks.length; i++) {\n exceptionGuard(callbacks[i]);\n }\n // Try to send the transaction result to the server.\n repoSendReadyTransactions(repo, repo.transactionQueueTree_);\n}\n/**\n * Returns the rootmost ancestor node of the specified path that has a pending\n * transaction on it, or just returns the node for the given path if there are\n * no pending transactions on any ancestor.\n *\n * @param path - The location to start at.\n * @returns The rootmost node with a transaction.\n */\nfunction repoGetAncestorTransactionNode(repo, path) {\n let front;\n // Start at the root and walk deeper into the tree towards path until we\n // find a node with pending transactions.\n let transactionNode = repo.transactionQueueTree_;\n front = pathGetFront(path);\n while (front !== null && treeGetValue(transactionNode) === undefined) {\n transactionNode = treeSubTree(transactionNode, front);\n path = pathPopFront(path);\n front = pathGetFront(path);\n }\n return transactionNode;\n}\n/**\n * Builds the queue of all transactions at or below the specified\n * transactionNode.\n *\n * @param transactionNode\n * @returns The generated queue.\n */\nfunction repoBuildTransactionQueue(repo, transactionNode) {\n // Walk any child transaction queues and aggregate them into a single queue.\n const transactionQueue = [];\n repoAggregateTransactionQueuesForNode(repo, transactionNode, transactionQueue);\n // Sort them by the order the transactions were created.\n transactionQueue.sort((a, b) => a.order - b.order);\n return transactionQueue;\n}\nfunction repoAggregateTransactionQueuesForNode(repo, node, queue) {\n const nodeQueue = treeGetValue(node);\n if (nodeQueue) {\n for (let i = 0; i < nodeQueue.length; i++) {\n queue.push(nodeQueue[i]);\n }\n }\n treeForEachChild(node, child => {\n repoAggregateTransactionQueuesForNode(repo, child, queue);\n });\n}\n/**\n * Remove COMPLETED transactions at or below this node in the transactionQueueTree_.\n */\nfunction repoPruneCompletedTransactionsBelowNode(repo, node) {\n const queue = treeGetValue(node);\n if (queue) {\n let to = 0;\n for (let from = 0; from < queue.length; from++) {\n if (queue[from].status !== 2 /* TransactionStatus.COMPLETED */) {\n queue[to] = queue[from];\n to++;\n }\n }\n queue.length = to;\n treeSetValue(node, queue.length > 0 ? queue : undefined);\n }\n treeForEachChild(node, childNode => {\n repoPruneCompletedTransactionsBelowNode(repo, childNode);\n });\n}\n/**\n * Aborts all transactions on ancestors or descendants of the specified path.\n * Called when doing a set() or update() since we consider them incompatible\n * with transactions.\n *\n * @param path - Path for which we want to abort related transactions.\n */\nfunction repoAbortTransactions(repo, path) {\n const affectedPath = treeGetPath(repoGetAncestorTransactionNode(repo, path));\n const transactionNode = treeSubTree(repo.transactionQueueTree_, path);\n treeForEachAncestor(transactionNode, (node) => {\n repoAbortTransactionsOnNode(repo, node);\n });\n repoAbortTransactionsOnNode(repo, transactionNode);\n treeForEachDescendant(transactionNode, (node) => {\n repoAbortTransactionsOnNode(repo, node);\n });\n return affectedPath;\n}\n/**\n * Abort transactions stored in this transaction queue node.\n *\n * @param node - Node to abort transactions for.\n */\nfunction repoAbortTransactionsOnNode(repo, node) {\n const queue = treeGetValue(node);\n if (queue) {\n // Queue up the callbacks and fire them after cleaning up all of our\n // transaction state, since the callback could trigger more transactions\n // or sets.\n const callbacks = [];\n // Go through queue. Any already-sent transactions must be marked for\n // abort, while the unsent ones can be immediately aborted and removed.\n let events = [];\n let lastSent = -1;\n for (let i = 0; i < queue.length; i++) {\n if (queue[i].status === 3 /* TransactionStatus.SENT_NEEDS_ABORT */) ;\n else if (queue[i].status === 1 /* TransactionStatus.SENT */) {\n assert(lastSent === i - 1, 'All SENT items should be at beginning of queue.');\n lastSent = i;\n // Mark transaction for abort when it comes back.\n queue[i].status = 3 /* TransactionStatus.SENT_NEEDS_ABORT */;\n queue[i].abortReason = 'set';\n }\n else {\n assert(queue[i].status === 0 /* TransactionStatus.RUN */, 'Unexpected transaction status in abort');\n // We can abort it immediately.\n queue[i].unwatcher();\n events = events.concat(syncTreeAckUserWrite(repo.serverSyncTree_, queue[i].currentWriteId, true));\n if (queue[i].onComplete) {\n callbacks.push(queue[i].onComplete.bind(null, new Error('set'), false, null));\n }\n }\n }\n if (lastSent === -1) {\n // We're not waiting for any sent transactions. We can clear the queue.\n treeSetValue(node, undefined);\n }\n else {\n // Remove the transactions we aborted.\n queue.length = lastSent + 1;\n }\n // Now fire the callbacks.\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, treeGetPath(node), events);\n for (let i = 0; i < callbacks.length; i++) {\n exceptionGuard(callbacks[i]);\n }\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction decodePath(pathString) {\n let pathStringDecoded = '';\n const pieces = pathString.split('/');\n for (let i = 0; i < pieces.length; i++) {\n if (pieces[i].length > 0) {\n let piece = pieces[i];\n try {\n piece = decodeURIComponent(piece.replace(/\\+/g, ' '));\n }\n catch (e) { }\n pathStringDecoded += '/' + piece;\n }\n }\n return pathStringDecoded;\n}\n/**\n * @returns key value hash\n */\nfunction decodeQuery(queryString) {\n const results = {};\n if (queryString.charAt(0) === '?') {\n queryString = queryString.substring(1);\n }\n for (const segment of queryString.split('&')) {\n if (segment.length === 0) {\n continue;\n }\n const kv = segment.split('=');\n if (kv.length === 2) {\n results[decodeURIComponent(kv[0])] = decodeURIComponent(kv[1]);\n }\n else {\n warn(`Invalid query segment '${segment}' in query '${queryString}'`);\n }\n }\n return results;\n}\nconst parseRepoInfo = function (dataURL, nodeAdmin) {\n const parsedUrl = parseDatabaseURL(dataURL), namespace = parsedUrl.namespace;\n if (parsedUrl.domain === 'firebase.com') {\n fatal(parsedUrl.host +\n ' is no longer supported. ' +\n 'Please use .firebaseio.com instead');\n }\n // Catch common error of uninitialized namespace value.\n if ((!namespace || namespace === 'undefined') &&\n parsedUrl.domain !== 'localhost') {\n fatal('Cannot parse Firebase url. Please use https://.firebaseio.com');\n }\n if (!parsedUrl.secure) {\n warnIfPageIsSecure();\n }\n const webSocketOnly = parsedUrl.scheme === 'ws' || parsedUrl.scheme === 'wss';\n return {\n repoInfo: new RepoInfo(parsedUrl.host, parsedUrl.secure, namespace, webSocketOnly, nodeAdmin, \n /*persistenceKey=*/ '', \n /*includeNamespaceInQueryParams=*/ namespace !== parsedUrl.subdomain),\n path: new Path(parsedUrl.pathString)\n };\n};\nconst parseDatabaseURL = function (dataURL) {\n // Default to empty strings in the event of a malformed string.\n let host = '', domain = '', subdomain = '', pathString = '', namespace = '';\n // Always default to SSL, unless otherwise specified.\n let secure = true, scheme = 'https', port = 443;\n // Don't do any validation here. The caller is responsible for validating the result of parsing.\n if (typeof dataURL === 'string') {\n // Parse scheme.\n let colonInd = dataURL.indexOf('//');\n if (colonInd >= 0) {\n scheme = dataURL.substring(0, colonInd - 1);\n dataURL = dataURL.substring(colonInd + 2);\n }\n // Parse host, path, and query string.\n let slashInd = dataURL.indexOf('/');\n if (slashInd === -1) {\n slashInd = dataURL.length;\n }\n let questionMarkInd = dataURL.indexOf('?');\n if (questionMarkInd === -1) {\n questionMarkInd = dataURL.length;\n }\n host = dataURL.substring(0, Math.min(slashInd, questionMarkInd));\n if (slashInd < questionMarkInd) {\n // For pathString, questionMarkInd will always come after slashInd\n pathString = decodePath(dataURL.substring(slashInd, questionMarkInd));\n }\n const queryParams = decodeQuery(dataURL.substring(Math.min(dataURL.length, questionMarkInd)));\n // If we have a port, use scheme for determining if it's secure.\n colonInd = host.indexOf(':');\n if (colonInd >= 0) {\n secure = scheme === 'https' || scheme === 'wss';\n port = parseInt(host.substring(colonInd + 1), 10);\n }\n else {\n colonInd = host.length;\n }\n const hostWithoutPort = host.slice(0, colonInd);\n if (hostWithoutPort.toLowerCase() === 'localhost') {\n domain = 'localhost';\n }\n else if (hostWithoutPort.split('.').length <= 2) {\n domain = hostWithoutPort;\n }\n else {\n // Interpret the subdomain of a 3 or more component URL as the namespace name.\n const dotInd = host.indexOf('.');\n subdomain = host.substring(0, dotInd).toLowerCase();\n domain = host.substring(dotInd + 1);\n // Normalize namespaces to lowercase to share storage / connection.\n namespace = subdomain;\n }\n // Always treat the value of the `ns` as the namespace name if it is present.\n if ('ns' in queryParams) {\n namespace = queryParams['ns'];\n }\n }\n return {\n host,\n port,\n domain,\n subdomain,\n secure,\n scheme,\n pathString,\n namespace\n };\n};\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// Modeled after base64 web-safe chars, but ordered by ASCII.\nconst PUSH_CHARS = '-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz';\n/**\n * Fancy ID generator that creates 20-character string identifiers with the\n * following properties:\n *\n * 1. They're based on timestamp so that they sort *after* any existing ids.\n * 2. They contain 72-bits of random data after the timestamp so that IDs won't\n * collide with other clients' IDs.\n * 3. They sort *lexicographically* (so the timestamp is converted to characters\n * that will sort properly).\n * 4. They're monotonically increasing. Even if you generate more than one in\n * the same timestamp, the latter ones will sort after the former ones. We do\n * this by using the previous random bits but \"incrementing\" them by 1 (only\n * in the case of a timestamp collision).\n */\nconst nextPushId = (function () {\n // Timestamp of last push, used to prevent local collisions if you push twice\n // in one ms.\n let lastPushTime = 0;\n // We generate 72-bits of randomness which get turned into 12 characters and\n // appended to the timestamp to prevent collisions with other clients. We\n // store the last characters we generated because in the event of a collision,\n // we'll use those same characters except \"incremented\" by one.\n const lastRandChars = [];\n return function (now) {\n const duplicateTime = now === lastPushTime;\n lastPushTime = now;\n let i;\n const timeStampChars = new Array(8);\n for (i = 7; i >= 0; i--) {\n timeStampChars[i] = PUSH_CHARS.charAt(now % 64);\n // NOTE: Can't use << here because javascript will convert to int and lose\n // the upper bits.\n now = Math.floor(now / 64);\n }\n assert(now === 0, 'Cannot push at time == 0');\n let id = timeStampChars.join('');\n if (!duplicateTime) {\n for (i = 0; i < 12; i++) {\n lastRandChars[i] = Math.floor(Math.random() * 64);\n }\n }\n else {\n // If the timestamp hasn't changed since last push, use the same random\n // number, except incremented by 1.\n for (i = 11; i >= 0 && lastRandChars[i] === 63; i--) {\n lastRandChars[i] = 0;\n }\n lastRandChars[i]++;\n }\n for (i = 0; i < 12; i++) {\n id += PUSH_CHARS.charAt(lastRandChars[i]);\n }\n assert(id.length === 20, 'nextPushId: Length should be 20.');\n return id;\n };\n})();\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Encapsulates the data needed to raise an event\n */\nclass DataEvent {\n /**\n * @param eventType - One of: value, child_added, child_changed, child_moved, child_removed\n * @param eventRegistration - The function to call to with the event data. User provided\n * @param snapshot - The data backing the event\n * @param prevName - Optional, the name of the previous child for child_* events.\n */\n constructor(eventType, eventRegistration, snapshot, prevName) {\n this.eventType = eventType;\n this.eventRegistration = eventRegistration;\n this.snapshot = snapshot;\n this.prevName = prevName;\n }\n getPath() {\n const ref = this.snapshot.ref;\n if (this.eventType === 'value') {\n return ref._path;\n }\n else {\n return ref.parent._path;\n }\n }\n getEventType() {\n return this.eventType;\n }\n getEventRunner() {\n return this.eventRegistration.getEventRunner(this);\n }\n toString() {\n return (this.getPath().toString() +\n ':' +\n this.eventType +\n ':' +\n stringify(this.snapshot.exportVal()));\n }\n}\nclass CancelEvent {\n constructor(eventRegistration, error, path) {\n this.eventRegistration = eventRegistration;\n this.error = error;\n this.path = path;\n }\n getPath() {\n return this.path;\n }\n getEventType() {\n return 'cancel';\n }\n getEventRunner() {\n return this.eventRegistration.getEventRunner(this);\n }\n toString() {\n return this.path.toString() + ':cancel';\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A wrapper class that converts events from the database@exp SDK to the legacy\n * Database SDK. Events are not converted directly as event registration relies\n * on reference comparison of the original user callback (see `matches()`) and\n * relies on equality of the legacy SDK's `context` object.\n */\nclass CallbackContext {\n constructor(snapshotCallback, cancelCallback) {\n this.snapshotCallback = snapshotCallback;\n this.cancelCallback = cancelCallback;\n }\n onValue(expDataSnapshot, previousChildName) {\n this.snapshotCallback.call(null, expDataSnapshot, previousChildName);\n }\n onCancel(error) {\n assert(this.hasCancelCallback, 'Raising a cancel event on a listener with no cancel callback');\n return this.cancelCallback.call(null, error);\n }\n get hasCancelCallback() {\n return !!this.cancelCallback;\n }\n matches(other) {\n return (this.snapshotCallback === other.snapshotCallback ||\n (this.snapshotCallback.userCallback !== undefined &&\n this.snapshotCallback.userCallback ===\n other.snapshotCallback.userCallback &&\n this.snapshotCallback.context === other.snapshotCallback.context));\n }\n}\n\n/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * The `onDisconnect` class allows you to write or clear data when your client\n * disconnects from the Database server. These updates occur whether your\n * client disconnects cleanly or not, so you can rely on them to clean up data\n * even if a connection is dropped or a client crashes.\n *\n * The `onDisconnect` class is most commonly used to manage presence in\n * applications where it is useful to detect how many clients are connected and\n * when other clients disconnect. See\n * {@link https://firebase.google.com/docs/database/web/offline-capabilities | Enabling Offline Capabilities in JavaScript}\n * for more information.\n *\n * To avoid problems when a connection is dropped before the requests can be\n * transferred to the Database server, these functions should be called before\n * writing any data.\n *\n * Note that `onDisconnect` operations are only triggered once. If you want an\n * operation to occur each time a disconnect occurs, you'll need to re-establish\n * the `onDisconnect` operations each time you reconnect.\n */\nclass OnDisconnect {\n /** @hideconstructor */\n constructor(_repo, _path) {\n this._repo = _repo;\n this._path = _path;\n }\n /**\n * Cancels all previously queued `onDisconnect()` set or update events for this\n * location and all children.\n *\n * If a write has been queued for this location via a `set()` or `update()` at a\n * parent location, the write at this location will be canceled, though writes\n * to sibling locations will still occur.\n *\n * @returns Resolves when synchronization to the server is complete.\n */\n cancel() {\n const deferred = new Deferred();\n repoOnDisconnectCancel(this._repo, this._path, deferred.wrapCallback(() => { }));\n return deferred.promise;\n }\n /**\n * Ensures the data at this location is deleted when the client is disconnected\n * (due to closing the browser, navigating to a new page, or network issues).\n *\n * @returns Resolves when synchronization to the server is complete.\n */\n remove() {\n validateWritablePath('OnDisconnect.remove', this._path);\n const deferred = new Deferred();\n repoOnDisconnectSet(this._repo, this._path, null, deferred.wrapCallback(() => { }));\n return deferred.promise;\n }\n /**\n * Ensures the data at this location is set to the specified value when the\n * client is disconnected (due to closing the browser, navigating to a new page,\n * or network issues).\n *\n * `set()` is especially useful for implementing \"presence\" systems, where a\n * value should be changed or cleared when a user disconnects so that they\n * appear \"offline\" to other users. See\n * {@link https://firebase.google.com/docs/database/web/offline-capabilities | Enabling Offline Capabilities in JavaScript}\n * for more information.\n *\n * Note that `onDisconnect` operations are only triggered once. If you want an\n * operation to occur each time a disconnect occurs, you'll need to re-establish\n * the `onDisconnect` operations each time.\n *\n * @param value - The value to be written to this location on disconnect (can\n * be an object, array, string, number, boolean, or null).\n * @returns Resolves when synchronization to the Database is complete.\n */\n set(value) {\n validateWritablePath('OnDisconnect.set', this._path);\n validateFirebaseDataArg('OnDisconnect.set', value, this._path, false);\n const deferred = new Deferred();\n repoOnDisconnectSet(this._repo, this._path, value, deferred.wrapCallback(() => { }));\n return deferred.promise;\n }\n /**\n * Ensures the data at this location is set to the specified value and priority\n * when the client is disconnected (due to closing the browser, navigating to a\n * new page, or network issues).\n *\n * @param value - The value to be written to this location on disconnect (can\n * be an object, array, string, number, boolean, or null).\n * @param priority - The priority to be written (string, number, or null).\n * @returns Resolves when synchronization to the Database is complete.\n */\n setWithPriority(value, priority) {\n validateWritablePath('OnDisconnect.setWithPriority', this._path);\n validateFirebaseDataArg('OnDisconnect.setWithPriority', value, this._path, false);\n validatePriority('OnDisconnect.setWithPriority', priority, false);\n const deferred = new Deferred();\n repoOnDisconnectSetWithPriority(this._repo, this._path, value, priority, deferred.wrapCallback(() => { }));\n return deferred.promise;\n }\n /**\n * Writes multiple values at this location when the client is disconnected (due\n * to closing the browser, navigating to a new page, or network issues).\n *\n * The `values` argument contains multiple property-value pairs that will be\n * written to the Database together. Each child property can either be a simple\n * property (for example, \"name\") or a relative path (for example, \"name/first\")\n * from the current location to the data to update.\n *\n * As opposed to the `set()` method, `update()` can be use to selectively update\n * only the referenced properties at the current location (instead of replacing\n * all the child properties at the current location).\n *\n * @param values - Object containing multiple values.\n * @returns Resolves when synchronization to the Database is complete.\n */\n update(values) {\n validateWritablePath('OnDisconnect.update', this._path);\n validateFirebaseMergeDataArg('OnDisconnect.update', values, this._path, false);\n const deferred = new Deferred();\n repoOnDisconnectUpdate(this._repo, this._path, values, deferred.wrapCallback(() => { }));\n return deferred.promise;\n }\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @internal\n */\nclass QueryImpl {\n /**\n * @hideconstructor\n */\n constructor(_repo, _path, _queryParams, _orderByCalled) {\n this._repo = _repo;\n this._path = _path;\n this._queryParams = _queryParams;\n this._orderByCalled = _orderByCalled;\n }\n get key() {\n if (pathIsEmpty(this._path)) {\n return null;\n }\n else {\n return pathGetBack(this._path);\n }\n }\n get ref() {\n return new ReferenceImpl(this._repo, this._path);\n }\n get _queryIdentifier() {\n const obj = queryParamsGetQueryObject(this._queryParams);\n const id = ObjectToUniqueKey(obj);\n return id === '{}' ? 'default' : id;\n }\n /**\n * An object representation of the query parameters used by this Query.\n */\n get _queryObject() {\n return queryParamsGetQueryObject(this._queryParams);\n }\n isEqual(other) {\n other = getModularInstance(other);\n if (!(other instanceof QueryImpl)) {\n return false;\n }\n const sameRepo = this._repo === other._repo;\n const samePath = pathEquals(this._path, other._path);\n const sameQueryIdentifier = this._queryIdentifier === other._queryIdentifier;\n return sameRepo && samePath && sameQueryIdentifier;\n }\n toJSON() {\n return this.toString();\n }\n toString() {\n return this._repo.toString() + pathToUrlEncodedString(this._path);\n }\n}\n/**\n * Validates that no other order by call has been made\n */\nfunction validateNoPreviousOrderByCall(query, fnName) {\n if (query._orderByCalled === true) {\n throw new Error(fnName + \": You can't combine multiple orderBy calls.\");\n }\n}\n/**\n * Validates start/end values for queries.\n */\nfunction validateQueryEndpoints(params) {\n let startNode = null;\n let endNode = null;\n if (params.hasStart()) {\n startNode = params.getIndexStartValue();\n }\n if (params.hasEnd()) {\n endNode = params.getIndexEndValue();\n }\n if (params.getIndex() === KEY_INDEX) {\n const tooManyArgsError = 'Query: When ordering by key, you may only pass one argument to ' +\n 'startAt(), endAt(), or equalTo().';\n const wrongArgTypeError = 'Query: When ordering by key, the argument passed to startAt(), startAfter(), ' +\n 'endAt(), endBefore(), or equalTo() must be a string.';\n if (params.hasStart()) {\n const startName = params.getIndexStartName();\n if (startName !== MIN_NAME) {\n throw new Error(tooManyArgsError);\n }\n else if (typeof startNode !== 'string') {\n throw new Error(wrongArgTypeError);\n }\n }\n if (params.hasEnd()) {\n const endName = params.getIndexEndName();\n if (endName !== MAX_NAME) {\n throw new Error(tooManyArgsError);\n }\n else if (typeof endNode !== 'string') {\n throw new Error(wrongArgTypeError);\n }\n }\n }\n else if (params.getIndex() === PRIORITY_INDEX) {\n if ((startNode != null && !isValidPriority(startNode)) ||\n (endNode != null && !isValidPriority(endNode))) {\n throw new Error('Query: When ordering by priority, the first argument passed to startAt(), ' +\n 'startAfter() endAt(), endBefore(), or equalTo() must be a valid priority value ' +\n '(null, a number, or a string).');\n }\n }\n else {\n assert(params.getIndex() instanceof PathIndex ||\n params.getIndex() === VALUE_INDEX, 'unknown index type.');\n if ((startNode != null && typeof startNode === 'object') ||\n (endNode != null && typeof endNode === 'object')) {\n throw new Error('Query: First argument passed to startAt(), startAfter(), endAt(), endBefore(), or ' +\n 'equalTo() cannot be an object.');\n }\n }\n}\n/**\n * Validates that limit* has been called with the correct combination of parameters\n */\nfunction validateLimit(params) {\n if (params.hasStart() &&\n params.hasEnd() &&\n params.hasLimit() &&\n !params.hasAnchoredLimit()) {\n throw new Error(\"Query: Can't combine startAt(), startAfter(), endAt(), endBefore(), and limit(). Use \" +\n 'limitToFirst() or limitToLast() instead.');\n }\n}\n/**\n * @internal\n */\nclass ReferenceImpl extends QueryImpl {\n /** @hideconstructor */\n constructor(repo, path) {\n super(repo, path, new QueryParams(), false);\n }\n get parent() {\n const parentPath = pathParent(this._path);\n return parentPath === null\n ? null\n : new ReferenceImpl(this._repo, parentPath);\n }\n get root() {\n let ref = this;\n while (ref.parent !== null) {\n ref = ref.parent;\n }\n return ref;\n }\n}\n/**\n * A `DataSnapshot` contains data from a Database location.\n *\n * Any time you read data from the Database, you receive the data as a\n * `DataSnapshot`. A `DataSnapshot` is passed to the event callbacks you attach\n * with `on()` or `once()`. You can extract the contents of the snapshot as a\n * JavaScript object by calling the `val()` method. Alternatively, you can\n * traverse into the snapshot by calling `child()` to return child snapshots\n * (which you could then call `val()` on).\n *\n * A `DataSnapshot` is an efficiently generated, immutable copy of the data at\n * a Database location. It cannot be modified and will never change (to modify\n * data, you always call the `set()` method on a `Reference` directly).\n */\nclass DataSnapshot {\n /**\n * @param _node - A SnapshotNode to wrap.\n * @param ref - The location this snapshot came from.\n * @param _index - The iteration order for this snapshot\n * @hideconstructor\n */\n constructor(_node, \n /**\n * The location of this DataSnapshot.\n */\n ref, _index) {\n this._node = _node;\n this.ref = ref;\n this._index = _index;\n }\n /**\n * Gets the priority value of the data in this `DataSnapshot`.\n *\n * Applications need not use priority but can order collections by\n * ordinary properties (see\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#sorting_and_filtering_data |Sorting and filtering data}\n * ).\n */\n get priority() {\n // typecast here because we never return deferred values or internal priorities (MAX_PRIORITY)\n return this._node.getPriority().val();\n }\n /**\n * The key (last part of the path) of the location of this `DataSnapshot`.\n *\n * The last token in a Database location is considered its key. For example,\n * \"ada\" is the key for the /users/ada/ node. Accessing the key on any\n * `DataSnapshot` will return the key for the location that generated it.\n * However, accessing the key on the root URL of a Database will return\n * `null`.\n */\n get key() {\n return this.ref.key;\n }\n /** Returns the number of child properties of this `DataSnapshot`. */\n get size() {\n return this._node.numChildren();\n }\n /**\n * Gets another `DataSnapshot` for the location at the specified relative path.\n *\n * Passing a relative path to the `child()` method of a DataSnapshot returns\n * another `DataSnapshot` for the location at the specified relative path. The\n * relative path can either be a simple child name (for example, \"ada\") or a\n * deeper, slash-separated path (for example, \"ada/name/first\"). If the child\n * location has no data, an empty `DataSnapshot` (that is, a `DataSnapshot`\n * whose value is `null`) is returned.\n *\n * @param path - A relative path to the location of child data.\n */\n child(path) {\n const childPath = new Path(path);\n const childRef = child(this.ref, path);\n return new DataSnapshot(this._node.getChild(childPath), childRef, PRIORITY_INDEX);\n }\n /**\n * Returns true if this `DataSnapshot` contains any data. It is slightly more\n * efficient than using `snapshot.val() !== null`.\n */\n exists() {\n return !this._node.isEmpty();\n }\n /**\n * Exports the entire contents of the DataSnapshot as a JavaScript object.\n *\n * The `exportVal()` method is similar to `val()`, except priority information\n * is included (if available), making it suitable for backing up your data.\n *\n * @returns The DataSnapshot's contents as a JavaScript value (Object,\n * Array, string, number, boolean, or `null`).\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n exportVal() {\n return this._node.val(true);\n }\n /**\n * Enumerates the top-level children in the `IteratedDataSnapshot`.\n *\n * Because of the way JavaScript objects work, the ordering of data in the\n * JavaScript object returned by `val()` is not guaranteed to match the\n * ordering on the server nor the ordering of `onChildAdded()` events. That is\n * where `forEach()` comes in handy. It guarantees the children of a\n * `DataSnapshot` will be iterated in their query order.\n *\n * If no explicit `orderBy*()` method is used, results are returned\n * ordered by key (unless priorities are used, in which case, results are\n * returned by priority).\n *\n * @param action - A function that will be called for each child DataSnapshot.\n * The callback can return true to cancel further enumeration.\n * @returns true if enumeration was canceled due to your callback returning\n * true.\n */\n forEach(action) {\n if (this._node.isLeafNode()) {\n return false;\n }\n const childrenNode = this._node;\n // Sanitize the return value to a boolean. ChildrenNode.forEachChild has a weird return type...\n return !!childrenNode.forEachChild(this._index, (key, node) => {\n return action(new DataSnapshot(node, child(this.ref, key), PRIORITY_INDEX));\n });\n }\n /**\n * Returns true if the specified child path has (non-null) data.\n *\n * @param path - A relative path to the location of a potential child.\n * @returns `true` if data exists at the specified child path; else\n * `false`.\n */\n hasChild(path) {\n const childPath = new Path(path);\n return !this._node.getChild(childPath).isEmpty();\n }\n /**\n * Returns whether or not the `DataSnapshot` has any non-`null` child\n * properties.\n *\n * You can use `hasChildren()` to determine if a `DataSnapshot` has any\n * children. If it does, you can enumerate them using `forEach()`. If it\n * doesn't, then either this snapshot contains a primitive value (which can be\n * retrieved with `val()`) or it is empty (in which case, `val()` will return\n * `null`).\n *\n * @returns true if this snapshot has any children; else false.\n */\n hasChildren() {\n if (this._node.isLeafNode()) {\n return false;\n }\n else {\n return !this._node.isEmpty();\n }\n }\n /**\n * Returns a JSON-serializable representation of this object.\n */\n toJSON() {\n return this.exportVal();\n }\n /**\n * Extracts a JavaScript value from a `DataSnapshot`.\n *\n * Depending on the data in a `DataSnapshot`, the `val()` method may return a\n * scalar type (string, number, or boolean), an array, or an object. It may\n * also return null, indicating that the `DataSnapshot` is empty (contains no\n * data).\n *\n * @returns The DataSnapshot's contents as a JavaScript value (Object,\n * Array, string, number, boolean, or `null`).\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n val() {\n return this._node.val();\n }\n}\n/**\n *\n * Returns a `Reference` representing the location in the Database\n * corresponding to the provided path. If no path is provided, the `Reference`\n * will point to the root of the Database.\n *\n * @param db - The database instance to obtain a reference for.\n * @param path - Optional path representing the location the returned\n * `Reference` will point. If not provided, the returned `Reference` will\n * point to the root of the Database.\n * @returns If a path is provided, a `Reference`\n * pointing to the provided path. Otherwise, a `Reference` pointing to the\n * root of the Database.\n */\nfunction ref(db, path) {\n db = getModularInstance(db);\n db._checkNotDeleted('ref');\n return path !== undefined ? child(db._root, path) : db._root;\n}\n/**\n * Returns a `Reference` representing the location in the Database\n * corresponding to the provided Firebase URL.\n *\n * An exception is thrown if the URL is not a valid Firebase Database URL or it\n * has a different domain than the current `Database` instance.\n *\n * Note that all query parameters (`orderBy`, `limitToLast`, etc.) are ignored\n * and are not applied to the returned `Reference`.\n *\n * @param db - The database instance to obtain a reference for.\n * @param url - The Firebase URL at which the returned `Reference` will\n * point.\n * @returns A `Reference` pointing to the provided\n * Firebase URL.\n */\nfunction refFromURL(db, url) {\n db = getModularInstance(db);\n db._checkNotDeleted('refFromURL');\n const parsedURL = parseRepoInfo(url, db._repo.repoInfo_.nodeAdmin);\n validateUrl('refFromURL', parsedURL);\n const repoInfo = parsedURL.repoInfo;\n if (!db._repo.repoInfo_.isCustomHost() &&\n repoInfo.host !== db._repo.repoInfo_.host) {\n fatal('refFromURL' +\n ': Host name does not match the current database: ' +\n '(found ' +\n repoInfo.host +\n ' but expected ' +\n db._repo.repoInfo_.host +\n ')');\n }\n return ref(db, parsedURL.path.toString());\n}\n/**\n * Gets a `Reference` for the location at the specified relative path.\n *\n * The relative path can either be a simple child name (for example, \"ada\") or\n * a deeper slash-separated path (for example, \"ada/name/first\").\n *\n * @param parent - The parent location.\n * @param path - A relative path from this location to the desired child\n * location.\n * @returns The specified child location.\n */\nfunction child(parent, path) {\n parent = getModularInstance(parent);\n if (pathGetFront(parent._path) === null) {\n validateRootPathString('child', 'path', path, false);\n }\n else {\n validatePathString('child', 'path', path, false);\n }\n return new ReferenceImpl(parent._repo, pathChild(parent._path, path));\n}\n/**\n * Returns an `OnDisconnect` object - see\n * {@link https://firebase.google.com/docs/database/web/offline-capabilities | Enabling Offline Capabilities in JavaScript}\n * for more information on how to use it.\n *\n * @param ref - The reference to add OnDisconnect triggers for.\n */\nfunction onDisconnect(ref) {\n ref = getModularInstance(ref);\n return new OnDisconnect(ref._repo, ref._path);\n}\n/**\n * Generates a new child location using a unique key and returns its\n * `Reference`.\n *\n * This is the most common pattern for adding data to a collection of items.\n *\n * If you provide a value to `push()`, the value is written to the\n * generated location. If you don't pass a value, nothing is written to the\n * database and the child remains empty (but you can use the `Reference`\n * elsewhere).\n *\n * The unique keys generated by `push()` are ordered by the current time, so the\n * resulting list of items is chronologically sorted. The keys are also\n * designed to be unguessable (they contain 72 random bits of entropy).\n *\n * See {@link https://firebase.google.com/docs/database/web/lists-of-data#append_to_a_list_of_data | Append to a list of data}.\n * See {@link https://firebase.googleblog.com/2015/02/the-2120-ways-to-ensure-unique_68.html | The 2^120 Ways to Ensure Unique Identifiers}.\n *\n * @param parent - The parent location.\n * @param value - Optional value to be written at the generated location.\n * @returns Combined `Promise` and `Reference`; resolves when write is complete,\n * but can be used immediately as the `Reference` to the child location.\n */\nfunction push(parent, value) {\n parent = getModularInstance(parent);\n validateWritablePath('push', parent._path);\n validateFirebaseDataArg('push', value, parent._path, true);\n const now = repoServerTime(parent._repo);\n const name = nextPushId(now);\n // push() returns a ThennableReference whose promise is fulfilled with a\n // regular Reference. We use child() to create handles to two different\n // references. The first is turned into a ThennableReference below by adding\n // then() and catch() methods and is used as the return value of push(). The\n // second remains a regular Reference and is used as the fulfilled value of\n // the first ThennableReference.\n const thenablePushRef = child(parent, name);\n const pushRef = child(parent, name);\n let promise;\n if (value != null) {\n promise = set(pushRef, value).then(() => pushRef);\n }\n else {\n promise = Promise.resolve(pushRef);\n }\n thenablePushRef.then = promise.then.bind(promise);\n thenablePushRef.catch = promise.then.bind(promise, undefined);\n return thenablePushRef;\n}\n/**\n * Removes the data at this Database location.\n *\n * Any data at child locations will also be deleted.\n *\n * The effect of the remove will be visible immediately and the corresponding\n * event 'value' will be triggered. Synchronization of the remove to the\n * Firebase servers will also be started, and the returned Promise will resolve\n * when complete. If provided, the onComplete callback will be called\n * asynchronously after synchronization has finished.\n *\n * @param ref - The location to remove.\n * @returns Resolves when remove on server is complete.\n */\nfunction remove(ref) {\n validateWritablePath('remove', ref._path);\n return set(ref, null);\n}\n/**\n * Writes data to this Database location.\n *\n * This will overwrite any data at this location and all child locations.\n *\n * The effect of the write will be visible immediately, and the corresponding\n * events (\"value\", \"child_added\", etc.) will be triggered. Synchronization of\n * the data to the Firebase servers will also be started, and the returned\n * Promise will resolve when complete. If provided, the `onComplete` callback\n * will be called asynchronously after synchronization has finished.\n *\n * Passing `null` for the new value is equivalent to calling `remove()`; namely,\n * all data at this location and all child locations will be deleted.\n *\n * `set()` will remove any priority stored at this location, so if priority is\n * meant to be preserved, you need to use `setWithPriority()` instead.\n *\n * Note that modifying data with `set()` will cancel any pending transactions\n * at that location, so extreme care should be taken if mixing `set()` and\n * `transaction()` to modify the same data.\n *\n * A single `set()` will generate a single \"value\" event at the location where\n * the `set()` was performed.\n *\n * @param ref - The location to write to.\n * @param value - The value to be written (string, number, boolean, object,\n * array, or null).\n * @returns Resolves when write to server is complete.\n */\nfunction set(ref, value) {\n ref = getModularInstance(ref);\n validateWritablePath('set', ref._path);\n validateFirebaseDataArg('set', value, ref._path, false);\n const deferred = new Deferred();\n repoSetWithPriority(ref._repo, ref._path, value, \n /*priority=*/ null, deferred.wrapCallback(() => { }));\n return deferred.promise;\n}\n/**\n * Sets a priority for the data at this Database location.\n *\n * Applications need not use priority but can order collections by\n * ordinary properties (see\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#sorting_and_filtering_data | Sorting and filtering data}\n * ).\n *\n * @param ref - The location to write to.\n * @param priority - The priority to be written (string, number, or null).\n * @returns Resolves when write to server is complete.\n */\nfunction setPriority(ref, priority) {\n ref = getModularInstance(ref);\n validateWritablePath('setPriority', ref._path);\n validatePriority('setPriority', priority, false);\n const deferred = new Deferred();\n repoSetWithPriority(ref._repo, pathChild(ref._path, '.priority'), priority, null, deferred.wrapCallback(() => { }));\n return deferred.promise;\n}\n/**\n * Writes data the Database location. Like `set()` but also specifies the\n * priority for that data.\n *\n * Applications need not use priority but can order collections by\n * ordinary properties (see\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#sorting_and_filtering_data | Sorting and filtering data}\n * ).\n *\n * @param ref - The location to write to.\n * @param value - The value to be written (string, number, boolean, object,\n * array, or null).\n * @param priority - The priority to be written (string, number, or null).\n * @returns Resolves when write to server is complete.\n */\nfunction setWithPriority(ref, value, priority) {\n validateWritablePath('setWithPriority', ref._path);\n validateFirebaseDataArg('setWithPriority', value, ref._path, false);\n validatePriority('setWithPriority', priority, false);\n if (ref.key === '.length' || ref.key === '.keys') {\n throw 'setWithPriority failed: ' + ref.key + ' is a read-only object.';\n }\n const deferred = new Deferred();\n repoSetWithPriority(ref._repo, ref._path, value, priority, deferred.wrapCallback(() => { }));\n return deferred.promise;\n}\n/**\n * Writes multiple values to the Database at once.\n *\n * The `values` argument contains multiple property-value pairs that will be\n * written to the Database together. Each child property can either be a simple\n * property (for example, \"name\") or a relative path (for example,\n * \"name/first\") from the current location to the data to update.\n *\n * As opposed to the `set()` method, `update()` can be use to selectively update\n * only the referenced properties at the current location (instead of replacing\n * all the child properties at the current location).\n *\n * The effect of the write will be visible immediately, and the corresponding\n * events ('value', 'child_added', etc.) will be triggered. Synchronization of\n * the data to the Firebase servers will also be started, and the returned\n * Promise will resolve when complete. If provided, the `onComplete` callback\n * will be called asynchronously after synchronization has finished.\n *\n * A single `update()` will generate a single \"value\" event at the location\n * where the `update()` was performed, regardless of how many children were\n * modified.\n *\n * Note that modifying data with `update()` will cancel any pending\n * transactions at that location, so extreme care should be taken if mixing\n * `update()` and `transaction()` to modify the same data.\n *\n * Passing `null` to `update()` will remove the data at this location.\n *\n * See\n * {@link https://firebase.googleblog.com/2015/09/introducing-multi-location-updates-and_86.html | Introducing multi-location updates and more}.\n *\n * @param ref - The location to write to.\n * @param values - Object containing multiple values.\n * @returns Resolves when update on server is complete.\n */\nfunction update(ref, values) {\n validateFirebaseMergeDataArg('update', values, ref._path, false);\n const deferred = new Deferred();\n repoUpdate(ref._repo, ref._path, values, deferred.wrapCallback(() => { }));\n return deferred.promise;\n}\n/**\n * Gets the most up-to-date result for this query.\n *\n * @param query - The query to run.\n * @returns A `Promise` which resolves to the resulting DataSnapshot if a value is\n * available, or rejects if the client is unable to return a value (e.g., if the\n * server is unreachable and there is nothing cached).\n */\nfunction get(query) {\n query = getModularInstance(query);\n const callbackContext = new CallbackContext(() => { });\n const container = new ValueEventRegistration(callbackContext);\n return repoGetValue(query._repo, query, container).then(node => {\n return new DataSnapshot(node, new ReferenceImpl(query._repo, query._path), query._queryParams.getIndex());\n });\n}\n/**\n * Represents registration for 'value' events.\n */\nclass ValueEventRegistration {\n constructor(callbackContext) {\n this.callbackContext = callbackContext;\n }\n respondsTo(eventType) {\n return eventType === 'value';\n }\n createEvent(change, query) {\n const index = query._queryParams.getIndex();\n return new DataEvent('value', this, new DataSnapshot(change.snapshotNode, new ReferenceImpl(query._repo, query._path), index));\n }\n getEventRunner(eventData) {\n if (eventData.getEventType() === 'cancel') {\n return () => this.callbackContext.onCancel(eventData.error);\n }\n else {\n return () => this.callbackContext.onValue(eventData.snapshot, null);\n }\n }\n createCancelEvent(error, path) {\n if (this.callbackContext.hasCancelCallback) {\n return new CancelEvent(this, error, path);\n }\n else {\n return null;\n }\n }\n matches(other) {\n if (!(other instanceof ValueEventRegistration)) {\n return false;\n }\n else if (!other.callbackContext || !this.callbackContext) {\n // If no callback specified, we consider it to match any callback.\n return true;\n }\n else {\n return other.callbackContext.matches(this.callbackContext);\n }\n }\n hasAnyCallback() {\n return this.callbackContext !== null;\n }\n}\n/**\n * Represents the registration of a child_x event.\n */\nclass ChildEventRegistration {\n constructor(eventType, callbackContext) {\n this.eventType = eventType;\n this.callbackContext = callbackContext;\n }\n respondsTo(eventType) {\n let eventToCheck = eventType === 'children_added' ? 'child_added' : eventType;\n eventToCheck =\n eventToCheck === 'children_removed' ? 'child_removed' : eventToCheck;\n return this.eventType === eventToCheck;\n }\n createCancelEvent(error, path) {\n if (this.callbackContext.hasCancelCallback) {\n return new CancelEvent(this, error, path);\n }\n else {\n return null;\n }\n }\n createEvent(change, query) {\n assert(change.childName != null, 'Child events should have a childName.');\n const childRef = child(new ReferenceImpl(query._repo, query._path), change.childName);\n const index = query._queryParams.getIndex();\n return new DataEvent(change.type, this, new DataSnapshot(change.snapshotNode, childRef, index), change.prevName);\n }\n getEventRunner(eventData) {\n if (eventData.getEventType() === 'cancel') {\n return () => this.callbackContext.onCancel(eventData.error);\n }\n else {\n return () => this.callbackContext.onValue(eventData.snapshot, eventData.prevName);\n }\n }\n matches(other) {\n if (other instanceof ChildEventRegistration) {\n return (this.eventType === other.eventType &&\n (!this.callbackContext ||\n !other.callbackContext ||\n this.callbackContext.matches(other.callbackContext)));\n }\n return false;\n }\n hasAnyCallback() {\n return !!this.callbackContext;\n }\n}\nfunction addEventListener(query, eventType, callback, cancelCallbackOrListenOptions, options) {\n let cancelCallback;\n if (typeof cancelCallbackOrListenOptions === 'object') {\n cancelCallback = undefined;\n options = cancelCallbackOrListenOptions;\n }\n if (typeof cancelCallbackOrListenOptions === 'function') {\n cancelCallback = cancelCallbackOrListenOptions;\n }\n if (options && options.onlyOnce) {\n const userCallback = callback;\n const onceCallback = (dataSnapshot, previousChildName) => {\n repoRemoveEventCallbackForQuery(query._repo, query, container);\n userCallback(dataSnapshot, previousChildName);\n };\n onceCallback.userCallback = callback.userCallback;\n onceCallback.context = callback.context;\n callback = onceCallback;\n }\n const callbackContext = new CallbackContext(callback, cancelCallback || undefined);\n const container = eventType === 'value'\n ? new ValueEventRegistration(callbackContext)\n : new ChildEventRegistration(eventType, callbackContext);\n repoAddEventCallbackForQuery(query._repo, query, container);\n return () => repoRemoveEventCallbackForQuery(query._repo, query, container);\n}\nfunction onValue(query, callback, cancelCallbackOrListenOptions, options) {\n return addEventListener(query, 'value', callback, cancelCallbackOrListenOptions, options);\n}\nfunction onChildAdded(query, callback, cancelCallbackOrListenOptions, options) {\n return addEventListener(query, 'child_added', callback, cancelCallbackOrListenOptions, options);\n}\nfunction onChildChanged(query, callback, cancelCallbackOrListenOptions, options) {\n return addEventListener(query, 'child_changed', callback, cancelCallbackOrListenOptions, options);\n}\nfunction onChildMoved(query, callback, cancelCallbackOrListenOptions, options) {\n return addEventListener(query, 'child_moved', callback, cancelCallbackOrListenOptions, options);\n}\nfunction onChildRemoved(query, callback, cancelCallbackOrListenOptions, options) {\n return addEventListener(query, 'child_removed', callback, cancelCallbackOrListenOptions, options);\n}\n/**\n * Detaches a callback previously attached with the corresponding `on*()` (`onValue`, `onChildAdded`) listener.\n * Note: This is not the recommended way to remove a listener. Instead, please use the returned callback function from\n * the respective `on*` callbacks.\n *\n * Detach a callback previously attached with `on*()`. Calling `off()` on a parent listener\n * will not automatically remove listeners registered on child nodes, `off()`\n * must also be called on any child listeners to remove the callback.\n *\n * If a callback is not specified, all callbacks for the specified eventType\n * will be removed. Similarly, if no eventType is specified, all callbacks\n * for the `Reference` will be removed.\n *\n * Individual listeners can also be removed by invoking their unsubscribe\n * callbacks.\n *\n * @param query - The query that the listener was registered with.\n * @param eventType - One of the following strings: \"value\", \"child_added\",\n * \"child_changed\", \"child_removed\", or \"child_moved.\" If omitted, all callbacks\n * for the `Reference` will be removed.\n * @param callback - The callback function that was passed to `on()` or\n * `undefined` to remove all callbacks.\n */\nfunction off(query, eventType, callback) {\n let container = null;\n const expCallback = callback ? new CallbackContext(callback) : null;\n if (eventType === 'value') {\n container = new ValueEventRegistration(expCallback);\n }\n else if (eventType) {\n container = new ChildEventRegistration(eventType, expCallback);\n }\n repoRemoveEventCallbackForQuery(query._repo, query, container);\n}\n/**\n * A `QueryConstraint` is used to narrow the set of documents returned by a\n * Database query. `QueryConstraint`s are created by invoking {@link endAt},\n * {@link endBefore}, {@link startAt}, {@link startAfter}, {@link\n * limitToFirst}, {@link limitToLast}, {@link orderByChild},\n * {@link orderByChild}, {@link orderByKey} , {@link orderByPriority} ,\n * {@link orderByValue} or {@link equalTo} and\n * can then be passed to {@link query} to create a new query instance that\n * also contains this `QueryConstraint`.\n */\nclass QueryConstraint {\n}\nclass QueryEndAtConstraint extends QueryConstraint {\n constructor(_value, _key) {\n super();\n this._value = _value;\n this._key = _key;\n this.type = 'endAt';\n }\n _apply(query) {\n validateFirebaseDataArg('endAt', this._value, query._path, true);\n const newParams = queryParamsEndAt(query._queryParams, this._value, this._key);\n validateLimit(newParams);\n validateQueryEndpoints(newParams);\n if (query._queryParams.hasEnd()) {\n throw new Error('endAt: Starting point was already set (by another call to endAt, ' +\n 'endBefore or equalTo).');\n }\n return new QueryImpl(query._repo, query._path, newParams, query._orderByCalled);\n }\n}\n/**\n * Creates a `QueryConstraint` with the specified ending point.\n *\n * Using `startAt()`, `startAfter()`, `endBefore()`, `endAt()` and `equalTo()`\n * allows you to choose arbitrary starting and ending points for your queries.\n *\n * The ending point is inclusive, so children with exactly the specified value\n * will be included in the query. The optional key argument can be used to\n * further limit the range of the query. If it is specified, then children that\n * have exactly the specified value must also have a key name less than or equal\n * to the specified key.\n *\n * You can read more about `endAt()` in\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#filtering_data | Filtering data}.\n *\n * @param value - The value to end at. The argument type depends on which\n * `orderBy*()` function was used in this query. Specify a value that matches\n * the `orderBy*()` type. When used in combination with `orderByKey()`, the\n * value must be a string.\n * @param key - The child key to end at, among the children with the previously\n * specified priority. This argument is only allowed if ordering by child,\n * value, or priority.\n */\nfunction endAt(value, key) {\n validateKey('endAt', 'key', key, true);\n return new QueryEndAtConstraint(value, key);\n}\nclass QueryEndBeforeConstraint extends QueryConstraint {\n constructor(_value, _key) {\n super();\n this._value = _value;\n this._key = _key;\n this.type = 'endBefore';\n }\n _apply(query) {\n validateFirebaseDataArg('endBefore', this._value, query._path, false);\n const newParams = queryParamsEndBefore(query._queryParams, this._value, this._key);\n validateLimit(newParams);\n validateQueryEndpoints(newParams);\n if (query._queryParams.hasEnd()) {\n throw new Error('endBefore: Starting point was already set (by another call to endAt, ' +\n 'endBefore or equalTo).');\n }\n return new QueryImpl(query._repo, query._path, newParams, query._orderByCalled);\n }\n}\n/**\n * Creates a `QueryConstraint` with the specified ending point (exclusive).\n *\n * Using `startAt()`, `startAfter()`, `endBefore()`, `endAt()` and `equalTo()`\n * allows you to choose arbitrary starting and ending points for your queries.\n *\n * The ending point is exclusive. If only a value is provided, children\n * with a value less than the specified value will be included in the query.\n * If a key is specified, then children must have a value less than or equal\n * to the specified value and a key name less than the specified key.\n *\n * @param value - The value to end before. The argument type depends on which\n * `orderBy*()` function was used in this query. Specify a value that matches\n * the `orderBy*()` type. When used in combination with `orderByKey()`, the\n * value must be a string.\n * @param key - The child key to end before, among the children with the\n * previously specified priority. This argument is only allowed if ordering by\n * child, value, or priority.\n */\nfunction endBefore(value, key) {\n validateKey('endBefore', 'key', key, true);\n return new QueryEndBeforeConstraint(value, key);\n}\nclass QueryStartAtConstraint extends QueryConstraint {\n constructor(_value, _key) {\n super();\n this._value = _value;\n this._key = _key;\n this.type = 'startAt';\n }\n _apply(query) {\n validateFirebaseDataArg('startAt', this._value, query._path, true);\n const newParams = queryParamsStartAt(query._queryParams, this._value, this._key);\n validateLimit(newParams);\n validateQueryEndpoints(newParams);\n if (query._queryParams.hasStart()) {\n throw new Error('startAt: Starting point was already set (by another call to startAt, ' +\n 'startBefore or equalTo).');\n }\n return new QueryImpl(query._repo, query._path, newParams, query._orderByCalled);\n }\n}\n/**\n * Creates a `QueryConstraint` with the specified starting point.\n *\n * Using `startAt()`, `startAfter()`, `endBefore()`, `endAt()` and `equalTo()`\n * allows you to choose arbitrary starting and ending points for your queries.\n *\n * The starting point is inclusive, so children with exactly the specified value\n * will be included in the query. The optional key argument can be used to\n * further limit the range of the query. If it is specified, then children that\n * have exactly the specified value must also have a key name greater than or\n * equal to the specified key.\n *\n * You can read more about `startAt()` in\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#filtering_data | Filtering data}.\n *\n * @param value - The value to start at. The argument type depends on which\n * `orderBy*()` function was used in this query. Specify a value that matches\n * the `orderBy*()` type. When used in combination with `orderByKey()`, the\n * value must be a string.\n * @param key - The child key to start at. This argument is only allowed if\n * ordering by child, value, or priority.\n */\nfunction startAt(value = null, key) {\n validateKey('startAt', 'key', key, true);\n return new QueryStartAtConstraint(value, key);\n}\nclass QueryStartAfterConstraint extends QueryConstraint {\n constructor(_value, _key) {\n super();\n this._value = _value;\n this._key = _key;\n this.type = 'startAfter';\n }\n _apply(query) {\n validateFirebaseDataArg('startAfter', this._value, query._path, false);\n const newParams = queryParamsStartAfter(query._queryParams, this._value, this._key);\n validateLimit(newParams);\n validateQueryEndpoints(newParams);\n if (query._queryParams.hasStart()) {\n throw new Error('startAfter: Starting point was already set (by another call to startAt, ' +\n 'startAfter, or equalTo).');\n }\n return new QueryImpl(query._repo, query._path, newParams, query._orderByCalled);\n }\n}\n/**\n * Creates a `QueryConstraint` with the specified starting point (exclusive).\n *\n * Using `startAt()`, `startAfter()`, `endBefore()`, `endAt()` and `equalTo()`\n * allows you to choose arbitrary starting and ending points for your queries.\n *\n * The starting point is exclusive. If only a value is provided, children\n * with a value greater than the specified value will be included in the query.\n * If a key is specified, then children must have a value greater than or equal\n * to the specified value and a a key name greater than the specified key.\n *\n * @param value - The value to start after. The argument type depends on which\n * `orderBy*()` function was used in this query. Specify a value that matches\n * the `orderBy*()` type. When used in combination with `orderByKey()`, the\n * value must be a string.\n * @param key - The child key to start after. This argument is only allowed if\n * ordering by child, value, or priority.\n */\nfunction startAfter(value, key) {\n validateKey('startAfter', 'key', key, true);\n return new QueryStartAfterConstraint(value, key);\n}\nclass QueryLimitToFirstConstraint extends QueryConstraint {\n constructor(_limit) {\n super();\n this._limit = _limit;\n this.type = 'limitToFirst';\n }\n _apply(query) {\n if (query._queryParams.hasLimit()) {\n throw new Error('limitToFirst: Limit was already set (by another call to limitToFirst ' +\n 'or limitToLast).');\n }\n return new QueryImpl(query._repo, query._path, queryParamsLimitToFirst(query._queryParams, this._limit), query._orderByCalled);\n }\n}\n/**\n * Creates a new `QueryConstraint` that if limited to the first specific number\n * of children.\n *\n * The `limitToFirst()` method is used to set a maximum number of children to be\n * synced for a given callback. If we set a limit of 100, we will initially only\n * receive up to 100 `child_added` events. If we have fewer than 100 messages\n * stored in our Database, a `child_added` event will fire for each message.\n * However, if we have over 100 messages, we will only receive a `child_added`\n * event for the first 100 ordered messages. As items change, we will receive\n * `child_removed` events for each item that drops out of the active list so\n * that the total number stays at 100.\n *\n * You can read more about `limitToFirst()` in\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#filtering_data | Filtering data}.\n *\n * @param limit - The maximum number of nodes to include in this query.\n */\nfunction limitToFirst(limit) {\n if (typeof limit !== 'number' || Math.floor(limit) !== limit || limit <= 0) {\n throw new Error('limitToFirst: First argument must be a positive integer.');\n }\n return new QueryLimitToFirstConstraint(limit);\n}\nclass QueryLimitToLastConstraint extends QueryConstraint {\n constructor(_limit) {\n super();\n this._limit = _limit;\n this.type = 'limitToLast';\n }\n _apply(query) {\n if (query._queryParams.hasLimit()) {\n throw new Error('limitToLast: Limit was already set (by another call to limitToFirst ' +\n 'or limitToLast).');\n }\n return new QueryImpl(query._repo, query._path, queryParamsLimitToLast(query._queryParams, this._limit), query._orderByCalled);\n }\n}\n/**\n * Creates a new `QueryConstraint` that is limited to return only the last\n * specified number of children.\n *\n * The `limitToLast()` method is used to set a maximum number of children to be\n * synced for a given callback. If we set a limit of 100, we will initially only\n * receive up to 100 `child_added` events. If we have fewer than 100 messages\n * stored in our Database, a `child_added` event will fire for each message.\n * However, if we have over 100 messages, we will only receive a `child_added`\n * event for the last 100 ordered messages. As items change, we will receive\n * `child_removed` events for each item that drops out of the active list so\n * that the total number stays at 100.\n *\n * You can read more about `limitToLast()` in\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#filtering_data | Filtering data}.\n *\n * @param limit - The maximum number of nodes to include in this query.\n */\nfunction limitToLast(limit) {\n if (typeof limit !== 'number' || Math.floor(limit) !== limit || limit <= 0) {\n throw new Error('limitToLast: First argument must be a positive integer.');\n }\n return new QueryLimitToLastConstraint(limit);\n}\nclass QueryOrderByChildConstraint extends QueryConstraint {\n constructor(_path) {\n super();\n this._path = _path;\n this.type = 'orderByChild';\n }\n _apply(query) {\n validateNoPreviousOrderByCall(query, 'orderByChild');\n const parsedPath = new Path(this._path);\n if (pathIsEmpty(parsedPath)) {\n throw new Error('orderByChild: cannot pass in empty path. Use orderByValue() instead.');\n }\n const index = new PathIndex(parsedPath);\n const newParams = queryParamsOrderBy(query._queryParams, index);\n validateQueryEndpoints(newParams);\n return new QueryImpl(query._repo, query._path, newParams, \n /*orderByCalled=*/ true);\n }\n}\n/**\n * Creates a new `QueryConstraint` that orders by the specified child key.\n *\n * Queries can only order by one key at a time. Calling `orderByChild()`\n * multiple times on the same query is an error.\n *\n * Firebase queries allow you to order your data by any child key on the fly.\n * However, if you know in advance what your indexes will be, you can define\n * them via the .indexOn rule in your Security Rules for better performance. See\n * the{@link https://firebase.google.com/docs/database/security/indexing-data}\n * rule for more information.\n *\n * You can read more about `orderByChild()` in\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#sort_data | Sort data}.\n *\n * @param path - The path to order by.\n */\nfunction orderByChild(path) {\n if (path === '$key') {\n throw new Error('orderByChild: \"$key\" is invalid. Use orderByKey() instead.');\n }\n else if (path === '$priority') {\n throw new Error('orderByChild: \"$priority\" is invalid. Use orderByPriority() instead.');\n }\n else if (path === '$value') {\n throw new Error('orderByChild: \"$value\" is invalid. Use orderByValue() instead.');\n }\n validatePathString('orderByChild', 'path', path, false);\n return new QueryOrderByChildConstraint(path);\n}\nclass QueryOrderByKeyConstraint extends QueryConstraint {\n constructor() {\n super(...arguments);\n this.type = 'orderByKey';\n }\n _apply(query) {\n validateNoPreviousOrderByCall(query, 'orderByKey');\n const newParams = queryParamsOrderBy(query._queryParams, KEY_INDEX);\n validateQueryEndpoints(newParams);\n return new QueryImpl(query._repo, query._path, newParams, \n /*orderByCalled=*/ true);\n }\n}\n/**\n * Creates a new `QueryConstraint` that orders by the key.\n *\n * Sorts the results of a query by their (ascending) key values.\n *\n * You can read more about `orderByKey()` in\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#sort_data | Sort data}.\n */\nfunction orderByKey() {\n return new QueryOrderByKeyConstraint();\n}\nclass QueryOrderByPriorityConstraint extends QueryConstraint {\n constructor() {\n super(...arguments);\n this.type = 'orderByPriority';\n }\n _apply(query) {\n validateNoPreviousOrderByCall(query, 'orderByPriority');\n const newParams = queryParamsOrderBy(query._queryParams, PRIORITY_INDEX);\n validateQueryEndpoints(newParams);\n return new QueryImpl(query._repo, query._path, newParams, \n /*orderByCalled=*/ true);\n }\n}\n/**\n * Creates a new `QueryConstraint` that orders by priority.\n *\n * Applications need not use priority but can order collections by\n * ordinary properties (see\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#sort_data | Sort data}\n * for alternatives to priority.\n */\nfunction orderByPriority() {\n return new QueryOrderByPriorityConstraint();\n}\nclass QueryOrderByValueConstraint extends QueryConstraint {\n constructor() {\n super(...arguments);\n this.type = 'orderByValue';\n }\n _apply(query) {\n validateNoPreviousOrderByCall(query, 'orderByValue');\n const newParams = queryParamsOrderBy(query._queryParams, VALUE_INDEX);\n validateQueryEndpoints(newParams);\n return new QueryImpl(query._repo, query._path, newParams, \n /*orderByCalled=*/ true);\n }\n}\n/**\n * Creates a new `QueryConstraint` that orders by value.\n *\n * If the children of a query are all scalar values (string, number, or\n * boolean), you can order the results by their (ascending) values.\n *\n * You can read more about `orderByValue()` in\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#sort_data | Sort data}.\n */\nfunction orderByValue() {\n return new QueryOrderByValueConstraint();\n}\nclass QueryEqualToValueConstraint extends QueryConstraint {\n constructor(_value, _key) {\n super();\n this._value = _value;\n this._key = _key;\n this.type = 'equalTo';\n }\n _apply(query) {\n validateFirebaseDataArg('equalTo', this._value, query._path, false);\n if (query._queryParams.hasStart()) {\n throw new Error('equalTo: Starting point was already set (by another call to startAt/startAfter or ' +\n 'equalTo).');\n }\n if (query._queryParams.hasEnd()) {\n throw new Error('equalTo: Ending point was already set (by another call to endAt/endBefore or ' +\n 'equalTo).');\n }\n return new QueryEndAtConstraint(this._value, this._key)._apply(new QueryStartAtConstraint(this._value, this._key)._apply(query));\n }\n}\n/**\n * Creates a `QueryConstraint` that includes children that match the specified\n * value.\n *\n * Using `startAt()`, `startAfter()`, `endBefore()`, `endAt()` and `equalTo()`\n * allows you to choose arbitrary starting and ending points for your queries.\n *\n * The optional key argument can be used to further limit the range of the\n * query. If it is specified, then children that have exactly the specified\n * value must also have exactly the specified key as their key name. This can be\n * used to filter result sets with many matches for the same value.\n *\n * You can read more about `equalTo()` in\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#filtering_data | Filtering data}.\n *\n * @param value - The value to match for. The argument type depends on which\n * `orderBy*()` function was used in this query. Specify a value that matches\n * the `orderBy*()` type. When used in combination with `orderByKey()`, the\n * value must be a string.\n * @param key - The child key to start at, among the children with the\n * previously specified priority. This argument is only allowed if ordering by\n * child, value, or priority.\n */\nfunction equalTo(value, key) {\n validateKey('equalTo', 'key', key, true);\n return new QueryEqualToValueConstraint(value, key);\n}\n/**\n * Creates a new immutable instance of `Query` that is extended to also include\n * additional query constraints.\n *\n * @param query - The Query instance to use as a base for the new constraints.\n * @param queryConstraints - The list of `QueryConstraint`s to apply.\n * @throws if any of the provided query constraints cannot be combined with the\n * existing or new constraints.\n */\nfunction query(query, ...queryConstraints) {\n let queryImpl = getModularInstance(query);\n for (const constraint of queryConstraints) {\n queryImpl = constraint._apply(queryImpl);\n }\n return queryImpl;\n}\n/**\n * Define reference constructor in various modules\n *\n * We are doing this here to avoid several circular\n * dependency issues\n */\nsyncPointSetReferenceConstructor(ReferenceImpl);\nsyncTreeSetReferenceConstructor(ReferenceImpl);\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * This variable is also defined in the firebase Node.js Admin SDK. Before\n * modifying this definition, consult the definition in:\n *\n * https://github.com/firebase/firebase-admin-node\n *\n * and make sure the two are consistent.\n */\nconst FIREBASE_DATABASE_EMULATOR_HOST_VAR = 'FIREBASE_DATABASE_EMULATOR_HOST';\n/**\n * Creates and caches `Repo` instances.\n */\nconst repos = {};\n/**\n * If true, any new `Repo` will be created to use `ReadonlyRestClient` (for testing purposes).\n */\nlet useRestClient = false;\n/**\n * Update an existing `Repo` in place to point to a new host/port.\n */\nfunction repoManagerApplyEmulatorSettings(repo, host, port, tokenProvider) {\n repo.repoInfo_ = new RepoInfo(`${host}:${port}`, \n /* secure= */ false, repo.repoInfo_.namespace, repo.repoInfo_.webSocketOnly, repo.repoInfo_.nodeAdmin, repo.repoInfo_.persistenceKey, repo.repoInfo_.includeNamespaceInQueryParams, \n /*isUsingEmulator=*/ true);\n if (tokenProvider) {\n repo.authTokenProvider_ = tokenProvider;\n }\n}\n/**\n * This function should only ever be called to CREATE a new database instance.\n * @internal\n */\nfunction repoManagerDatabaseFromApp(app, authProvider, appCheckProvider, url, nodeAdmin) {\n let dbUrl = url || app.options.databaseURL;\n if (dbUrl === undefined) {\n if (!app.options.projectId) {\n fatal(\"Can't determine Firebase Database URL. Be sure to include \" +\n ' a Project ID when calling firebase.initializeApp().');\n }\n log('Using default host for project ', app.options.projectId);\n dbUrl = `${app.options.projectId}-default-rtdb.firebaseio.com`;\n }\n let parsedUrl = parseRepoInfo(dbUrl, nodeAdmin);\n let repoInfo = parsedUrl.repoInfo;\n let isEmulator;\n let dbEmulatorHost = undefined;\n if (typeof process !== 'undefined' && process.env) {\n dbEmulatorHost = process.env[FIREBASE_DATABASE_EMULATOR_HOST_VAR];\n }\n if (dbEmulatorHost) {\n isEmulator = true;\n dbUrl = `http://${dbEmulatorHost}?ns=${repoInfo.namespace}`;\n parsedUrl = parseRepoInfo(dbUrl, nodeAdmin);\n repoInfo = parsedUrl.repoInfo;\n }\n else {\n isEmulator = !parsedUrl.repoInfo.secure;\n }\n const authTokenProvider = nodeAdmin && isEmulator\n ? new EmulatorTokenProvider(EmulatorTokenProvider.OWNER)\n : new FirebaseAuthTokenProvider(app.name, app.options, authProvider);\n validateUrl('Invalid Firebase Database URL', parsedUrl);\n if (!pathIsEmpty(parsedUrl.path)) {\n fatal('Database URL must point to the root of a Firebase Database ' +\n '(not including a child path).');\n }\n const repo = repoManagerCreateRepo(repoInfo, app, authTokenProvider, new AppCheckTokenProvider(app.name, appCheckProvider));\n return new Database(repo, app);\n}\n/**\n * Remove the repo and make sure it is disconnected.\n *\n */\nfunction repoManagerDeleteRepo(repo, appName) {\n const appRepos = repos[appName];\n // This should never happen...\n if (!appRepos || appRepos[repo.key] !== repo) {\n fatal(`Database ${appName}(${repo.repoInfo_}) has already been deleted.`);\n }\n repoInterrupt(repo);\n delete appRepos[repo.key];\n}\n/**\n * Ensures a repo doesn't already exist and then creates one using the\n * provided app.\n *\n * @param repoInfo - The metadata about the Repo\n * @returns The Repo object for the specified server / repoName.\n */\nfunction repoManagerCreateRepo(repoInfo, app, authTokenProvider, appCheckProvider) {\n let appRepos = repos[app.name];\n if (!appRepos) {\n appRepos = {};\n repos[app.name] = appRepos;\n }\n let repo = appRepos[repoInfo.toURLString()];\n if (repo) {\n fatal('Database initialized multiple times. Please make sure the format of the database URL matches with each database() call.');\n }\n repo = new Repo(repoInfo, useRestClient, authTokenProvider, appCheckProvider);\n appRepos[repoInfo.toURLString()] = repo;\n return repo;\n}\n/**\n * Forces us to use ReadonlyRestClient instead of PersistentConnection for new Repos.\n */\nfunction repoManagerForceRestClient(forceRestClient) {\n useRestClient = forceRestClient;\n}\n/**\n * Class representing a Firebase Realtime Database.\n */\nclass Database {\n /** @hideconstructor */\n constructor(_repoInternal, \n /** The {@link @firebase/app#FirebaseApp} associated with this Realtime Database instance. */\n app) {\n this._repoInternal = _repoInternal;\n this.app = app;\n /** Represents a `Database` instance. */\n this['type'] = 'database';\n /** Track if the instance has been used (root or repo accessed) */\n this._instanceStarted = false;\n }\n get _repo() {\n if (!this._instanceStarted) {\n repoStart(this._repoInternal, this.app.options.appId, this.app.options['databaseAuthVariableOverride']);\n this._instanceStarted = true;\n }\n return this._repoInternal;\n }\n get _root() {\n if (!this._rootInternal) {\n this._rootInternal = new ReferenceImpl(this._repo, newEmptyPath());\n }\n return this._rootInternal;\n }\n _delete() {\n if (this._rootInternal !== null) {\n repoManagerDeleteRepo(this._repo, this.app.name);\n this._repoInternal = null;\n this._rootInternal = null;\n }\n return Promise.resolve();\n }\n _checkNotDeleted(apiName) {\n if (this._rootInternal === null) {\n fatal('Cannot call ' + apiName + ' on a deleted database.');\n }\n }\n}\nfunction checkTransportInit() {\n if (TransportManager.IS_TRANSPORT_INITIALIZED) {\n warn('Transport has already been initialized. Please call this function before calling ref or setting up a listener');\n }\n}\n/**\n * Force the use of websockets instead of longPolling.\n */\nfunction forceWebSockets() {\n checkTransportInit();\n BrowserPollConnection.forceDisallow();\n}\n/**\n * Force the use of longPolling instead of websockets. This will be ignored if websocket protocol is used in databaseURL.\n */\nfunction forceLongPolling() {\n checkTransportInit();\n WebSocketConnection.forceDisallow();\n BrowserPollConnection.forceAllow();\n}\n/**\n * Returns the instance of the Realtime Database SDK that is associated with the provided\n * {@link @firebase/app#FirebaseApp}. Initializes a new instance with default settings if\n * no instance exists or if the existing instance uses a custom database URL.\n *\n * @param app - The {@link @firebase/app#FirebaseApp} instance that the returned Realtime\n * Database instance is associated with.\n * @param url - The URL of the Realtime Database instance to connect to. If not\n * provided, the SDK connects to the default instance of the Firebase App.\n * @returns The `Database` instance of the provided app.\n */\nfunction getDatabase(app = getApp(), url) {\n const db = _getProvider(app, 'database').getImmediate({\n identifier: url\n });\n if (!db._instanceStarted) {\n const emulator = getDefaultEmulatorHostnameAndPort('database');\n if (emulator) {\n connectDatabaseEmulator(db, ...emulator);\n }\n }\n return db;\n}\n/**\n * Modify the provided instance to communicate with the Realtime Database\n * emulator.\n *\n *

Note: This method must be called before performing any other operation.\n *\n * @param db - The instance to modify.\n * @param host - The emulator host (ex: localhost)\n * @param port - The emulator port (ex: 8080)\n * @param options.mockUserToken - the mock auth token to use for unit testing Security Rules\n */\nfunction connectDatabaseEmulator(db, host, port, options = {}) {\n db = getModularInstance(db);\n db._checkNotDeleted('useEmulator');\n if (db._instanceStarted) {\n fatal('Cannot call useEmulator() after instance has already been initialized.');\n }\n const repo = db._repoInternal;\n let tokenProvider = undefined;\n if (repo.repoInfo_.nodeAdmin) {\n if (options.mockUserToken) {\n fatal('mockUserToken is not supported by the Admin SDK. For client access with mock users, please use the \"firebase\" package instead of \"firebase-admin\".');\n }\n tokenProvider = new EmulatorTokenProvider(EmulatorTokenProvider.OWNER);\n }\n else if (options.mockUserToken) {\n const token = typeof options.mockUserToken === 'string'\n ? options.mockUserToken\n : createMockUserToken(options.mockUserToken, db.app.options.projectId);\n tokenProvider = new EmulatorTokenProvider(token);\n }\n // Modify the repo to apply emulator settings\n repoManagerApplyEmulatorSettings(repo, host, port, tokenProvider);\n}\n/**\n * Disconnects from the server (all Database operations will be completed\n * offline).\n *\n * The client automatically maintains a persistent connection to the Database\n * server, which will remain active indefinitely and reconnect when\n * disconnected. However, the `goOffline()` and `goOnline()` methods may be used\n * to control the client connection in cases where a persistent connection is\n * undesirable.\n *\n * While offline, the client will no longer receive data updates from the\n * Database. However, all Database operations performed locally will continue to\n * immediately fire events, allowing your application to continue behaving\n * normally. Additionally, each operation performed locally will automatically\n * be queued and retried upon reconnection to the Database server.\n *\n * To reconnect to the Database and begin receiving remote events, see\n * `goOnline()`.\n *\n * @param db - The instance to disconnect.\n */\nfunction goOffline(db) {\n db = getModularInstance(db);\n db._checkNotDeleted('goOffline');\n repoInterrupt(db._repo);\n}\n/**\n * Reconnects to the server and synchronizes the offline Database state\n * with the server state.\n *\n * This method should be used after disabling the active connection with\n * `goOffline()`. Once reconnected, the client will transmit the proper data\n * and fire the appropriate events so that your client \"catches up\"\n * automatically.\n *\n * @param db - The instance to reconnect.\n */\nfunction goOnline(db) {\n db = getModularInstance(db);\n db._checkNotDeleted('goOnline');\n repoResume(db._repo);\n}\nfunction enableLogging(logger, persistent) {\n enableLogging$1(logger, persistent);\n}\n\n/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction registerDatabase(variant) {\n setSDKVersion(SDK_VERSION$1);\n _registerComponent(new Component('database', (container, { instanceIdentifier: url }) => {\n const app = container.getProvider('app').getImmediate();\n const authProvider = container.getProvider('auth-internal');\n const appCheckProvider = container.getProvider('app-check-internal');\n return repoManagerDatabaseFromApp(app, authProvider, appCheckProvider, url);\n }, \"PUBLIC\" /* ComponentType.PUBLIC */).setMultipleInstances(true));\n registerVersion(name, version, variant);\n // BUILD_TARGET will be replaced by values like esm2017, cjs2017, etc during the compilation\n registerVersion(name, version, 'esm2017');\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst SERVER_TIMESTAMP = {\n '.sv': 'timestamp'\n};\n/**\n * Returns a placeholder value for auto-populating the current timestamp (time\n * since the Unix epoch, in milliseconds) as determined by the Firebase\n * servers.\n */\nfunction serverTimestamp() {\n return SERVER_TIMESTAMP;\n}\n/**\n * Returns a placeholder value that can be used to atomically increment the\n * current database value by the provided delta.\n *\n * @param delta - the amount to modify the current value atomically.\n * @returns A placeholder value for modifying data atomically server-side.\n */\nfunction increment(delta) {\n return {\n '.sv': {\n 'increment': delta\n }\n };\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A type for the resolve value of {@link runTransaction}.\n */\nclass TransactionResult {\n /** @hideconstructor */\n constructor(\n /** Whether the transaction was successfully committed. */\n committed, \n /** The resulting data snapshot. */\n snapshot) {\n this.committed = committed;\n this.snapshot = snapshot;\n }\n /** Returns a JSON-serializable representation of this object. */\n toJSON() {\n return { committed: this.committed, snapshot: this.snapshot.toJSON() };\n }\n}\n/**\n * Atomically modifies the data at this location.\n *\n * Atomically modify the data at this location. Unlike a normal `set()`, which\n * just overwrites the data regardless of its previous value, `runTransaction()` is\n * used to modify the existing value to a new value, ensuring there are no\n * conflicts with other clients writing to the same location at the same time.\n *\n * To accomplish this, you pass `runTransaction()` an update function which is\n * used to transform the current value into a new value. If another client\n * writes to the location before your new value is successfully written, your\n * update function will be called again with the new current value, and the\n * write will be retried. This will happen repeatedly until your write succeeds\n * without conflict or you abort the transaction by not returning a value from\n * your update function.\n *\n * Note: Modifying data with `set()` will cancel any pending transactions at\n * that location, so extreme care should be taken if mixing `set()` and\n * `runTransaction()` to update the same data.\n *\n * Note: When using transactions with Security and Firebase Rules in place, be\n * aware that a client needs `.read` access in addition to `.write` access in\n * order to perform a transaction. This is because the client-side nature of\n * transactions requires the client to read the data in order to transactionally\n * update it.\n *\n * @param ref - The location to atomically modify.\n * @param transactionUpdate - A developer-supplied function which will be passed\n * the current data stored at this location (as a JavaScript object). The\n * function should return the new value it would like written (as a JavaScript\n * object). If `undefined` is returned (i.e. you return with no arguments) the\n * transaction will be aborted and the data at this location will not be\n * modified.\n * @param options - An options object to configure transactions.\n * @returns A `Promise` that can optionally be used instead of the `onComplete`\n * callback to handle success and failure.\n */\nfunction runTransaction(ref, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntransactionUpdate, options) {\n var _a;\n ref = getModularInstance(ref);\n validateWritablePath('Reference.transaction', ref._path);\n if (ref.key === '.length' || ref.key === '.keys') {\n throw ('Reference.transaction failed: ' + ref.key + ' is a read-only object.');\n }\n const applyLocally = (_a = options === null || options === void 0 ? void 0 : options.applyLocally) !== null && _a !== void 0 ? _a : true;\n const deferred = new Deferred();\n const promiseComplete = (error, committed, node) => {\n let dataSnapshot = null;\n if (error) {\n deferred.reject(error);\n }\n else {\n dataSnapshot = new DataSnapshot(node, new ReferenceImpl(ref._repo, ref._path), PRIORITY_INDEX);\n deferred.resolve(new TransactionResult(committed, dataSnapshot));\n }\n };\n // Add a watch to make sure we get server updates.\n const unwatcher = onValue(ref, () => { });\n repoStartTransaction(ref._repo, ref._path, transactionUpdate, promiseComplete, unwatcher, applyLocally);\n return deferred.promise;\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nPersistentConnection;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nPersistentConnection.prototype.simpleListen = function (pathString, onComplete) {\n this.sendRequest('q', { p: pathString }, onComplete);\n};\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nPersistentConnection.prototype.echo = function (data, onEcho) {\n this.sendRequest('echo', { d: data }, onEcho);\n};\n// RealTimeConnection properties that we use in tests.\nConnection;\n/**\n * @internal\n */\nconst hijackHash = function (newHash) {\n const oldPut = PersistentConnection.prototype.put;\n PersistentConnection.prototype.put = function (pathString, data, onComplete, hash) {\n if (hash !== undefined) {\n hash = newHash();\n }\n oldPut.call(this, pathString, data, onComplete, hash);\n };\n return function () {\n PersistentConnection.prototype.put = oldPut;\n };\n};\nRepoInfo;\n/**\n * Forces the RepoManager to create Repos that use ReadonlyRestClient instead of PersistentConnection.\n * @internal\n */\nconst forceRestClient = function (forceRestClient) {\n repoManagerForceRestClient(forceRestClient);\n};\n\n/**\n * @license\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Used by console to create a database based on the app,\n * passed database URL and a custom auth implementation.\n * @internal\n * @param app - A valid FirebaseApp-like object\n * @param url - A valid Firebase databaseURL\n * @param version - custom version e.g. firebase-admin version\n * @param customAppCheckImpl - custom app check implementation\n * @param customAuthImpl - custom auth implementation\n */\nfunction _initStandalone({ app, url, version, customAuthImpl, customAppCheckImpl, nodeAdmin = false }) {\n setSDKVersion(version);\n /**\n * ComponentContainer('database-standalone') is just a placeholder that doesn't perform\n * any actual function.\n */\n const componentContainer = new ComponentContainer('database-standalone');\n const authProvider = new Provider('auth-internal', componentContainer);\n let appCheckProvider;\n if (customAppCheckImpl) {\n appCheckProvider = new Provider('app-check-internal', componentContainer);\n appCheckProvider.setComponent(new Component('app-check-internal', () => customAppCheckImpl, \"PRIVATE\" /* ComponentType.PRIVATE */));\n }\n authProvider.setComponent(new Component('auth-internal', () => customAuthImpl, \"PRIVATE\" /* ComponentType.PRIVATE */));\n return repoManagerDatabaseFromApp(app, authProvider, appCheckProvider, url, nodeAdmin);\n}\n\n/**\n * Firebase Realtime Database\n *\n * @packageDocumentation\n */\nregisterDatabase();\n\nexport { DataSnapshot, Database, OnDisconnect, QueryConstraint, TransactionResult, QueryImpl as _QueryImpl, QueryParams as _QueryParams, ReferenceImpl as _ReferenceImpl, forceRestClient as _TEST_ACCESS_forceRestClient, hijackHash as _TEST_ACCESS_hijackHash, _initStandalone, repoManagerDatabaseFromApp as _repoManagerDatabaseFromApp, setSDKVersion as _setSDKVersion, validatePathString as _validatePathString, validateWritablePath as _validateWritablePath, child, connectDatabaseEmulator, enableLogging, endAt, endBefore, equalTo, forceLongPolling, forceWebSockets, get, getDatabase, goOffline, goOnline, increment, limitToFirst, limitToLast, off, onChildAdded, onChildChanged, onChildMoved, onChildRemoved, onDisconnect, onValue, orderByChild, orderByKey, orderByPriority, orderByValue, push, query, ref, refFromURL, remove, runTransaction, serverTimestamp, set, setPriority, setWithPriority, startAfter, startAt, update };\n//# sourceMappingURL=index.esm2017.js.map\n","import { _getProvider, getApp, _registerComponent, registerVersion } from '@firebase/app';\nimport { Component } from '@firebase/component';\nimport { ErrorFactory, FirebaseError } from '@firebase/util';\nimport { openDB } from 'idb';\n\nconst name = \"@firebase/installations\";\nconst version = \"0.6.11\";\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst PENDING_TIMEOUT_MS = 10000;\nconst PACKAGE_VERSION = `w:${version}`;\nconst INTERNAL_AUTH_VERSION = 'FIS_v2';\nconst INSTALLATIONS_API_URL = 'https://firebaseinstallations.googleapis.com/v1';\nconst TOKEN_EXPIRATION_BUFFER = 60 * 60 * 1000; // One hour\nconst SERVICE = 'installations';\nconst SERVICE_NAME = 'Installations';\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst ERROR_DESCRIPTION_MAP = {\n [\"missing-app-config-values\" /* ErrorCode.MISSING_APP_CONFIG_VALUES */]: 'Missing App configuration value: \"{$valueName}\"',\n [\"not-registered\" /* ErrorCode.NOT_REGISTERED */]: 'Firebase Installation is not registered.',\n [\"installation-not-found\" /* ErrorCode.INSTALLATION_NOT_FOUND */]: 'Firebase Installation not found.',\n [\"request-failed\" /* ErrorCode.REQUEST_FAILED */]: '{$requestName} request failed with error \"{$serverCode} {$serverStatus}: {$serverMessage}\"',\n [\"app-offline\" /* ErrorCode.APP_OFFLINE */]: 'Could not process request. Application offline.',\n [\"delete-pending-registration\" /* ErrorCode.DELETE_PENDING_REGISTRATION */]: \"Can't delete installation while there is a pending registration request.\"\n};\nconst ERROR_FACTORY = new ErrorFactory(SERVICE, SERVICE_NAME, ERROR_DESCRIPTION_MAP);\n/** Returns true if error is a FirebaseError that is based on an error from the server. */\nfunction isServerError(error) {\n return (error instanceof FirebaseError &&\n error.code.includes(\"request-failed\" /* ErrorCode.REQUEST_FAILED */));\n}\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction getInstallationsEndpoint({ projectId }) {\n return `${INSTALLATIONS_API_URL}/projects/${projectId}/installations`;\n}\nfunction extractAuthTokenInfoFromResponse(response) {\n return {\n token: response.token,\n requestStatus: 2 /* RequestStatus.COMPLETED */,\n expiresIn: getExpiresInFromResponseExpiresIn(response.expiresIn),\n creationTime: Date.now()\n };\n}\nasync function getErrorFromResponse(requestName, response) {\n const responseJson = await response.json();\n const errorData = responseJson.error;\n return ERROR_FACTORY.create(\"request-failed\" /* ErrorCode.REQUEST_FAILED */, {\n requestName,\n serverCode: errorData.code,\n serverMessage: errorData.message,\n serverStatus: errorData.status\n });\n}\nfunction getHeaders({ apiKey }) {\n return new Headers({\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n 'x-goog-api-key': apiKey\n });\n}\nfunction getHeadersWithAuth(appConfig, { refreshToken }) {\n const headers = getHeaders(appConfig);\n headers.append('Authorization', getAuthorizationHeader(refreshToken));\n return headers;\n}\n/**\n * Calls the passed in fetch wrapper and returns the response.\n * If the returned response has a status of 5xx, re-runs the function once and\n * returns the response.\n */\nasync function retryIfServerError(fn) {\n const result = await fn();\n if (result.status >= 500 && result.status < 600) {\n // Internal Server Error. Retry request.\n return fn();\n }\n return result;\n}\nfunction getExpiresInFromResponseExpiresIn(responseExpiresIn) {\n // This works because the server will never respond with fractions of a second.\n return Number(responseExpiresIn.replace('s', '000'));\n}\nfunction getAuthorizationHeader(refreshToken) {\n return `${INTERNAL_AUTH_VERSION} ${refreshToken}`;\n}\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nasync function createInstallationRequest({ appConfig, heartbeatServiceProvider }, { fid }) {\n const endpoint = getInstallationsEndpoint(appConfig);\n const headers = getHeaders(appConfig);\n // If heartbeat service exists, add the heartbeat string to the header.\n const heartbeatService = heartbeatServiceProvider.getImmediate({\n optional: true\n });\n if (heartbeatService) {\n const heartbeatsHeader = await heartbeatService.getHeartbeatsHeader();\n if (heartbeatsHeader) {\n headers.append('x-firebase-client', heartbeatsHeader);\n }\n }\n const body = {\n fid,\n authVersion: INTERNAL_AUTH_VERSION,\n appId: appConfig.appId,\n sdkVersion: PACKAGE_VERSION\n };\n const request = {\n method: 'POST',\n headers,\n body: JSON.stringify(body)\n };\n const response = await retryIfServerError(() => fetch(endpoint, request));\n if (response.ok) {\n const responseValue = await response.json();\n const registeredInstallationEntry = {\n fid: responseValue.fid || fid,\n registrationStatus: 2 /* RequestStatus.COMPLETED */,\n refreshToken: responseValue.refreshToken,\n authToken: extractAuthTokenInfoFromResponse(responseValue.authToken)\n };\n return registeredInstallationEntry;\n }\n else {\n throw await getErrorFromResponse('Create Installation', response);\n }\n}\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/** Returns a promise that resolves after given time passes. */\nfunction sleep(ms) {\n return new Promise(resolve => {\n setTimeout(resolve, ms);\n });\n}\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction bufferToBase64UrlSafe(array) {\n const b64 = btoa(String.fromCharCode(...array));\n return b64.replace(/\\+/g, '-').replace(/\\//g, '_');\n}\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst VALID_FID_PATTERN = /^[cdef][\\w-]{21}$/;\nconst INVALID_FID = '';\n/**\n * Generates a new FID using random values from Web Crypto API.\n * Returns an empty string if FID generation fails for any reason.\n */\nfunction generateFid() {\n try {\n // A valid FID has exactly 22 base64 characters, which is 132 bits, or 16.5\n // bytes. our implementation generates a 17 byte array instead.\n const fidByteArray = new Uint8Array(17);\n const crypto = self.crypto || self.msCrypto;\n crypto.getRandomValues(fidByteArray);\n // Replace the first 4 random bits with the constant FID header of 0b0111.\n fidByteArray[0] = 0b01110000 + (fidByteArray[0] % 0b00010000);\n const fid = encode(fidByteArray);\n return VALID_FID_PATTERN.test(fid) ? fid : INVALID_FID;\n }\n catch (_a) {\n // FID generation errored\n return INVALID_FID;\n }\n}\n/** Converts a FID Uint8Array to a base64 string representation. */\nfunction encode(fidByteArray) {\n const b64String = bufferToBase64UrlSafe(fidByteArray);\n // Remove the 23rd character that was added because of the extra 4 bits at the\n // end of our 17 byte array, and the '=' padding.\n return b64String.substr(0, 22);\n}\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/** Returns a string key that can be used to identify the app. */\nfunction getKey(appConfig) {\n return `${appConfig.appName}!${appConfig.appId}`;\n}\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst fidChangeCallbacks = new Map();\n/**\n * Calls the onIdChange callbacks with the new FID value, and broadcasts the\n * change to other tabs.\n */\nfunction fidChanged(appConfig, fid) {\n const key = getKey(appConfig);\n callFidChangeCallbacks(key, fid);\n broadcastFidChange(key, fid);\n}\nfunction addCallback(appConfig, callback) {\n // Open the broadcast channel if it's not already open,\n // to be able to listen to change events from other tabs.\n getBroadcastChannel();\n const key = getKey(appConfig);\n let callbackSet = fidChangeCallbacks.get(key);\n if (!callbackSet) {\n callbackSet = new Set();\n fidChangeCallbacks.set(key, callbackSet);\n }\n callbackSet.add(callback);\n}\nfunction removeCallback(appConfig, callback) {\n const key = getKey(appConfig);\n const callbackSet = fidChangeCallbacks.get(key);\n if (!callbackSet) {\n return;\n }\n callbackSet.delete(callback);\n if (callbackSet.size === 0) {\n fidChangeCallbacks.delete(key);\n }\n // Close broadcast channel if there are no more callbacks.\n closeBroadcastChannel();\n}\nfunction callFidChangeCallbacks(key, fid) {\n const callbacks = fidChangeCallbacks.get(key);\n if (!callbacks) {\n return;\n }\n for (const callback of callbacks) {\n callback(fid);\n }\n}\nfunction broadcastFidChange(key, fid) {\n const channel = getBroadcastChannel();\n if (channel) {\n channel.postMessage({ key, fid });\n }\n closeBroadcastChannel();\n}\nlet broadcastChannel = null;\n/** Opens and returns a BroadcastChannel if it is supported by the browser. */\nfunction getBroadcastChannel() {\n if (!broadcastChannel && 'BroadcastChannel' in self) {\n broadcastChannel = new BroadcastChannel('[Firebase] FID Change');\n broadcastChannel.onmessage = e => {\n callFidChangeCallbacks(e.data.key, e.data.fid);\n };\n }\n return broadcastChannel;\n}\nfunction closeBroadcastChannel() {\n if (fidChangeCallbacks.size === 0 && broadcastChannel) {\n broadcastChannel.close();\n broadcastChannel = null;\n }\n}\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst DATABASE_NAME = 'firebase-installations-database';\nconst DATABASE_VERSION = 1;\nconst OBJECT_STORE_NAME = 'firebase-installations-store';\nlet dbPromise = null;\nfunction getDbPromise() {\n if (!dbPromise) {\n dbPromise = openDB(DATABASE_NAME, DATABASE_VERSION, {\n upgrade: (db, oldVersion) => {\n // We don't use 'break' in this switch statement, the fall-through\n // behavior is what we want, because if there are multiple versions between\n // the old version and the current version, we want ALL the migrations\n // that correspond to those versions to run, not only the last one.\n // eslint-disable-next-line default-case\n switch (oldVersion) {\n case 0:\n db.createObjectStore(OBJECT_STORE_NAME);\n }\n }\n });\n }\n return dbPromise;\n}\n/** Assigns or overwrites the record for the given key with the given value. */\nasync function set(appConfig, value) {\n const key = getKey(appConfig);\n const db = await getDbPromise();\n const tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\n const objectStore = tx.objectStore(OBJECT_STORE_NAME);\n const oldValue = (await objectStore.get(key));\n await objectStore.put(value, key);\n await tx.done;\n if (!oldValue || oldValue.fid !== value.fid) {\n fidChanged(appConfig, value.fid);\n }\n return value;\n}\n/** Removes record(s) from the objectStore that match the given key. */\nasync function remove(appConfig) {\n const key = getKey(appConfig);\n const db = await getDbPromise();\n const tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\n await tx.objectStore(OBJECT_STORE_NAME).delete(key);\n await tx.done;\n}\n/**\n * Atomically updates a record with the result of updateFn, which gets\n * called with the current value. If newValue is undefined, the record is\n * deleted instead.\n * @return Updated value\n */\nasync function update(appConfig, updateFn) {\n const key = getKey(appConfig);\n const db = await getDbPromise();\n const tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\n const store = tx.objectStore(OBJECT_STORE_NAME);\n const oldValue = (await store.get(key));\n const newValue = updateFn(oldValue);\n if (newValue === undefined) {\n await store.delete(key);\n }\n else {\n await store.put(newValue, key);\n }\n await tx.done;\n if (newValue && (!oldValue || oldValue.fid !== newValue.fid)) {\n fidChanged(appConfig, newValue.fid);\n }\n return newValue;\n}\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Updates and returns the InstallationEntry from the database.\n * Also triggers a registration request if it is necessary and possible.\n */\nasync function getInstallationEntry(installations) {\n let registrationPromise;\n const installationEntry = await update(installations.appConfig, oldEntry => {\n const installationEntry = updateOrCreateInstallationEntry(oldEntry);\n const entryWithPromise = triggerRegistrationIfNecessary(installations, installationEntry);\n registrationPromise = entryWithPromise.registrationPromise;\n return entryWithPromise.installationEntry;\n });\n if (installationEntry.fid === INVALID_FID) {\n // FID generation failed. Waiting for the FID from the server.\n return { installationEntry: await registrationPromise };\n }\n return {\n installationEntry,\n registrationPromise\n };\n}\n/**\n * Creates a new Installation Entry if one does not exist.\n * Also clears timed out pending requests.\n */\nfunction updateOrCreateInstallationEntry(oldEntry) {\n const entry = oldEntry || {\n fid: generateFid(),\n registrationStatus: 0 /* RequestStatus.NOT_STARTED */\n };\n return clearTimedOutRequest(entry);\n}\n/**\n * If the Firebase Installation is not registered yet, this will trigger the\n * registration and return an InProgressInstallationEntry.\n *\n * If registrationPromise does not exist, the installationEntry is guaranteed\n * to be registered.\n */\nfunction triggerRegistrationIfNecessary(installations, installationEntry) {\n if (installationEntry.registrationStatus === 0 /* RequestStatus.NOT_STARTED */) {\n if (!navigator.onLine) {\n // Registration required but app is offline.\n const registrationPromiseWithError = Promise.reject(ERROR_FACTORY.create(\"app-offline\" /* ErrorCode.APP_OFFLINE */));\n return {\n installationEntry,\n registrationPromise: registrationPromiseWithError\n };\n }\n // Try registering. Change status to IN_PROGRESS.\n const inProgressEntry = {\n fid: installationEntry.fid,\n registrationStatus: 1 /* RequestStatus.IN_PROGRESS */,\n registrationTime: Date.now()\n };\n const registrationPromise = registerInstallation(installations, inProgressEntry);\n return { installationEntry: inProgressEntry, registrationPromise };\n }\n else if (installationEntry.registrationStatus === 1 /* RequestStatus.IN_PROGRESS */) {\n return {\n installationEntry,\n registrationPromise: waitUntilFidRegistration(installations)\n };\n }\n else {\n return { installationEntry };\n }\n}\n/** This will be executed only once for each new Firebase Installation. */\nasync function registerInstallation(installations, installationEntry) {\n try {\n const registeredInstallationEntry = await createInstallationRequest(installations, installationEntry);\n return set(installations.appConfig, registeredInstallationEntry);\n }\n catch (e) {\n if (isServerError(e) && e.customData.serverCode === 409) {\n // Server returned a \"FID cannot be used\" error.\n // Generate a new ID next time.\n await remove(installations.appConfig);\n }\n else {\n // Registration failed. Set FID as not registered.\n await set(installations.appConfig, {\n fid: installationEntry.fid,\n registrationStatus: 0 /* RequestStatus.NOT_STARTED */\n });\n }\n throw e;\n }\n}\n/** Call if FID registration is pending in another request. */\nasync function waitUntilFidRegistration(installations) {\n // Unfortunately, there is no way of reliably observing when a value in\n // IndexedDB changes (yet, see https://github.com/WICG/indexed-db-observers),\n // so we need to poll.\n let entry = await updateInstallationRequest(installations.appConfig);\n while (entry.registrationStatus === 1 /* RequestStatus.IN_PROGRESS */) {\n // createInstallation request still in progress.\n await sleep(100);\n entry = await updateInstallationRequest(installations.appConfig);\n }\n if (entry.registrationStatus === 0 /* RequestStatus.NOT_STARTED */) {\n // The request timed out or failed in a different call. Try again.\n const { installationEntry, registrationPromise } = await getInstallationEntry(installations);\n if (registrationPromise) {\n return registrationPromise;\n }\n else {\n // if there is no registrationPromise, entry is registered.\n return installationEntry;\n }\n }\n return entry;\n}\n/**\n * Called only if there is a CreateInstallation request in progress.\n *\n * Updates the InstallationEntry in the DB based on the status of the\n * CreateInstallation request.\n *\n * Returns the updated InstallationEntry.\n */\nfunction updateInstallationRequest(appConfig) {\n return update(appConfig, oldEntry => {\n if (!oldEntry) {\n throw ERROR_FACTORY.create(\"installation-not-found\" /* ErrorCode.INSTALLATION_NOT_FOUND */);\n }\n return clearTimedOutRequest(oldEntry);\n });\n}\nfunction clearTimedOutRequest(entry) {\n if (hasInstallationRequestTimedOut(entry)) {\n return {\n fid: entry.fid,\n registrationStatus: 0 /* RequestStatus.NOT_STARTED */\n };\n }\n return entry;\n}\nfunction hasInstallationRequestTimedOut(installationEntry) {\n return (installationEntry.registrationStatus === 1 /* RequestStatus.IN_PROGRESS */ &&\n installationEntry.registrationTime + PENDING_TIMEOUT_MS < Date.now());\n}\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nasync function generateAuthTokenRequest({ appConfig, heartbeatServiceProvider }, installationEntry) {\n const endpoint = getGenerateAuthTokenEndpoint(appConfig, installationEntry);\n const headers = getHeadersWithAuth(appConfig, installationEntry);\n // If heartbeat service exists, add the heartbeat string to the header.\n const heartbeatService = heartbeatServiceProvider.getImmediate({\n optional: true\n });\n if (heartbeatService) {\n const heartbeatsHeader = await heartbeatService.getHeartbeatsHeader();\n if (heartbeatsHeader) {\n headers.append('x-firebase-client', heartbeatsHeader);\n }\n }\n const body = {\n installation: {\n sdkVersion: PACKAGE_VERSION,\n appId: appConfig.appId\n }\n };\n const request = {\n method: 'POST',\n headers,\n body: JSON.stringify(body)\n };\n const response = await retryIfServerError(() => fetch(endpoint, request));\n if (response.ok) {\n const responseValue = await response.json();\n const completedAuthToken = extractAuthTokenInfoFromResponse(responseValue);\n return completedAuthToken;\n }\n else {\n throw await getErrorFromResponse('Generate Auth Token', response);\n }\n}\nfunction getGenerateAuthTokenEndpoint(appConfig, { fid }) {\n return `${getInstallationsEndpoint(appConfig)}/${fid}/authTokens:generate`;\n}\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Returns a valid authentication token for the installation. Generates a new\n * token if one doesn't exist, is expired or about to expire.\n *\n * Should only be called if the Firebase Installation is registered.\n */\nasync function refreshAuthToken(installations, forceRefresh = false) {\n let tokenPromise;\n const entry = await update(installations.appConfig, oldEntry => {\n if (!isEntryRegistered(oldEntry)) {\n throw ERROR_FACTORY.create(\"not-registered\" /* ErrorCode.NOT_REGISTERED */);\n }\n const oldAuthToken = oldEntry.authToken;\n if (!forceRefresh && isAuthTokenValid(oldAuthToken)) {\n // There is a valid token in the DB.\n return oldEntry;\n }\n else if (oldAuthToken.requestStatus === 1 /* RequestStatus.IN_PROGRESS */) {\n // There already is a token request in progress.\n tokenPromise = waitUntilAuthTokenRequest(installations, forceRefresh);\n return oldEntry;\n }\n else {\n // No token or token expired.\n if (!navigator.onLine) {\n throw ERROR_FACTORY.create(\"app-offline\" /* ErrorCode.APP_OFFLINE */);\n }\n const inProgressEntry = makeAuthTokenRequestInProgressEntry(oldEntry);\n tokenPromise = fetchAuthTokenFromServer(installations, inProgressEntry);\n return inProgressEntry;\n }\n });\n const authToken = tokenPromise\n ? await tokenPromise\n : entry.authToken;\n return authToken;\n}\n/**\n * Call only if FID is registered and Auth Token request is in progress.\n *\n * Waits until the current pending request finishes. If the request times out,\n * tries once in this thread as well.\n */\nasync function waitUntilAuthTokenRequest(installations, forceRefresh) {\n // Unfortunately, there is no way of reliably observing when a value in\n // IndexedDB changes (yet, see https://github.com/WICG/indexed-db-observers),\n // so we need to poll.\n let entry = await updateAuthTokenRequest(installations.appConfig);\n while (entry.authToken.requestStatus === 1 /* RequestStatus.IN_PROGRESS */) {\n // generateAuthToken still in progress.\n await sleep(100);\n entry = await updateAuthTokenRequest(installations.appConfig);\n }\n const authToken = entry.authToken;\n if (authToken.requestStatus === 0 /* RequestStatus.NOT_STARTED */) {\n // The request timed out or failed in a different call. Try again.\n return refreshAuthToken(installations, forceRefresh);\n }\n else {\n return authToken;\n }\n}\n/**\n * Called only if there is a GenerateAuthToken request in progress.\n *\n * Updates the InstallationEntry in the DB based on the status of the\n * GenerateAuthToken request.\n *\n * Returns the updated InstallationEntry.\n */\nfunction updateAuthTokenRequest(appConfig) {\n return update(appConfig, oldEntry => {\n if (!isEntryRegistered(oldEntry)) {\n throw ERROR_FACTORY.create(\"not-registered\" /* ErrorCode.NOT_REGISTERED */);\n }\n const oldAuthToken = oldEntry.authToken;\n if (hasAuthTokenRequestTimedOut(oldAuthToken)) {\n return Object.assign(Object.assign({}, oldEntry), { authToken: { requestStatus: 0 /* RequestStatus.NOT_STARTED */ } });\n }\n return oldEntry;\n });\n}\nasync function fetchAuthTokenFromServer(installations, installationEntry) {\n try {\n const authToken = await generateAuthTokenRequest(installations, installationEntry);\n const updatedInstallationEntry = Object.assign(Object.assign({}, installationEntry), { authToken });\n await set(installations.appConfig, updatedInstallationEntry);\n return authToken;\n }\n catch (e) {\n if (isServerError(e) &&\n (e.customData.serverCode === 401 || e.customData.serverCode === 404)) {\n // Server returned a \"FID not found\" or a \"Invalid authentication\" error.\n // Generate a new ID next time.\n await remove(installations.appConfig);\n }\n else {\n const updatedInstallationEntry = Object.assign(Object.assign({}, installationEntry), { authToken: { requestStatus: 0 /* RequestStatus.NOT_STARTED */ } });\n await set(installations.appConfig, updatedInstallationEntry);\n }\n throw e;\n }\n}\nfunction isEntryRegistered(installationEntry) {\n return (installationEntry !== undefined &&\n installationEntry.registrationStatus === 2 /* RequestStatus.COMPLETED */);\n}\nfunction isAuthTokenValid(authToken) {\n return (authToken.requestStatus === 2 /* RequestStatus.COMPLETED */ &&\n !isAuthTokenExpired(authToken));\n}\nfunction isAuthTokenExpired(authToken) {\n const now = Date.now();\n return (now < authToken.creationTime ||\n authToken.creationTime + authToken.expiresIn < now + TOKEN_EXPIRATION_BUFFER);\n}\n/** Returns an updated InstallationEntry with an InProgressAuthToken. */\nfunction makeAuthTokenRequestInProgressEntry(oldEntry) {\n const inProgressAuthToken = {\n requestStatus: 1 /* RequestStatus.IN_PROGRESS */,\n requestTime: Date.now()\n };\n return Object.assign(Object.assign({}, oldEntry), { authToken: inProgressAuthToken });\n}\nfunction hasAuthTokenRequestTimedOut(authToken) {\n return (authToken.requestStatus === 1 /* RequestStatus.IN_PROGRESS */ &&\n authToken.requestTime + PENDING_TIMEOUT_MS < Date.now());\n}\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Creates a Firebase Installation if there isn't one for the app and\n * returns the Installation ID.\n * @param installations - The `Installations` instance.\n *\n * @public\n */\nasync function getId(installations) {\n const installationsImpl = installations;\n const { installationEntry, registrationPromise } = await getInstallationEntry(installationsImpl);\n if (registrationPromise) {\n registrationPromise.catch(console.error);\n }\n else {\n // If the installation is already registered, update the authentication\n // token if needed.\n refreshAuthToken(installationsImpl).catch(console.error);\n }\n return installationEntry.fid;\n}\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Returns a Firebase Installations auth token, identifying the current\n * Firebase Installation.\n * @param installations - The `Installations` instance.\n * @param forceRefresh - Force refresh regardless of token expiration.\n *\n * @public\n */\nasync function getToken(installations, forceRefresh = false) {\n const installationsImpl = installations;\n await completeInstallationRegistration(installationsImpl);\n // At this point we either have a Registered Installation in the DB, or we've\n // already thrown an error.\n const authToken = await refreshAuthToken(installationsImpl, forceRefresh);\n return authToken.token;\n}\nasync function completeInstallationRegistration(installations) {\n const { registrationPromise } = await getInstallationEntry(installations);\n if (registrationPromise) {\n // A createInstallation request is in progress. Wait until it finishes.\n await registrationPromise;\n }\n}\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nasync function deleteInstallationRequest(appConfig, installationEntry) {\n const endpoint = getDeleteEndpoint(appConfig, installationEntry);\n const headers = getHeadersWithAuth(appConfig, installationEntry);\n const request = {\n method: 'DELETE',\n headers\n };\n const response = await retryIfServerError(() => fetch(endpoint, request));\n if (!response.ok) {\n throw await getErrorFromResponse('Delete Installation', response);\n }\n}\nfunction getDeleteEndpoint(appConfig, { fid }) {\n return `${getInstallationsEndpoint(appConfig)}/${fid}`;\n}\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Deletes the Firebase Installation and all associated data.\n * @param installations - The `Installations` instance.\n *\n * @public\n */\nasync function deleteInstallations(installations) {\n const { appConfig } = installations;\n const entry = await update(appConfig, oldEntry => {\n if (oldEntry && oldEntry.registrationStatus === 0 /* RequestStatus.NOT_STARTED */) {\n // Delete the unregistered entry without sending a deleteInstallation request.\n return undefined;\n }\n return oldEntry;\n });\n if (entry) {\n if (entry.registrationStatus === 1 /* RequestStatus.IN_PROGRESS */) {\n // Can't delete while trying to register.\n throw ERROR_FACTORY.create(\"delete-pending-registration\" /* ErrorCode.DELETE_PENDING_REGISTRATION */);\n }\n else if (entry.registrationStatus === 2 /* RequestStatus.COMPLETED */) {\n if (!navigator.onLine) {\n throw ERROR_FACTORY.create(\"app-offline\" /* ErrorCode.APP_OFFLINE */);\n }\n else {\n await deleteInstallationRequest(appConfig, entry);\n await remove(appConfig);\n }\n }\n }\n}\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Sets a new callback that will get called when Installation ID changes.\n * Returns an unsubscribe function that will remove the callback when called.\n * @param installations - The `Installations` instance.\n * @param callback - The callback function that is invoked when FID changes.\n * @returns A function that can be called to unsubscribe.\n *\n * @public\n */\nfunction onIdChange(installations, callback) {\n const { appConfig } = installations;\n addCallback(appConfig, callback);\n return () => {\n removeCallback(appConfig, callback);\n };\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Returns an instance of {@link Installations} associated with the given\n * {@link @firebase/app#FirebaseApp} instance.\n * @param app - The {@link @firebase/app#FirebaseApp} instance.\n *\n * @public\n */\nfunction getInstallations(app = getApp()) {\n const installationsImpl = _getProvider(app, 'installations').getImmediate();\n return installationsImpl;\n}\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction extractAppConfig(app) {\n if (!app || !app.options) {\n throw getMissingValueError('App Configuration');\n }\n if (!app.name) {\n throw getMissingValueError('App Name');\n }\n // Required app config keys\n const configKeys = [\n 'projectId',\n 'apiKey',\n 'appId'\n ];\n for (const keyName of configKeys) {\n if (!app.options[keyName]) {\n throw getMissingValueError(keyName);\n }\n }\n return {\n appName: app.name,\n projectId: app.options.projectId,\n apiKey: app.options.apiKey,\n appId: app.options.appId\n };\n}\nfunction getMissingValueError(valueName) {\n return ERROR_FACTORY.create(\"missing-app-config-values\" /* ErrorCode.MISSING_APP_CONFIG_VALUES */, {\n valueName\n });\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst INSTALLATIONS_NAME = 'installations';\nconst INSTALLATIONS_NAME_INTERNAL = 'installations-internal';\nconst publicFactory = (container) => {\n const app = container.getProvider('app').getImmediate();\n // Throws if app isn't configured properly.\n const appConfig = extractAppConfig(app);\n const heartbeatServiceProvider = _getProvider(app, 'heartbeat');\n const installationsImpl = {\n app,\n appConfig,\n heartbeatServiceProvider,\n _delete: () => Promise.resolve()\n };\n return installationsImpl;\n};\nconst internalFactory = (container) => {\n const app = container.getProvider('app').getImmediate();\n // Internal FIS instance relies on public FIS instance.\n const installations = _getProvider(app, INSTALLATIONS_NAME).getImmediate();\n const installationsInternal = {\n getId: () => getId(installations),\n getToken: (forceRefresh) => getToken(installations, forceRefresh)\n };\n return installationsInternal;\n};\nfunction registerInstallations() {\n _registerComponent(new Component(INSTALLATIONS_NAME, publicFactory, \"PUBLIC\" /* ComponentType.PUBLIC */));\n _registerComponent(new Component(INSTALLATIONS_NAME_INTERNAL, internalFactory, \"PRIVATE\" /* ComponentType.PRIVATE */));\n}\n\n/**\n * The Firebase Installations Web SDK.\n * This SDK does not work in a Node.js environment.\n *\n * @packageDocumentation\n */\nregisterInstallations();\nregisterVersion(name, version);\n// BUILD_TARGET will be replaced by values like esm2017, cjs2017, etc during the compilation\nregisterVersion(name, version, 'esm2017');\n\nexport { deleteInstallations, getId, getInstallations, getToken, onIdChange };\n//# sourceMappingURL=index.esm2017.js.map\n","import '@firebase/installations';\nimport { Component } from '@firebase/component';\nimport { openDB, deleteDB } from 'idb';\nimport { ErrorFactory, validateIndexedDBOpenable, isIndexedDBAvailable, areCookiesEnabled, getModularInstance } from '@firebase/util';\nimport { _registerComponent, registerVersion, _getProvider, getApp } from '@firebase/app';\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst DEFAULT_SW_PATH = '/firebase-messaging-sw.js';\nconst DEFAULT_SW_SCOPE = '/firebase-cloud-messaging-push-scope';\nconst DEFAULT_VAPID_KEY = 'BDOU99-h67HcA6JeFXHbSNMu7e2yNNu3RzoMj8TM4W88jITfq7ZmPvIM1Iv-4_l2LxQcYwhqby2xGpWwzjfAnG4';\nconst ENDPOINT = 'https://fcmregistrations.googleapis.com/v1';\nconst CONSOLE_CAMPAIGN_ID = 'google.c.a.c_id';\nconst CONSOLE_CAMPAIGN_NAME = 'google.c.a.c_l';\nconst CONSOLE_CAMPAIGN_TIME = 'google.c.a.ts';\n/** Set to '1' if Analytics is enabled for the campaign */\nconst CONSOLE_CAMPAIGN_ANALYTICS_ENABLED = 'google.c.a.e';\nvar MessageType$1;\n(function (MessageType) {\n MessageType[MessageType[\"DATA_MESSAGE\"] = 1] = \"DATA_MESSAGE\";\n MessageType[MessageType[\"DISPLAY_NOTIFICATION\"] = 3] = \"DISPLAY_NOTIFICATION\";\n})(MessageType$1 || (MessageType$1 = {}));\n\n/**\n * @license\n * Copyright 2018 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under the License\n * is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express\n * or implied. See the License for the specific language governing permissions and limitations under\n * the License.\n */\nvar MessageType;\n(function (MessageType) {\n MessageType[\"PUSH_RECEIVED\"] = \"push-received\";\n MessageType[\"NOTIFICATION_CLICKED\"] = \"notification-clicked\";\n})(MessageType || (MessageType = {}));\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction arrayToBase64(array) {\n const uint8Array = new Uint8Array(array);\n const base64String = btoa(String.fromCharCode(...uint8Array));\n return base64String.replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n}\nfunction base64ToArray(base64String) {\n const padding = '='.repeat((4 - (base64String.length % 4)) % 4);\n const base64 = (base64String + padding)\n .replace(/\\-/g, '+')\n .replace(/_/g, '/');\n const rawData = atob(base64);\n const outputArray = new Uint8Array(rawData.length);\n for (let i = 0; i < rawData.length; ++i) {\n outputArray[i] = rawData.charCodeAt(i);\n }\n return outputArray;\n}\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst OLD_DB_NAME = 'fcm_token_details_db';\n/**\n * The last DB version of 'fcm_token_details_db' was 4. This is one higher, so that the upgrade\n * callback is called for all versions of the old DB.\n */\nconst OLD_DB_VERSION = 5;\nconst OLD_OBJECT_STORE_NAME = 'fcm_token_object_Store';\nasync function migrateOldDatabase(senderId) {\n if ('databases' in indexedDB) {\n // indexedDb.databases() is an IndexedDB v3 API and does not exist in all browsers. TODO: Remove\n // typecast when it lands in TS types.\n const databases = await indexedDB.databases();\n const dbNames = databases.map(db => db.name);\n if (!dbNames.includes(OLD_DB_NAME)) {\n // old DB didn't exist, no need to open.\n return null;\n }\n }\n let tokenDetails = null;\n const db = await openDB(OLD_DB_NAME, OLD_DB_VERSION, {\n upgrade: async (db, oldVersion, newVersion, upgradeTransaction) => {\n var _a;\n if (oldVersion < 2) {\n // Database too old, skip migration.\n return;\n }\n if (!db.objectStoreNames.contains(OLD_OBJECT_STORE_NAME)) {\n // Database did not exist. Nothing to do.\n return;\n }\n const objectStore = upgradeTransaction.objectStore(OLD_OBJECT_STORE_NAME);\n const value = await objectStore.index('fcmSenderId').get(senderId);\n await objectStore.clear();\n if (!value) {\n // No entry in the database, nothing to migrate.\n return;\n }\n if (oldVersion === 2) {\n const oldDetails = value;\n if (!oldDetails.auth || !oldDetails.p256dh || !oldDetails.endpoint) {\n return;\n }\n tokenDetails = {\n token: oldDetails.fcmToken,\n createTime: (_a = oldDetails.createTime) !== null && _a !== void 0 ? _a : Date.now(),\n subscriptionOptions: {\n auth: oldDetails.auth,\n p256dh: oldDetails.p256dh,\n endpoint: oldDetails.endpoint,\n swScope: oldDetails.swScope,\n vapidKey: typeof oldDetails.vapidKey === 'string'\n ? oldDetails.vapidKey\n : arrayToBase64(oldDetails.vapidKey)\n }\n };\n }\n else if (oldVersion === 3) {\n const oldDetails = value;\n tokenDetails = {\n token: oldDetails.fcmToken,\n createTime: oldDetails.createTime,\n subscriptionOptions: {\n auth: arrayToBase64(oldDetails.auth),\n p256dh: arrayToBase64(oldDetails.p256dh),\n endpoint: oldDetails.endpoint,\n swScope: oldDetails.swScope,\n vapidKey: arrayToBase64(oldDetails.vapidKey)\n }\n };\n }\n else if (oldVersion === 4) {\n const oldDetails = value;\n tokenDetails = {\n token: oldDetails.fcmToken,\n createTime: oldDetails.createTime,\n subscriptionOptions: {\n auth: arrayToBase64(oldDetails.auth),\n p256dh: arrayToBase64(oldDetails.p256dh),\n endpoint: oldDetails.endpoint,\n swScope: oldDetails.swScope,\n vapidKey: arrayToBase64(oldDetails.vapidKey)\n }\n };\n }\n }\n });\n db.close();\n // Delete all old databases.\n await deleteDB(OLD_DB_NAME);\n await deleteDB('fcm_vapid_details_db');\n await deleteDB('undefined');\n return checkTokenDetails(tokenDetails) ? tokenDetails : null;\n}\nfunction checkTokenDetails(tokenDetails) {\n if (!tokenDetails || !tokenDetails.subscriptionOptions) {\n return false;\n }\n const { subscriptionOptions } = tokenDetails;\n return (typeof tokenDetails.createTime === 'number' &&\n tokenDetails.createTime > 0 &&\n typeof tokenDetails.token === 'string' &&\n tokenDetails.token.length > 0 &&\n typeof subscriptionOptions.auth === 'string' &&\n subscriptionOptions.auth.length > 0 &&\n typeof subscriptionOptions.p256dh === 'string' &&\n subscriptionOptions.p256dh.length > 0 &&\n typeof subscriptionOptions.endpoint === 'string' &&\n subscriptionOptions.endpoint.length > 0 &&\n typeof subscriptionOptions.swScope === 'string' &&\n subscriptionOptions.swScope.length > 0 &&\n typeof subscriptionOptions.vapidKey === 'string' &&\n subscriptionOptions.vapidKey.length > 0);\n}\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// Exported for tests.\nconst DATABASE_NAME = 'firebase-messaging-database';\nconst DATABASE_VERSION = 1;\nconst OBJECT_STORE_NAME = 'firebase-messaging-store';\nlet dbPromise = null;\nfunction getDbPromise() {\n if (!dbPromise) {\n dbPromise = openDB(DATABASE_NAME, DATABASE_VERSION, {\n upgrade: (upgradeDb, oldVersion) => {\n // We don't use 'break' in this switch statement, the fall-through behavior is what we want,\n // because if there are multiple versions between the old version and the current version, we\n // want ALL the migrations that correspond to those versions to run, not only the last one.\n // eslint-disable-next-line default-case\n switch (oldVersion) {\n case 0:\n upgradeDb.createObjectStore(OBJECT_STORE_NAME);\n }\n }\n });\n }\n return dbPromise;\n}\n/** Gets record(s) from the objectStore that match the given key. */\nasync function dbGet(firebaseDependencies) {\n const key = getKey(firebaseDependencies);\n const db = await getDbPromise();\n const tokenDetails = (await db\n .transaction(OBJECT_STORE_NAME)\n .objectStore(OBJECT_STORE_NAME)\n .get(key));\n if (tokenDetails) {\n return tokenDetails;\n }\n else {\n // Check if there is a tokenDetails object in the old DB.\n const oldTokenDetails = await migrateOldDatabase(firebaseDependencies.appConfig.senderId);\n if (oldTokenDetails) {\n await dbSet(firebaseDependencies, oldTokenDetails);\n return oldTokenDetails;\n }\n }\n}\n/** Assigns or overwrites the record for the given key with the given value. */\nasync function dbSet(firebaseDependencies, tokenDetails) {\n const key = getKey(firebaseDependencies);\n const db = await getDbPromise();\n const tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\n await tx.objectStore(OBJECT_STORE_NAME).put(tokenDetails, key);\n await tx.done;\n return tokenDetails;\n}\n/** Removes record(s) from the objectStore that match the given key. */\nasync function dbRemove(firebaseDependencies) {\n const key = getKey(firebaseDependencies);\n const db = await getDbPromise();\n const tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\n await tx.objectStore(OBJECT_STORE_NAME).delete(key);\n await tx.done;\n}\nfunction getKey({ appConfig }) {\n return appConfig.appId;\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst ERROR_MAP = {\n [\"missing-app-config-values\" /* ErrorCode.MISSING_APP_CONFIG_VALUES */]: 'Missing App configuration value: \"{$valueName}\"',\n [\"only-available-in-window\" /* ErrorCode.AVAILABLE_IN_WINDOW */]: 'This method is available in a Window context.',\n [\"only-available-in-sw\" /* ErrorCode.AVAILABLE_IN_SW */]: 'This method is available in a service worker context.',\n [\"permission-default\" /* ErrorCode.PERMISSION_DEFAULT */]: 'The notification permission was not granted and dismissed instead.',\n [\"permission-blocked\" /* ErrorCode.PERMISSION_BLOCKED */]: 'The notification permission was not granted and blocked instead.',\n [\"unsupported-browser\" /* ErrorCode.UNSUPPORTED_BROWSER */]: \"This browser doesn't support the API's required to use the Firebase SDK.\",\n [\"indexed-db-unsupported\" /* ErrorCode.INDEXED_DB_UNSUPPORTED */]: \"This browser doesn't support indexedDb.open() (ex. Safari iFrame, Firefox Private Browsing, etc)\",\n [\"failed-service-worker-registration\" /* ErrorCode.FAILED_DEFAULT_REGISTRATION */]: 'We are unable to register the default service worker. {$browserErrorMessage}',\n [\"token-subscribe-failed\" /* ErrorCode.TOKEN_SUBSCRIBE_FAILED */]: 'A problem occurred while subscribing the user to FCM: {$errorInfo}',\n [\"token-subscribe-no-token\" /* ErrorCode.TOKEN_SUBSCRIBE_NO_TOKEN */]: 'FCM returned no token when subscribing the user to push.',\n [\"token-unsubscribe-failed\" /* ErrorCode.TOKEN_UNSUBSCRIBE_FAILED */]: 'A problem occurred while unsubscribing the ' +\n 'user from FCM: {$errorInfo}',\n [\"token-update-failed\" /* ErrorCode.TOKEN_UPDATE_FAILED */]: 'A problem occurred while updating the user from FCM: {$errorInfo}',\n [\"token-update-no-token\" /* ErrorCode.TOKEN_UPDATE_NO_TOKEN */]: 'FCM returned no token when updating the user to push.',\n [\"use-sw-after-get-token\" /* ErrorCode.USE_SW_AFTER_GET_TOKEN */]: 'The useServiceWorker() method may only be called once and must be ' +\n 'called before calling getToken() to ensure your service worker is used.',\n [\"invalid-sw-registration\" /* ErrorCode.INVALID_SW_REGISTRATION */]: 'The input to useServiceWorker() must be a ServiceWorkerRegistration.',\n [\"invalid-bg-handler\" /* ErrorCode.INVALID_BG_HANDLER */]: 'The input to setBackgroundMessageHandler() must be a function.',\n [\"invalid-vapid-key\" /* ErrorCode.INVALID_VAPID_KEY */]: 'The public VAPID key must be a string.',\n [\"use-vapid-key-after-get-token\" /* ErrorCode.USE_VAPID_KEY_AFTER_GET_TOKEN */]: 'The usePublicVapidKey() method may only be called once and must be ' +\n 'called before calling getToken() to ensure your VAPID key is used.'\n};\nconst ERROR_FACTORY = new ErrorFactory('messaging', 'Messaging', ERROR_MAP);\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nasync function requestGetToken(firebaseDependencies, subscriptionOptions) {\n const headers = await getHeaders(firebaseDependencies);\n const body = getBody(subscriptionOptions);\n const subscribeOptions = {\n method: 'POST',\n headers,\n body: JSON.stringify(body)\n };\n let responseData;\n try {\n const response = await fetch(getEndpoint(firebaseDependencies.appConfig), subscribeOptions);\n responseData = await response.json();\n }\n catch (err) {\n throw ERROR_FACTORY.create(\"token-subscribe-failed\" /* ErrorCode.TOKEN_SUBSCRIBE_FAILED */, {\n errorInfo: err === null || err === void 0 ? void 0 : err.toString()\n });\n }\n if (responseData.error) {\n const message = responseData.error.message;\n throw ERROR_FACTORY.create(\"token-subscribe-failed\" /* ErrorCode.TOKEN_SUBSCRIBE_FAILED */, {\n errorInfo: message\n });\n }\n if (!responseData.token) {\n throw ERROR_FACTORY.create(\"token-subscribe-no-token\" /* ErrorCode.TOKEN_SUBSCRIBE_NO_TOKEN */);\n }\n return responseData.token;\n}\nasync function requestUpdateToken(firebaseDependencies, tokenDetails) {\n const headers = await getHeaders(firebaseDependencies);\n const body = getBody(tokenDetails.subscriptionOptions);\n const updateOptions = {\n method: 'PATCH',\n headers,\n body: JSON.stringify(body)\n };\n let responseData;\n try {\n const response = await fetch(`${getEndpoint(firebaseDependencies.appConfig)}/${tokenDetails.token}`, updateOptions);\n responseData = await response.json();\n }\n catch (err) {\n throw ERROR_FACTORY.create(\"token-update-failed\" /* ErrorCode.TOKEN_UPDATE_FAILED */, {\n errorInfo: err === null || err === void 0 ? void 0 : err.toString()\n });\n }\n if (responseData.error) {\n const message = responseData.error.message;\n throw ERROR_FACTORY.create(\"token-update-failed\" /* ErrorCode.TOKEN_UPDATE_FAILED */, {\n errorInfo: message\n });\n }\n if (!responseData.token) {\n throw ERROR_FACTORY.create(\"token-update-no-token\" /* ErrorCode.TOKEN_UPDATE_NO_TOKEN */);\n }\n return responseData.token;\n}\nasync function requestDeleteToken(firebaseDependencies, token) {\n const headers = await getHeaders(firebaseDependencies);\n const unsubscribeOptions = {\n method: 'DELETE',\n headers\n };\n try {\n const response = await fetch(`${getEndpoint(firebaseDependencies.appConfig)}/${token}`, unsubscribeOptions);\n const responseData = await response.json();\n if (responseData.error) {\n const message = responseData.error.message;\n throw ERROR_FACTORY.create(\"token-unsubscribe-failed\" /* ErrorCode.TOKEN_UNSUBSCRIBE_FAILED */, {\n errorInfo: message\n });\n }\n }\n catch (err) {\n throw ERROR_FACTORY.create(\"token-unsubscribe-failed\" /* ErrorCode.TOKEN_UNSUBSCRIBE_FAILED */, {\n errorInfo: err === null || err === void 0 ? void 0 : err.toString()\n });\n }\n}\nfunction getEndpoint({ projectId }) {\n return `${ENDPOINT}/projects/${projectId}/registrations`;\n}\nasync function getHeaders({ appConfig, installations }) {\n const authToken = await installations.getToken();\n return new Headers({\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n 'x-goog-api-key': appConfig.apiKey,\n 'x-goog-firebase-installations-auth': `FIS ${authToken}`\n });\n}\nfunction getBody({ p256dh, auth, endpoint, vapidKey }) {\n const body = {\n web: {\n endpoint,\n auth,\n p256dh\n }\n };\n if (vapidKey !== DEFAULT_VAPID_KEY) {\n body.web.applicationPubKey = vapidKey;\n }\n return body;\n}\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// UpdateRegistration will be called once every week.\nconst TOKEN_EXPIRATION_MS = 7 * 24 * 60 * 60 * 1000; // 7 days\nasync function getTokenInternal(messaging) {\n const pushSubscription = await getPushSubscription(messaging.swRegistration, messaging.vapidKey);\n const subscriptionOptions = {\n vapidKey: messaging.vapidKey,\n swScope: messaging.swRegistration.scope,\n endpoint: pushSubscription.endpoint,\n auth: arrayToBase64(pushSubscription.getKey('auth')),\n p256dh: arrayToBase64(pushSubscription.getKey('p256dh'))\n };\n const tokenDetails = await dbGet(messaging.firebaseDependencies);\n if (!tokenDetails) {\n // No token, get a new one.\n return getNewToken(messaging.firebaseDependencies, subscriptionOptions);\n }\n else if (!isTokenValid(tokenDetails.subscriptionOptions, subscriptionOptions)) {\n // Invalid token, get a new one.\n try {\n await requestDeleteToken(messaging.firebaseDependencies, tokenDetails.token);\n }\n catch (e) {\n // Suppress errors because of #2364\n console.warn(e);\n }\n return getNewToken(messaging.firebaseDependencies, subscriptionOptions);\n }\n else if (Date.now() >= tokenDetails.createTime + TOKEN_EXPIRATION_MS) {\n // Weekly token refresh\n return updateToken(messaging, {\n token: tokenDetails.token,\n createTime: Date.now(),\n subscriptionOptions\n });\n }\n else {\n // Valid token, nothing to do.\n return tokenDetails.token;\n }\n}\n/**\n * This method deletes the token from the database, unsubscribes the token from FCM, and unregisters\n * the push subscription if it exists.\n */\nasync function deleteTokenInternal(messaging) {\n const tokenDetails = await dbGet(messaging.firebaseDependencies);\n if (tokenDetails) {\n await requestDeleteToken(messaging.firebaseDependencies, tokenDetails.token);\n await dbRemove(messaging.firebaseDependencies);\n }\n // Unsubscribe from the push subscription.\n const pushSubscription = await messaging.swRegistration.pushManager.getSubscription();\n if (pushSubscription) {\n return pushSubscription.unsubscribe();\n }\n // If there's no SW, consider it a success.\n return true;\n}\nasync function updateToken(messaging, tokenDetails) {\n try {\n const updatedToken = await requestUpdateToken(messaging.firebaseDependencies, tokenDetails);\n const updatedTokenDetails = Object.assign(Object.assign({}, tokenDetails), { token: updatedToken, createTime: Date.now() });\n await dbSet(messaging.firebaseDependencies, updatedTokenDetails);\n return updatedToken;\n }\n catch (e) {\n throw e;\n }\n}\nasync function getNewToken(firebaseDependencies, subscriptionOptions) {\n const token = await requestGetToken(firebaseDependencies, subscriptionOptions);\n const tokenDetails = {\n token,\n createTime: Date.now(),\n subscriptionOptions\n };\n await dbSet(firebaseDependencies, tokenDetails);\n return tokenDetails.token;\n}\n/**\n * Gets a PushSubscription for the current user.\n */\nasync function getPushSubscription(swRegistration, vapidKey) {\n const subscription = await swRegistration.pushManager.getSubscription();\n if (subscription) {\n return subscription;\n }\n return swRegistration.pushManager.subscribe({\n userVisibleOnly: true,\n // Chrome <= 75 doesn't support base64-encoded VAPID key. For backward compatibility, VAPID key\n // submitted to pushManager#subscribe must be of type Uint8Array.\n applicationServerKey: base64ToArray(vapidKey)\n });\n}\n/**\n * Checks if the saved tokenDetails object matches the configuration provided.\n */\nfunction isTokenValid(dbOptions, currentOptions) {\n const isVapidKeyEqual = currentOptions.vapidKey === dbOptions.vapidKey;\n const isEndpointEqual = currentOptions.endpoint === dbOptions.endpoint;\n const isAuthEqual = currentOptions.auth === dbOptions.auth;\n const isP256dhEqual = currentOptions.p256dh === dbOptions.p256dh;\n return isVapidKeyEqual && isEndpointEqual && isAuthEqual && isP256dhEqual;\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction externalizePayload(internalPayload) {\n const payload = {\n from: internalPayload.from,\n // eslint-disable-next-line camelcase\n collapseKey: internalPayload.collapse_key,\n // eslint-disable-next-line camelcase\n messageId: internalPayload.fcmMessageId\n };\n propagateNotificationPayload(payload, internalPayload);\n propagateDataPayload(payload, internalPayload);\n propagateFcmOptions(payload, internalPayload);\n return payload;\n}\nfunction propagateNotificationPayload(payload, messagePayloadInternal) {\n if (!messagePayloadInternal.notification) {\n return;\n }\n payload.notification = {};\n const title = messagePayloadInternal.notification.title;\n if (!!title) {\n payload.notification.title = title;\n }\n const body = messagePayloadInternal.notification.body;\n if (!!body) {\n payload.notification.body = body;\n }\n const image = messagePayloadInternal.notification.image;\n if (!!image) {\n payload.notification.image = image;\n }\n const icon = messagePayloadInternal.notification.icon;\n if (!!icon) {\n payload.notification.icon = icon;\n }\n}\nfunction propagateDataPayload(payload, messagePayloadInternal) {\n if (!messagePayloadInternal.data) {\n return;\n }\n payload.data = messagePayloadInternal.data;\n}\nfunction propagateFcmOptions(payload, messagePayloadInternal) {\n var _a, _b, _c, _d, _e;\n // fcmOptions.link value is written into notification.click_action. see more in b/232072111\n if (!messagePayloadInternal.fcmOptions &&\n !((_a = messagePayloadInternal.notification) === null || _a === void 0 ? void 0 : _a.click_action)) {\n return;\n }\n payload.fcmOptions = {};\n const link = (_c = (_b = messagePayloadInternal.fcmOptions) === null || _b === void 0 ? void 0 : _b.link) !== null && _c !== void 0 ? _c : (_d = messagePayloadInternal.notification) === null || _d === void 0 ? void 0 : _d.click_action;\n if (!!link) {\n payload.fcmOptions.link = link;\n }\n // eslint-disable-next-line camelcase\n const analyticsLabel = (_e = messagePayloadInternal.fcmOptions) === null || _e === void 0 ? void 0 : _e.analytics_label;\n if (!!analyticsLabel) {\n payload.fcmOptions.analyticsLabel = analyticsLabel;\n }\n}\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction isConsoleMessage(data) {\n // This message has a campaign ID, meaning it was sent using the Firebase Console.\n return typeof data === 'object' && !!data && CONSOLE_CAMPAIGN_ID in data;\n}\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n_mergeStrings('AzSCbw63g1R0nCw85jG8', 'Iaya3yLKwmgvh7cF0q4');\nfunction _mergeStrings(s1, s2) {\n const resultArray = [];\n for (let i = 0; i < s1.length; i++) {\n resultArray.push(s1.charAt(i));\n if (i < s2.length) {\n resultArray.push(s2.charAt(i));\n }\n }\n return resultArray.join('');\n}\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction extractAppConfig(app) {\n if (!app || !app.options) {\n throw getMissingValueError('App Configuration Object');\n }\n if (!app.name) {\n throw getMissingValueError('App Name');\n }\n // Required app config keys\n const configKeys = [\n 'projectId',\n 'apiKey',\n 'appId',\n 'messagingSenderId'\n ];\n const { options } = app;\n for (const keyName of configKeys) {\n if (!options[keyName]) {\n throw getMissingValueError(keyName);\n }\n }\n return {\n appName: app.name,\n projectId: options.projectId,\n apiKey: options.apiKey,\n appId: options.appId,\n senderId: options.messagingSenderId\n };\n}\nfunction getMissingValueError(valueName) {\n return ERROR_FACTORY.create(\"missing-app-config-values\" /* ErrorCode.MISSING_APP_CONFIG_VALUES */, {\n valueName\n });\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nclass MessagingService {\n constructor(app, installations, analyticsProvider) {\n // logging is only done with end user consent. Default to false.\n this.deliveryMetricsExportedToBigQueryEnabled = false;\n this.onBackgroundMessageHandler = null;\n this.onMessageHandler = null;\n this.logEvents = [];\n this.isLogServiceStarted = false;\n const appConfig = extractAppConfig(app);\n this.firebaseDependencies = {\n app,\n appConfig,\n installations,\n analyticsProvider\n };\n }\n _delete() {\n return Promise.resolve();\n }\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nasync function registerDefaultSw(messaging) {\n try {\n messaging.swRegistration = await navigator.serviceWorker.register(DEFAULT_SW_PATH, {\n scope: DEFAULT_SW_SCOPE\n });\n // The timing when browser updates sw when sw has an update is unreliable from experiment. It\n // leads to version conflict when the SDK upgrades to a newer version in the main page, but sw\n // is stuck with the old version. For example,\n // https://github.com/firebase/firebase-js-sdk/issues/2590 The following line reliably updates\n // sw if there was an update.\n messaging.swRegistration.update().catch(() => {\n /* it is non blocking and we don't care if it failed */\n });\n }\n catch (e) {\n throw ERROR_FACTORY.create(\"failed-service-worker-registration\" /* ErrorCode.FAILED_DEFAULT_REGISTRATION */, {\n browserErrorMessage: e === null || e === void 0 ? void 0 : e.message\n });\n }\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nasync function updateSwReg(messaging, swRegistration) {\n if (!swRegistration && !messaging.swRegistration) {\n await registerDefaultSw(messaging);\n }\n if (!swRegistration && !!messaging.swRegistration) {\n return;\n }\n if (!(swRegistration instanceof ServiceWorkerRegistration)) {\n throw ERROR_FACTORY.create(\"invalid-sw-registration\" /* ErrorCode.INVALID_SW_REGISTRATION */);\n }\n messaging.swRegistration = swRegistration;\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nasync function updateVapidKey(messaging, vapidKey) {\n if (!!vapidKey) {\n messaging.vapidKey = vapidKey;\n }\n else if (!messaging.vapidKey) {\n messaging.vapidKey = DEFAULT_VAPID_KEY;\n }\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nasync function getToken$1(messaging, options) {\n if (!navigator) {\n throw ERROR_FACTORY.create(\"only-available-in-window\" /* ErrorCode.AVAILABLE_IN_WINDOW */);\n }\n if (Notification.permission === 'default') {\n await Notification.requestPermission();\n }\n if (Notification.permission !== 'granted') {\n throw ERROR_FACTORY.create(\"permission-blocked\" /* ErrorCode.PERMISSION_BLOCKED */);\n }\n await updateVapidKey(messaging, options === null || options === void 0 ? void 0 : options.vapidKey);\n await updateSwReg(messaging, options === null || options === void 0 ? void 0 : options.serviceWorkerRegistration);\n return getTokenInternal(messaging);\n}\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nasync function logToScion(messaging, messageType, data) {\n const eventType = getEventType(messageType);\n const analytics = await messaging.firebaseDependencies.analyticsProvider.get();\n analytics.logEvent(eventType, {\n /* eslint-disable camelcase */\n message_id: data[CONSOLE_CAMPAIGN_ID],\n message_name: data[CONSOLE_CAMPAIGN_NAME],\n message_time: data[CONSOLE_CAMPAIGN_TIME],\n message_device_time: Math.floor(Date.now() / 1000)\n /* eslint-enable camelcase */\n });\n}\nfunction getEventType(messageType) {\n switch (messageType) {\n case MessageType.NOTIFICATION_CLICKED:\n return 'notification_open';\n case MessageType.PUSH_RECEIVED:\n return 'notification_foreground';\n default:\n throw new Error();\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nasync function messageEventListener(messaging, event) {\n const internalPayload = event.data;\n if (!internalPayload.isFirebaseMessaging) {\n return;\n }\n if (messaging.onMessageHandler &&\n internalPayload.messageType === MessageType.PUSH_RECEIVED) {\n if (typeof messaging.onMessageHandler === 'function') {\n messaging.onMessageHandler(externalizePayload(internalPayload));\n }\n else {\n messaging.onMessageHandler.next(externalizePayload(internalPayload));\n }\n }\n // Log to Scion if applicable\n const dataPayload = internalPayload.data;\n if (isConsoleMessage(dataPayload) &&\n dataPayload[CONSOLE_CAMPAIGN_ANALYTICS_ENABLED] === '1') {\n await logToScion(messaging, internalPayload.messageType, dataPayload);\n }\n}\n\nconst name = \"@firebase/messaging\";\nconst version = \"0.12.14\";\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst WindowMessagingFactory = (container) => {\n const messaging = new MessagingService(container.getProvider('app').getImmediate(), container.getProvider('installations-internal').getImmediate(), container.getProvider('analytics-internal'));\n navigator.serviceWorker.addEventListener('message', e => messageEventListener(messaging, e));\n return messaging;\n};\nconst WindowMessagingInternalFactory = (container) => {\n const messaging = container\n .getProvider('messaging')\n .getImmediate();\n const messagingInternal = {\n getToken: (options) => getToken$1(messaging, options)\n };\n return messagingInternal;\n};\nfunction registerMessagingInWindow() {\n _registerComponent(new Component('messaging', WindowMessagingFactory, \"PUBLIC\" /* ComponentType.PUBLIC */));\n _registerComponent(new Component('messaging-internal', WindowMessagingInternalFactory, \"PRIVATE\" /* ComponentType.PRIVATE */));\n registerVersion(name, version);\n // BUILD_TARGET will be replaced by values like esm2017, cjs2017, etc during the compilation\n registerVersion(name, version, 'esm2017');\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Checks if all required APIs exist in the browser.\n * @returns a Promise that resolves to a boolean.\n *\n * @public\n */\nasync function isWindowSupported() {\n try {\n // This throws if open() is unsupported, so adding it to the conditional\n // statement below can cause an uncaught error.\n await validateIndexedDBOpenable();\n }\n catch (e) {\n return false;\n }\n // firebase-js-sdk/issues/2393 reveals that idb#open in Safari iframe and Firefox private browsing\n // might be prohibited to run. In these contexts, an error would be thrown during the messaging\n // instantiating phase, informing the developers to import/call isSupported for special handling.\n return (typeof window !== 'undefined' &&\n isIndexedDBAvailable() &&\n areCookiesEnabled() &&\n 'serviceWorker' in navigator &&\n 'PushManager' in window &&\n 'Notification' in window &&\n 'fetch' in window &&\n ServiceWorkerRegistration.prototype.hasOwnProperty('showNotification') &&\n PushSubscription.prototype.hasOwnProperty('getKey'));\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nasync function deleteToken$1(messaging) {\n if (!navigator) {\n throw ERROR_FACTORY.create(\"only-available-in-window\" /* ErrorCode.AVAILABLE_IN_WINDOW */);\n }\n if (!messaging.swRegistration) {\n await registerDefaultSw(messaging);\n }\n return deleteTokenInternal(messaging);\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction onMessage$1(messaging, nextOrObserver) {\n if (!navigator) {\n throw ERROR_FACTORY.create(\"only-available-in-window\" /* ErrorCode.AVAILABLE_IN_WINDOW */);\n }\n messaging.onMessageHandler = nextOrObserver;\n return () => {\n messaging.onMessageHandler = null;\n };\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Retrieves a Firebase Cloud Messaging instance.\n *\n * @returns The Firebase Cloud Messaging instance associated with the provided firebase app.\n *\n * @public\n */\nfunction getMessagingInWindow(app = getApp()) {\n // Conscious decision to make this async check non-blocking during the messaging instance\n // initialization phase for performance consideration. An error would be thrown latter for\n // developer's information. Developers can then choose to import and call `isSupported` for\n // special handling.\n isWindowSupported().then(isSupported => {\n // If `isWindowSupported()` resolved, but returned false.\n if (!isSupported) {\n throw ERROR_FACTORY.create(\"unsupported-browser\" /* ErrorCode.UNSUPPORTED_BROWSER */);\n }\n }, _ => {\n // If `isWindowSupported()` rejected.\n throw ERROR_FACTORY.create(\"indexed-db-unsupported\" /* ErrorCode.INDEXED_DB_UNSUPPORTED */);\n });\n return _getProvider(getModularInstance(app), 'messaging').getImmediate();\n}\n/**\n * Subscribes the {@link Messaging} instance to push notifications. Returns a Firebase Cloud\n * Messaging registration token that can be used to send push messages to that {@link Messaging}\n * instance.\n *\n * If notification permission isn't already granted, this method asks the user for permission. The\n * returned promise rejects if the user does not allow the app to show notifications.\n *\n * @param messaging - The {@link Messaging} instance.\n * @param options - Provides an optional vapid key and an optional service worker registration.\n *\n * @returns The promise resolves with an FCM registration token.\n *\n * @public\n */\nasync function getToken(messaging, options) {\n messaging = getModularInstance(messaging);\n return getToken$1(messaging, options);\n}\n/**\n * Deletes the registration token associated with this {@link Messaging} instance and unsubscribes\n * the {@link Messaging} instance from the push subscription.\n *\n * @param messaging - The {@link Messaging} instance.\n *\n * @returns The promise resolves when the token has been successfully deleted.\n *\n * @public\n */\nfunction deleteToken(messaging) {\n messaging = getModularInstance(messaging);\n return deleteToken$1(messaging);\n}\n/**\n * When a push message is received and the user is currently on a page for your origin, the\n * message is passed to the page and an `onMessage()` event is dispatched with the payload of\n * the push message.\n *\n *\n * @param messaging - The {@link Messaging} instance.\n * @param nextOrObserver - This function, or observer object with `next` defined,\n * is called when a message is received and the user is currently viewing your page.\n * @returns To stop listening for messages execute this returned function.\n *\n * @public\n */\nfunction onMessage(messaging, nextOrObserver) {\n messaging = getModularInstance(messaging);\n return onMessage$1(messaging, nextOrObserver);\n}\n\n/**\n * The Firebase Cloud Messaging Web SDK.\n * This SDK does not work in a Node.js environment.\n *\n * @packageDocumentation\n */\nregisterMessagingInWindow();\n\nexport { deleteToken, getMessagingInWindow as getMessaging, getToken, isWindowSupported as isSupported, onMessage };\n//# sourceMappingURL=index.esm2017.js.map\n","import StyleToObject from '../cjs/index.js';\n\n// ensure compatibility with rollup umd build\nexport default StyleToObject.default || StyleToObject;\n","/**\n * @import {Identifier, Literal, MemberExpression} from 'estree'\n * @import {Jsx, JsxDev, Options, Props} from 'hast-util-to-jsx-runtime'\n * @import {Element, Nodes, Parents, Root, Text} from 'hast'\n * @import {MdxFlowExpressionHast, MdxTextExpressionHast} from 'mdast-util-mdx-expression'\n * @import {MdxJsxFlowElementHast, MdxJsxTextElementHast} from 'mdast-util-mdx-jsx'\n * @import {MdxjsEsmHast} from 'mdast-util-mdxjs-esm'\n * @import {Position} from 'unist'\n * @import {Child, Create, Field, State, Style} from './types.js'\n */\n\nimport {stringify as commas} from 'comma-separated-tokens'\nimport {ok as assert} from 'devlop'\nimport {name as isIdentifierName} from 'estree-util-is-identifier-name'\nimport {whitespace} from 'hast-util-whitespace'\nimport {find, hastToReact, html, svg} from 'property-information'\nimport {stringify as spaces} from 'space-separated-tokens'\nimport styleToObject from 'style-to-object'\nimport {pointStart} from 'unist-util-position'\nimport {VFileMessage} from 'vfile-message'\n\n// To do: next major: `Object.hasOwn`.\nconst own = {}.hasOwnProperty\n\n/** @type {Map} */\nconst emptyMap = new Map()\n\nconst cap = /[A-Z]/g\nconst dashSomething = /-([a-z])/g\n\n// `react-dom` triggers a warning for *any* white space in tables.\n// To follow GFM, `mdast-util-to-hast` injects line endings between elements.\n// Other tools might do so too, but they don’t do here, so we remove all of\n// that.\n\n// See: .\n// See: .\n// See: .\n// See: .\n// See: .\n// See: .\nconst tableElements = new Set(['table', 'tbody', 'thead', 'tfoot', 'tr'])\n\nconst tableCellElement = new Set(['td', 'th'])\n\nconst docs = 'https://github.com/syntax-tree/hast-util-to-jsx-runtime'\n\n/**\n * Transform a hast tree to preact, react, solid, svelte, vue, etc.,\n * with an automatic JSX runtime.\n *\n * @param {Nodes} tree\n * Tree to transform.\n * @param {Options} options\n * Configuration (required).\n * @returns {JSX.Element}\n * JSX element.\n */\n\nexport function toJsxRuntime(tree, options) {\n if (!options || options.Fragment === undefined) {\n throw new TypeError('Expected `Fragment` in options')\n }\n\n const filePath = options.filePath || undefined\n /** @type {Create} */\n let create\n\n if (options.development) {\n if (typeof options.jsxDEV !== 'function') {\n throw new TypeError(\n 'Expected `jsxDEV` in options when `development: true`'\n )\n }\n\n create = developmentCreate(filePath, options.jsxDEV)\n } else {\n if (typeof options.jsx !== 'function') {\n throw new TypeError('Expected `jsx` in production options')\n }\n\n if (typeof options.jsxs !== 'function') {\n throw new TypeError('Expected `jsxs` in production options')\n }\n\n create = productionCreate(filePath, options.jsx, options.jsxs)\n }\n\n /** @type {State} */\n const state = {\n Fragment: options.Fragment,\n ancestors: [],\n components: options.components || {},\n create,\n elementAttributeNameCase: options.elementAttributeNameCase || 'react',\n evaluater: options.createEvaluater ? options.createEvaluater() : undefined,\n filePath,\n ignoreInvalidStyle: options.ignoreInvalidStyle || false,\n passKeys: options.passKeys !== false,\n passNode: options.passNode || false,\n schema: options.space === 'svg' ? svg : html,\n stylePropertyNameCase: options.stylePropertyNameCase || 'dom',\n tableCellAlignToStyle: options.tableCellAlignToStyle !== false\n }\n\n const result = one(state, tree, undefined)\n\n // JSX element.\n if (result && typeof result !== 'string') {\n return result\n }\n\n // Text node or something that turned into nothing.\n return state.create(\n tree,\n state.Fragment,\n {children: result || undefined},\n undefined\n )\n}\n\n/**\n * Transform a node.\n *\n * @param {State} state\n * Info passed around.\n * @param {Nodes} node\n * Current node.\n * @param {string | undefined} key\n * Key.\n * @returns {Child | undefined}\n * Child, optional.\n */\nfunction one(state, node, key) {\n if (node.type === 'element') {\n return element(state, node, key)\n }\n\n if (node.type === 'mdxFlowExpression' || node.type === 'mdxTextExpression') {\n return mdxExpression(state, node)\n }\n\n if (node.type === 'mdxJsxFlowElement' || node.type === 'mdxJsxTextElement') {\n return mdxJsxElement(state, node, key)\n }\n\n if (node.type === 'mdxjsEsm') {\n return mdxEsm(state, node)\n }\n\n if (node.type === 'root') {\n return root(state, node, key)\n }\n\n if (node.type === 'text') {\n return text(state, node)\n }\n}\n\n/**\n * Handle element.\n *\n * @param {State} state\n * Info passed around.\n * @param {Element} node\n * Current node.\n * @param {string | undefined} key\n * Key.\n * @returns {Child | undefined}\n * Child, optional.\n */\nfunction element(state, node, key) {\n const parentSchema = state.schema\n let schema = parentSchema\n\n if (node.tagName.toLowerCase() === 'svg' && parentSchema.space === 'html') {\n schema = svg\n state.schema = schema\n }\n\n state.ancestors.push(node)\n\n const type = findComponentFromName(state, node.tagName, false)\n const props = createElementProps(state, node)\n let children = createChildren(state, node)\n\n if (tableElements.has(node.tagName)) {\n children = children.filter(function (child) {\n return typeof child === 'string' ? !whitespace(child) : true\n })\n }\n\n addNode(state, props, type, node)\n addChildren(props, children)\n\n // Restore.\n state.ancestors.pop()\n state.schema = parentSchema\n\n return state.create(node, type, props, key)\n}\n\n/**\n * Handle MDX expression.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdxFlowExpressionHast | MdxTextExpressionHast} node\n * Current node.\n * @returns {Child | undefined}\n * Child, optional.\n */\nfunction mdxExpression(state, node) {\n if (node.data && node.data.estree && state.evaluater) {\n const program = node.data.estree\n const expression = program.body[0]\n assert(expression.type === 'ExpressionStatement')\n\n // Assume result is a child.\n return /** @type {Child | undefined} */ (\n state.evaluater.evaluateExpression(expression.expression)\n )\n }\n\n crashEstree(state, node.position)\n}\n\n/**\n * Handle MDX ESM.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdxjsEsmHast} node\n * Current node.\n * @returns {Child | undefined}\n * Child, optional.\n */\nfunction mdxEsm(state, node) {\n if (node.data && node.data.estree && state.evaluater) {\n // Assume result is a child.\n return /** @type {Child | undefined} */ (\n state.evaluater.evaluateProgram(node.data.estree)\n )\n }\n\n crashEstree(state, node.position)\n}\n\n/**\n * Handle MDX JSX.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdxJsxFlowElementHast | MdxJsxTextElementHast} node\n * Current node.\n * @param {string | undefined} key\n * Key.\n * @returns {Child | undefined}\n * Child, optional.\n */\nfunction mdxJsxElement(state, node, key) {\n const parentSchema = state.schema\n let schema = parentSchema\n\n if (node.name === 'svg' && parentSchema.space === 'html') {\n schema = svg\n state.schema = schema\n }\n\n state.ancestors.push(node)\n\n const type =\n node.name === null\n ? state.Fragment\n : findComponentFromName(state, node.name, true)\n const props = createJsxElementProps(state, node)\n const children = createChildren(state, node)\n\n addNode(state, props, type, node)\n addChildren(props, children)\n\n // Restore.\n state.ancestors.pop()\n state.schema = parentSchema\n\n return state.create(node, type, props, key)\n}\n\n/**\n * Handle root.\n *\n * @param {State} state\n * Info passed around.\n * @param {Root} node\n * Current node.\n * @param {string | undefined} key\n * Key.\n * @returns {Child | undefined}\n * Child, optional.\n */\nfunction root(state, node, key) {\n /** @type {Props} */\n const props = {}\n\n addChildren(props, createChildren(state, node))\n\n return state.create(node, state.Fragment, props, key)\n}\n\n/**\n * Handle text.\n *\n * @param {State} _\n * Info passed around.\n * @param {Text} node\n * Current node.\n * @returns {Child | undefined}\n * Child, optional.\n */\nfunction text(_, node) {\n return node.value\n}\n\n/**\n * Add `node` to props.\n *\n * @param {State} state\n * Info passed around.\n * @param {Props} props\n * Props.\n * @param {unknown} type\n * Type.\n * @param {Element | MdxJsxFlowElementHast | MdxJsxTextElementHast} node\n * Node.\n * @returns {undefined}\n * Nothing.\n */\nfunction addNode(state, props, type, node) {\n // If this is swapped out for a component:\n if (typeof type !== 'string' && type !== state.Fragment && state.passNode) {\n props.node = node\n }\n}\n\n/**\n * Add children to props.\n *\n * @param {Props} props\n * Props.\n * @param {Array} children\n * Children.\n * @returns {undefined}\n * Nothing.\n */\nfunction addChildren(props, children) {\n if (children.length > 0) {\n const value = children.length > 1 ? children : children[0]\n\n if (value) {\n props.children = value\n }\n }\n}\n\n/**\n * @param {string | undefined} _\n * Path to file.\n * @param {Jsx} jsx\n * Dynamic.\n * @param {Jsx} jsxs\n * Static.\n * @returns {Create}\n * Create a production element.\n */\nfunction productionCreate(_, jsx, jsxs) {\n return create\n /** @type {Create} */\n function create(_, type, props, key) {\n // Only an array when there are 2 or more children.\n const isStaticChildren = Array.isArray(props.children)\n const fn = isStaticChildren ? jsxs : jsx\n return key ? fn(type, props, key) : fn(type, props)\n }\n}\n\n/**\n * @param {string | undefined} filePath\n * Path to file.\n * @param {JsxDev} jsxDEV\n * Development.\n * @returns {Create}\n * Create a development element.\n */\nfunction developmentCreate(filePath, jsxDEV) {\n return create\n /** @type {Create} */\n function create(node, type, props, key) {\n // Only an array when there are 2 or more children.\n const isStaticChildren = Array.isArray(props.children)\n const point = pointStart(node)\n return jsxDEV(\n type,\n props,\n key,\n isStaticChildren,\n {\n columnNumber: point ? point.column - 1 : undefined,\n fileName: filePath,\n lineNumber: point ? point.line : undefined\n },\n undefined\n )\n }\n}\n\n/**\n * Create props from an element.\n *\n * @param {State} state\n * Info passed around.\n * @param {Element} node\n * Current element.\n * @returns {Props}\n * Props.\n */\nfunction createElementProps(state, node) {\n /** @type {Props} */\n const props = {}\n /** @type {string | undefined} */\n let alignValue\n /** @type {string} */\n let prop\n\n for (prop in node.properties) {\n if (prop !== 'children' && own.call(node.properties, prop)) {\n const result = createProperty(state, prop, node.properties[prop])\n\n if (result) {\n const [key, value] = result\n\n if (\n state.tableCellAlignToStyle &&\n key === 'align' &&\n typeof value === 'string' &&\n tableCellElement.has(node.tagName)\n ) {\n alignValue = value\n } else {\n props[key] = value\n }\n }\n }\n }\n\n if (alignValue) {\n // Assume style is an object.\n const style = /** @type {Style} */ (props.style || (props.style = {}))\n style[state.stylePropertyNameCase === 'css' ? 'text-align' : 'textAlign'] =\n alignValue\n }\n\n return props\n}\n\n/**\n * Create props from a JSX element.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdxJsxFlowElementHast | MdxJsxTextElementHast} node\n * Current JSX element.\n * @returns {Props}\n * Props.\n */\nfunction createJsxElementProps(state, node) {\n /** @type {Props} */\n const props = {}\n\n for (const attribute of node.attributes) {\n if (attribute.type === 'mdxJsxExpressionAttribute') {\n if (attribute.data && attribute.data.estree && state.evaluater) {\n const program = attribute.data.estree\n const expression = program.body[0]\n assert(expression.type === 'ExpressionStatement')\n const objectExpression = expression.expression\n assert(objectExpression.type === 'ObjectExpression')\n const property = objectExpression.properties[0]\n assert(property.type === 'SpreadElement')\n\n Object.assign(\n props,\n state.evaluater.evaluateExpression(property.argument)\n )\n } else {\n crashEstree(state, node.position)\n }\n } else {\n // For JSX, the author is responsible of passing in the correct values.\n const name = attribute.name\n /** @type {unknown} */\n let value\n\n if (attribute.value && typeof attribute.value === 'object') {\n if (\n attribute.value.data &&\n attribute.value.data.estree &&\n state.evaluater\n ) {\n const program = attribute.value.data.estree\n const expression = program.body[0]\n assert(expression.type === 'ExpressionStatement')\n value = state.evaluater.evaluateExpression(expression.expression)\n } else {\n crashEstree(state, node.position)\n }\n } else {\n value = attribute.value === null ? true : attribute.value\n }\n\n // Assume a prop.\n props[name] = /** @type {Props[keyof Props]} */ (value)\n }\n }\n\n return props\n}\n\n/**\n * Create children.\n *\n * @param {State} state\n * Info passed around.\n * @param {Parents} node\n * Current element.\n * @returns {Array}\n * Children.\n */\nfunction createChildren(state, node) {\n /** @type {Array} */\n const children = []\n let index = -1\n /** @type {Map} */\n // Note: test this when Solid doesn’t want to merge my upcoming PR.\n /* c8 ignore next */\n const countsByName = state.passKeys ? new Map() : emptyMap\n\n while (++index < node.children.length) {\n const child = node.children[index]\n /** @type {string | undefined} */\n let key\n\n if (state.passKeys) {\n const name =\n child.type === 'element'\n ? child.tagName\n : child.type === 'mdxJsxFlowElement' ||\n child.type === 'mdxJsxTextElement'\n ? child.name\n : undefined\n\n if (name) {\n const count = countsByName.get(name) || 0\n key = name + '-' + count\n countsByName.set(name, count + 1)\n }\n }\n\n const result = one(state, child, key)\n if (result !== undefined) children.push(result)\n }\n\n return children\n}\n\n/**\n * Handle a property.\n *\n * @param {State} state\n * Info passed around.\n * @param {string} prop\n * Key.\n * @param {Array | boolean | number | string | null | undefined} value\n * hast property value.\n * @returns {Field | undefined}\n * Field for runtime, optional.\n */\nfunction createProperty(state, prop, value) {\n const info = find(state.schema, prop)\n\n // Ignore nullish and `NaN` values.\n if (\n value === null ||\n value === undefined ||\n (typeof value === 'number' && Number.isNaN(value))\n ) {\n return\n }\n\n if (Array.isArray(value)) {\n // Accept `array`.\n // Most props are space-separated.\n value = info.commaSeparated ? commas(value) : spaces(value)\n }\n\n // React only accepts `style` as object.\n if (info.property === 'style') {\n let styleObject =\n typeof value === 'object' ? value : parseStyle(state, String(value))\n\n if (state.stylePropertyNameCase === 'css') {\n styleObject = transformStylesToCssCasing(styleObject)\n }\n\n return ['style', styleObject]\n }\n\n return [\n state.elementAttributeNameCase === 'react' && info.space\n ? hastToReact[info.property] || info.property\n : info.attribute,\n value\n ]\n}\n\n/**\n * Parse a CSS declaration to an object.\n *\n * @param {State} state\n * Info passed around.\n * @param {string} value\n * CSS declarations.\n * @returns {Style}\n * Properties.\n * @throws\n * Throws `VFileMessage` when CSS cannot be parsed.\n */\nfunction parseStyle(state, value) {\n /** @type {Style} */\n const result = {}\n\n try {\n styleToObject(value, replacer)\n } catch (error) {\n if (!state.ignoreInvalidStyle) {\n const cause = /** @type {Error} */ (error)\n const message = new VFileMessage('Cannot parse `style` attribute', {\n ancestors: state.ancestors,\n cause,\n ruleId: 'style',\n source: 'hast-util-to-jsx-runtime'\n })\n message.file = state.filePath || undefined\n message.url = docs + '#cannot-parse-style-attribute'\n\n throw message\n }\n }\n\n return result\n\n /**\n * Add a CSS property (normal, so with dashes) to `result` as a DOM CSS\n * property.\n *\n * @param {string} name\n * Key.\n * @param {string} value\n * Value\n * @returns {undefined}\n * Nothing.\n */\n function replacer(name, value) {\n let key = name\n\n if (key.slice(0, 2) !== '--') {\n if (key.slice(0, 4) === '-ms-') key = 'ms-' + key.slice(4)\n key = key.replace(dashSomething, toCamel)\n }\n\n result[key] = value\n }\n}\n\n/**\n * Create a JSX name from a string.\n *\n * @param {State} state\n * To do.\n * @param {string} name\n * Name.\n * @param {boolean} allowExpression\n * Allow member expressions and identifiers.\n * @returns {unknown}\n * To do.\n */\nfunction findComponentFromName(state, name, allowExpression) {\n /** @type {Identifier | Literal | MemberExpression} */\n let result\n\n if (!allowExpression) {\n result = {type: 'Literal', value: name}\n } else if (name.includes('.')) {\n const identifiers = name.split('.')\n let index = -1\n /** @type {Identifier | Literal | MemberExpression | undefined} */\n let node\n\n while (++index < identifiers.length) {\n /** @type {Identifier | Literal} */\n const prop = isIdentifierName(identifiers[index])\n ? {type: 'Identifier', name: identifiers[index]}\n : {type: 'Literal', value: identifiers[index]}\n node = node\n ? {\n type: 'MemberExpression',\n object: node,\n property: prop,\n computed: Boolean(index && prop.type === 'Literal'),\n optional: false\n }\n : prop\n }\n\n assert(node, 'always a result')\n result = node\n } else {\n result =\n isIdentifierName(name) && !/^[a-z]/.test(name)\n ? {type: 'Identifier', name}\n : {type: 'Literal', value: name}\n }\n\n // Only literals can be passed in `components` currently.\n // No identifiers / member expressions.\n if (result.type === 'Literal') {\n const name = /** @type {keyof JSX.IntrinsicElements} */ (result.value)\n\n return own.call(state.components, name) ? state.components[name] : name\n }\n\n // Assume component.\n if (state.evaluater) {\n return state.evaluater.evaluateExpression(result)\n }\n\n crashEstree(state)\n}\n\n/**\n * @param {State} state\n * @param {Position | undefined} [place]\n * @returns {never}\n */\nfunction crashEstree(state, place) {\n const message = new VFileMessage(\n 'Cannot handle MDX estrees without `createEvaluater`',\n {\n ancestors: state.ancestors,\n place,\n ruleId: 'mdx-estree',\n source: 'hast-util-to-jsx-runtime'\n }\n )\n message.file = state.filePath || undefined\n message.url = docs + '#cannot-handle-mdx-estrees-without-createevaluater'\n\n throw message\n}\n\n/**\n * Transform a DOM casing style object to a CSS casing style object.\n *\n * @param {Style} domCasing\n * @returns {Style}\n */\nfunction transformStylesToCssCasing(domCasing) {\n /** @type {Style} */\n const cssCasing = {}\n /** @type {string} */\n let from\n\n for (from in domCasing) {\n if (own.call(domCasing, from)) {\n cssCasing[transformStyleToCssCasing(from)] = domCasing[from]\n }\n }\n\n return cssCasing\n}\n\n/**\n * Transform a DOM casing style field to a CSS casing style field.\n *\n * @param {string} from\n * @returns {string}\n */\nfunction transformStyleToCssCasing(from) {\n let to = from.replace(cap, toDash)\n // Handle `ms-xxx` -> `-ms-xxx`.\n if (to.slice(0, 3) === 'ms-') to = '-' + to\n return to\n}\n\n/**\n * Make `$1` capitalized.\n *\n * @param {string} _\n * Whatever.\n * @param {string} $1\n * Single ASCII alphabetical.\n * @returns {string}\n * Capitalized `$1`.\n */\nfunction toCamel(_, $1) {\n return $1.toUpperCase()\n}\n\n/**\n * Make `$0` dash cased.\n *\n * @param {string} $0\n * Capitalized ASCII leter.\n * @returns {string}\n * Dash and lower letter.\n */\nfunction toDash($0) {\n return '-' + $0.toLowerCase()\n}\n","/**\n * @typedef {import('hast').Nodes} Nodes\n */\n\n// HTML whitespace expression.\n// See .\nconst re = /[ \\t\\n\\f\\r]/g\n\n/**\n * Check if the given value is *inter-element whitespace*.\n *\n * @param {Nodes | string} thing\n * Thing to check (`Node` or `string`).\n * @returns {boolean}\n * Whether the `value` is inter-element whitespace (`boolean`): consisting of\n * zero or more of space, tab (`\\t`), line feed (`\\n`), carriage return\n * (`\\r`), or form feed (`\\f`); if a node is passed it must be a `Text` node,\n * whose `value` field is checked.\n */\nexport function whitespace(thing) {\n return typeof thing === 'object'\n ? thing.type === 'text'\n ? empty(thing.value)\n : false\n : empty(thing)\n}\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nfunction empty(value) {\n return value.replace(re, '') === ''\n}\n","function getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nvar urlToolkit = {exports: {}};\n\n(function (module, exports) {\n\t// see https://tools.ietf.org/html/rfc1808\n\n\t(function (root) {\n\t var URL_REGEX =\n\t /^(?=((?:[a-zA-Z0-9+\\-.]+:)?))\\1(?=((?:\\/\\/[^\\/?#]*)?))\\2(?=((?:(?:[^?#\\/]*\\/)*[^;?#\\/]*)?))\\3((?:;[^?#]*)?)(\\?[^#]*)?(#[^]*)?$/;\n\t var FIRST_SEGMENT_REGEX = /^(?=([^\\/?#]*))\\1([^]*)$/;\n\t var SLASH_DOT_REGEX = /(?:\\/|^)\\.(?=\\/)/g;\n\t var SLASH_DOT_DOT_REGEX = /(?:\\/|^)\\.\\.\\/(?!\\.\\.\\/)[^\\/]*(?=\\/)/g;\n\n\t var URLToolkit = {\n\t // If opts.alwaysNormalize is true then the path will always be normalized even when it starts with / or //\n\t // E.g\n\t // With opts.alwaysNormalize = false (default, spec compliant)\n\t // http://a.com/b/cd + /e/f/../g => http://a.com/e/f/../g\n\t // With opts.alwaysNormalize = true (not spec compliant)\n\t // http://a.com/b/cd + /e/f/../g => http://a.com/e/g\n\t buildAbsoluteURL: function (baseURL, relativeURL, opts) {\n\t opts = opts || {};\n\t // remove any remaining space and CRLF\n\t baseURL = baseURL.trim();\n\t relativeURL = relativeURL.trim();\n\t if (!relativeURL) {\n\t // 2a) If the embedded URL is entirely empty, it inherits the\n\t // entire base URL (i.e., is set equal to the base URL)\n\t // and we are done.\n\t if (!opts.alwaysNormalize) {\n\t return baseURL;\n\t }\n\t var basePartsForNormalise = URLToolkit.parseURL(baseURL);\n\t if (!basePartsForNormalise) {\n\t throw new Error('Error trying to parse base URL.');\n\t }\n\t basePartsForNormalise.path = URLToolkit.normalizePath(\n\t basePartsForNormalise.path\n\t );\n\t return URLToolkit.buildURLFromParts(basePartsForNormalise);\n\t }\n\t var relativeParts = URLToolkit.parseURL(relativeURL);\n\t if (!relativeParts) {\n\t throw new Error('Error trying to parse relative URL.');\n\t }\n\t if (relativeParts.scheme) {\n\t // 2b) If the embedded URL starts with a scheme name, it is\n\t // interpreted as an absolute URL and we are done.\n\t if (!opts.alwaysNormalize) {\n\t return relativeURL;\n\t }\n\t relativeParts.path = URLToolkit.normalizePath(relativeParts.path);\n\t return URLToolkit.buildURLFromParts(relativeParts);\n\t }\n\t var baseParts = URLToolkit.parseURL(baseURL);\n\t if (!baseParts) {\n\t throw new Error('Error trying to parse base URL.');\n\t }\n\t if (!baseParts.netLoc && baseParts.path && baseParts.path[0] !== '/') {\n\t // If netLoc missing and path doesn't start with '/', assume everthing before the first '/' is the netLoc\n\t // This causes 'example.com/a' to be handled as '//example.com/a' instead of '/example.com/a'\n\t var pathParts = FIRST_SEGMENT_REGEX.exec(baseParts.path);\n\t baseParts.netLoc = pathParts[1];\n\t baseParts.path = pathParts[2];\n\t }\n\t if (baseParts.netLoc && !baseParts.path) {\n\t baseParts.path = '/';\n\t }\n\t var builtParts = {\n\t // 2c) Otherwise, the embedded URL inherits the scheme of\n\t // the base URL.\n\t scheme: baseParts.scheme,\n\t netLoc: relativeParts.netLoc,\n\t path: null,\n\t params: relativeParts.params,\n\t query: relativeParts.query,\n\t fragment: relativeParts.fragment,\n\t };\n\t if (!relativeParts.netLoc) {\n\t // 3) If the embedded URL's is non-empty, we skip to\n\t // Step 7. Otherwise, the embedded URL inherits the \n\t // (if any) of the base URL.\n\t builtParts.netLoc = baseParts.netLoc;\n\t // 4) If the embedded URL path is preceded by a slash \"/\", the\n\t // path is not relative and we skip to Step 7.\n\t if (relativeParts.path[0] !== '/') {\n\t if (!relativeParts.path) {\n\t // 5) If the embedded URL path is empty (and not preceded by a\n\t // slash), then the embedded URL inherits the base URL path\n\t builtParts.path = baseParts.path;\n\t // 5a) if the embedded URL's is non-empty, we skip to\n\t // step 7; otherwise, it inherits the of the base\n\t // URL (if any) and\n\t if (!relativeParts.params) {\n\t builtParts.params = baseParts.params;\n\t // 5b) if the embedded URL's is non-empty, we skip to\n\t // step 7; otherwise, it inherits the of the base\n\t // URL (if any) and we skip to step 7.\n\t if (!relativeParts.query) {\n\t builtParts.query = baseParts.query;\n\t }\n\t }\n\t } else {\n\t // 6) The last segment of the base URL's path (anything\n\t // following the rightmost slash \"/\", or the entire path if no\n\t // slash is present) is removed and the embedded URL's path is\n\t // appended in its place.\n\t var baseURLPath = baseParts.path;\n\t var newPath =\n\t baseURLPath.substring(0, baseURLPath.lastIndexOf('/') + 1) +\n\t relativeParts.path;\n\t builtParts.path = URLToolkit.normalizePath(newPath);\n\t }\n\t }\n\t }\n\t if (builtParts.path === null) {\n\t builtParts.path = opts.alwaysNormalize\n\t ? URLToolkit.normalizePath(relativeParts.path)\n\t : relativeParts.path;\n\t }\n\t return URLToolkit.buildURLFromParts(builtParts);\n\t },\n\t parseURL: function (url) {\n\t var parts = URL_REGEX.exec(url);\n\t if (!parts) {\n\t return null;\n\t }\n\t return {\n\t scheme: parts[1] || '',\n\t netLoc: parts[2] || '',\n\t path: parts[3] || '',\n\t params: parts[4] || '',\n\t query: parts[5] || '',\n\t fragment: parts[6] || '',\n\t };\n\t },\n\t normalizePath: function (path) {\n\t // The following operations are\n\t // then applied, in order, to the new path:\n\t // 6a) All occurrences of \"./\", where \".\" is a complete path\n\t // segment, are removed.\n\t // 6b) If the path ends with \".\" as a complete path segment,\n\t // that \".\" is removed.\n\t path = path.split('').reverse().join('').replace(SLASH_DOT_REGEX, '');\n\t // 6c) All occurrences of \"/../\", where is a\n\t // complete path segment not equal to \"..\", are removed.\n\t // Removal of these path segments is performed iteratively,\n\t // removing the leftmost matching pattern on each iteration,\n\t // until no matching pattern remains.\n\t // 6d) If the path ends with \"/..\", where is a\n\t // complete path segment not equal to \"..\", that\n\t // \"/..\" is removed.\n\t while (\n\t path.length !== (path = path.replace(SLASH_DOT_DOT_REGEX, '')).length\n\t ) {}\n\t return path.split('').reverse().join('');\n\t },\n\t buildURLFromParts: function (parts) {\n\t return (\n\t parts.scheme +\n\t parts.netLoc +\n\t parts.path +\n\t parts.params +\n\t parts.query +\n\t parts.fragment\n\t );\n\t },\n\t };\n\n\t module.exports = URLToolkit;\n\t})(); \n} (urlToolkit));\n\nvar urlToolkitExports = urlToolkit.exports;\n\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != typeof t || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != typeof i) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == typeof i ? i : String(i);\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\n// https://caniuse.com/mdn-javascript_builtins_number_isfinite\nconst isFiniteNumber = Number.isFinite || function (value) {\n return typeof value === 'number' && isFinite(value);\n};\n\n// https://caniuse.com/mdn-javascript_builtins_number_issafeinteger\nconst isSafeInteger = Number.isSafeInteger || function (value) {\n return typeof value === 'number' && Math.abs(value) <= MAX_SAFE_INTEGER;\n};\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\n\nlet Events = /*#__PURE__*/function (Events) {\n Events[\"MEDIA_ATTACHING\"] = \"hlsMediaAttaching\";\n Events[\"MEDIA_ATTACHED\"] = \"hlsMediaAttached\";\n Events[\"MEDIA_DETACHING\"] = \"hlsMediaDetaching\";\n Events[\"MEDIA_DETACHED\"] = \"hlsMediaDetached\";\n Events[\"BUFFER_RESET\"] = \"hlsBufferReset\";\n Events[\"BUFFER_CODECS\"] = \"hlsBufferCodecs\";\n Events[\"BUFFER_CREATED\"] = \"hlsBufferCreated\";\n Events[\"BUFFER_APPENDING\"] = \"hlsBufferAppending\";\n Events[\"BUFFER_APPENDED\"] = \"hlsBufferAppended\";\n Events[\"BUFFER_EOS\"] = \"hlsBufferEos\";\n Events[\"BUFFER_FLUSHING\"] = \"hlsBufferFlushing\";\n Events[\"BUFFER_FLUSHED\"] = \"hlsBufferFlushed\";\n Events[\"MANIFEST_LOADING\"] = \"hlsManifestLoading\";\n Events[\"MANIFEST_LOADED\"] = \"hlsManifestLoaded\";\n Events[\"MANIFEST_PARSED\"] = \"hlsManifestParsed\";\n Events[\"LEVEL_SWITCHING\"] = \"hlsLevelSwitching\";\n Events[\"LEVEL_SWITCHED\"] = \"hlsLevelSwitched\";\n Events[\"LEVEL_LOADING\"] = \"hlsLevelLoading\";\n Events[\"LEVEL_LOADED\"] = \"hlsLevelLoaded\";\n Events[\"LEVEL_UPDATED\"] = \"hlsLevelUpdated\";\n Events[\"LEVEL_PTS_UPDATED\"] = \"hlsLevelPtsUpdated\";\n Events[\"LEVELS_UPDATED\"] = \"hlsLevelsUpdated\";\n Events[\"AUDIO_TRACKS_UPDATED\"] = \"hlsAudioTracksUpdated\";\n Events[\"AUDIO_TRACK_SWITCHING\"] = \"hlsAudioTrackSwitching\";\n Events[\"AUDIO_TRACK_SWITCHED\"] = \"hlsAudioTrackSwitched\";\n Events[\"AUDIO_TRACK_LOADING\"] = \"hlsAudioTrackLoading\";\n Events[\"AUDIO_TRACK_LOADED\"] = \"hlsAudioTrackLoaded\";\n Events[\"SUBTITLE_TRACKS_UPDATED\"] = \"hlsSubtitleTracksUpdated\";\n Events[\"SUBTITLE_TRACKS_CLEARED\"] = \"hlsSubtitleTracksCleared\";\n Events[\"SUBTITLE_TRACK_SWITCH\"] = \"hlsSubtitleTrackSwitch\";\n Events[\"SUBTITLE_TRACK_LOADING\"] = \"hlsSubtitleTrackLoading\";\n Events[\"SUBTITLE_TRACK_LOADED\"] = \"hlsSubtitleTrackLoaded\";\n Events[\"SUBTITLE_FRAG_PROCESSED\"] = \"hlsSubtitleFragProcessed\";\n Events[\"CUES_PARSED\"] = \"hlsCuesParsed\";\n Events[\"NON_NATIVE_TEXT_TRACKS_FOUND\"] = \"hlsNonNativeTextTracksFound\";\n Events[\"INIT_PTS_FOUND\"] = \"hlsInitPtsFound\";\n Events[\"FRAG_LOADING\"] = \"hlsFragLoading\";\n Events[\"FRAG_LOAD_EMERGENCY_ABORTED\"] = \"hlsFragLoadEmergencyAborted\";\n Events[\"FRAG_LOADED\"] = \"hlsFragLoaded\";\n Events[\"FRAG_DECRYPTED\"] = \"hlsFragDecrypted\";\n Events[\"FRAG_PARSING_INIT_SEGMENT\"] = \"hlsFragParsingInitSegment\";\n Events[\"FRAG_PARSING_USERDATA\"] = \"hlsFragParsingUserdata\";\n Events[\"FRAG_PARSING_METADATA\"] = \"hlsFragParsingMetadata\";\n Events[\"FRAG_PARSED\"] = \"hlsFragParsed\";\n Events[\"FRAG_BUFFERED\"] = \"hlsFragBuffered\";\n Events[\"FRAG_CHANGED\"] = \"hlsFragChanged\";\n Events[\"FPS_DROP\"] = \"hlsFpsDrop\";\n Events[\"FPS_DROP_LEVEL_CAPPING\"] = \"hlsFpsDropLevelCapping\";\n Events[\"MAX_AUTO_LEVEL_UPDATED\"] = \"hlsMaxAutoLevelUpdated\";\n Events[\"ERROR\"] = \"hlsError\";\n Events[\"DESTROYING\"] = \"hlsDestroying\";\n Events[\"KEY_LOADING\"] = \"hlsKeyLoading\";\n Events[\"KEY_LOADED\"] = \"hlsKeyLoaded\";\n Events[\"LIVE_BACK_BUFFER_REACHED\"] = \"hlsLiveBackBufferReached\";\n Events[\"BACK_BUFFER_REACHED\"] = \"hlsBackBufferReached\";\n Events[\"STEERING_MANIFEST_LOADED\"] = \"hlsSteeringManifestLoaded\";\n return Events;\n}({});\n\n/**\n * Defines each Event type and payload by Event name. Used in {@link hls.js#HlsEventEmitter} to strongly type the event listener API.\n */\n\nlet ErrorTypes = /*#__PURE__*/function (ErrorTypes) {\n ErrorTypes[\"NETWORK_ERROR\"] = \"networkError\";\n ErrorTypes[\"MEDIA_ERROR\"] = \"mediaError\";\n ErrorTypes[\"KEY_SYSTEM_ERROR\"] = \"keySystemError\";\n ErrorTypes[\"MUX_ERROR\"] = \"muxError\";\n ErrorTypes[\"OTHER_ERROR\"] = \"otherError\";\n return ErrorTypes;\n}({});\nlet ErrorDetails = /*#__PURE__*/function (ErrorDetails) {\n ErrorDetails[\"KEY_SYSTEM_NO_KEYS\"] = \"keySystemNoKeys\";\n ErrorDetails[\"KEY_SYSTEM_NO_ACCESS\"] = \"keySystemNoAccess\";\n ErrorDetails[\"KEY_SYSTEM_NO_SESSION\"] = \"keySystemNoSession\";\n ErrorDetails[\"KEY_SYSTEM_NO_CONFIGURED_LICENSE\"] = \"keySystemNoConfiguredLicense\";\n ErrorDetails[\"KEY_SYSTEM_LICENSE_REQUEST_FAILED\"] = \"keySystemLicenseRequestFailed\";\n ErrorDetails[\"KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED\"] = \"keySystemServerCertificateRequestFailed\";\n ErrorDetails[\"KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED\"] = \"keySystemServerCertificateUpdateFailed\";\n ErrorDetails[\"KEY_SYSTEM_SESSION_UPDATE_FAILED\"] = \"keySystemSessionUpdateFailed\";\n ErrorDetails[\"KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED\"] = \"keySystemStatusOutputRestricted\";\n ErrorDetails[\"KEY_SYSTEM_STATUS_INTERNAL_ERROR\"] = \"keySystemStatusInternalError\";\n ErrorDetails[\"MANIFEST_LOAD_ERROR\"] = \"manifestLoadError\";\n ErrorDetails[\"MANIFEST_LOAD_TIMEOUT\"] = \"manifestLoadTimeOut\";\n ErrorDetails[\"MANIFEST_PARSING_ERROR\"] = \"manifestParsingError\";\n ErrorDetails[\"MANIFEST_INCOMPATIBLE_CODECS_ERROR\"] = \"manifestIncompatibleCodecsError\";\n ErrorDetails[\"LEVEL_EMPTY_ERROR\"] = \"levelEmptyError\";\n ErrorDetails[\"LEVEL_LOAD_ERROR\"] = \"levelLoadError\";\n ErrorDetails[\"LEVEL_LOAD_TIMEOUT\"] = \"levelLoadTimeOut\";\n ErrorDetails[\"LEVEL_PARSING_ERROR\"] = \"levelParsingError\";\n ErrorDetails[\"LEVEL_SWITCH_ERROR\"] = \"levelSwitchError\";\n ErrorDetails[\"AUDIO_TRACK_LOAD_ERROR\"] = \"audioTrackLoadError\";\n ErrorDetails[\"AUDIO_TRACK_LOAD_TIMEOUT\"] = \"audioTrackLoadTimeOut\";\n ErrorDetails[\"SUBTITLE_LOAD_ERROR\"] = \"subtitleTrackLoadError\";\n ErrorDetails[\"SUBTITLE_TRACK_LOAD_TIMEOUT\"] = \"subtitleTrackLoadTimeOut\";\n ErrorDetails[\"FRAG_LOAD_ERROR\"] = \"fragLoadError\";\n ErrorDetails[\"FRAG_LOAD_TIMEOUT\"] = \"fragLoadTimeOut\";\n ErrorDetails[\"FRAG_DECRYPT_ERROR\"] = \"fragDecryptError\";\n ErrorDetails[\"FRAG_PARSING_ERROR\"] = \"fragParsingError\";\n ErrorDetails[\"FRAG_GAP\"] = \"fragGap\";\n ErrorDetails[\"REMUX_ALLOC_ERROR\"] = \"remuxAllocError\";\n ErrorDetails[\"KEY_LOAD_ERROR\"] = \"keyLoadError\";\n ErrorDetails[\"KEY_LOAD_TIMEOUT\"] = \"keyLoadTimeOut\";\n ErrorDetails[\"BUFFER_ADD_CODEC_ERROR\"] = \"bufferAddCodecError\";\n ErrorDetails[\"BUFFER_INCOMPATIBLE_CODECS_ERROR\"] = \"bufferIncompatibleCodecsError\";\n ErrorDetails[\"BUFFER_APPEND_ERROR\"] = \"bufferAppendError\";\n ErrorDetails[\"BUFFER_APPENDING_ERROR\"] = \"bufferAppendingError\";\n ErrorDetails[\"BUFFER_STALLED_ERROR\"] = \"bufferStalledError\";\n ErrorDetails[\"BUFFER_FULL_ERROR\"] = \"bufferFullError\";\n ErrorDetails[\"BUFFER_SEEK_OVER_HOLE\"] = \"bufferSeekOverHole\";\n ErrorDetails[\"BUFFER_NUDGE_ON_STALL\"] = \"bufferNudgeOnStall\";\n ErrorDetails[\"INTERNAL_EXCEPTION\"] = \"internalException\";\n ErrorDetails[\"INTERNAL_ABORTED\"] = \"aborted\";\n ErrorDetails[\"UNKNOWN\"] = \"unknown\";\n return ErrorDetails;\n}({});\n\nconst noop = function noop() {};\nconst fakeLogger = {\n trace: noop,\n debug: noop,\n log: noop,\n warn: noop,\n info: noop,\n error: noop\n};\nlet exportedLogger = fakeLogger;\n\n// let lastCallTime;\n// function formatMsgWithTimeInfo(type, msg) {\n// const now = Date.now();\n// const diff = lastCallTime ? '+' + (now - lastCallTime) : '0';\n// lastCallTime = now;\n// msg = (new Date(now)).toISOString() + ' | [' + type + '] > ' + msg + ' ( ' + diff + ' ms )';\n// return msg;\n// }\n\nfunction consolePrintFn(type) {\n const func = self.console[type];\n if (func) {\n return func.bind(self.console, `[${type}] >`);\n }\n return noop;\n}\nfunction exportLoggerFunctions(debugConfig, ...functions) {\n functions.forEach(function (type) {\n exportedLogger[type] = debugConfig[type] ? debugConfig[type].bind(debugConfig) : consolePrintFn(type);\n });\n}\nfunction enableLogs(debugConfig, id) {\n // check that console is available\n if (typeof console === 'object' && debugConfig === true || typeof debugConfig === 'object') {\n exportLoggerFunctions(debugConfig,\n // Remove out from list here to hard-disable a log-level\n // 'trace',\n 'debug', 'log', 'info', 'warn', 'error');\n // Some browsers don't allow to use bind on console object anyway\n // fallback to default if needed\n try {\n exportedLogger.log(`Debug logs enabled for \"${id}\" in hls.js version ${\"1.5.18\"}`);\n } catch (e) {\n exportedLogger = fakeLogger;\n }\n } else {\n exportedLogger = fakeLogger;\n }\n}\nconst logger = exportedLogger;\n\nconst DECIMAL_RESOLUTION_REGEX = /^(\\d+)x(\\d+)$/;\nconst ATTR_LIST_REGEX = /(.+?)=(\".*?\"|.*?)(?:,|$)/g;\n\n// adapted from https://github.com/kanongil/node-m3u8parse/blob/master/attrlist.js\nclass AttrList {\n constructor(attrs) {\n if (typeof attrs === 'string') {\n attrs = AttrList.parseAttrList(attrs);\n }\n _extends(this, attrs);\n }\n get clientAttrs() {\n return Object.keys(this).filter(attr => attr.substring(0, 2) === 'X-');\n }\n decimalInteger(attrName) {\n const intValue = parseInt(this[attrName], 10);\n if (intValue > Number.MAX_SAFE_INTEGER) {\n return Infinity;\n }\n return intValue;\n }\n hexadecimalInteger(attrName) {\n if (this[attrName]) {\n let stringValue = (this[attrName] || '0x').slice(2);\n stringValue = (stringValue.length & 1 ? '0' : '') + stringValue;\n const value = new Uint8Array(stringValue.length / 2);\n for (let i = 0; i < stringValue.length / 2; i++) {\n value[i] = parseInt(stringValue.slice(i * 2, i * 2 + 2), 16);\n }\n return value;\n } else {\n return null;\n }\n }\n hexadecimalIntegerAsNumber(attrName) {\n const intValue = parseInt(this[attrName], 16);\n if (intValue > Number.MAX_SAFE_INTEGER) {\n return Infinity;\n }\n return intValue;\n }\n decimalFloatingPoint(attrName) {\n return parseFloat(this[attrName]);\n }\n optionalFloat(attrName, defaultValue) {\n const value = this[attrName];\n return value ? parseFloat(value) : defaultValue;\n }\n enumeratedString(attrName) {\n return this[attrName];\n }\n bool(attrName) {\n return this[attrName] === 'YES';\n }\n decimalResolution(attrName) {\n const res = DECIMAL_RESOLUTION_REGEX.exec(this[attrName]);\n if (res === null) {\n return undefined;\n }\n return {\n width: parseInt(res[1], 10),\n height: parseInt(res[2], 10)\n };\n }\n static parseAttrList(input) {\n let match;\n const attrs = {};\n const quote = '\"';\n ATTR_LIST_REGEX.lastIndex = 0;\n while ((match = ATTR_LIST_REGEX.exec(input)) !== null) {\n let value = match[2];\n if (value.indexOf(quote) === 0 && value.lastIndexOf(quote) === value.length - 1) {\n value = value.slice(1, -1);\n }\n const name = match[1].trim();\n attrs[name] = value;\n }\n return attrs;\n }\n}\n\n// Avoid exporting const enum so that these values can be inlined\n\nfunction isDateRangeCueAttribute(attrName) {\n return attrName !== \"ID\" && attrName !== \"CLASS\" && attrName !== \"START-DATE\" && attrName !== \"DURATION\" && attrName !== \"END-DATE\" && attrName !== \"END-ON-NEXT\";\n}\nfunction isSCTE35Attribute(attrName) {\n return attrName === \"SCTE35-OUT\" || attrName === \"SCTE35-IN\";\n}\nclass DateRange {\n constructor(dateRangeAttr, dateRangeWithSameId) {\n this.attr = void 0;\n this._startDate = void 0;\n this._endDate = void 0;\n this._badValueForSameId = void 0;\n if (dateRangeWithSameId) {\n const previousAttr = dateRangeWithSameId.attr;\n for (const key in previousAttr) {\n if (Object.prototype.hasOwnProperty.call(dateRangeAttr, key) && dateRangeAttr[key] !== previousAttr[key]) {\n logger.warn(`DATERANGE tag attribute: \"${key}\" does not match for tags with ID: \"${dateRangeAttr.ID}\"`);\n this._badValueForSameId = key;\n break;\n }\n }\n // Merge DateRange tags with the same ID\n dateRangeAttr = _extends(new AttrList({}), previousAttr, dateRangeAttr);\n }\n this.attr = dateRangeAttr;\n this._startDate = new Date(dateRangeAttr[\"START-DATE\"]);\n if (\"END-DATE\" in this.attr) {\n const endDate = new Date(this.attr[\"END-DATE\"]);\n if (isFiniteNumber(endDate.getTime())) {\n this._endDate = endDate;\n }\n }\n }\n get id() {\n return this.attr.ID;\n }\n get class() {\n return this.attr.CLASS;\n }\n get startDate() {\n return this._startDate;\n }\n get endDate() {\n if (this._endDate) {\n return this._endDate;\n }\n const duration = this.duration;\n if (duration !== null) {\n return new Date(this._startDate.getTime() + duration * 1000);\n }\n return null;\n }\n get duration() {\n if (\"DURATION\" in this.attr) {\n const duration = this.attr.decimalFloatingPoint(\"DURATION\");\n if (isFiniteNumber(duration)) {\n return duration;\n }\n } else if (this._endDate) {\n return (this._endDate.getTime() - this._startDate.getTime()) / 1000;\n }\n return null;\n }\n get plannedDuration() {\n if (\"PLANNED-DURATION\" in this.attr) {\n return this.attr.decimalFloatingPoint(\"PLANNED-DURATION\");\n }\n return null;\n }\n get endOnNext() {\n return this.attr.bool(\"END-ON-NEXT\");\n }\n get isValid() {\n return !!this.id && !this._badValueForSameId && isFiniteNumber(this.startDate.getTime()) && (this.duration === null || this.duration >= 0) && (!this.endOnNext || !!this.class);\n }\n}\n\nclass LoadStats {\n constructor() {\n this.aborted = false;\n this.loaded = 0;\n this.retry = 0;\n this.total = 0;\n this.chunkCount = 0;\n this.bwEstimate = 0;\n this.loading = {\n start: 0,\n first: 0,\n end: 0\n };\n this.parsing = {\n start: 0,\n end: 0\n };\n this.buffering = {\n start: 0,\n first: 0,\n end: 0\n };\n }\n}\n\nvar ElementaryStreamTypes = {\n AUDIO: \"audio\",\n VIDEO: \"video\",\n AUDIOVIDEO: \"audiovideo\"\n};\nclass BaseSegment {\n constructor(baseurl) {\n this._byteRange = null;\n this._url = null;\n // baseurl is the URL to the playlist\n this.baseurl = void 0;\n // relurl is the portion of the URL that comes from inside the playlist.\n this.relurl = void 0;\n // Holds the types of data this fragment supports\n this.elementaryStreams = {\n [ElementaryStreamTypes.AUDIO]: null,\n [ElementaryStreamTypes.VIDEO]: null,\n [ElementaryStreamTypes.AUDIOVIDEO]: null\n };\n this.baseurl = baseurl;\n }\n\n // setByteRange converts a EXT-X-BYTERANGE attribute into a two element array\n setByteRange(value, previous) {\n const params = value.split('@', 2);\n let start;\n if (params.length === 1) {\n start = (previous == null ? void 0 : previous.byteRangeEndOffset) || 0;\n } else {\n start = parseInt(params[1]);\n }\n this._byteRange = [start, parseInt(params[0]) + start];\n }\n get byteRange() {\n if (!this._byteRange) {\n return [];\n }\n return this._byteRange;\n }\n get byteRangeStartOffset() {\n return this.byteRange[0];\n }\n get byteRangeEndOffset() {\n return this.byteRange[1];\n }\n get url() {\n if (!this._url && this.baseurl && this.relurl) {\n this._url = urlToolkitExports.buildAbsoluteURL(this.baseurl, this.relurl, {\n alwaysNormalize: true\n });\n }\n return this._url || '';\n }\n set url(value) {\n this._url = value;\n }\n}\n\n/**\n * Object representing parsed data from an HLS Segment. Found in {@link hls.js#LevelDetails.fragments}.\n */\nclass Fragment extends BaseSegment {\n constructor(type, baseurl) {\n super(baseurl);\n this._decryptdata = null;\n this.rawProgramDateTime = null;\n this.programDateTime = null;\n this.tagList = [];\n // EXTINF has to be present for a m3u8 to be considered valid\n this.duration = 0;\n // sn notates the sequence number for a segment, and if set to a string can be 'initSegment'\n this.sn = 0;\n // levelkeys are the EXT-X-KEY tags that apply to this segment for decryption\n // core difference from the private field _decryptdata is the lack of the initialized IV\n // _decryptdata will set the IV for this segment based on the segment number in the fragment\n this.levelkeys = void 0;\n // A string representing the fragment type\n this.type = void 0;\n // A reference to the loader. Set while the fragment is loading, and removed afterwards. Used to abort fragment loading\n this.loader = null;\n // A reference to the key loader. Set while the key is loading, and removed afterwards. Used to abort key loading\n this.keyLoader = null;\n // The level/track index to which the fragment belongs\n this.level = -1;\n // The continuity counter of the fragment\n this.cc = 0;\n // The starting Presentation Time Stamp (PTS) of the fragment. Set after transmux complete.\n this.startPTS = void 0;\n // The ending Presentation Time Stamp (PTS) of the fragment. Set after transmux complete.\n this.endPTS = void 0;\n // The starting Decode Time Stamp (DTS) of the fragment. Set after transmux complete.\n this.startDTS = void 0;\n // The ending Decode Time Stamp (DTS) of the fragment. Set after transmux complete.\n this.endDTS = void 0;\n // The start time of the fragment, as listed in the manifest. Updated after transmux complete.\n this.start = 0;\n // Set by `updateFragPTSDTS` in level-helper\n this.deltaPTS = void 0;\n // The maximum starting Presentation Time Stamp (audio/video PTS) of the fragment. Set after transmux complete.\n this.maxStartPTS = void 0;\n // The minimum ending Presentation Time Stamp (audio/video PTS) of the fragment. Set after transmux complete.\n this.minEndPTS = void 0;\n // Load/parse timing information\n this.stats = new LoadStats();\n // Init Segment bytes (unset for media segments)\n this.data = void 0;\n // A flag indicating whether the segment was downloaded in order to test bitrate, and was not buffered\n this.bitrateTest = false;\n // #EXTINF segment title\n this.title = null;\n // The Media Initialization Section for this segment\n this.initSegment = null;\n // Fragment is the last fragment in the media playlist\n this.endList = void 0;\n // Fragment is marked by an EXT-X-GAP tag indicating that it does not contain media data and should not be loaded\n this.gap = void 0;\n // Deprecated\n this.urlId = 0;\n this.type = type;\n }\n get decryptdata() {\n const {\n levelkeys\n } = this;\n if (!levelkeys && !this._decryptdata) {\n return null;\n }\n if (!this._decryptdata && this.levelkeys && !this.levelkeys.NONE) {\n const key = this.levelkeys.identity;\n if (key) {\n this._decryptdata = key.getDecryptData(this.sn);\n } else {\n const keyFormats = Object.keys(this.levelkeys);\n if (keyFormats.length === 1) {\n return this._decryptdata = this.levelkeys[keyFormats[0]].getDecryptData(this.sn);\n }\n }\n }\n return this._decryptdata;\n }\n get end() {\n return this.start + this.duration;\n }\n get endProgramDateTime() {\n if (this.programDateTime === null) {\n return null;\n }\n if (!isFiniteNumber(this.programDateTime)) {\n return null;\n }\n const duration = !isFiniteNumber(this.duration) ? 0 : this.duration;\n return this.programDateTime + duration * 1000;\n }\n get encrypted() {\n var _this$_decryptdata;\n // At the m3u8-parser level we need to add support for manifest signalled keyformats\n // when we want the fragment to start reporting that it is encrypted.\n // Currently, keyFormat will only be set for identity keys\n if ((_this$_decryptdata = this._decryptdata) != null && _this$_decryptdata.encrypted) {\n return true;\n } else if (this.levelkeys) {\n const keyFormats = Object.keys(this.levelkeys);\n const len = keyFormats.length;\n if (len > 1 || len === 1 && this.levelkeys[keyFormats[0]].encrypted) {\n return true;\n }\n }\n return false;\n }\n setKeyFormat(keyFormat) {\n if (this.levelkeys) {\n const key = this.levelkeys[keyFormat];\n if (key && !this._decryptdata) {\n this._decryptdata = key.getDecryptData(this.sn);\n }\n }\n }\n abortRequests() {\n var _this$loader, _this$keyLoader;\n (_this$loader = this.loader) == null ? void 0 : _this$loader.abort();\n (_this$keyLoader = this.keyLoader) == null ? void 0 : _this$keyLoader.abort();\n }\n setElementaryStreamInfo(type, startPTS, endPTS, startDTS, endDTS, partial = false) {\n const {\n elementaryStreams\n } = this;\n const info = elementaryStreams[type];\n if (!info) {\n elementaryStreams[type] = {\n startPTS,\n endPTS,\n startDTS,\n endDTS,\n partial\n };\n return;\n }\n info.startPTS = Math.min(info.startPTS, startPTS);\n info.endPTS = Math.max(info.endPTS, endPTS);\n info.startDTS = Math.min(info.startDTS, startDTS);\n info.endDTS = Math.max(info.endDTS, endDTS);\n }\n clearElementaryStreamInfo() {\n const {\n elementaryStreams\n } = this;\n elementaryStreams[ElementaryStreamTypes.AUDIO] = null;\n elementaryStreams[ElementaryStreamTypes.VIDEO] = null;\n elementaryStreams[ElementaryStreamTypes.AUDIOVIDEO] = null;\n }\n}\n\n/**\n * Object representing parsed data from an HLS Partial Segment. Found in {@link hls.js#LevelDetails.partList}.\n */\nclass Part extends BaseSegment {\n constructor(partAttrs, frag, baseurl, index, previous) {\n super(baseurl);\n this.fragOffset = 0;\n this.duration = 0;\n this.gap = false;\n this.independent = false;\n this.relurl = void 0;\n this.fragment = void 0;\n this.index = void 0;\n this.stats = new LoadStats();\n this.duration = partAttrs.decimalFloatingPoint('DURATION');\n this.gap = partAttrs.bool('GAP');\n this.independent = partAttrs.bool('INDEPENDENT');\n this.relurl = partAttrs.enumeratedString('URI');\n this.fragment = frag;\n this.index = index;\n const byteRange = partAttrs.enumeratedString('BYTERANGE');\n if (byteRange) {\n this.setByteRange(byteRange, previous);\n }\n if (previous) {\n this.fragOffset = previous.fragOffset + previous.duration;\n }\n }\n get start() {\n return this.fragment.start + this.fragOffset;\n }\n get end() {\n return this.start + this.duration;\n }\n get loaded() {\n const {\n elementaryStreams\n } = this;\n return !!(elementaryStreams.audio || elementaryStreams.video || elementaryStreams.audiovideo);\n }\n}\n\nconst DEFAULT_TARGET_DURATION = 10;\n\n/**\n * Object representing parsed data from an HLS Media Playlist. Found in {@link hls.js#Level.details}.\n */\nclass LevelDetails {\n constructor(baseUrl) {\n this.PTSKnown = false;\n this.alignedSliding = false;\n this.averagetargetduration = void 0;\n this.endCC = 0;\n this.endSN = 0;\n this.fragments = void 0;\n this.fragmentHint = void 0;\n this.partList = null;\n this.dateRanges = void 0;\n this.live = true;\n this.ageHeader = 0;\n this.advancedDateTime = void 0;\n this.updated = true;\n this.advanced = true;\n this.availabilityDelay = void 0;\n // Manifest reload synchronization\n this.misses = 0;\n this.startCC = 0;\n this.startSN = 0;\n this.startTimeOffset = null;\n this.targetduration = 0;\n this.totalduration = 0;\n this.type = null;\n this.url = void 0;\n this.m3u8 = '';\n this.version = null;\n this.canBlockReload = false;\n this.canSkipUntil = 0;\n this.canSkipDateRanges = false;\n this.skippedSegments = 0;\n this.recentlyRemovedDateranges = void 0;\n this.partHoldBack = 0;\n this.holdBack = 0;\n this.partTarget = 0;\n this.preloadHint = void 0;\n this.renditionReports = void 0;\n this.tuneInGoal = 0;\n this.deltaUpdateFailed = void 0;\n this.driftStartTime = 0;\n this.driftEndTime = 0;\n this.driftStart = 0;\n this.driftEnd = 0;\n this.encryptedFragments = void 0;\n this.playlistParsingError = null;\n this.variableList = null;\n this.hasVariableRefs = false;\n this.fragments = [];\n this.encryptedFragments = [];\n this.dateRanges = {};\n this.url = baseUrl;\n }\n reloaded(previous) {\n if (!previous) {\n this.advanced = true;\n this.updated = true;\n return;\n }\n const partSnDiff = this.lastPartSn - previous.lastPartSn;\n const partIndexDiff = this.lastPartIndex - previous.lastPartIndex;\n this.updated = this.endSN !== previous.endSN || !!partIndexDiff || !!partSnDiff || !this.live;\n this.advanced = this.endSN > previous.endSN || partSnDiff > 0 || partSnDiff === 0 && partIndexDiff > 0;\n if (this.updated || this.advanced) {\n this.misses = Math.floor(previous.misses * 0.6);\n } else {\n this.misses = previous.misses + 1;\n }\n this.availabilityDelay = previous.availabilityDelay;\n }\n get hasProgramDateTime() {\n if (this.fragments.length) {\n return isFiniteNumber(this.fragments[this.fragments.length - 1].programDateTime);\n }\n return false;\n }\n get levelTargetDuration() {\n return this.averagetargetduration || this.targetduration || DEFAULT_TARGET_DURATION;\n }\n get drift() {\n const runTime = this.driftEndTime - this.driftStartTime;\n if (runTime > 0) {\n const runDuration = this.driftEnd - this.driftStart;\n return runDuration * 1000 / runTime;\n }\n return 1;\n }\n get edge() {\n return this.partEnd || this.fragmentEnd;\n }\n get partEnd() {\n var _this$partList;\n if ((_this$partList = this.partList) != null && _this$partList.length) {\n return this.partList[this.partList.length - 1].end;\n }\n return this.fragmentEnd;\n }\n get fragmentEnd() {\n var _this$fragments;\n if ((_this$fragments = this.fragments) != null && _this$fragments.length) {\n return this.fragments[this.fragments.length - 1].end;\n }\n return 0;\n }\n get age() {\n if (this.advancedDateTime) {\n return Math.max(Date.now() - this.advancedDateTime, 0) / 1000;\n }\n return 0;\n }\n get lastPartIndex() {\n var _this$partList2;\n if ((_this$partList2 = this.partList) != null && _this$partList2.length) {\n return this.partList[this.partList.length - 1].index;\n }\n return -1;\n }\n get lastPartSn() {\n var _this$partList3;\n if ((_this$partList3 = this.partList) != null && _this$partList3.length) {\n return this.partList[this.partList.length - 1].fragment.sn;\n }\n return this.endSN;\n }\n}\n\nfunction base64Decode(base64encodedStr) {\n return Uint8Array.from(atob(base64encodedStr), c => c.charCodeAt(0));\n}\n\nfunction getKeyIdBytes(str) {\n const keyIdbytes = strToUtf8array(str).subarray(0, 16);\n const paddedkeyIdbytes = new Uint8Array(16);\n paddedkeyIdbytes.set(keyIdbytes, 16 - keyIdbytes.length);\n return paddedkeyIdbytes;\n}\nfunction changeEndianness(keyId) {\n const swap = function swap(array, from, to) {\n const cur = array[from];\n array[from] = array[to];\n array[to] = cur;\n };\n swap(keyId, 0, 3);\n swap(keyId, 1, 2);\n swap(keyId, 4, 5);\n swap(keyId, 6, 7);\n}\nfunction convertDataUriToArrayBytes(uri) {\n // data:[\n const colonsplit = uri.split(':');\n let keydata = null;\n if (colonsplit[0] === 'data' && colonsplit.length === 2) {\n const semicolonsplit = colonsplit[1].split(';');\n const commasplit = semicolonsplit[semicolonsplit.length - 1].split(',');\n if (commasplit.length === 2) {\n const isbase64 = commasplit[0] === 'base64';\n const data = commasplit[1];\n if (isbase64) {\n semicolonsplit.splice(-1, 1); // remove from processing\n keydata = base64Decode(data);\n } else {\n keydata = getKeyIdBytes(data);\n }\n }\n }\n return keydata;\n}\nfunction strToUtf8array(str) {\n return Uint8Array.from(unescape(encodeURIComponent(str)), c => c.charCodeAt(0));\n}\n\n/** returns `undefined` is `self` is missing, e.g. in node */\nconst optionalSelf = typeof self !== 'undefined' ? self : undefined;\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Navigator/requestMediaKeySystemAccess\n */\nvar KeySystems = {\n CLEARKEY: \"org.w3.clearkey\",\n FAIRPLAY: \"com.apple.fps\",\n PLAYREADY: \"com.microsoft.playready\",\n WIDEVINE: \"com.widevine.alpha\"\n};\n\n// Playlist #EXT-X-KEY KEYFORMAT values\nvar KeySystemFormats = {\n CLEARKEY: \"org.w3.clearkey\",\n FAIRPLAY: \"com.apple.streamingkeydelivery\",\n PLAYREADY: \"com.microsoft.playready\",\n WIDEVINE: \"urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed\"\n};\nfunction keySystemFormatToKeySystemDomain(format) {\n switch (format) {\n case KeySystemFormats.FAIRPLAY:\n return KeySystems.FAIRPLAY;\n case KeySystemFormats.PLAYREADY:\n return KeySystems.PLAYREADY;\n case KeySystemFormats.WIDEVINE:\n return KeySystems.WIDEVINE;\n case KeySystemFormats.CLEARKEY:\n return KeySystems.CLEARKEY;\n }\n}\n\n// System IDs for which we can extract a key ID from \"encrypted\" event PSSH\nvar KeySystemIds = {\n CENC: \"1077efecc0b24d02ace33c1e52e2fb4b\",\n CLEARKEY: \"e2719d58a985b3c9781ab030af78d30e\",\n FAIRPLAY: \"94ce86fb07ff4f43adb893d2fa968ca2\",\n PLAYREADY: \"9a04f07998404286ab92e65be0885f95\",\n WIDEVINE: \"edef8ba979d64acea3c827dcd51d21ed\"\n};\nfunction keySystemIdToKeySystemDomain(systemId) {\n if (systemId === KeySystemIds.WIDEVINE) {\n return KeySystems.WIDEVINE;\n } else if (systemId === KeySystemIds.PLAYREADY) {\n return KeySystems.PLAYREADY;\n } else if (systemId === KeySystemIds.CENC || systemId === KeySystemIds.CLEARKEY) {\n return KeySystems.CLEARKEY;\n }\n}\nfunction keySystemDomainToKeySystemFormat(keySystem) {\n switch (keySystem) {\n case KeySystems.FAIRPLAY:\n return KeySystemFormats.FAIRPLAY;\n case KeySystems.PLAYREADY:\n return KeySystemFormats.PLAYREADY;\n case KeySystems.WIDEVINE:\n return KeySystemFormats.WIDEVINE;\n case KeySystems.CLEARKEY:\n return KeySystemFormats.CLEARKEY;\n }\n}\nfunction getKeySystemsForConfig(config) {\n const {\n drmSystems,\n widevineLicenseUrl\n } = config;\n const keySystemsToAttempt = drmSystems ? [KeySystems.FAIRPLAY, KeySystems.WIDEVINE, KeySystems.PLAYREADY, KeySystems.CLEARKEY].filter(keySystem => !!drmSystems[keySystem]) : [];\n if (!keySystemsToAttempt[KeySystems.WIDEVINE] && widevineLicenseUrl) {\n keySystemsToAttempt.push(KeySystems.WIDEVINE);\n }\n return keySystemsToAttempt;\n}\nconst requestMediaKeySystemAccess = function (_optionalSelf$navigat) {\n if (optionalSelf != null && (_optionalSelf$navigat = optionalSelf.navigator) != null && _optionalSelf$navigat.requestMediaKeySystemAccess) {\n return self.navigator.requestMediaKeySystemAccess.bind(self.navigator);\n } else {\n return null;\n }\n}();\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/MediaKeySystemConfiguration\n */\nfunction getSupportedMediaKeySystemConfigurations(keySystem, audioCodecs, videoCodecs, drmSystemOptions) {\n let initDataTypes;\n switch (keySystem) {\n case KeySystems.FAIRPLAY:\n initDataTypes = ['cenc', 'sinf'];\n break;\n case KeySystems.WIDEVINE:\n case KeySystems.PLAYREADY:\n initDataTypes = ['cenc'];\n break;\n case KeySystems.CLEARKEY:\n initDataTypes = ['cenc', 'keyids'];\n break;\n default:\n throw new Error(`Unknown key-system: ${keySystem}`);\n }\n return createMediaKeySystemConfigurations(initDataTypes, audioCodecs, videoCodecs, drmSystemOptions);\n}\nfunction createMediaKeySystemConfigurations(initDataTypes, audioCodecs, videoCodecs, drmSystemOptions) {\n const baseConfig = {\n initDataTypes: initDataTypes,\n persistentState: drmSystemOptions.persistentState || 'optional',\n distinctiveIdentifier: drmSystemOptions.distinctiveIdentifier || 'optional',\n sessionTypes: drmSystemOptions.sessionTypes || [drmSystemOptions.sessionType || 'temporary'],\n audioCapabilities: audioCodecs.map(codec => ({\n contentType: `audio/mp4; codecs=\"${codec}\"`,\n robustness: drmSystemOptions.audioRobustness || '',\n encryptionScheme: drmSystemOptions.audioEncryptionScheme || null\n })),\n videoCapabilities: videoCodecs.map(codec => ({\n contentType: `video/mp4; codecs=\"${codec}\"`,\n robustness: drmSystemOptions.videoRobustness || '',\n encryptionScheme: drmSystemOptions.videoEncryptionScheme || null\n }))\n };\n return [baseConfig];\n}\n\nfunction sliceUint8(array, start, end) {\n // @ts-expect-error This polyfills IE11 usage of Uint8Array slice.\n // It always exists in the TypeScript definition so fails, but it fails at runtime on IE11.\n return Uint8Array.prototype.slice ? array.slice(start, end) : new Uint8Array(Array.prototype.slice.call(array, start, end));\n}\n\n// breaking up those two types in order to clarify what is happening in the decoding path.\n\n/**\n * Returns true if an ID3 header can be found at offset in data\n * @param data - The data to search\n * @param offset - The offset at which to start searching\n */\nconst isHeader$2 = (data, offset) => {\n /*\n * http://id3.org/id3v2.3.0\n * [0] = 'I'\n * [1] = 'D'\n * [2] = '3'\n * [3,4] = {Version}\n * [5] = {Flags}\n * [6-9] = {ID3 Size}\n *\n * An ID3v2 tag can be detected with the following pattern:\n * $49 44 33 yy yy xx zz zz zz zz\n * Where yy is less than $FF, xx is the 'flags' byte and zz is less than $80\n */\n if (offset + 10 <= data.length) {\n // look for 'ID3' identifier\n if (data[offset] === 0x49 && data[offset + 1] === 0x44 && data[offset + 2] === 0x33) {\n // check version is within range\n if (data[offset + 3] < 0xff && data[offset + 4] < 0xff) {\n // check size is within range\n if (data[offset + 6] < 0x80 && data[offset + 7] < 0x80 && data[offset + 8] < 0x80 && data[offset + 9] < 0x80) {\n return true;\n }\n }\n }\n }\n return false;\n};\n\n/**\n * Returns true if an ID3 footer can be found at offset in data\n * @param data - The data to search\n * @param offset - The offset at which to start searching\n */\nconst isFooter = (data, offset) => {\n /*\n * The footer is a copy of the header, but with a different identifier\n */\n if (offset + 10 <= data.length) {\n // look for '3DI' identifier\n if (data[offset] === 0x33 && data[offset + 1] === 0x44 && data[offset + 2] === 0x49) {\n // check version is within range\n if (data[offset + 3] < 0xff && data[offset + 4] < 0xff) {\n // check size is within range\n if (data[offset + 6] < 0x80 && data[offset + 7] < 0x80 && data[offset + 8] < 0x80 && data[offset + 9] < 0x80) {\n return true;\n }\n }\n }\n }\n return false;\n};\n\n/**\n * Returns any adjacent ID3 tags found in data starting at offset, as one block of data\n * @param data - The data to search in\n * @param offset - The offset at which to start searching\n * @returns the block of data containing any ID3 tags found\n * or *undefined* if no header is found at the starting offset\n */\nconst getID3Data = (data, offset) => {\n const front = offset;\n let length = 0;\n while (isHeader$2(data, offset)) {\n // ID3 header is 10 bytes\n length += 10;\n const size = readSize(data, offset + 6);\n length += size;\n if (isFooter(data, offset + 10)) {\n // ID3 footer is 10 bytes\n length += 10;\n }\n offset += length;\n }\n if (length > 0) {\n return data.subarray(front, front + length);\n }\n return undefined;\n};\nconst readSize = (data, offset) => {\n let size = 0;\n size = (data[offset] & 0x7f) << 21;\n size |= (data[offset + 1] & 0x7f) << 14;\n size |= (data[offset + 2] & 0x7f) << 7;\n size |= data[offset + 3] & 0x7f;\n return size;\n};\nconst canParse$2 = (data, offset) => {\n return isHeader$2(data, offset) && readSize(data, offset + 6) + 10 <= data.length - offset;\n};\n\n/**\n * Searches for the Elementary Stream timestamp found in the ID3 data chunk\n * @param data - Block of data containing one or more ID3 tags\n */\nconst getTimeStamp = data => {\n const frames = getID3Frames(data);\n for (let i = 0; i < frames.length; i++) {\n const frame = frames[i];\n if (isTimeStampFrame(frame)) {\n return readTimeStamp(frame);\n }\n }\n return undefined;\n};\n\n/**\n * Returns true if the ID3 frame is an Elementary Stream timestamp frame\n */\nconst isTimeStampFrame = frame => {\n return frame && frame.key === 'PRIV' && frame.info === 'com.apple.streaming.transportStreamTimestamp';\n};\nconst getFrameData = data => {\n /*\n Frame ID $xx xx xx xx (four characters)\n Size $xx xx xx xx\n Flags $xx xx\n */\n const type = String.fromCharCode(data[0], data[1], data[2], data[3]);\n const size = readSize(data, 4);\n\n // skip frame id, size, and flags\n const offset = 10;\n return {\n type,\n size,\n data: data.subarray(offset, offset + size)\n };\n};\n\n/**\n * Returns an array of ID3 frames found in all the ID3 tags in the id3Data\n * @param id3Data - The ID3 data containing one or more ID3 tags\n */\nconst getID3Frames = id3Data => {\n let offset = 0;\n const frames = [];\n while (isHeader$2(id3Data, offset)) {\n const size = readSize(id3Data, offset + 6);\n // skip past ID3 header\n offset += 10;\n const end = offset + size;\n // loop through frames in the ID3 tag\n while (offset + 8 < end) {\n const frameData = getFrameData(id3Data.subarray(offset));\n const frame = decodeFrame(frameData);\n if (frame) {\n frames.push(frame);\n }\n\n // skip frame header and frame data\n offset += frameData.size + 10;\n }\n if (isFooter(id3Data, offset)) {\n offset += 10;\n }\n }\n return frames;\n};\nconst decodeFrame = frame => {\n if (frame.type === 'PRIV') {\n return decodePrivFrame(frame);\n } else if (frame.type[0] === 'W') {\n return decodeURLFrame(frame);\n }\n return decodeTextFrame(frame);\n};\nconst decodePrivFrame = frame => {\n /*\n Format: \\0\n */\n if (frame.size < 2) {\n return undefined;\n }\n const owner = utf8ArrayToStr(frame.data, true);\n const privateData = new Uint8Array(frame.data.subarray(owner.length + 1));\n return {\n key: frame.type,\n info: owner,\n data: privateData.buffer\n };\n};\nconst decodeTextFrame = frame => {\n if (frame.size < 2) {\n return undefined;\n }\n if (frame.type === 'TXXX') {\n /*\n Format:\n [0] = {Text Encoding}\n [1-?] = {Description}\\0{Value}\n */\n let index = 1;\n const description = utf8ArrayToStr(frame.data.subarray(index), true);\n index += description.length + 1;\n const value = utf8ArrayToStr(frame.data.subarray(index));\n return {\n key: frame.type,\n info: description,\n data: value\n };\n }\n /*\n Format:\n [0] = {Text Encoding}\n [1-?] = {Value}\n */\n const text = utf8ArrayToStr(frame.data.subarray(1));\n return {\n key: frame.type,\n data: text\n };\n};\nconst decodeURLFrame = frame => {\n if (frame.type === 'WXXX') {\n /*\n Format:\n [0] = {Text Encoding}\n [1-?] = {Description}\\0{URL}\n */\n if (frame.size < 2) {\n return undefined;\n }\n let index = 1;\n const description = utf8ArrayToStr(frame.data.subarray(index), true);\n index += description.length + 1;\n const value = utf8ArrayToStr(frame.data.subarray(index));\n return {\n key: frame.type,\n info: description,\n data: value\n };\n }\n /*\n Format:\n [0-?] = {URL}\n */\n const url = utf8ArrayToStr(frame.data);\n return {\n key: frame.type,\n data: url\n };\n};\nconst readTimeStamp = timeStampFrame => {\n if (timeStampFrame.data.byteLength === 8) {\n const data = new Uint8Array(timeStampFrame.data);\n // timestamp is 33 bit expressed as a big-endian eight-octet number,\n // with the upper 31 bits set to zero.\n const pts33Bit = data[3] & 0x1;\n let timestamp = (data[4] << 23) + (data[5] << 15) + (data[6] << 7) + data[7];\n timestamp /= 45;\n if (pts33Bit) {\n timestamp += 47721858.84;\n } // 2^32 / 90\n\n return Math.round(timestamp);\n }\n return undefined;\n};\n\n// http://stackoverflow.com/questions/8936984/uint8array-to-string-in-javascript/22373197\n// http://www.onicos.com/staff/iz/amuse/javascript/expert/utf.txt\n/* utf.js - UTF-8 <=> UTF-16 convertion\n *\n * Copyright (C) 1999 Masanao Izumo \n * Version: 1.0\n * LastModified: Dec 25 1999\n * This library is free. You can redistribute it and/or modify it.\n */\nconst utf8ArrayToStr = (array, exitOnNull = false) => {\n const decoder = getTextDecoder();\n if (decoder) {\n const decoded = decoder.decode(array);\n if (exitOnNull) {\n // grab up to the first null\n const idx = decoded.indexOf('\\0');\n return idx !== -1 ? decoded.substring(0, idx) : decoded;\n }\n\n // remove any null characters\n return decoded.replace(/\\0/g, '');\n }\n const len = array.length;\n let c;\n let char2;\n let char3;\n let out = '';\n let i = 0;\n while (i < len) {\n c = array[i++];\n if (c === 0x00 && exitOnNull) {\n return out;\n } else if (c === 0x00 || c === 0x03) {\n // If the character is 3 (END_OF_TEXT) or 0 (NULL) then skip it\n continue;\n }\n switch (c >> 4) {\n case 0:\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 6:\n case 7:\n // 0xxxxxxx\n out += String.fromCharCode(c);\n break;\n case 12:\n case 13:\n // 110x xxxx 10xx xxxx\n char2 = array[i++];\n out += String.fromCharCode((c & 0x1f) << 6 | char2 & 0x3f);\n break;\n case 14:\n // 1110 xxxx 10xx xxxx 10xx xxxx\n char2 = array[i++];\n char3 = array[i++];\n out += String.fromCharCode((c & 0x0f) << 12 | (char2 & 0x3f) << 6 | (char3 & 0x3f) << 0);\n break;\n }\n }\n return out;\n};\nlet decoder;\nfunction getTextDecoder() {\n // On Play Station 4, TextDecoder is defined but partially implemented.\n // Manual decoding option is preferable\n if (navigator.userAgent.includes('PlayStation 4')) {\n return;\n }\n if (!decoder && typeof self.TextDecoder !== 'undefined') {\n decoder = new self.TextDecoder('utf-8');\n }\n return decoder;\n}\n\n/**\n * hex dump helper class\n */\n\nconst Hex = {\n hexDump: function (array) {\n let str = '';\n for (let i = 0; i < array.length; i++) {\n let h = array[i].toString(16);\n if (h.length < 2) {\n h = '0' + h;\n }\n str += h;\n }\n return str;\n }\n};\n\nconst UINT32_MAX$1 = Math.pow(2, 32) - 1;\nconst push = [].push;\n\n// We are using fixed track IDs for driving the MP4 remuxer\n// instead of following the TS PIDs.\n// There is no reason not to do this and some browsers/SourceBuffer-demuxers\n// may not like if there are TrackID \"switches\"\n// See https://github.com/video-dev/hls.js/issues/1331\n// Here we are mapping our internal track types to constant MP4 track IDs\n// With MSE currently one can only have one track of each, and we are muxing\n// whatever video/audio rendition in them.\nconst RemuxerTrackIdConfig = {\n video: 1,\n audio: 2,\n id3: 3,\n text: 4\n};\nfunction bin2str(data) {\n return String.fromCharCode.apply(null, data);\n}\nfunction readUint16(buffer, offset) {\n const val = buffer[offset] << 8 | buffer[offset + 1];\n return val < 0 ? 65536 + val : val;\n}\nfunction readUint32(buffer, offset) {\n const val = readSint32(buffer, offset);\n return val < 0 ? 4294967296 + val : val;\n}\nfunction readUint64(buffer, offset) {\n let result = readUint32(buffer, offset);\n result *= Math.pow(2, 32);\n result += readUint32(buffer, offset + 4);\n return result;\n}\nfunction readSint32(buffer, offset) {\n return buffer[offset] << 24 | buffer[offset + 1] << 16 | buffer[offset + 2] << 8 | buffer[offset + 3];\n}\nfunction writeUint32(buffer, offset, value) {\n buffer[offset] = value >> 24;\n buffer[offset + 1] = value >> 16 & 0xff;\n buffer[offset + 2] = value >> 8 & 0xff;\n buffer[offset + 3] = value & 0xff;\n}\n\n// Find \"moof\" box\nfunction hasMoofData(data) {\n const end = data.byteLength;\n for (let i = 0; i < end;) {\n const size = readUint32(data, i);\n if (size > 8 && data[i + 4] === 0x6d && data[i + 5] === 0x6f && data[i + 6] === 0x6f && data[i + 7] === 0x66) {\n return true;\n }\n i = size > 1 ? i + size : end;\n }\n return false;\n}\n\n// Find the data for a box specified by its path\nfunction findBox(data, path) {\n const results = [];\n if (!path.length) {\n // short-circuit the search for empty paths\n return results;\n }\n const end = data.byteLength;\n for (let i = 0; i < end;) {\n const size = readUint32(data, i);\n const type = bin2str(data.subarray(i + 4, i + 8));\n const endbox = size > 1 ? i + size : end;\n if (type === path[0]) {\n if (path.length === 1) {\n // this is the end of the path and we've found the box we were\n // looking for\n results.push(data.subarray(i + 8, endbox));\n } else {\n // recursively search for the next box along the path\n const subresults = findBox(data.subarray(i + 8, endbox), path.slice(1));\n if (subresults.length) {\n push.apply(results, subresults);\n }\n }\n }\n i = endbox;\n }\n\n // we've finished searching all of data\n return results;\n}\nfunction parseSegmentIndex(sidx) {\n const references = [];\n const version = sidx[0];\n\n // set initial offset, we skip the reference ID (not needed)\n let index = 8;\n const timescale = readUint32(sidx, index);\n index += 4;\n let earliestPresentationTime = 0;\n let firstOffset = 0;\n if (version === 0) {\n earliestPresentationTime = readUint32(sidx, index);\n firstOffset = readUint32(sidx, index + 4);\n index += 8;\n } else {\n earliestPresentationTime = readUint64(sidx, index);\n firstOffset = readUint64(sidx, index + 8);\n index += 16;\n }\n\n // skip reserved\n index += 2;\n let startByte = sidx.length + firstOffset;\n const referencesCount = readUint16(sidx, index);\n index += 2;\n for (let i = 0; i < referencesCount; i++) {\n let referenceIndex = index;\n const referenceInfo = readUint32(sidx, referenceIndex);\n referenceIndex += 4;\n const referenceSize = referenceInfo & 0x7fffffff;\n const referenceType = (referenceInfo & 0x80000000) >>> 31;\n if (referenceType === 1) {\n logger.warn('SIDX has hierarchical references (not supported)');\n return null;\n }\n const subsegmentDuration = readUint32(sidx, referenceIndex);\n referenceIndex += 4;\n references.push({\n referenceSize,\n subsegmentDuration,\n // unscaled\n info: {\n duration: subsegmentDuration / timescale,\n start: startByte,\n end: startByte + referenceSize - 1\n }\n });\n startByte += referenceSize;\n\n // Skipping 1 bit for |startsWithSap|, 3 bits for |sapType|, and 28 bits\n // for |sapDelta|.\n referenceIndex += 4;\n\n // skip to next ref\n index = referenceIndex;\n }\n return {\n earliestPresentationTime,\n timescale,\n version,\n referencesCount,\n references\n };\n}\n\n/**\n * Parses an MP4 initialization segment and extracts stream type and\n * timescale values for any declared tracks. Timescale values indicate the\n * number of clock ticks per second to assume for time-based values\n * elsewhere in the MP4.\n *\n * To determine the start time of an MP4, you need two pieces of\n * information: the timescale unit and the earliest base media decode\n * time. Multiple timescales can be specified within an MP4 but the\n * base media decode time is always expressed in the timescale from\n * the media header box for the track:\n * ```\n * moov > trak > mdia > mdhd.timescale\n * moov > trak > mdia > hdlr\n * ```\n * @param initSegment the bytes of the init segment\n * @returns a hash of track type to timescale values or null if\n * the init segment is malformed.\n */\n\nfunction parseInitSegment(initSegment) {\n const result = [];\n const traks = findBox(initSegment, ['moov', 'trak']);\n for (let i = 0; i < traks.length; i++) {\n const trak = traks[i];\n const tkhd = findBox(trak, ['tkhd'])[0];\n if (tkhd) {\n let version = tkhd[0];\n const trackId = readUint32(tkhd, version === 0 ? 12 : 20);\n const mdhd = findBox(trak, ['mdia', 'mdhd'])[0];\n if (mdhd) {\n version = mdhd[0];\n const timescale = readUint32(mdhd, version === 0 ? 12 : 20);\n const hdlr = findBox(trak, ['mdia', 'hdlr'])[0];\n if (hdlr) {\n const hdlrType = bin2str(hdlr.subarray(8, 12));\n const type = {\n soun: ElementaryStreamTypes.AUDIO,\n vide: ElementaryStreamTypes.VIDEO\n }[hdlrType];\n if (type) {\n // Parse codec details\n const stsd = findBox(trak, ['mdia', 'minf', 'stbl', 'stsd'])[0];\n const stsdData = parseStsd(stsd);\n result[trackId] = {\n timescale,\n type\n };\n result[type] = _objectSpread2({\n timescale,\n id: trackId\n }, stsdData);\n }\n }\n }\n }\n }\n const trex = findBox(initSegment, ['moov', 'mvex', 'trex']);\n trex.forEach(trex => {\n const trackId = readUint32(trex, 4);\n const track = result[trackId];\n if (track) {\n track.default = {\n duration: readUint32(trex, 12),\n flags: readUint32(trex, 20)\n };\n }\n });\n return result;\n}\nfunction parseStsd(stsd) {\n const sampleEntries = stsd.subarray(8);\n const sampleEntriesEnd = sampleEntries.subarray(8 + 78);\n const fourCC = bin2str(sampleEntries.subarray(4, 8));\n let codec = fourCC;\n const encrypted = fourCC === 'enca' || fourCC === 'encv';\n if (encrypted) {\n const encBox = findBox(sampleEntries, [fourCC])[0];\n const encBoxChildren = encBox.subarray(fourCC === 'enca' ? 28 : 78);\n const sinfs = findBox(encBoxChildren, ['sinf']);\n sinfs.forEach(sinf => {\n const schm = findBox(sinf, ['schm'])[0];\n if (schm) {\n const scheme = bin2str(schm.subarray(4, 8));\n if (scheme === 'cbcs' || scheme === 'cenc') {\n const frma = findBox(sinf, ['frma'])[0];\n if (frma) {\n // for encrypted content codec fourCC will be in frma\n codec = bin2str(frma);\n }\n }\n }\n });\n }\n switch (codec) {\n case 'avc1':\n case 'avc2':\n case 'avc3':\n case 'avc4':\n {\n // extract profile + compatibility + level out of avcC box\n const avcCBox = findBox(sampleEntriesEnd, ['avcC'])[0];\n codec += '.' + toHex(avcCBox[1]) + toHex(avcCBox[2]) + toHex(avcCBox[3]);\n break;\n }\n case 'mp4a':\n {\n const codecBox = findBox(sampleEntries, [fourCC])[0];\n const esdsBox = findBox(codecBox.subarray(28), ['esds'])[0];\n if (esdsBox && esdsBox.length > 12) {\n let i = 4;\n // ES Descriptor tag\n if (esdsBox[i++] !== 0x03) {\n break;\n }\n i = skipBERInteger(esdsBox, i);\n i += 2; // skip es_id;\n const flags = esdsBox[i++];\n if (flags & 0x80) {\n i += 2; // skip dependency es_id\n }\n if (flags & 0x40) {\n i += esdsBox[i++]; // skip URL\n }\n // Decoder config descriptor\n if (esdsBox[i++] !== 0x04) {\n break;\n }\n i = skipBERInteger(esdsBox, i);\n const objectType = esdsBox[i++];\n if (objectType === 0x40) {\n codec += '.' + toHex(objectType);\n } else {\n break;\n }\n i += 12;\n // Decoder specific info\n if (esdsBox[i++] !== 0x05) {\n break;\n }\n i = skipBERInteger(esdsBox, i);\n const firstByte = esdsBox[i++];\n let audioObjectType = (firstByte & 0xf8) >> 3;\n if (audioObjectType === 31) {\n audioObjectType += 1 + ((firstByte & 0x7) << 3) + ((esdsBox[i] & 0xe0) >> 5);\n }\n codec += '.' + audioObjectType;\n }\n break;\n }\n case 'hvc1':\n case 'hev1':\n {\n const hvcCBox = findBox(sampleEntriesEnd, ['hvcC'])[0];\n const profileByte = hvcCBox[1];\n const profileSpace = ['', 'A', 'B', 'C'][profileByte >> 6];\n const generalProfileIdc = profileByte & 0x1f;\n const profileCompat = readUint32(hvcCBox, 2);\n const tierFlag = (profileByte & 0x20) >> 5 ? 'H' : 'L';\n const levelIDC = hvcCBox[12];\n const constraintIndicator = hvcCBox.subarray(6, 12);\n codec += '.' + profileSpace + generalProfileIdc;\n codec += '.' + profileCompat.toString(16).toUpperCase();\n codec += '.' + tierFlag + levelIDC;\n let constraintString = '';\n for (let i = constraintIndicator.length; i--;) {\n const byte = constraintIndicator[i];\n if (byte || constraintString) {\n const encodedByte = byte.toString(16).toUpperCase();\n constraintString = '.' + encodedByte + constraintString;\n }\n }\n codec += constraintString;\n break;\n }\n case 'dvh1':\n case 'dvhe':\n {\n const dvcCBox = findBox(sampleEntriesEnd, ['dvcC'])[0];\n const profile = dvcCBox[2] >> 1 & 0x7f;\n const level = dvcCBox[2] << 5 & 0x20 | dvcCBox[3] >> 3 & 0x1f;\n codec += '.' + addLeadingZero(profile) + '.' + addLeadingZero(level);\n break;\n }\n case 'vp09':\n {\n const vpcCBox = findBox(sampleEntriesEnd, ['vpcC'])[0];\n const profile = vpcCBox[4];\n const level = vpcCBox[5];\n const bitDepth = vpcCBox[6] >> 4 & 0x0f;\n codec += '.' + addLeadingZero(profile) + '.' + addLeadingZero(level) + '.' + addLeadingZero(bitDepth);\n break;\n }\n case 'av01':\n {\n const av1CBox = findBox(sampleEntriesEnd, ['av1C'])[0];\n const profile = av1CBox[1] >>> 5;\n const level = av1CBox[1] & 0x1f;\n const tierFlag = av1CBox[2] >>> 7 ? 'H' : 'M';\n const highBitDepth = (av1CBox[2] & 0x40) >> 6;\n const twelveBit = (av1CBox[2] & 0x20) >> 5;\n const bitDepth = profile === 2 && highBitDepth ? twelveBit ? 12 : 10 : highBitDepth ? 10 : 8;\n const monochrome = (av1CBox[2] & 0x10) >> 4;\n const chromaSubsamplingX = (av1CBox[2] & 0x08) >> 3;\n const chromaSubsamplingY = (av1CBox[2] & 0x04) >> 2;\n const chromaSamplePosition = av1CBox[2] & 0x03;\n // TODO: parse color_description_present_flag\n // default it to BT.709/limited range for now\n // more info https://aomediacodec.github.io/av1-isobmff/#av1codecconfigurationbox-syntax\n const colorPrimaries = 1;\n const transferCharacteristics = 1;\n const matrixCoefficients = 1;\n const videoFullRangeFlag = 0;\n codec += '.' + profile + '.' + addLeadingZero(level) + tierFlag + '.' + addLeadingZero(bitDepth) + '.' + monochrome + '.' + chromaSubsamplingX + chromaSubsamplingY + chromaSamplePosition + '.' + addLeadingZero(colorPrimaries) + '.' + addLeadingZero(transferCharacteristics) + '.' + addLeadingZero(matrixCoefficients) + '.' + videoFullRangeFlag;\n break;\n }\n }\n return {\n codec,\n encrypted\n };\n}\nfunction skipBERInteger(bytes, i) {\n const limit = i + 5;\n while (bytes[i++] & 0x80 && i < limit) {}\n return i;\n}\nfunction toHex(x) {\n return ('0' + x.toString(16).toUpperCase()).slice(-2);\n}\nfunction addLeadingZero(num) {\n return (num < 10 ? '0' : '') + num;\n}\nfunction patchEncyptionData(initSegment, decryptdata) {\n if (!initSegment || !decryptdata) {\n return initSegment;\n }\n const keyId = decryptdata.keyId;\n if (keyId && decryptdata.isCommonEncryption) {\n const traks = findBox(initSegment, ['moov', 'trak']);\n traks.forEach(trak => {\n const stsd = findBox(trak, ['mdia', 'minf', 'stbl', 'stsd'])[0];\n\n // skip the sample entry count\n const sampleEntries = stsd.subarray(8);\n let encBoxes = findBox(sampleEntries, ['enca']);\n const isAudio = encBoxes.length > 0;\n if (!isAudio) {\n encBoxes = findBox(sampleEntries, ['encv']);\n }\n encBoxes.forEach(enc => {\n const encBoxChildren = isAudio ? enc.subarray(28) : enc.subarray(78);\n const sinfBoxes = findBox(encBoxChildren, ['sinf']);\n sinfBoxes.forEach(sinf => {\n const tenc = parseSinf(sinf);\n if (tenc) {\n // Look for default key id (keyID offset is always 8 within the tenc box):\n const tencKeyId = tenc.subarray(8, 24);\n if (!tencKeyId.some(b => b !== 0)) {\n logger.log(`[eme] Patching keyId in 'enc${isAudio ? 'a' : 'v'}>sinf>>tenc' box: ${Hex.hexDump(tencKeyId)} -> ${Hex.hexDump(keyId)}`);\n tenc.set(keyId, 8);\n }\n }\n });\n });\n });\n }\n return initSegment;\n}\nfunction parseSinf(sinf) {\n const schm = findBox(sinf, ['schm'])[0];\n if (schm) {\n const scheme = bin2str(schm.subarray(4, 8));\n if (scheme === 'cbcs' || scheme === 'cenc') {\n return findBox(sinf, ['schi', 'tenc'])[0];\n }\n }\n return null;\n}\n\n/**\n * Determine the base media decode start time, in seconds, for an MP4\n * fragment. If multiple fragments are specified, the earliest time is\n * returned.\n *\n * The base media decode time can be parsed from track fragment\n * metadata:\n * ```\n * moof > traf > tfdt.baseMediaDecodeTime\n * ```\n * It requires the timescale value from the mdhd to interpret.\n *\n * @param initData - a hash of track type to timescale values\n * @param fmp4 - the bytes of the mp4 fragment\n * @returns the earliest base media decode start time for the\n * fragment, in seconds\n */\nfunction getStartDTS(initData, fmp4) {\n // we need info from two children of each track fragment box\n return findBox(fmp4, ['moof', 'traf']).reduce((result, traf) => {\n const tfdt = findBox(traf, ['tfdt'])[0];\n const version = tfdt[0];\n const start = findBox(traf, ['tfhd']).reduce((result, tfhd) => {\n // get the track id from the tfhd\n const id = readUint32(tfhd, 4);\n const track = initData[id];\n if (track) {\n let baseTime = readUint32(tfdt, 4);\n if (version === 1) {\n // If value is too large, assume signed 64-bit. Negative track fragment decode times are invalid, but they exist in the wild.\n // This prevents large values from being used for initPTS, which can cause playlist sync issues.\n // https://github.com/video-dev/hls.js/issues/5303\n if (baseTime === UINT32_MAX$1) {\n logger.warn(`[mp4-demuxer]: Ignoring assumed invalid signed 64-bit track fragment decode time`);\n return result;\n }\n baseTime *= UINT32_MAX$1 + 1;\n baseTime += readUint32(tfdt, 8);\n }\n // assume a 90kHz clock if no timescale was specified\n const scale = track.timescale || 90e3;\n // convert base time to seconds\n const startTime = baseTime / scale;\n if (isFiniteNumber(startTime) && (result === null || startTime < result)) {\n return startTime;\n }\n }\n return result;\n }, null);\n if (start !== null && isFiniteNumber(start) && (result === null || start < result)) {\n return start;\n }\n return result;\n }, null);\n}\n\n/*\n For Reference:\n aligned(8) class TrackFragmentHeaderBox\n extends FullBox(‘tfhd’, 0, tf_flags){\n unsigned int(32) track_ID;\n // all the following are optional fields\n unsigned int(64) base_data_offset;\n unsigned int(32) sample_description_index;\n unsigned int(32) default_sample_duration;\n unsigned int(32) default_sample_size;\n unsigned int(32) default_sample_flags\n }\n */\nfunction getDuration(data, initData) {\n let rawDuration = 0;\n let videoDuration = 0;\n let audioDuration = 0;\n const trafs = findBox(data, ['moof', 'traf']);\n for (let i = 0; i < trafs.length; i++) {\n const traf = trafs[i];\n // There is only one tfhd & trun per traf\n // This is true for CMAF style content, and we should perhaps check the ftyp\n // and only look for a single trun then, but for ISOBMFF we should check\n // for multiple track runs.\n const tfhd = findBox(traf, ['tfhd'])[0];\n // get the track id from the tfhd\n const id = readUint32(tfhd, 4);\n const track = initData[id];\n if (!track) {\n continue;\n }\n const trackDefault = track.default;\n const tfhdFlags = readUint32(tfhd, 0) | (trackDefault == null ? void 0 : trackDefault.flags);\n let sampleDuration = trackDefault == null ? void 0 : trackDefault.duration;\n if (tfhdFlags & 0x000008) {\n // 0x000008 indicates the presence of the default_sample_duration field\n if (tfhdFlags & 0x000002) {\n // 0x000002 indicates the presence of the sample_description_index field, which precedes default_sample_duration\n // If present, the default_sample_duration exists at byte offset 12\n sampleDuration = readUint32(tfhd, 12);\n } else {\n // Otherwise, the duration is at byte offset 8\n sampleDuration = readUint32(tfhd, 8);\n }\n }\n // assume a 90kHz clock if no timescale was specified\n const timescale = track.timescale || 90e3;\n const truns = findBox(traf, ['trun']);\n for (let j = 0; j < truns.length; j++) {\n rawDuration = computeRawDurationFromSamples(truns[j]);\n if (!rawDuration && sampleDuration) {\n const sampleCount = readUint32(truns[j], 4);\n rawDuration = sampleDuration * sampleCount;\n }\n if (track.type === ElementaryStreamTypes.VIDEO) {\n videoDuration += rawDuration / timescale;\n } else if (track.type === ElementaryStreamTypes.AUDIO) {\n audioDuration += rawDuration / timescale;\n }\n }\n }\n if (videoDuration === 0 && audioDuration === 0) {\n // If duration samples are not available in the traf use sidx subsegment_duration\n let sidxMinStart = Infinity;\n let sidxMaxEnd = 0;\n let sidxDuration = 0;\n const sidxs = findBox(data, ['sidx']);\n for (let i = 0; i < sidxs.length; i++) {\n const sidx = parseSegmentIndex(sidxs[i]);\n if (sidx != null && sidx.references) {\n sidxMinStart = Math.min(sidxMinStart, sidx.earliestPresentationTime / sidx.timescale);\n const subSegmentDuration = sidx.references.reduce((dur, ref) => dur + ref.info.duration || 0, 0);\n sidxMaxEnd = Math.max(sidxMaxEnd, subSegmentDuration + sidx.earliestPresentationTime / sidx.timescale);\n sidxDuration = sidxMaxEnd - sidxMinStart;\n }\n }\n if (sidxDuration && isFiniteNumber(sidxDuration)) {\n return sidxDuration;\n }\n }\n if (videoDuration) {\n return videoDuration;\n }\n return audioDuration;\n}\n\n/*\n For Reference:\n aligned(8) class TrackRunBox\n extends FullBox(‘trun’, version, tr_flags) {\n unsigned int(32) sample_count;\n // the following are optional fields\n signed int(32) data_offset;\n unsigned int(32) first_sample_flags;\n // all fields in the following array are optional\n {\n unsigned int(32) sample_duration;\n unsigned int(32) sample_size;\n unsigned int(32) sample_flags\n if (version == 0)\n { unsigned int(32)\n else\n { signed int(32)\n }[ sample_count ]\n }\n */\nfunction computeRawDurationFromSamples(trun) {\n const flags = readUint32(trun, 0);\n // Flags are at offset 0, non-optional sample_count is at offset 4. Therefore we start 8 bytes in.\n // Each field is an int32, which is 4 bytes\n let offset = 8;\n // data-offset-present flag\n if (flags & 0x000001) {\n offset += 4;\n }\n // first-sample-flags-present flag\n if (flags & 0x000004) {\n offset += 4;\n }\n let duration = 0;\n const sampleCount = readUint32(trun, 4);\n for (let i = 0; i < sampleCount; i++) {\n // sample-duration-present flag\n if (flags & 0x000100) {\n const sampleDuration = readUint32(trun, offset);\n duration += sampleDuration;\n offset += 4;\n }\n // sample-size-present flag\n if (flags & 0x000200) {\n offset += 4;\n }\n // sample-flags-present flag\n if (flags & 0x000400) {\n offset += 4;\n }\n // sample-composition-time-offsets-present flag\n if (flags & 0x000800) {\n offset += 4;\n }\n }\n return duration;\n}\nfunction offsetStartDTS(initData, fmp4, timeOffset) {\n findBox(fmp4, ['moof', 'traf']).forEach(traf => {\n findBox(traf, ['tfhd']).forEach(tfhd => {\n // get the track id from the tfhd\n const id = readUint32(tfhd, 4);\n const track = initData[id];\n if (!track) {\n return;\n }\n // assume a 90kHz clock if no timescale was specified\n const timescale = track.timescale || 90e3;\n // get the base media decode time from the tfdt\n findBox(traf, ['tfdt']).forEach(tfdt => {\n const version = tfdt[0];\n const offset = timeOffset * timescale;\n if (offset) {\n let baseMediaDecodeTime = readUint32(tfdt, 4);\n if (version === 0) {\n baseMediaDecodeTime -= offset;\n baseMediaDecodeTime = Math.max(baseMediaDecodeTime, 0);\n writeUint32(tfdt, 4, baseMediaDecodeTime);\n } else {\n baseMediaDecodeTime *= Math.pow(2, 32);\n baseMediaDecodeTime += readUint32(tfdt, 8);\n baseMediaDecodeTime -= offset;\n baseMediaDecodeTime = Math.max(baseMediaDecodeTime, 0);\n const upper = Math.floor(baseMediaDecodeTime / (UINT32_MAX$1 + 1));\n const lower = Math.floor(baseMediaDecodeTime % (UINT32_MAX$1 + 1));\n writeUint32(tfdt, 4, upper);\n writeUint32(tfdt, 8, lower);\n }\n }\n });\n });\n });\n}\n\n// TODO: Check if the last moof+mdat pair is part of the valid range\nfunction segmentValidRange(data) {\n const segmentedRange = {\n valid: null,\n remainder: null\n };\n const moofs = findBox(data, ['moof']);\n if (moofs.length < 2) {\n segmentedRange.remainder = data;\n return segmentedRange;\n }\n const last = moofs[moofs.length - 1];\n // Offset by 8 bytes; findBox offsets the start by as much\n segmentedRange.valid = sliceUint8(data, 0, last.byteOffset - 8);\n segmentedRange.remainder = sliceUint8(data, last.byteOffset - 8);\n return segmentedRange;\n}\nfunction appendUint8Array(data1, data2) {\n const temp = new Uint8Array(data1.length + data2.length);\n temp.set(data1);\n temp.set(data2, data1.length);\n return temp;\n}\nfunction parseSamples(timeOffset, track) {\n const seiSamples = [];\n const videoData = track.samples;\n const timescale = track.timescale;\n const trackId = track.id;\n let isHEVCFlavor = false;\n const moofs = findBox(videoData, ['moof']);\n moofs.map(moof => {\n const moofOffset = moof.byteOffset - 8;\n const trafs = findBox(moof, ['traf']);\n trafs.map(traf => {\n // get the base media decode time from the tfdt\n const baseTime = findBox(traf, ['tfdt']).map(tfdt => {\n const version = tfdt[0];\n let result = readUint32(tfdt, 4);\n if (version === 1) {\n result *= Math.pow(2, 32);\n result += readUint32(tfdt, 8);\n }\n return result / timescale;\n })[0];\n if (baseTime !== undefined) {\n timeOffset = baseTime;\n }\n return findBox(traf, ['tfhd']).map(tfhd => {\n const id = readUint32(tfhd, 4);\n const tfhdFlags = readUint32(tfhd, 0) & 0xffffff;\n const baseDataOffsetPresent = (tfhdFlags & 0x000001) !== 0;\n const sampleDescriptionIndexPresent = (tfhdFlags & 0x000002) !== 0;\n const defaultSampleDurationPresent = (tfhdFlags & 0x000008) !== 0;\n let defaultSampleDuration = 0;\n const defaultSampleSizePresent = (tfhdFlags & 0x000010) !== 0;\n let defaultSampleSize = 0;\n const defaultSampleFlagsPresent = (tfhdFlags & 0x000020) !== 0;\n let tfhdOffset = 8;\n if (id === trackId) {\n if (baseDataOffsetPresent) {\n tfhdOffset += 8;\n }\n if (sampleDescriptionIndexPresent) {\n tfhdOffset += 4;\n }\n if (defaultSampleDurationPresent) {\n defaultSampleDuration = readUint32(tfhd, tfhdOffset);\n tfhdOffset += 4;\n }\n if (defaultSampleSizePresent) {\n defaultSampleSize = readUint32(tfhd, tfhdOffset);\n tfhdOffset += 4;\n }\n if (defaultSampleFlagsPresent) {\n tfhdOffset += 4;\n }\n if (track.type === 'video') {\n isHEVCFlavor = isHEVC(track.codec);\n }\n findBox(traf, ['trun']).map(trun => {\n const version = trun[0];\n const flags = readUint32(trun, 0) & 0xffffff;\n const dataOffsetPresent = (flags & 0x000001) !== 0;\n let dataOffset = 0;\n const firstSampleFlagsPresent = (flags & 0x000004) !== 0;\n const sampleDurationPresent = (flags & 0x000100) !== 0;\n let sampleDuration = 0;\n const sampleSizePresent = (flags & 0x000200) !== 0;\n let sampleSize = 0;\n const sampleFlagsPresent = (flags & 0x000400) !== 0;\n const sampleCompositionOffsetsPresent = (flags & 0x000800) !== 0;\n let compositionOffset = 0;\n const sampleCount = readUint32(trun, 4);\n let trunOffset = 8; // past version, flags, and sample count\n\n if (dataOffsetPresent) {\n dataOffset = readUint32(trun, trunOffset);\n trunOffset += 4;\n }\n if (firstSampleFlagsPresent) {\n trunOffset += 4;\n }\n let sampleOffset = dataOffset + moofOffset;\n for (let ix = 0; ix < sampleCount; ix++) {\n if (sampleDurationPresent) {\n sampleDuration = readUint32(trun, trunOffset);\n trunOffset += 4;\n } else {\n sampleDuration = defaultSampleDuration;\n }\n if (sampleSizePresent) {\n sampleSize = readUint32(trun, trunOffset);\n trunOffset += 4;\n } else {\n sampleSize = defaultSampleSize;\n }\n if (sampleFlagsPresent) {\n trunOffset += 4;\n }\n if (sampleCompositionOffsetsPresent) {\n if (version === 0) {\n compositionOffset = readUint32(trun, trunOffset);\n } else {\n compositionOffset = readSint32(trun, trunOffset);\n }\n trunOffset += 4;\n }\n if (track.type === ElementaryStreamTypes.VIDEO) {\n let naluTotalSize = 0;\n while (naluTotalSize < sampleSize) {\n const naluSize = readUint32(videoData, sampleOffset);\n sampleOffset += 4;\n if (isSEIMessage(isHEVCFlavor, videoData[sampleOffset])) {\n const data = videoData.subarray(sampleOffset, sampleOffset + naluSize);\n parseSEIMessageFromNALu(data, isHEVCFlavor ? 2 : 1, timeOffset + compositionOffset / timescale, seiSamples);\n }\n sampleOffset += naluSize;\n naluTotalSize += naluSize + 4;\n }\n }\n timeOffset += sampleDuration / timescale;\n }\n });\n }\n });\n });\n });\n return seiSamples;\n}\nfunction isHEVC(codec) {\n if (!codec) {\n return false;\n }\n const delimit = codec.indexOf('.');\n const baseCodec = delimit < 0 ? codec : codec.substring(0, delimit);\n return baseCodec === 'hvc1' || baseCodec === 'hev1' ||\n // Dolby Vision\n baseCodec === 'dvh1' || baseCodec === 'dvhe';\n}\nfunction isSEIMessage(isHEVCFlavor, naluHeader) {\n if (isHEVCFlavor) {\n const naluType = naluHeader >> 1 & 0x3f;\n return naluType === 39 || naluType === 40;\n } else {\n const naluType = naluHeader & 0x1f;\n return naluType === 6;\n }\n}\nfunction parseSEIMessageFromNALu(unescapedData, headerSize, pts, samples) {\n const data = discardEPB(unescapedData);\n let seiPtr = 0;\n // skip nal header\n seiPtr += headerSize;\n let payloadType = 0;\n let payloadSize = 0;\n let b = 0;\n while (seiPtr < data.length) {\n payloadType = 0;\n do {\n if (seiPtr >= data.length) {\n break;\n }\n b = data[seiPtr++];\n payloadType += b;\n } while (b === 0xff);\n\n // Parse payload size.\n payloadSize = 0;\n do {\n if (seiPtr >= data.length) {\n break;\n }\n b = data[seiPtr++];\n payloadSize += b;\n } while (b === 0xff);\n const leftOver = data.length - seiPtr;\n // Create a variable to process the payload\n let payPtr = seiPtr;\n\n // Increment the seiPtr to the end of the payload\n if (payloadSize < leftOver) {\n seiPtr += payloadSize;\n } else if (payloadSize > leftOver) {\n // Some type of corruption has happened?\n logger.error(`Malformed SEI payload. ${payloadSize} is too small, only ${leftOver} bytes left to parse.`);\n // We might be able to parse some data, but let's be safe and ignore it.\n break;\n }\n if (payloadType === 4) {\n const countryCode = data[payPtr++];\n if (countryCode === 181) {\n const providerCode = readUint16(data, payPtr);\n payPtr += 2;\n if (providerCode === 49) {\n const userStructure = readUint32(data, payPtr);\n payPtr += 4;\n if (userStructure === 0x47413934) {\n const userDataType = data[payPtr++];\n\n // Raw CEA-608 bytes wrapped in CEA-708 packet\n if (userDataType === 3) {\n const firstByte = data[payPtr++];\n const totalCCs = 0x1f & firstByte;\n const enabled = 0x40 & firstByte;\n const totalBytes = enabled ? 2 + totalCCs * 3 : 0;\n const byteArray = new Uint8Array(totalBytes);\n if (enabled) {\n byteArray[0] = firstByte;\n for (let i = 1; i < totalBytes; i++) {\n byteArray[i] = data[payPtr++];\n }\n }\n samples.push({\n type: userDataType,\n payloadType,\n pts,\n bytes: byteArray\n });\n }\n }\n }\n }\n } else if (payloadType === 5) {\n if (payloadSize > 16) {\n const uuidStrArray = [];\n for (let i = 0; i < 16; i++) {\n const _b = data[payPtr++].toString(16);\n uuidStrArray.push(_b.length == 1 ? '0' + _b : _b);\n if (i === 3 || i === 5 || i === 7 || i === 9) {\n uuidStrArray.push('-');\n }\n }\n const length = payloadSize - 16;\n const userDataBytes = new Uint8Array(length);\n for (let i = 0; i < length; i++) {\n userDataBytes[i] = data[payPtr++];\n }\n samples.push({\n payloadType,\n pts,\n uuid: uuidStrArray.join(''),\n userData: utf8ArrayToStr(userDataBytes),\n userDataBytes\n });\n }\n }\n }\n}\n\n/**\n * remove Emulation Prevention bytes from a RBSP\n */\nfunction discardEPB(data) {\n const length = data.byteLength;\n const EPBPositions = [];\n let i = 1;\n\n // Find all `Emulation Prevention Bytes`\n while (i < length - 2) {\n if (data[i] === 0 && data[i + 1] === 0 && data[i + 2] === 0x03) {\n EPBPositions.push(i + 2);\n i += 2;\n } else {\n i++;\n }\n }\n\n // If no Emulation Prevention Bytes were found just return the original\n // array\n if (EPBPositions.length === 0) {\n return data;\n }\n\n // Create a new array to hold the NAL unit data\n const newLength = length - EPBPositions.length;\n const newData = new Uint8Array(newLength);\n let sourceIndex = 0;\n for (i = 0; i < newLength; sourceIndex++, i++) {\n if (sourceIndex === EPBPositions[0]) {\n // Skip this byte\n sourceIndex++;\n // Remove this position index\n EPBPositions.shift();\n }\n newData[i] = data[sourceIndex];\n }\n return newData;\n}\nfunction parseEmsg(data) {\n const version = data[0];\n let schemeIdUri = '';\n let value = '';\n let timeScale = 0;\n let presentationTimeDelta = 0;\n let presentationTime = 0;\n let eventDuration = 0;\n let id = 0;\n let offset = 0;\n if (version === 0) {\n while (bin2str(data.subarray(offset, offset + 1)) !== '\\0') {\n schemeIdUri += bin2str(data.subarray(offset, offset + 1));\n offset += 1;\n }\n schemeIdUri += bin2str(data.subarray(offset, offset + 1));\n offset += 1;\n while (bin2str(data.subarray(offset, offset + 1)) !== '\\0') {\n value += bin2str(data.subarray(offset, offset + 1));\n offset += 1;\n }\n value += bin2str(data.subarray(offset, offset + 1));\n offset += 1;\n timeScale = readUint32(data, 12);\n presentationTimeDelta = readUint32(data, 16);\n eventDuration = readUint32(data, 20);\n id = readUint32(data, 24);\n offset = 28;\n } else if (version === 1) {\n offset += 4;\n timeScale = readUint32(data, offset);\n offset += 4;\n const leftPresentationTime = readUint32(data, offset);\n offset += 4;\n const rightPresentationTime = readUint32(data, offset);\n offset += 4;\n presentationTime = 2 ** 32 * leftPresentationTime + rightPresentationTime;\n if (!isSafeInteger(presentationTime)) {\n presentationTime = Number.MAX_SAFE_INTEGER;\n logger.warn('Presentation time exceeds safe integer limit and wrapped to max safe integer in parsing emsg box');\n }\n eventDuration = readUint32(data, offset);\n offset += 4;\n id = readUint32(data, offset);\n offset += 4;\n while (bin2str(data.subarray(offset, offset + 1)) !== '\\0') {\n schemeIdUri += bin2str(data.subarray(offset, offset + 1));\n offset += 1;\n }\n schemeIdUri += bin2str(data.subarray(offset, offset + 1));\n offset += 1;\n while (bin2str(data.subarray(offset, offset + 1)) !== '\\0') {\n value += bin2str(data.subarray(offset, offset + 1));\n offset += 1;\n }\n value += bin2str(data.subarray(offset, offset + 1));\n offset += 1;\n }\n const payload = data.subarray(offset, data.byteLength);\n return {\n schemeIdUri,\n value,\n timeScale,\n presentationTime,\n presentationTimeDelta,\n eventDuration,\n id,\n payload\n };\n}\nfunction mp4Box(type, ...payload) {\n const len = payload.length;\n let size = 8;\n let i = len;\n while (i--) {\n size += payload[i].byteLength;\n }\n const result = new Uint8Array(size);\n result[0] = size >> 24 & 0xff;\n result[1] = size >> 16 & 0xff;\n result[2] = size >> 8 & 0xff;\n result[3] = size & 0xff;\n result.set(type, 4);\n for (i = 0, size = 8; i < len; i++) {\n result.set(payload[i], size);\n size += payload[i].byteLength;\n }\n return result;\n}\nfunction mp4pssh(systemId, keyids, data) {\n if (systemId.byteLength !== 16) {\n throw new RangeError('Invalid system id');\n }\n let version;\n let kids;\n if (keyids) {\n version = 1;\n kids = new Uint8Array(keyids.length * 16);\n for (let ix = 0; ix < keyids.length; ix++) {\n const k = keyids[ix]; // uint8array\n if (k.byteLength !== 16) {\n throw new RangeError('Invalid key');\n }\n kids.set(k, ix * 16);\n }\n } else {\n version = 0;\n kids = new Uint8Array();\n }\n let kidCount;\n if (version > 0) {\n kidCount = new Uint8Array(4);\n if (keyids.length > 0) {\n new DataView(kidCount.buffer).setUint32(0, keyids.length, false);\n }\n } else {\n kidCount = new Uint8Array();\n }\n const dataSize = new Uint8Array(4);\n if (data && data.byteLength > 0) {\n new DataView(dataSize.buffer).setUint32(0, data.byteLength, false);\n }\n return mp4Box([112, 115, 115, 104], new Uint8Array([version, 0x00, 0x00, 0x00 // Flags\n ]), systemId,\n // 16 bytes\n kidCount, kids, dataSize, data || new Uint8Array());\n}\nfunction parseMultiPssh(initData) {\n const results = [];\n if (initData instanceof ArrayBuffer) {\n const length = initData.byteLength;\n let offset = 0;\n while (offset + 32 < length) {\n const view = new DataView(initData, offset);\n const pssh = parsePssh(view);\n results.push(pssh);\n offset += pssh.size;\n }\n }\n return results;\n}\nfunction parsePssh(view) {\n const size = view.getUint32(0);\n const offset = view.byteOffset;\n const length = view.byteLength;\n if (length < size) {\n return {\n offset,\n size: length\n };\n }\n const type = view.getUint32(4);\n if (type !== 0x70737368) {\n return {\n offset,\n size\n };\n }\n const version = view.getUint32(8) >>> 24;\n if (version !== 0 && version !== 1) {\n return {\n offset,\n size\n };\n }\n const buffer = view.buffer;\n const systemId = Hex.hexDump(new Uint8Array(buffer, offset + 12, 16));\n const dataSizeOrKidCount = view.getUint32(28);\n let kids = null;\n let data = null;\n if (version === 0) {\n if (size - 32 < dataSizeOrKidCount || dataSizeOrKidCount < 22) {\n return {\n offset,\n size\n };\n }\n data = new Uint8Array(buffer, offset + 32, dataSizeOrKidCount);\n } else if (version === 1) {\n if (!dataSizeOrKidCount || length < offset + 32 + dataSizeOrKidCount * 16 + 16) {\n return {\n offset,\n size\n };\n }\n kids = [];\n for (let i = 0; i < dataSizeOrKidCount; i++) {\n kids.push(new Uint8Array(buffer, offset + 32 + i * 16, 16));\n }\n }\n return {\n version,\n systemId,\n kids,\n data,\n offset,\n size\n };\n}\n\nlet keyUriToKeyIdMap = {};\nclass LevelKey {\n static clearKeyUriToKeyIdMap() {\n keyUriToKeyIdMap = {};\n }\n constructor(method, uri, format, formatversions = [1], iv = null) {\n this.uri = void 0;\n this.method = void 0;\n this.keyFormat = void 0;\n this.keyFormatVersions = void 0;\n this.encrypted = void 0;\n this.isCommonEncryption = void 0;\n this.iv = null;\n this.key = null;\n this.keyId = null;\n this.pssh = null;\n this.method = method;\n this.uri = uri;\n this.keyFormat = format;\n this.keyFormatVersions = formatversions;\n this.iv = iv;\n this.encrypted = method ? method !== 'NONE' : false;\n this.isCommonEncryption = this.encrypted && method !== 'AES-128';\n }\n isSupported() {\n // If it's Segment encryption or No encryption, just select that key system\n if (this.method) {\n if (this.method === 'AES-128' || this.method === 'NONE') {\n return true;\n }\n if (this.keyFormat === 'identity') {\n // Maintain support for clear SAMPLE-AES with MPEG-3 TS\n return this.method === 'SAMPLE-AES';\n } else {\n switch (this.keyFormat) {\n case KeySystemFormats.FAIRPLAY:\n case KeySystemFormats.WIDEVINE:\n case KeySystemFormats.PLAYREADY:\n case KeySystemFormats.CLEARKEY:\n return ['ISO-23001-7', 'SAMPLE-AES', 'SAMPLE-AES-CENC', 'SAMPLE-AES-CTR'].indexOf(this.method) !== -1;\n }\n }\n }\n return false;\n }\n getDecryptData(sn) {\n if (!this.encrypted || !this.uri) {\n return null;\n }\n if (this.method === 'AES-128' && this.uri && !this.iv) {\n if (typeof sn !== 'number') {\n // We are fetching decryption data for a initialization segment\n // If the segment was encrypted with AES-128\n // It must have an IV defined. We cannot substitute the Segment Number in.\n if (this.method === 'AES-128' && !this.iv) {\n logger.warn(`missing IV for initialization segment with method=\"${this.method}\" - compliance issue`);\n }\n // Explicitly set sn to resulting value from implicit conversions 'initSegment' values for IV generation.\n sn = 0;\n }\n const iv = createInitializationVector(sn);\n const decryptdata = new LevelKey(this.method, this.uri, 'identity', this.keyFormatVersions, iv);\n return decryptdata;\n }\n\n // Initialize keyId if possible\n const keyBytes = convertDataUriToArrayBytes(this.uri);\n if (keyBytes) {\n switch (this.keyFormat) {\n case KeySystemFormats.WIDEVINE:\n this.pssh = keyBytes;\n // In case of widevine keyID is embedded in PSSH box. Read Key ID.\n if (keyBytes.length >= 22) {\n this.keyId = keyBytes.subarray(keyBytes.length - 22, keyBytes.length - 6);\n }\n break;\n case KeySystemFormats.PLAYREADY:\n {\n const PlayReadyKeySystemUUID = new Uint8Array([0x9a, 0x04, 0xf0, 0x79, 0x98, 0x40, 0x42, 0x86, 0xab, 0x92, 0xe6, 0x5b, 0xe0, 0x88, 0x5f, 0x95]);\n this.pssh = mp4pssh(PlayReadyKeySystemUUID, null, keyBytes);\n const keyBytesUtf16 = new Uint16Array(keyBytes.buffer, keyBytes.byteOffset, keyBytes.byteLength / 2);\n const keyByteStr = String.fromCharCode.apply(null, Array.from(keyBytesUtf16));\n\n // Parse Playready WRMHeader XML\n const xmlKeyBytes = keyByteStr.substring(keyByteStr.indexOf('<'), keyByteStr.length);\n const parser = new DOMParser();\n const xmlDoc = parser.parseFromString(xmlKeyBytes, 'text/xml');\n const keyData = xmlDoc.getElementsByTagName('KID')[0];\n if (keyData) {\n const keyId = keyData.childNodes[0] ? keyData.childNodes[0].nodeValue : keyData.getAttribute('VALUE');\n if (keyId) {\n const keyIdArray = base64Decode(keyId).subarray(0, 16);\n // KID value in PRO is a base64-encoded little endian GUID interpretation of UUID\n // KID value in ‘tenc’ is a big endian UUID GUID interpretation of UUID\n changeEndianness(keyIdArray);\n this.keyId = keyIdArray;\n }\n }\n break;\n }\n default:\n {\n let keydata = keyBytes.subarray(0, 16);\n if (keydata.length !== 16) {\n const padded = new Uint8Array(16);\n padded.set(keydata, 16 - keydata.length);\n keydata = padded;\n }\n this.keyId = keydata;\n break;\n }\n }\n }\n\n // Default behavior: assign a new keyId for each uri\n if (!this.keyId || this.keyId.byteLength !== 16) {\n let keyId = keyUriToKeyIdMap[this.uri];\n if (!keyId) {\n const val = Object.keys(keyUriToKeyIdMap).length % Number.MAX_SAFE_INTEGER;\n keyId = new Uint8Array(16);\n const dv = new DataView(keyId.buffer, 12, 4); // Just set the last 4 bytes\n dv.setUint32(0, val);\n keyUriToKeyIdMap[this.uri] = keyId;\n }\n this.keyId = keyId;\n }\n return this;\n }\n}\nfunction createInitializationVector(segmentNumber) {\n const uint8View = new Uint8Array(16);\n for (let i = 12; i < 16; i++) {\n uint8View[i] = segmentNumber >> 8 * (15 - i) & 0xff;\n }\n return uint8View;\n}\n\nconst VARIABLE_REPLACEMENT_REGEX = /\\{\\$([a-zA-Z0-9-_]+)\\}/g;\nfunction hasVariableReferences(str) {\n return VARIABLE_REPLACEMENT_REGEX.test(str);\n}\nfunction substituteVariablesInAttributes(parsed, attr, attributeNames) {\n if (parsed.variableList !== null || parsed.hasVariableRefs) {\n for (let i = attributeNames.length; i--;) {\n const name = attributeNames[i];\n const value = attr[name];\n if (value) {\n attr[name] = substituteVariables(parsed, value);\n }\n }\n }\n}\nfunction substituteVariables(parsed, value) {\n if (parsed.variableList !== null || parsed.hasVariableRefs) {\n const variableList = parsed.variableList;\n return value.replace(VARIABLE_REPLACEMENT_REGEX, variableReference => {\n const variableName = variableReference.substring(2, variableReference.length - 1);\n const variableValue = variableList == null ? void 0 : variableList[variableName];\n if (variableValue === undefined) {\n parsed.playlistParsingError || (parsed.playlistParsingError = new Error(`Missing preceding EXT-X-DEFINE tag for Variable Reference: \"${variableName}\"`));\n return variableReference;\n }\n return variableValue;\n });\n }\n return value;\n}\nfunction addVariableDefinition(parsed, attr, parentUrl) {\n let variableList = parsed.variableList;\n if (!variableList) {\n parsed.variableList = variableList = {};\n }\n let NAME;\n let VALUE;\n if ('QUERYPARAM' in attr) {\n NAME = attr.QUERYPARAM;\n try {\n const searchParams = new self.URL(parentUrl).searchParams;\n if (searchParams.has(NAME)) {\n VALUE = searchParams.get(NAME);\n } else {\n throw new Error(`\"${NAME}\" does not match any query parameter in URI: \"${parentUrl}\"`);\n }\n } catch (error) {\n parsed.playlistParsingError || (parsed.playlistParsingError = new Error(`EXT-X-DEFINE QUERYPARAM: ${error.message}`));\n }\n } else {\n NAME = attr.NAME;\n VALUE = attr.VALUE;\n }\n if (NAME in variableList) {\n parsed.playlistParsingError || (parsed.playlistParsingError = new Error(`EXT-X-DEFINE duplicate Variable Name declarations: \"${NAME}\"`));\n } else {\n variableList[NAME] = VALUE || '';\n }\n}\nfunction importVariableDefinition(parsed, attr, sourceVariableList) {\n const IMPORT = attr.IMPORT;\n if (sourceVariableList && IMPORT in sourceVariableList) {\n let variableList = parsed.variableList;\n if (!variableList) {\n parsed.variableList = variableList = {};\n }\n variableList[IMPORT] = sourceVariableList[IMPORT];\n } else {\n parsed.playlistParsingError || (parsed.playlistParsingError = new Error(`EXT-X-DEFINE IMPORT attribute not found in Multivariant Playlist: \"${IMPORT}\"`));\n }\n}\n\n/**\n * MediaSource helper\n */\n\nfunction getMediaSource(preferManagedMediaSource = true) {\n if (typeof self === 'undefined') return undefined;\n const mms = (preferManagedMediaSource || !self.MediaSource) && self.ManagedMediaSource;\n return mms || self.MediaSource || self.WebKitMediaSource;\n}\nfunction isManagedMediaSource(source) {\n return typeof self !== 'undefined' && source === self.ManagedMediaSource;\n}\n\n// from http://mp4ra.org/codecs.html\n// values indicate codec selection preference (lower is higher priority)\nconst sampleEntryCodesISO = {\n audio: {\n a3ds: 1,\n 'ac-3': 0.95,\n 'ac-4': 1,\n alac: 0.9,\n alaw: 1,\n dra1: 1,\n 'dts+': 1,\n 'dts-': 1,\n dtsc: 1,\n dtse: 1,\n dtsh: 1,\n 'ec-3': 0.9,\n enca: 1,\n fLaC: 0.9,\n // MP4-RA listed codec entry for FLAC\n flac: 0.9,\n // legacy browser codec name for FLAC\n FLAC: 0.9,\n // some manifests may list \"FLAC\" with Apple's tools\n g719: 1,\n g726: 1,\n m4ae: 1,\n mha1: 1,\n mha2: 1,\n mhm1: 1,\n mhm2: 1,\n mlpa: 1,\n mp4a: 1,\n 'raw ': 1,\n Opus: 1,\n opus: 1,\n // browsers expect this to be lowercase despite MP4RA says 'Opus'\n samr: 1,\n sawb: 1,\n sawp: 1,\n sevc: 1,\n sqcp: 1,\n ssmv: 1,\n twos: 1,\n ulaw: 1\n },\n video: {\n avc1: 1,\n avc2: 1,\n avc3: 1,\n avc4: 1,\n avcp: 1,\n av01: 0.8,\n drac: 1,\n dva1: 1,\n dvav: 1,\n dvh1: 0.7,\n dvhe: 0.7,\n encv: 1,\n hev1: 0.75,\n hvc1: 0.75,\n mjp2: 1,\n mp4v: 1,\n mvc1: 1,\n mvc2: 1,\n mvc3: 1,\n mvc4: 1,\n resv: 1,\n rv60: 1,\n s263: 1,\n svc1: 1,\n svc2: 1,\n 'vc-1': 1,\n vp08: 1,\n vp09: 0.9\n },\n text: {\n stpp: 1,\n wvtt: 1\n }\n};\nfunction isCodecType(codec, type) {\n const typeCodes = sampleEntryCodesISO[type];\n return !!typeCodes && !!typeCodes[codec.slice(0, 4)];\n}\nfunction areCodecsMediaSourceSupported(codecs, type, preferManagedMediaSource = true) {\n return !codecs.split(',').some(codec => !isCodecMediaSourceSupported(codec, type, preferManagedMediaSource));\n}\nfunction isCodecMediaSourceSupported(codec, type, preferManagedMediaSource = true) {\n var _MediaSource$isTypeSu;\n const MediaSource = getMediaSource(preferManagedMediaSource);\n return (_MediaSource$isTypeSu = MediaSource == null ? void 0 : MediaSource.isTypeSupported(mimeTypeForCodec(codec, type))) != null ? _MediaSource$isTypeSu : false;\n}\nfunction mimeTypeForCodec(codec, type) {\n return `${type}/mp4;codecs=\"${codec}\"`;\n}\nfunction videoCodecPreferenceValue(videoCodec) {\n if (videoCodec) {\n const fourCC = videoCodec.substring(0, 4);\n return sampleEntryCodesISO.video[fourCC];\n }\n return 2;\n}\nfunction codecsSetSelectionPreferenceValue(codecSet) {\n return codecSet.split(',').reduce((num, fourCC) => {\n const preferenceValue = sampleEntryCodesISO.video[fourCC];\n if (preferenceValue) {\n return (preferenceValue * 2 + num) / (num ? 3 : 2);\n }\n return (sampleEntryCodesISO.audio[fourCC] + num) / (num ? 2 : 1);\n }, 0);\n}\nconst CODEC_COMPATIBLE_NAMES = {};\nfunction getCodecCompatibleNameLower(lowerCaseCodec, preferManagedMediaSource = true) {\n if (CODEC_COMPATIBLE_NAMES[lowerCaseCodec]) {\n return CODEC_COMPATIBLE_NAMES[lowerCaseCodec];\n }\n\n // Idealy fLaC and Opus would be first (spec-compliant) but\n // some browsers will report that fLaC is supported then fail.\n // see: https://bugs.chromium.org/p/chromium/issues/detail?id=1422728\n const codecsToCheck = {\n flac: ['flac', 'fLaC', 'FLAC'],\n opus: ['opus', 'Opus']\n }[lowerCaseCodec];\n for (let i = 0; i < codecsToCheck.length; i++) {\n if (isCodecMediaSourceSupported(codecsToCheck[i], 'audio', preferManagedMediaSource)) {\n CODEC_COMPATIBLE_NAMES[lowerCaseCodec] = codecsToCheck[i];\n return codecsToCheck[i];\n }\n }\n return lowerCaseCodec;\n}\nconst AUDIO_CODEC_REGEXP = /flac|opus/i;\nfunction getCodecCompatibleName(codec, preferManagedMediaSource = true) {\n return codec.replace(AUDIO_CODEC_REGEXP, m => getCodecCompatibleNameLower(m.toLowerCase(), preferManagedMediaSource));\n}\nfunction pickMostCompleteCodecName(parsedCodec, levelCodec) {\n // Parsing of mp4a codecs strings in mp4-tools from media is incomplete as of d8c6c7a\n // so use level codec is parsed codec is unavailable or incomplete\n if (parsedCodec && parsedCodec !== 'mp4a') {\n return parsedCodec;\n }\n return levelCodec ? levelCodec.split(',')[0] : levelCodec;\n}\nfunction convertAVC1ToAVCOTI(codec) {\n // Convert avc1 codec string from RFC-4281 to RFC-6381 for MediaSource.isTypeSupported\n // Examples: avc1.66.30 to avc1.42001e and avc1.77.30,avc1.66.30 to avc1.4d001e,avc1.42001e.\n const codecs = codec.split(',');\n for (let i = 0; i < codecs.length; i++) {\n const avcdata = codecs[i].split('.');\n if (avcdata.length > 2) {\n let result = avcdata.shift() + '.';\n result += parseInt(avcdata.shift()).toString(16);\n result += ('000' + parseInt(avcdata.shift()).toString(16)).slice(-4);\n codecs[i] = result;\n }\n }\n return codecs.join(',');\n}\n\nconst MASTER_PLAYLIST_REGEX = /#EXT-X-STREAM-INF:([^\\r\\n]*)(?:[\\r\\n](?:#[^\\r\\n]*)?)*([^\\r\\n]+)|#EXT-X-(SESSION-DATA|SESSION-KEY|DEFINE|CONTENT-STEERING|START):([^\\r\\n]*)[\\r\\n]+/g;\nconst MASTER_PLAYLIST_MEDIA_REGEX = /#EXT-X-MEDIA:(.*)/g;\nconst IS_MEDIA_PLAYLIST = /^#EXT(?:INF|-X-TARGETDURATION):/m; // Handle empty Media Playlist (first EXTINF not signaled, but TARGETDURATION present)\n\nconst LEVEL_PLAYLIST_REGEX_FAST = new RegExp([/#EXTINF:\\s*(\\d*(?:\\.\\d+)?)(?:,(.*)\\s+)?/.source,\n// duration (#EXTINF:,), group 1 => duration, group 2 => title\n/(?!#) *(\\S[^\\r\\n]*)/.source,\n// segment URI, group 3 => the URI (note newline is not eaten)\n/#EXT-X-BYTERANGE:*(.+)/.source,\n// next segment's byterange, group 4 => range spec (x@y)\n/#EXT-X-PROGRAM-DATE-TIME:(.+)/.source,\n// next segment's program date/time group 5 => the datetime spec\n/#.*/.source // All other non-segment oriented tags will match with all groups empty\n].join('|'), 'g');\nconst LEVEL_PLAYLIST_REGEX_SLOW = new RegExp([/#(EXTM3U)/.source, /#EXT-X-(DATERANGE|DEFINE|KEY|MAP|PART|PART-INF|PLAYLIST-TYPE|PRELOAD-HINT|RENDITION-REPORT|SERVER-CONTROL|SKIP|START):(.+)/.source, /#EXT-X-(BITRATE|DISCONTINUITY-SEQUENCE|MEDIA-SEQUENCE|TARGETDURATION|VERSION): *(\\d+)/.source, /#EXT-X-(DISCONTINUITY|ENDLIST|GAP|INDEPENDENT-SEGMENTS)/.source, /(#)([^:]*):(.*)/.source, /(#)(.*)(?:.*)\\r?\\n?/.source].join('|'));\nclass M3U8Parser {\n static findGroup(groups, mediaGroupId) {\n for (let i = 0; i < groups.length; i++) {\n const group = groups[i];\n if (group.id === mediaGroupId) {\n return group;\n }\n }\n }\n static resolve(url, baseUrl) {\n return urlToolkitExports.buildAbsoluteURL(baseUrl, url, {\n alwaysNormalize: true\n });\n }\n static isMediaPlaylist(str) {\n return IS_MEDIA_PLAYLIST.test(str);\n }\n static parseMasterPlaylist(string, baseurl) {\n const hasVariableRefs = hasVariableReferences(string) ;\n const parsed = {\n contentSteering: null,\n levels: [],\n playlistParsingError: null,\n sessionData: null,\n sessionKeys: null,\n startTimeOffset: null,\n variableList: null,\n hasVariableRefs\n };\n const levelsWithKnownCodecs = [];\n MASTER_PLAYLIST_REGEX.lastIndex = 0;\n let result;\n while ((result = MASTER_PLAYLIST_REGEX.exec(string)) != null) {\n if (result[1]) {\n var _level$unknownCodecs;\n // '#EXT-X-STREAM-INF' is found, parse level tag in group 1\n const attrs = new AttrList(result[1]);\n {\n substituteVariablesInAttributes(parsed, attrs, ['CODECS', 'SUPPLEMENTAL-CODECS', 'ALLOWED-CPC', 'PATHWAY-ID', 'STABLE-VARIANT-ID', 'AUDIO', 'VIDEO', 'SUBTITLES', 'CLOSED-CAPTIONS', 'NAME']);\n }\n const uri = substituteVariables(parsed, result[2]) ;\n const level = {\n attrs,\n bitrate: attrs.decimalInteger('BANDWIDTH') || attrs.decimalInteger('AVERAGE-BANDWIDTH'),\n name: attrs.NAME,\n url: M3U8Parser.resolve(uri, baseurl)\n };\n const resolution = attrs.decimalResolution('RESOLUTION');\n if (resolution) {\n level.width = resolution.width;\n level.height = resolution.height;\n }\n setCodecs(attrs.CODECS, level);\n if (!((_level$unknownCodecs = level.unknownCodecs) != null && _level$unknownCodecs.length)) {\n levelsWithKnownCodecs.push(level);\n }\n parsed.levels.push(level);\n } else if (result[3]) {\n const tag = result[3];\n const attributes = result[4];\n switch (tag) {\n case 'SESSION-DATA':\n {\n // #EXT-X-SESSION-DATA\n const sessionAttrs = new AttrList(attributes);\n {\n substituteVariablesInAttributes(parsed, sessionAttrs, ['DATA-ID', 'LANGUAGE', 'VALUE', 'URI']);\n }\n const dataId = sessionAttrs['DATA-ID'];\n if (dataId) {\n if (parsed.sessionData === null) {\n parsed.sessionData = {};\n }\n parsed.sessionData[dataId] = sessionAttrs;\n }\n break;\n }\n case 'SESSION-KEY':\n {\n // #EXT-X-SESSION-KEY\n const sessionKey = parseKey(attributes, baseurl, parsed);\n if (sessionKey.encrypted && sessionKey.isSupported()) {\n if (parsed.sessionKeys === null) {\n parsed.sessionKeys = [];\n }\n parsed.sessionKeys.push(sessionKey);\n } else {\n logger.warn(`[Keys] Ignoring invalid EXT-X-SESSION-KEY tag: \"${attributes}\"`);\n }\n break;\n }\n case 'DEFINE':\n {\n // #EXT-X-DEFINE\n {\n const variableAttributes = new AttrList(attributes);\n substituteVariablesInAttributes(parsed, variableAttributes, ['NAME', 'VALUE', 'QUERYPARAM']);\n addVariableDefinition(parsed, variableAttributes, baseurl);\n }\n break;\n }\n case 'CONTENT-STEERING':\n {\n // #EXT-X-CONTENT-STEERING\n const contentSteeringAttributes = new AttrList(attributes);\n {\n substituteVariablesInAttributes(parsed, contentSteeringAttributes, ['SERVER-URI', 'PATHWAY-ID']);\n }\n parsed.contentSteering = {\n uri: M3U8Parser.resolve(contentSteeringAttributes['SERVER-URI'], baseurl),\n pathwayId: contentSteeringAttributes['PATHWAY-ID'] || '.'\n };\n break;\n }\n case 'START':\n {\n // #EXT-X-START\n parsed.startTimeOffset = parseStartTimeOffset(attributes);\n break;\n }\n }\n }\n }\n // Filter out levels with unknown codecs if it does not remove all levels\n const stripUnknownCodecLevels = levelsWithKnownCodecs.length > 0 && levelsWithKnownCodecs.length < parsed.levels.length;\n parsed.levels = stripUnknownCodecLevels ? levelsWithKnownCodecs : parsed.levels;\n if (parsed.levels.length === 0) {\n parsed.playlistParsingError = new Error('no levels found in manifest');\n }\n return parsed;\n }\n static parseMasterPlaylistMedia(string, baseurl, parsed) {\n let result;\n const results = {};\n const levels = parsed.levels;\n const groupsByType = {\n AUDIO: levels.map(level => ({\n id: level.attrs.AUDIO,\n audioCodec: level.audioCodec\n })),\n SUBTITLES: levels.map(level => ({\n id: level.attrs.SUBTITLES,\n textCodec: level.textCodec\n })),\n 'CLOSED-CAPTIONS': []\n };\n let id = 0;\n MASTER_PLAYLIST_MEDIA_REGEX.lastIndex = 0;\n while ((result = MASTER_PLAYLIST_MEDIA_REGEX.exec(string)) !== null) {\n const attrs = new AttrList(result[1]);\n const type = attrs.TYPE;\n if (type) {\n const groups = groupsByType[type];\n const medias = results[type] || [];\n results[type] = medias;\n {\n substituteVariablesInAttributes(parsed, attrs, ['URI', 'GROUP-ID', 'LANGUAGE', 'ASSOC-LANGUAGE', 'STABLE-RENDITION-ID', 'NAME', 'INSTREAM-ID', 'CHARACTERISTICS', 'CHANNELS']);\n }\n const lang = attrs.LANGUAGE;\n const assocLang = attrs['ASSOC-LANGUAGE'];\n const channels = attrs.CHANNELS;\n const characteristics = attrs.CHARACTERISTICS;\n const instreamId = attrs['INSTREAM-ID'];\n const media = {\n attrs,\n bitrate: 0,\n id: id++,\n groupId: attrs['GROUP-ID'] || '',\n name: attrs.NAME || lang || '',\n type,\n default: attrs.bool('DEFAULT'),\n autoselect: attrs.bool('AUTOSELECT'),\n forced: attrs.bool('FORCED'),\n lang,\n url: attrs.URI ? M3U8Parser.resolve(attrs.URI, baseurl) : ''\n };\n if (assocLang) {\n media.assocLang = assocLang;\n }\n if (channels) {\n media.channels = channels;\n }\n if (characteristics) {\n media.characteristics = characteristics;\n }\n if (instreamId) {\n media.instreamId = instreamId;\n }\n if (groups != null && groups.length) {\n // If there are audio or text groups signalled in the manifest, let's look for a matching codec string for this track\n // If we don't find the track signalled, lets use the first audio groups codec we have\n // Acting as a best guess\n const groupCodec = M3U8Parser.findGroup(groups, media.groupId) || groups[0];\n assignCodec(media, groupCodec, 'audioCodec');\n assignCodec(media, groupCodec, 'textCodec');\n }\n medias.push(media);\n }\n }\n return results;\n }\n static parseLevelPlaylist(string, baseurl, id, type, levelUrlId, multivariantVariableList) {\n const level = new LevelDetails(baseurl);\n const fragments = level.fragments;\n // The most recent init segment seen (applies to all subsequent segments)\n let currentInitSegment = null;\n let currentSN = 0;\n let currentPart = 0;\n let totalduration = 0;\n let discontinuityCounter = 0;\n let prevFrag = null;\n let frag = new Fragment(type, baseurl);\n let result;\n let i;\n let levelkeys;\n let firstPdtIndex = -1;\n let createNextFrag = false;\n let nextByteRange = null;\n LEVEL_PLAYLIST_REGEX_FAST.lastIndex = 0;\n level.m3u8 = string;\n level.hasVariableRefs = hasVariableReferences(string) ;\n while ((result = LEVEL_PLAYLIST_REGEX_FAST.exec(string)) !== null) {\n if (createNextFrag) {\n createNextFrag = false;\n frag = new Fragment(type, baseurl);\n // setup the next fragment for part loading\n frag.start = totalduration;\n frag.sn = currentSN;\n frag.cc = discontinuityCounter;\n frag.level = id;\n if (currentInitSegment) {\n frag.initSegment = currentInitSegment;\n frag.rawProgramDateTime = currentInitSegment.rawProgramDateTime;\n currentInitSegment.rawProgramDateTime = null;\n if (nextByteRange) {\n frag.setByteRange(nextByteRange);\n nextByteRange = null;\n }\n }\n }\n const duration = result[1];\n if (duration) {\n // INF\n frag.duration = parseFloat(duration);\n // avoid sliced strings https://github.com/video-dev/hls.js/issues/939\n const title = (' ' + result[2]).slice(1);\n frag.title = title || null;\n frag.tagList.push(title ? ['INF', duration, title] : ['INF', duration]);\n } else if (result[3]) {\n // url\n if (isFiniteNumber(frag.duration)) {\n frag.start = totalduration;\n if (levelkeys) {\n setFragLevelKeys(frag, levelkeys, level);\n }\n frag.sn = currentSN;\n frag.level = id;\n frag.cc = discontinuityCounter;\n fragments.push(frag);\n // avoid sliced strings https://github.com/video-dev/hls.js/issues/939\n const uri = (' ' + result[3]).slice(1);\n frag.relurl = substituteVariables(level, uri) ;\n assignProgramDateTime(frag, prevFrag);\n prevFrag = frag;\n totalduration += frag.duration;\n currentSN++;\n currentPart = 0;\n createNextFrag = true;\n }\n } else if (result[4]) {\n // X-BYTERANGE\n const data = (' ' + result[4]).slice(1);\n if (prevFrag) {\n frag.setByteRange(data, prevFrag);\n } else {\n frag.setByteRange(data);\n }\n } else if (result[5]) {\n // PROGRAM-DATE-TIME\n // avoid sliced strings https://github.com/video-dev/hls.js/issues/939\n frag.rawProgramDateTime = (' ' + result[5]).slice(1);\n frag.tagList.push(['PROGRAM-DATE-TIME', frag.rawProgramDateTime]);\n if (firstPdtIndex === -1) {\n firstPdtIndex = fragments.length;\n }\n } else {\n result = result[0].match(LEVEL_PLAYLIST_REGEX_SLOW);\n if (!result) {\n logger.warn('No matches on slow regex match for level playlist!');\n continue;\n }\n for (i = 1; i < result.length; i++) {\n if (typeof result[i] !== 'undefined') {\n break;\n }\n }\n\n // avoid sliced strings https://github.com/video-dev/hls.js/issues/939\n const tag = (' ' + result[i]).slice(1);\n const value1 = (' ' + result[i + 1]).slice(1);\n const value2 = result[i + 2] ? (' ' + result[i + 2]).slice(1) : '';\n switch (tag) {\n case 'PLAYLIST-TYPE':\n level.type = value1.toUpperCase();\n break;\n case 'MEDIA-SEQUENCE':\n currentSN = level.startSN = parseInt(value1);\n break;\n case 'SKIP':\n {\n const skipAttrs = new AttrList(value1);\n {\n substituteVariablesInAttributes(level, skipAttrs, ['RECENTLY-REMOVED-DATERANGES']);\n }\n const skippedSegments = skipAttrs.decimalInteger('SKIPPED-SEGMENTS');\n if (isFiniteNumber(skippedSegments)) {\n level.skippedSegments = skippedSegments;\n // This will result in fragments[] containing undefined values, which we will fill in with `mergeDetails`\n for (let _i = skippedSegments; _i--;) {\n fragments.unshift(null);\n }\n currentSN += skippedSegments;\n }\n const recentlyRemovedDateranges = skipAttrs.enumeratedString('RECENTLY-REMOVED-DATERANGES');\n if (recentlyRemovedDateranges) {\n level.recentlyRemovedDateranges = recentlyRemovedDateranges.split('\\t');\n }\n break;\n }\n case 'TARGETDURATION':\n level.targetduration = Math.max(parseInt(value1), 1);\n break;\n case 'VERSION':\n level.version = parseInt(value1);\n break;\n case 'INDEPENDENT-SEGMENTS':\n case 'EXTM3U':\n break;\n case 'ENDLIST':\n level.live = false;\n break;\n case '#':\n if (value1 || value2) {\n frag.tagList.push(value2 ? [value1, value2] : [value1]);\n }\n break;\n case 'DISCONTINUITY':\n discontinuityCounter++;\n frag.tagList.push(['DIS']);\n break;\n case 'GAP':\n frag.gap = true;\n frag.tagList.push([tag]);\n break;\n case 'BITRATE':\n frag.tagList.push([tag, value1]);\n break;\n case 'DATERANGE':\n {\n const dateRangeAttr = new AttrList(value1);\n {\n substituteVariablesInAttributes(level, dateRangeAttr, ['ID', 'CLASS', 'START-DATE', 'END-DATE', 'SCTE35-CMD', 'SCTE35-OUT', 'SCTE35-IN']);\n substituteVariablesInAttributes(level, dateRangeAttr, dateRangeAttr.clientAttrs);\n }\n const dateRange = new DateRange(dateRangeAttr, level.dateRanges[dateRangeAttr.ID]);\n if (dateRange.isValid || level.skippedSegments) {\n level.dateRanges[dateRange.id] = dateRange;\n } else {\n logger.warn(`Ignoring invalid DATERANGE tag: \"${value1}\"`);\n }\n // Add to fragment tag list for backwards compatibility (< v1.2.0)\n frag.tagList.push(['EXT-X-DATERANGE', value1]);\n break;\n }\n case 'DEFINE':\n {\n {\n const variableAttributes = new AttrList(value1);\n substituteVariablesInAttributes(level, variableAttributes, ['NAME', 'VALUE', 'IMPORT', 'QUERYPARAM']);\n if ('IMPORT' in variableAttributes) {\n importVariableDefinition(level, variableAttributes, multivariantVariableList);\n } else {\n addVariableDefinition(level, variableAttributes, baseurl);\n }\n }\n break;\n }\n case 'DISCONTINUITY-SEQUENCE':\n discontinuityCounter = parseInt(value1);\n break;\n case 'KEY':\n {\n const levelKey = parseKey(value1, baseurl, level);\n if (levelKey.isSupported()) {\n if (levelKey.method === 'NONE') {\n levelkeys = undefined;\n break;\n }\n if (!levelkeys) {\n levelkeys = {};\n }\n if (levelkeys[levelKey.keyFormat]) {\n levelkeys = _extends({}, levelkeys);\n }\n levelkeys[levelKey.keyFormat] = levelKey;\n } else {\n logger.warn(`[Keys] Ignoring invalid EXT-X-KEY tag: \"${value1}\"`);\n }\n break;\n }\n case 'START':\n level.startTimeOffset = parseStartTimeOffset(value1);\n break;\n case 'MAP':\n {\n const mapAttrs = new AttrList(value1);\n {\n substituteVariablesInAttributes(level, mapAttrs, ['BYTERANGE', 'URI']);\n }\n if (frag.duration) {\n // Initial segment tag is after segment duration tag.\n // #EXTINF: 6.0\n // #EXT-X-MAP:URI=\"init.mp4\n const init = new Fragment(type, baseurl);\n setInitSegment(init, mapAttrs, id, levelkeys);\n currentInitSegment = init;\n frag.initSegment = currentInitSegment;\n if (currentInitSegment.rawProgramDateTime && !frag.rawProgramDateTime) {\n frag.rawProgramDateTime = currentInitSegment.rawProgramDateTime;\n }\n } else {\n // Initial segment tag is before segment duration tag\n // Handle case where EXT-X-MAP is declared after EXT-X-BYTERANGE\n const end = frag.byteRangeEndOffset;\n if (end) {\n const start = frag.byteRangeStartOffset;\n nextByteRange = `${end - start}@${start}`;\n } else {\n nextByteRange = null;\n }\n setInitSegment(frag, mapAttrs, id, levelkeys);\n currentInitSegment = frag;\n createNextFrag = true;\n }\n break;\n }\n case 'SERVER-CONTROL':\n {\n const serverControlAttrs = new AttrList(value1);\n level.canBlockReload = serverControlAttrs.bool('CAN-BLOCK-RELOAD');\n level.canSkipUntil = serverControlAttrs.optionalFloat('CAN-SKIP-UNTIL', 0);\n level.canSkipDateRanges = level.canSkipUntil > 0 && serverControlAttrs.bool('CAN-SKIP-DATERANGES');\n level.partHoldBack = serverControlAttrs.optionalFloat('PART-HOLD-BACK', 0);\n level.holdBack = serverControlAttrs.optionalFloat('HOLD-BACK', 0);\n break;\n }\n case 'PART-INF':\n {\n const partInfAttrs = new AttrList(value1);\n level.partTarget = partInfAttrs.decimalFloatingPoint('PART-TARGET');\n break;\n }\n case 'PART':\n {\n let partList = level.partList;\n if (!partList) {\n partList = level.partList = [];\n }\n const previousFragmentPart = currentPart > 0 ? partList[partList.length - 1] : undefined;\n const index = currentPart++;\n const partAttrs = new AttrList(value1);\n {\n substituteVariablesInAttributes(level, partAttrs, ['BYTERANGE', 'URI']);\n }\n const part = new Part(partAttrs, frag, baseurl, index, previousFragmentPart);\n partList.push(part);\n frag.duration += part.duration;\n break;\n }\n case 'PRELOAD-HINT':\n {\n const preloadHintAttrs = new AttrList(value1);\n {\n substituteVariablesInAttributes(level, preloadHintAttrs, ['URI']);\n }\n level.preloadHint = preloadHintAttrs;\n break;\n }\n case 'RENDITION-REPORT':\n {\n const renditionReportAttrs = new AttrList(value1);\n {\n substituteVariablesInAttributes(level, renditionReportAttrs, ['URI']);\n }\n level.renditionReports = level.renditionReports || [];\n level.renditionReports.push(renditionReportAttrs);\n break;\n }\n default:\n logger.warn(`line parsed but not handled: ${result}`);\n break;\n }\n }\n }\n if (prevFrag && !prevFrag.relurl) {\n fragments.pop();\n totalduration -= prevFrag.duration;\n if (level.partList) {\n level.fragmentHint = prevFrag;\n }\n } else if (level.partList) {\n assignProgramDateTime(frag, prevFrag);\n frag.cc = discontinuityCounter;\n level.fragmentHint = frag;\n if (levelkeys) {\n setFragLevelKeys(frag, levelkeys, level);\n }\n }\n const fragmentLength = fragments.length;\n const firstFragment = fragments[0];\n const lastFragment = fragments[fragmentLength - 1];\n totalduration += level.skippedSegments * level.targetduration;\n if (totalduration > 0 && fragmentLength && lastFragment) {\n level.averagetargetduration = totalduration / fragmentLength;\n const lastSn = lastFragment.sn;\n level.endSN = lastSn !== 'initSegment' ? lastSn : 0;\n if (!level.live) {\n lastFragment.endList = true;\n }\n if (firstFragment) {\n level.startCC = firstFragment.cc;\n }\n } else {\n level.endSN = 0;\n level.startCC = 0;\n }\n if (level.fragmentHint) {\n totalduration += level.fragmentHint.duration;\n }\n level.totalduration = totalduration;\n level.endCC = discontinuityCounter;\n\n /**\n * Backfill any missing PDT values\n * \"If the first EXT-X-PROGRAM-DATE-TIME tag in a Playlist appears after\n * one or more Media Segment URIs, the client SHOULD extrapolate\n * backward from that tag (using EXTINF durations and/or media\n * timestamps) to associate dates with those segments.\"\n * We have already extrapolated forward, but all fragments up to the first instance of PDT do not have their PDTs\n * computed.\n */\n if (firstPdtIndex > 0) {\n backfillProgramDateTimes(fragments, firstPdtIndex);\n }\n return level;\n }\n}\nfunction parseKey(keyTagAttributes, baseurl, parsed) {\n var _keyAttrs$METHOD, _keyAttrs$KEYFORMAT;\n // https://tools.ietf.org/html/rfc8216#section-4.3.2.4\n const keyAttrs = new AttrList(keyTagAttributes);\n {\n substituteVariablesInAttributes(parsed, keyAttrs, ['KEYFORMAT', 'KEYFORMATVERSIONS', 'URI', 'IV', 'URI']);\n }\n const decryptmethod = (_keyAttrs$METHOD = keyAttrs.METHOD) != null ? _keyAttrs$METHOD : '';\n const decrypturi = keyAttrs.URI;\n const decryptiv = keyAttrs.hexadecimalInteger('IV');\n const decryptkeyformatversions = keyAttrs.KEYFORMATVERSIONS;\n // From RFC: This attribute is OPTIONAL; its absence indicates an implicit value of \"identity\".\n const decryptkeyformat = (_keyAttrs$KEYFORMAT = keyAttrs.KEYFORMAT) != null ? _keyAttrs$KEYFORMAT : 'identity';\n if (decrypturi && keyAttrs.IV && !decryptiv) {\n logger.error(`Invalid IV: ${keyAttrs.IV}`);\n }\n // If decrypturi is a URI with a scheme, then baseurl will be ignored\n // No uri is allowed when METHOD is NONE\n const resolvedUri = decrypturi ? M3U8Parser.resolve(decrypturi, baseurl) : '';\n const keyFormatVersions = (decryptkeyformatversions ? decryptkeyformatversions : '1').split('/').map(Number).filter(Number.isFinite);\n return new LevelKey(decryptmethod, resolvedUri, decryptkeyformat, keyFormatVersions, decryptiv);\n}\nfunction parseStartTimeOffset(startAttributes) {\n const startAttrs = new AttrList(startAttributes);\n const startTimeOffset = startAttrs.decimalFloatingPoint('TIME-OFFSET');\n if (isFiniteNumber(startTimeOffset)) {\n return startTimeOffset;\n }\n return null;\n}\nfunction setCodecs(codecsAttributeValue, level) {\n let codecs = (codecsAttributeValue || '').split(/[ ,]+/).filter(c => c);\n ['video', 'audio', 'text'].forEach(type => {\n const filtered = codecs.filter(codec => isCodecType(codec, type));\n if (filtered.length) {\n // Comma separated list of all codecs for type\n level[`${type}Codec`] = filtered.join(',');\n // Remove known codecs so that only unknownCodecs are left after iterating through each type\n codecs = codecs.filter(codec => filtered.indexOf(codec) === -1);\n }\n });\n level.unknownCodecs = codecs;\n}\nfunction assignCodec(media, groupItem, codecProperty) {\n const codecValue = groupItem[codecProperty];\n if (codecValue) {\n media[codecProperty] = codecValue;\n }\n}\nfunction backfillProgramDateTimes(fragments, firstPdtIndex) {\n let fragPrev = fragments[firstPdtIndex];\n for (let i = firstPdtIndex; i--;) {\n const frag = fragments[i];\n // Exit on delta-playlist skipped segments\n if (!frag) {\n return;\n }\n frag.programDateTime = fragPrev.programDateTime - frag.duration * 1000;\n fragPrev = frag;\n }\n}\nfunction assignProgramDateTime(frag, prevFrag) {\n if (frag.rawProgramDateTime) {\n frag.programDateTime = Date.parse(frag.rawProgramDateTime);\n } else if (prevFrag != null && prevFrag.programDateTime) {\n frag.programDateTime = prevFrag.endProgramDateTime;\n }\n if (!isFiniteNumber(frag.programDateTime)) {\n frag.programDateTime = null;\n frag.rawProgramDateTime = null;\n }\n}\nfunction setInitSegment(frag, mapAttrs, id, levelkeys) {\n frag.relurl = mapAttrs.URI;\n if (mapAttrs.BYTERANGE) {\n frag.setByteRange(mapAttrs.BYTERANGE);\n }\n frag.level = id;\n frag.sn = 'initSegment';\n if (levelkeys) {\n frag.levelkeys = levelkeys;\n }\n frag.initSegment = null;\n}\nfunction setFragLevelKeys(frag, levelkeys, level) {\n frag.levelkeys = levelkeys;\n const {\n encryptedFragments\n } = level;\n if ((!encryptedFragments.length || encryptedFragments[encryptedFragments.length - 1].levelkeys !== levelkeys) && Object.keys(levelkeys).some(format => levelkeys[format].isCommonEncryption)) {\n encryptedFragments.push(frag);\n }\n}\n\nvar PlaylistContextType = {\n MANIFEST: \"manifest\",\n LEVEL: \"level\",\n AUDIO_TRACK: \"audioTrack\",\n SUBTITLE_TRACK: \"subtitleTrack\"\n};\nvar PlaylistLevelType = {\n MAIN: \"main\",\n AUDIO: \"audio\",\n SUBTITLE: \"subtitle\"\n};\n\nfunction mapContextToLevelType(context) {\n const {\n type\n } = context;\n switch (type) {\n case PlaylistContextType.AUDIO_TRACK:\n return PlaylistLevelType.AUDIO;\n case PlaylistContextType.SUBTITLE_TRACK:\n return PlaylistLevelType.SUBTITLE;\n default:\n return PlaylistLevelType.MAIN;\n }\n}\nfunction getResponseUrl(response, context) {\n let url = response.url;\n // responseURL not supported on some browsers (it is used to detect URL redirection)\n // data-uri mode also not supported (but no need to detect redirection)\n if (url === undefined || url.indexOf('data:') === 0) {\n // fallback to initial URL\n url = context.url;\n }\n return url;\n}\nclass PlaylistLoader {\n constructor(hls) {\n this.hls = void 0;\n this.loaders = Object.create(null);\n this.variableList = null;\n this.hls = hls;\n this.registerListeners();\n }\n startLoad(startPosition) {}\n stopLoad() {\n this.destroyInternalLoaders();\n }\n registerListeners() {\n const {\n hls\n } = this;\n hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(Events.LEVEL_LOADING, this.onLevelLoading, this);\n hls.on(Events.AUDIO_TRACK_LOADING, this.onAudioTrackLoading, this);\n hls.on(Events.SUBTITLE_TRACK_LOADING, this.onSubtitleTrackLoading, this);\n }\n unregisterListeners() {\n const {\n hls\n } = this;\n hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(Events.LEVEL_LOADING, this.onLevelLoading, this);\n hls.off(Events.AUDIO_TRACK_LOADING, this.onAudioTrackLoading, this);\n hls.off(Events.SUBTITLE_TRACK_LOADING, this.onSubtitleTrackLoading, this);\n }\n\n /**\n * Returns defaults or configured loader-type overloads (pLoader and loader config params)\n */\n createInternalLoader(context) {\n const config = this.hls.config;\n const PLoader = config.pLoader;\n const Loader = config.loader;\n const InternalLoader = PLoader || Loader;\n const loader = new InternalLoader(config);\n this.loaders[context.type] = loader;\n return loader;\n }\n getInternalLoader(context) {\n return this.loaders[context.type];\n }\n resetInternalLoader(contextType) {\n if (this.loaders[contextType]) {\n delete this.loaders[contextType];\n }\n }\n\n /**\n * Call `destroy` on all internal loader instances mapped (one per context type)\n */\n destroyInternalLoaders() {\n for (const contextType in this.loaders) {\n const loader = this.loaders[contextType];\n if (loader) {\n loader.destroy();\n }\n this.resetInternalLoader(contextType);\n }\n }\n destroy() {\n this.variableList = null;\n this.unregisterListeners();\n this.destroyInternalLoaders();\n }\n onManifestLoading(event, data) {\n const {\n url\n } = data;\n this.variableList = null;\n this.load({\n id: null,\n level: 0,\n responseType: 'text',\n type: PlaylistContextType.MANIFEST,\n url,\n deliveryDirectives: null\n });\n }\n onLevelLoading(event, data) {\n const {\n id,\n level,\n pathwayId,\n url,\n deliveryDirectives\n } = data;\n this.load({\n id,\n level,\n pathwayId,\n responseType: 'text',\n type: PlaylistContextType.LEVEL,\n url,\n deliveryDirectives\n });\n }\n onAudioTrackLoading(event, data) {\n const {\n id,\n groupId,\n url,\n deliveryDirectives\n } = data;\n this.load({\n id,\n groupId,\n level: null,\n responseType: 'text',\n type: PlaylistContextType.AUDIO_TRACK,\n url,\n deliveryDirectives\n });\n }\n onSubtitleTrackLoading(event, data) {\n const {\n id,\n groupId,\n url,\n deliveryDirectives\n } = data;\n this.load({\n id,\n groupId,\n level: null,\n responseType: 'text',\n type: PlaylistContextType.SUBTITLE_TRACK,\n url,\n deliveryDirectives\n });\n }\n load(context) {\n var _context$deliveryDire;\n const config = this.hls.config;\n\n // logger.debug(`[playlist-loader]: Loading playlist of type ${context.type}, level: ${context.level}, id: ${context.id}`);\n\n // Check if a loader for this context already exists\n let loader = this.getInternalLoader(context);\n if (loader) {\n const loaderContext = loader.context;\n if (loaderContext && loaderContext.url === context.url && loaderContext.level === context.level) {\n // same URL can't overlap\n logger.trace('[playlist-loader]: playlist request ongoing');\n return;\n }\n logger.log(`[playlist-loader]: aborting previous loader for type: ${context.type}`);\n loader.abort();\n }\n\n // apply different configs for retries depending on\n // context (manifest, level, audio/subs playlist)\n let loadPolicy;\n if (context.type === PlaylistContextType.MANIFEST) {\n loadPolicy = config.manifestLoadPolicy.default;\n } else {\n loadPolicy = _extends({}, config.playlistLoadPolicy.default, {\n timeoutRetry: null,\n errorRetry: null\n });\n }\n loader = this.createInternalLoader(context);\n\n // Override level/track timeout for LL-HLS requests\n // (the default of 10000ms is counter productive to blocking playlist reload requests)\n if (isFiniteNumber((_context$deliveryDire = context.deliveryDirectives) == null ? void 0 : _context$deliveryDire.part)) {\n let levelDetails;\n if (context.type === PlaylistContextType.LEVEL && context.level !== null) {\n levelDetails = this.hls.levels[context.level].details;\n } else if (context.type === PlaylistContextType.AUDIO_TRACK && context.id !== null) {\n levelDetails = this.hls.audioTracks[context.id].details;\n } else if (context.type === PlaylistContextType.SUBTITLE_TRACK && context.id !== null) {\n levelDetails = this.hls.subtitleTracks[context.id].details;\n }\n if (levelDetails) {\n const partTarget = levelDetails.partTarget;\n const targetDuration = levelDetails.targetduration;\n if (partTarget && targetDuration) {\n const maxLowLatencyPlaylistRefresh = Math.max(partTarget * 3, targetDuration * 0.8) * 1000;\n loadPolicy = _extends({}, loadPolicy, {\n maxTimeToFirstByteMs: Math.min(maxLowLatencyPlaylistRefresh, loadPolicy.maxTimeToFirstByteMs),\n maxLoadTimeMs: Math.min(maxLowLatencyPlaylistRefresh, loadPolicy.maxTimeToFirstByteMs)\n });\n }\n }\n }\n const legacyRetryCompatibility = loadPolicy.errorRetry || loadPolicy.timeoutRetry || {};\n const loaderConfig = {\n loadPolicy,\n timeout: loadPolicy.maxLoadTimeMs,\n maxRetry: legacyRetryCompatibility.maxNumRetry || 0,\n retryDelay: legacyRetryCompatibility.retryDelayMs || 0,\n maxRetryDelay: legacyRetryCompatibility.maxRetryDelayMs || 0\n };\n const loaderCallbacks = {\n onSuccess: (response, stats, context, networkDetails) => {\n const loader = this.getInternalLoader(context);\n this.resetInternalLoader(context.type);\n const string = response.data;\n\n // Validate if it is an M3U8 at all\n if (string.indexOf('#EXTM3U') !== 0) {\n this.handleManifestParsingError(response, context, new Error('no EXTM3U delimiter'), networkDetails || null, stats);\n return;\n }\n stats.parsing.start = performance.now();\n if (M3U8Parser.isMediaPlaylist(string)) {\n this.handleTrackOrLevelPlaylist(response, stats, context, networkDetails || null, loader);\n } else {\n this.handleMasterPlaylist(response, stats, context, networkDetails);\n }\n },\n onError: (response, context, networkDetails, stats) => {\n this.handleNetworkError(context, networkDetails, false, response, stats);\n },\n onTimeout: (stats, context, networkDetails) => {\n this.handleNetworkError(context, networkDetails, true, undefined, stats);\n }\n };\n\n // logger.debug(`[playlist-loader]: Calling internal loader delegate for URL: ${context.url}`);\n\n loader.load(context, loaderConfig, loaderCallbacks);\n }\n handleMasterPlaylist(response, stats, context, networkDetails) {\n const hls = this.hls;\n const string = response.data;\n const url = getResponseUrl(response, context);\n const parsedResult = M3U8Parser.parseMasterPlaylist(string, url);\n if (parsedResult.playlistParsingError) {\n this.handleManifestParsingError(response, context, parsedResult.playlistParsingError, networkDetails, stats);\n return;\n }\n const {\n contentSteering,\n levels,\n sessionData,\n sessionKeys,\n startTimeOffset,\n variableList\n } = parsedResult;\n this.variableList = variableList;\n const {\n AUDIO: audioTracks = [],\n SUBTITLES: subtitles,\n 'CLOSED-CAPTIONS': captions\n } = M3U8Parser.parseMasterPlaylistMedia(string, url, parsedResult);\n if (audioTracks.length) {\n // check if we have found an audio track embedded in main playlist (audio track without URI attribute)\n const embeddedAudioFound = audioTracks.some(audioTrack => !audioTrack.url);\n\n // if no embedded audio track defined, but audio codec signaled in quality level,\n // we need to signal this main audio track this could happen with playlists with\n // alt audio rendition in which quality levels (main)\n // contains both audio+video. but with mixed audio track not signaled\n if (!embeddedAudioFound && levels[0].audioCodec && !levels[0].attrs.AUDIO) {\n logger.log('[playlist-loader]: audio codec signaled in quality level, but no embedded audio track signaled, create one');\n audioTracks.unshift({\n type: 'main',\n name: 'main',\n groupId: 'main',\n default: false,\n autoselect: false,\n forced: false,\n id: -1,\n attrs: new AttrList({}),\n bitrate: 0,\n url: ''\n });\n }\n }\n hls.trigger(Events.MANIFEST_LOADED, {\n levels,\n audioTracks,\n subtitles,\n captions,\n contentSteering,\n url,\n stats,\n networkDetails,\n sessionData,\n sessionKeys,\n startTimeOffset,\n variableList\n });\n }\n handleTrackOrLevelPlaylist(response, stats, context, networkDetails, loader) {\n const hls = this.hls;\n const {\n id,\n level,\n type\n } = context;\n const url = getResponseUrl(response, context);\n const levelUrlId = 0;\n const levelId = isFiniteNumber(level) ? level : isFiniteNumber(id) ? id : 0;\n const levelType = mapContextToLevelType(context);\n const levelDetails = M3U8Parser.parseLevelPlaylist(response.data, url, levelId, levelType, levelUrlId, this.variableList);\n\n // We have done our first request (Manifest-type) and receive\n // not a master playlist but a chunk-list (track/level)\n // We fire the manifest-loaded event anyway with the parsed level-details\n // by creating a single-level structure for it.\n if (type === PlaylistContextType.MANIFEST) {\n const singleLevel = {\n attrs: new AttrList({}),\n bitrate: 0,\n details: levelDetails,\n name: '',\n url\n };\n hls.trigger(Events.MANIFEST_LOADED, {\n levels: [singleLevel],\n audioTracks: [],\n url,\n stats,\n networkDetails,\n sessionData: null,\n sessionKeys: null,\n contentSteering: null,\n startTimeOffset: null,\n variableList: null\n });\n }\n\n // save parsing time\n stats.parsing.end = performance.now();\n\n // extend the context with the new levelDetails property\n context.levelDetails = levelDetails;\n this.handlePlaylistLoaded(levelDetails, response, stats, context, networkDetails, loader);\n }\n handleManifestParsingError(response, context, error, networkDetails, stats) {\n this.hls.trigger(Events.ERROR, {\n type: ErrorTypes.NETWORK_ERROR,\n details: ErrorDetails.MANIFEST_PARSING_ERROR,\n fatal: context.type === PlaylistContextType.MANIFEST,\n url: response.url,\n err: error,\n error,\n reason: error.message,\n response,\n context,\n networkDetails,\n stats\n });\n }\n handleNetworkError(context, networkDetails, timeout = false, response, stats) {\n let message = `A network ${timeout ? 'timeout' : 'error' + (response ? ' (status ' + response.code + ')' : '')} occurred while loading ${context.type}`;\n if (context.type === PlaylistContextType.LEVEL) {\n message += `: ${context.level} id: ${context.id}`;\n } else if (context.type === PlaylistContextType.AUDIO_TRACK || context.type === PlaylistContextType.SUBTITLE_TRACK) {\n message += ` id: ${context.id} group-id: \"${context.groupId}\"`;\n }\n const error = new Error(message);\n logger.warn(`[playlist-loader]: ${message}`);\n let details = ErrorDetails.UNKNOWN;\n let fatal = false;\n const loader = this.getInternalLoader(context);\n switch (context.type) {\n case PlaylistContextType.MANIFEST:\n details = timeout ? ErrorDetails.MANIFEST_LOAD_TIMEOUT : ErrorDetails.MANIFEST_LOAD_ERROR;\n fatal = true;\n break;\n case PlaylistContextType.LEVEL:\n details = timeout ? ErrorDetails.LEVEL_LOAD_TIMEOUT : ErrorDetails.LEVEL_LOAD_ERROR;\n fatal = false;\n break;\n case PlaylistContextType.AUDIO_TRACK:\n details = timeout ? ErrorDetails.AUDIO_TRACK_LOAD_TIMEOUT : ErrorDetails.AUDIO_TRACK_LOAD_ERROR;\n fatal = false;\n break;\n case PlaylistContextType.SUBTITLE_TRACK:\n details = timeout ? ErrorDetails.SUBTITLE_TRACK_LOAD_TIMEOUT : ErrorDetails.SUBTITLE_LOAD_ERROR;\n fatal = false;\n break;\n }\n if (loader) {\n this.resetInternalLoader(context.type);\n }\n const errorData = {\n type: ErrorTypes.NETWORK_ERROR,\n details,\n fatal,\n url: context.url,\n loader,\n context,\n error,\n networkDetails,\n stats\n };\n if (response) {\n const url = (networkDetails == null ? void 0 : networkDetails.url) || context.url;\n errorData.response = _objectSpread2({\n url,\n data: undefined\n }, response);\n }\n this.hls.trigger(Events.ERROR, errorData);\n }\n handlePlaylistLoaded(levelDetails, response, stats, context, networkDetails, loader) {\n const hls = this.hls;\n const {\n type,\n level,\n id,\n groupId,\n deliveryDirectives\n } = context;\n const url = getResponseUrl(response, context);\n const parent = mapContextToLevelType(context);\n const levelIndex = typeof context.level === 'number' && parent === PlaylistLevelType.MAIN ? level : undefined;\n if (!levelDetails.fragments.length) {\n const _error = new Error('No Segments found in Playlist');\n hls.trigger(Events.ERROR, {\n type: ErrorTypes.NETWORK_ERROR,\n details: ErrorDetails.LEVEL_EMPTY_ERROR,\n fatal: false,\n url,\n error: _error,\n reason: _error.message,\n response,\n context,\n level: levelIndex,\n parent,\n networkDetails,\n stats\n });\n return;\n }\n if (!levelDetails.targetduration) {\n levelDetails.playlistParsingError = new Error('Missing Target Duration');\n }\n const error = levelDetails.playlistParsingError;\n if (error) {\n hls.trigger(Events.ERROR, {\n type: ErrorTypes.NETWORK_ERROR,\n details: ErrorDetails.LEVEL_PARSING_ERROR,\n fatal: false,\n url,\n error,\n reason: error.message,\n response,\n context,\n level: levelIndex,\n parent,\n networkDetails,\n stats\n });\n return;\n }\n if (levelDetails.live && loader) {\n if (loader.getCacheAge) {\n levelDetails.ageHeader = loader.getCacheAge() || 0;\n }\n if (!loader.getCacheAge || isNaN(levelDetails.ageHeader)) {\n levelDetails.ageHeader = 0;\n }\n }\n switch (type) {\n case PlaylistContextType.MANIFEST:\n case PlaylistContextType.LEVEL:\n hls.trigger(Events.LEVEL_LOADED, {\n details: levelDetails,\n level: levelIndex || 0,\n id: id || 0,\n stats,\n networkDetails,\n deliveryDirectives\n });\n break;\n case PlaylistContextType.AUDIO_TRACK:\n hls.trigger(Events.AUDIO_TRACK_LOADED, {\n details: levelDetails,\n id: id || 0,\n groupId: groupId || '',\n stats,\n networkDetails,\n deliveryDirectives\n });\n break;\n case PlaylistContextType.SUBTITLE_TRACK:\n hls.trigger(Events.SUBTITLE_TRACK_LOADED, {\n details: levelDetails,\n id: id || 0,\n groupId: groupId || '',\n stats,\n networkDetails,\n deliveryDirectives\n });\n break;\n }\n }\n}\n\nfunction sendAddTrackEvent(track, videoEl) {\n let event;\n try {\n event = new Event('addtrack');\n } catch (err) {\n // for IE11\n event = document.createEvent('Event');\n event.initEvent('addtrack', false, false);\n }\n event.track = track;\n videoEl.dispatchEvent(event);\n}\nfunction addCueToTrack(track, cue) {\n // Sometimes there are cue overlaps on segmented vtts so the same\n // cue can appear more than once in different vtt files.\n // This avoid showing duplicated cues with same timecode and text.\n const mode = track.mode;\n if (mode === 'disabled') {\n track.mode = 'hidden';\n }\n if (track.cues && !track.cues.getCueById(cue.id)) {\n try {\n track.addCue(cue);\n if (!track.cues.getCueById(cue.id)) {\n throw new Error(`addCue is failed for: ${cue}`);\n }\n } catch (err) {\n logger.debug(`[texttrack-utils]: ${err}`);\n try {\n const textTrackCue = new self.TextTrackCue(cue.startTime, cue.endTime, cue.text);\n textTrackCue.id = cue.id;\n track.addCue(textTrackCue);\n } catch (err2) {\n logger.debug(`[texttrack-utils]: Legacy TextTrackCue fallback failed: ${err2}`);\n }\n }\n }\n if (mode === 'disabled') {\n track.mode = mode;\n }\n}\nfunction clearCurrentCues(track) {\n // When track.mode is disabled, track.cues will be null.\n // To guarantee the removal of cues, we need to temporarily\n // change the mode to hidden\n const mode = track.mode;\n if (mode === 'disabled') {\n track.mode = 'hidden';\n }\n if (track.cues) {\n for (let i = track.cues.length; i--;) {\n track.removeCue(track.cues[i]);\n }\n }\n if (mode === 'disabled') {\n track.mode = mode;\n }\n}\nfunction removeCuesInRange(track, start, end, predicate) {\n const mode = track.mode;\n if (mode === 'disabled') {\n track.mode = 'hidden';\n }\n if (track.cues && track.cues.length > 0) {\n const cues = getCuesInRange(track.cues, start, end);\n for (let i = 0; i < cues.length; i++) {\n if (!predicate || predicate(cues[i])) {\n track.removeCue(cues[i]);\n }\n }\n }\n if (mode === 'disabled') {\n track.mode = mode;\n }\n}\n\n// Find first cue starting after given time.\n// Modified version of binary search O(log(n)).\nfunction getFirstCueIndexAfterTime(cues, time) {\n // If first cue starts after time, start there\n if (time < cues[0].startTime) {\n return 0;\n }\n // If the last cue ends before time there is no overlap\n const len = cues.length - 1;\n if (time > cues[len].endTime) {\n return -1;\n }\n let left = 0;\n let right = len;\n while (left <= right) {\n const mid = Math.floor((right + left) / 2);\n if (time < cues[mid].startTime) {\n right = mid - 1;\n } else if (time > cues[mid].startTime && left < len) {\n left = mid + 1;\n } else {\n // If it's not lower or higher, it must be equal.\n return mid;\n }\n }\n // At this point, left and right have swapped.\n // No direct match was found, left or right element must be the closest. Check which one has the smallest diff.\n return cues[left].startTime - time < time - cues[right].startTime ? left : right;\n}\nfunction getCuesInRange(cues, start, end) {\n const cuesFound = [];\n const firstCueInRange = getFirstCueIndexAfterTime(cues, start);\n if (firstCueInRange > -1) {\n for (let i = firstCueInRange, len = cues.length; i < len; i++) {\n const cue = cues[i];\n if (cue.startTime >= start && cue.endTime <= end) {\n cuesFound.push(cue);\n } else if (cue.startTime > end) {\n return cuesFound;\n }\n }\n }\n return cuesFound;\n}\nfunction filterSubtitleTracks(textTrackList) {\n const tracks = [];\n for (let i = 0; i < textTrackList.length; i++) {\n const track = textTrackList[i];\n // Edge adds a track without a label; we don't want to use it\n if ((track.kind === 'subtitles' || track.kind === 'captions') && track.label) {\n tracks.push(textTrackList[i]);\n }\n }\n return tracks;\n}\n\nvar MetadataSchema = {\n audioId3: \"org.id3\",\n dateRange: \"com.apple.quicktime.HLS\",\n emsg: \"https://aomedia.org/emsg/ID3\"\n};\n\nconst MIN_CUE_DURATION = 0.25;\nfunction getCueClass() {\n if (typeof self === 'undefined') return undefined;\n return self.VTTCue || self.TextTrackCue;\n}\nfunction createCueWithDataFields(Cue, startTime, endTime, data, type) {\n let cue = new Cue(startTime, endTime, '');\n try {\n cue.value = data;\n if (type) {\n cue.type = type;\n }\n } catch (e) {\n cue = new Cue(startTime, endTime, JSON.stringify(type ? _objectSpread2({\n type\n }, data) : data));\n }\n return cue;\n}\n\n// VTTCue latest draft allows an infinite duration, fallback\n// to MAX_VALUE if necessary\nconst MAX_CUE_ENDTIME = (() => {\n const Cue = getCueClass();\n try {\n Cue && new Cue(0, Number.POSITIVE_INFINITY, '');\n } catch (e) {\n return Number.MAX_VALUE;\n }\n return Number.POSITIVE_INFINITY;\n})();\nfunction dateRangeDateToTimelineSeconds(date, offset) {\n return date.getTime() / 1000 - offset;\n}\nfunction hexToArrayBuffer(str) {\n return Uint8Array.from(str.replace(/^0x/, '').replace(/([\\da-fA-F]{2}) ?/g, '0x$1 ').replace(/ +$/, '').split(' ')).buffer;\n}\nclass ID3TrackController {\n constructor(hls) {\n this.hls = void 0;\n this.id3Track = null;\n this.media = null;\n this.dateRangeCuesAppended = {};\n this.hls = hls;\n this._registerListeners();\n }\n destroy() {\n this._unregisterListeners();\n this.id3Track = null;\n this.media = null;\n this.dateRangeCuesAppended = {};\n // @ts-ignore\n this.hls = null;\n }\n _registerListeners() {\n const {\n hls\n } = this;\n hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(Events.FRAG_PARSING_METADATA, this.onFragParsingMetadata, this);\n hls.on(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n hls.on(Events.LEVEL_UPDATED, this.onLevelUpdated, this);\n }\n _unregisterListeners() {\n const {\n hls\n } = this;\n hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(Events.FRAG_PARSING_METADATA, this.onFragParsingMetadata, this);\n hls.off(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n hls.off(Events.LEVEL_UPDATED, this.onLevelUpdated, this);\n }\n\n // Add ID3 metatadata text track.\n onMediaAttached(event, data) {\n this.media = data.media;\n }\n onMediaDetaching() {\n if (!this.id3Track) {\n return;\n }\n clearCurrentCues(this.id3Track);\n this.id3Track = null;\n this.media = null;\n this.dateRangeCuesAppended = {};\n }\n onManifestLoading() {\n this.dateRangeCuesAppended = {};\n }\n createTrack(media) {\n const track = this.getID3Track(media.textTracks);\n track.mode = 'hidden';\n return track;\n }\n getID3Track(textTracks) {\n if (!this.media) {\n return;\n }\n for (let i = 0; i < textTracks.length; i++) {\n const textTrack = textTracks[i];\n if (textTrack.kind === 'metadata' && textTrack.label === 'id3') {\n // send 'addtrack' when reusing the textTrack for metadata,\n // same as what we do for captions\n sendAddTrackEvent(textTrack, this.media);\n return textTrack;\n }\n }\n return this.media.addTextTrack('metadata', 'id3');\n }\n onFragParsingMetadata(event, data) {\n if (!this.media) {\n return;\n }\n const {\n hls: {\n config: {\n enableEmsgMetadataCues,\n enableID3MetadataCues\n }\n }\n } = this;\n if (!enableEmsgMetadataCues && !enableID3MetadataCues) {\n return;\n }\n const {\n samples\n } = data;\n\n // create track dynamically\n if (!this.id3Track) {\n this.id3Track = this.createTrack(this.media);\n }\n const Cue = getCueClass();\n if (!Cue) {\n return;\n }\n for (let i = 0; i < samples.length; i++) {\n const type = samples[i].type;\n if (type === MetadataSchema.emsg && !enableEmsgMetadataCues || !enableID3MetadataCues) {\n continue;\n }\n const frames = getID3Frames(samples[i].data);\n if (frames) {\n const startTime = samples[i].pts;\n let endTime = startTime + samples[i].duration;\n if (endTime > MAX_CUE_ENDTIME) {\n endTime = MAX_CUE_ENDTIME;\n }\n const timeDiff = endTime - startTime;\n if (timeDiff <= 0) {\n endTime = startTime + MIN_CUE_DURATION;\n }\n for (let j = 0; j < frames.length; j++) {\n const frame = frames[j];\n // Safari doesn't put the timestamp frame in the TextTrack\n if (!isTimeStampFrame(frame)) {\n // add a bounds to any unbounded cues\n this.updateId3CueEnds(startTime, type);\n const cue = createCueWithDataFields(Cue, startTime, endTime, frame, type);\n if (cue) {\n this.id3Track.addCue(cue);\n }\n }\n }\n }\n }\n }\n updateId3CueEnds(startTime, type) {\n var _this$id3Track;\n const cues = (_this$id3Track = this.id3Track) == null ? void 0 : _this$id3Track.cues;\n if (cues) {\n for (let i = cues.length; i--;) {\n const cue = cues[i];\n if (cue.type === type && cue.startTime < startTime && cue.endTime === MAX_CUE_ENDTIME) {\n cue.endTime = startTime;\n }\n }\n }\n }\n onBufferFlushing(event, {\n startOffset,\n endOffset,\n type\n }) {\n const {\n id3Track,\n hls\n } = this;\n if (!hls) {\n return;\n }\n const {\n config: {\n enableEmsgMetadataCues,\n enableID3MetadataCues\n }\n } = hls;\n if (id3Track && (enableEmsgMetadataCues || enableID3MetadataCues)) {\n let predicate;\n if (type === 'audio') {\n predicate = cue => cue.type === MetadataSchema.audioId3 && enableID3MetadataCues;\n } else if (type === 'video') {\n predicate = cue => cue.type === MetadataSchema.emsg && enableEmsgMetadataCues;\n } else {\n predicate = cue => cue.type === MetadataSchema.audioId3 && enableID3MetadataCues || cue.type === MetadataSchema.emsg && enableEmsgMetadataCues;\n }\n removeCuesInRange(id3Track, startOffset, endOffset, predicate);\n }\n }\n onLevelUpdated(event, {\n details\n }) {\n if (!this.media || !details.hasProgramDateTime || !this.hls.config.enableDateRangeMetadataCues) {\n return;\n }\n const {\n dateRangeCuesAppended,\n id3Track\n } = this;\n const {\n dateRanges\n } = details;\n const ids = Object.keys(dateRanges);\n // Remove cues from track not found in details.dateRanges\n if (id3Track) {\n const idsToRemove = Object.keys(dateRangeCuesAppended).filter(id => !ids.includes(id));\n for (let i = idsToRemove.length; i--;) {\n const id = idsToRemove[i];\n Object.keys(dateRangeCuesAppended[id].cues).forEach(key => {\n id3Track.removeCue(dateRangeCuesAppended[id].cues[key]);\n });\n delete dateRangeCuesAppended[id];\n }\n }\n // Exit if the playlist does not have Date Ranges or does not have Program Date Time\n const lastFragment = details.fragments[details.fragments.length - 1];\n if (ids.length === 0 || !isFiniteNumber(lastFragment == null ? void 0 : lastFragment.programDateTime)) {\n return;\n }\n if (!this.id3Track) {\n this.id3Track = this.createTrack(this.media);\n }\n const dateTimeOffset = lastFragment.programDateTime / 1000 - lastFragment.start;\n const Cue = getCueClass();\n for (let i = 0; i < ids.length; i++) {\n const id = ids[i];\n const dateRange = dateRanges[id];\n const startTime = dateRangeDateToTimelineSeconds(dateRange.startDate, dateTimeOffset);\n\n // Process DateRanges to determine end-time (known DURATION, END-DATE, or END-ON-NEXT)\n const appendedDateRangeCues = dateRangeCuesAppended[id];\n const cues = (appendedDateRangeCues == null ? void 0 : appendedDateRangeCues.cues) || {};\n let durationKnown = (appendedDateRangeCues == null ? void 0 : appendedDateRangeCues.durationKnown) || false;\n let endTime = MAX_CUE_ENDTIME;\n const endDate = dateRange.endDate;\n if (endDate) {\n endTime = dateRangeDateToTimelineSeconds(endDate, dateTimeOffset);\n durationKnown = true;\n } else if (dateRange.endOnNext && !durationKnown) {\n const nextDateRangeWithSameClass = ids.reduce((candidateDateRange, id) => {\n if (id !== dateRange.id) {\n const otherDateRange = dateRanges[id];\n if (otherDateRange.class === dateRange.class && otherDateRange.startDate > dateRange.startDate && (!candidateDateRange || dateRange.startDate < candidateDateRange.startDate)) {\n return otherDateRange;\n }\n }\n return candidateDateRange;\n }, null);\n if (nextDateRangeWithSameClass) {\n endTime = dateRangeDateToTimelineSeconds(nextDateRangeWithSameClass.startDate, dateTimeOffset);\n durationKnown = true;\n }\n }\n\n // Create TextTrack Cues for each MetadataGroup Item (select DateRange attribute)\n // This is to emulate Safari HLS playback handling of DateRange tags\n const attributes = Object.keys(dateRange.attr);\n for (let j = 0; j < attributes.length; j++) {\n const key = attributes[j];\n if (!isDateRangeCueAttribute(key)) {\n continue;\n }\n const cue = cues[key];\n if (cue) {\n if (durationKnown && !appendedDateRangeCues.durationKnown) {\n cue.endTime = endTime;\n }\n } else if (Cue) {\n let data = dateRange.attr[key];\n if (isSCTE35Attribute(key)) {\n data = hexToArrayBuffer(data);\n }\n const _cue = createCueWithDataFields(Cue, startTime, endTime, {\n key,\n data\n }, MetadataSchema.dateRange);\n if (_cue) {\n _cue.id = id;\n this.id3Track.addCue(_cue);\n cues[key] = _cue;\n }\n }\n }\n\n // Keep track of processed DateRanges by ID for updating cues with new DateRange tag attributes\n dateRangeCuesAppended[id] = {\n cues,\n dateRange,\n durationKnown\n };\n }\n }\n}\n\nclass LatencyController {\n constructor(hls) {\n this.hls = void 0;\n this.config = void 0;\n this.media = null;\n this.levelDetails = null;\n this.currentTime = 0;\n this.stallCount = 0;\n this._latency = null;\n this.timeupdateHandler = () => this.timeupdate();\n this.hls = hls;\n this.config = hls.config;\n this.registerListeners();\n }\n get latency() {\n return this._latency || 0;\n }\n get maxLatency() {\n const {\n config,\n levelDetails\n } = this;\n if (config.liveMaxLatencyDuration !== undefined) {\n return config.liveMaxLatencyDuration;\n }\n return levelDetails ? config.liveMaxLatencyDurationCount * levelDetails.targetduration : 0;\n }\n get targetLatency() {\n const {\n levelDetails\n } = this;\n if (levelDetails === null) {\n return null;\n }\n const {\n holdBack,\n partHoldBack,\n targetduration\n } = levelDetails;\n const {\n liveSyncDuration,\n liveSyncDurationCount,\n lowLatencyMode\n } = this.config;\n const userConfig = this.hls.userConfig;\n let targetLatency = lowLatencyMode ? partHoldBack || holdBack : holdBack;\n if (userConfig.liveSyncDuration || userConfig.liveSyncDurationCount || targetLatency === 0) {\n targetLatency = liveSyncDuration !== undefined ? liveSyncDuration : liveSyncDurationCount * targetduration;\n }\n const maxLiveSyncOnStallIncrease = targetduration;\n const liveSyncOnStallIncrease = 1.0;\n return targetLatency + Math.min(this.stallCount * liveSyncOnStallIncrease, maxLiveSyncOnStallIncrease);\n }\n get liveSyncPosition() {\n const liveEdge = this.estimateLiveEdge();\n const targetLatency = this.targetLatency;\n const levelDetails = this.levelDetails;\n if (liveEdge === null || targetLatency === null || levelDetails === null) {\n return null;\n }\n const edge = levelDetails.edge;\n const syncPosition = liveEdge - targetLatency - this.edgeStalled;\n const min = edge - levelDetails.totalduration;\n const max = edge - (this.config.lowLatencyMode && levelDetails.partTarget || levelDetails.targetduration);\n return Math.min(Math.max(min, syncPosition), max);\n }\n get drift() {\n const {\n levelDetails\n } = this;\n if (levelDetails === null) {\n return 1;\n }\n return levelDetails.drift;\n }\n get edgeStalled() {\n const {\n levelDetails\n } = this;\n if (levelDetails === null) {\n return 0;\n }\n const maxLevelUpdateAge = (this.config.lowLatencyMode && levelDetails.partTarget || levelDetails.targetduration) * 3;\n return Math.max(levelDetails.age - maxLevelUpdateAge, 0);\n }\n get forwardBufferLength() {\n const {\n media,\n levelDetails\n } = this;\n if (!media || !levelDetails) {\n return 0;\n }\n const bufferedRanges = media.buffered.length;\n return (bufferedRanges ? media.buffered.end(bufferedRanges - 1) : levelDetails.edge) - this.currentTime;\n }\n destroy() {\n this.unregisterListeners();\n this.onMediaDetaching();\n this.levelDetails = null;\n // @ts-ignore\n this.hls = this.timeupdateHandler = null;\n }\n registerListeners() {\n this.hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n this.hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n this.hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n this.hls.on(Events.LEVEL_UPDATED, this.onLevelUpdated, this);\n this.hls.on(Events.ERROR, this.onError, this);\n }\n unregisterListeners() {\n this.hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n this.hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n this.hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n this.hls.off(Events.LEVEL_UPDATED, this.onLevelUpdated, this);\n this.hls.off(Events.ERROR, this.onError, this);\n }\n onMediaAttached(event, data) {\n this.media = data.media;\n this.media.addEventListener('timeupdate', this.timeupdateHandler);\n }\n onMediaDetaching() {\n if (this.media) {\n this.media.removeEventListener('timeupdate', this.timeupdateHandler);\n this.media = null;\n }\n }\n onManifestLoading() {\n this.levelDetails = null;\n this._latency = null;\n this.stallCount = 0;\n }\n onLevelUpdated(event, {\n details\n }) {\n this.levelDetails = details;\n if (details.advanced) {\n this.timeupdate();\n }\n if (!details.live && this.media) {\n this.media.removeEventListener('timeupdate', this.timeupdateHandler);\n }\n }\n onError(event, data) {\n var _this$levelDetails;\n if (data.details !== ErrorDetails.BUFFER_STALLED_ERROR) {\n return;\n }\n this.stallCount++;\n if ((_this$levelDetails = this.levelDetails) != null && _this$levelDetails.live) {\n logger.warn('[playback-rate-controller]: Stall detected, adjusting target latency');\n }\n }\n timeupdate() {\n const {\n media,\n levelDetails\n } = this;\n if (!media || !levelDetails) {\n return;\n }\n this.currentTime = media.currentTime;\n const latency = this.computeLatency();\n if (latency === null) {\n return;\n }\n this._latency = latency;\n\n // Adapt playbackRate to meet target latency in low-latency mode\n const {\n lowLatencyMode,\n maxLiveSyncPlaybackRate\n } = this.config;\n if (!lowLatencyMode || maxLiveSyncPlaybackRate === 1 || !levelDetails.live) {\n return;\n }\n const targetLatency = this.targetLatency;\n if (targetLatency === null) {\n return;\n }\n const distanceFromTarget = latency - targetLatency;\n // Only adjust playbackRate when within one target duration of targetLatency\n // and more than one second from under-buffering.\n // Playback further than one target duration from target can be considered DVR playback.\n const liveMinLatencyDuration = Math.min(this.maxLatency, targetLatency + levelDetails.targetduration);\n const inLiveRange = distanceFromTarget < liveMinLatencyDuration;\n if (inLiveRange && distanceFromTarget > 0.05 && this.forwardBufferLength > 1) {\n const max = Math.min(2, Math.max(1.0, maxLiveSyncPlaybackRate));\n const rate = Math.round(2 / (1 + Math.exp(-0.75 * distanceFromTarget - this.edgeStalled)) * 20) / 20;\n media.playbackRate = Math.min(max, Math.max(1, rate));\n } else if (media.playbackRate !== 1 && media.playbackRate !== 0) {\n media.playbackRate = 1;\n }\n }\n estimateLiveEdge() {\n const {\n levelDetails\n } = this;\n if (levelDetails === null) {\n return null;\n }\n return levelDetails.edge + levelDetails.age;\n }\n computeLatency() {\n const liveEdge = this.estimateLiveEdge();\n if (liveEdge === null) {\n return null;\n }\n return liveEdge - this.currentTime;\n }\n}\n\nconst HdcpLevels = ['NONE', 'TYPE-0', 'TYPE-1', null];\nfunction isHdcpLevel(value) {\n return HdcpLevels.indexOf(value) > -1;\n}\nconst VideoRangeValues = ['SDR', 'PQ', 'HLG'];\nfunction isVideoRange(value) {\n return !!value && VideoRangeValues.indexOf(value) > -1;\n}\nvar HlsSkip = {\n No: \"\",\n Yes: \"YES\",\n v2: \"v2\"\n};\nfunction getSkipValue(details) {\n const {\n canSkipUntil,\n canSkipDateRanges,\n age\n } = details;\n // A Client SHOULD NOT request a Playlist Delta Update unless it already\n // has a version of the Playlist that is no older than one-half of the Skip Boundary.\n // @see: https://datatracker.ietf.org/doc/html/draft-pantos-hls-rfc8216bis#section-6.3.7\n const playlistRecentEnough = age < canSkipUntil / 2;\n if (canSkipUntil && playlistRecentEnough) {\n if (canSkipDateRanges) {\n return HlsSkip.v2;\n }\n return HlsSkip.Yes;\n }\n return HlsSkip.No;\n}\nclass HlsUrlParameters {\n constructor(msn, part, skip) {\n this.msn = void 0;\n this.part = void 0;\n this.skip = void 0;\n this.msn = msn;\n this.part = part;\n this.skip = skip;\n }\n addDirectives(uri) {\n const url = new self.URL(uri);\n if (this.msn !== undefined) {\n url.searchParams.set('_HLS_msn', this.msn.toString());\n }\n if (this.part !== undefined) {\n url.searchParams.set('_HLS_part', this.part.toString());\n }\n if (this.skip) {\n url.searchParams.set('_HLS_skip', this.skip);\n }\n return url.href;\n }\n}\nclass Level {\n constructor(data) {\n this._attrs = void 0;\n this.audioCodec = void 0;\n this.bitrate = void 0;\n this.codecSet = void 0;\n this.url = void 0;\n this.frameRate = void 0;\n this.height = void 0;\n this.id = void 0;\n this.name = void 0;\n this.videoCodec = void 0;\n this.width = void 0;\n this.details = void 0;\n this.fragmentError = 0;\n this.loadError = 0;\n this.loaded = void 0;\n this.realBitrate = 0;\n this.supportedPromise = void 0;\n this.supportedResult = void 0;\n this._avgBitrate = 0;\n this._audioGroups = void 0;\n this._subtitleGroups = void 0;\n // Deprecated (retained for backwards compatibility)\n this._urlId = 0;\n this.url = [data.url];\n this._attrs = [data.attrs];\n this.bitrate = data.bitrate;\n if (data.details) {\n this.details = data.details;\n }\n this.id = data.id || 0;\n this.name = data.name;\n this.width = data.width || 0;\n this.height = data.height || 0;\n this.frameRate = data.attrs.optionalFloat('FRAME-RATE', 0);\n this._avgBitrate = data.attrs.decimalInteger('AVERAGE-BANDWIDTH');\n this.audioCodec = data.audioCodec;\n this.videoCodec = data.videoCodec;\n this.codecSet = [data.videoCodec, data.audioCodec].filter(c => !!c).map(s => s.substring(0, 4)).join(',');\n this.addGroupId('audio', data.attrs.AUDIO);\n this.addGroupId('text', data.attrs.SUBTITLES);\n }\n get maxBitrate() {\n return Math.max(this.realBitrate, this.bitrate);\n }\n get averageBitrate() {\n return this._avgBitrate || this.realBitrate || this.bitrate;\n }\n get attrs() {\n return this._attrs[0];\n }\n get codecs() {\n return this.attrs.CODECS || '';\n }\n get pathwayId() {\n return this.attrs['PATHWAY-ID'] || '.';\n }\n get videoRange() {\n return this.attrs['VIDEO-RANGE'] || 'SDR';\n }\n get score() {\n return this.attrs.optionalFloat('SCORE', 0);\n }\n get uri() {\n return this.url[0] || '';\n }\n hasAudioGroup(groupId) {\n return hasGroup(this._audioGroups, groupId);\n }\n hasSubtitleGroup(groupId) {\n return hasGroup(this._subtitleGroups, groupId);\n }\n get audioGroups() {\n return this._audioGroups;\n }\n get subtitleGroups() {\n return this._subtitleGroups;\n }\n addGroupId(type, groupId) {\n if (!groupId) {\n return;\n }\n if (type === 'audio') {\n let audioGroups = this._audioGroups;\n if (!audioGroups) {\n audioGroups = this._audioGroups = [];\n }\n if (audioGroups.indexOf(groupId) === -1) {\n audioGroups.push(groupId);\n }\n } else if (type === 'text') {\n let subtitleGroups = this._subtitleGroups;\n if (!subtitleGroups) {\n subtitleGroups = this._subtitleGroups = [];\n }\n if (subtitleGroups.indexOf(groupId) === -1) {\n subtitleGroups.push(groupId);\n }\n }\n }\n\n // Deprecated methods (retained for backwards compatibility)\n get urlId() {\n return 0;\n }\n set urlId(value) {}\n get audioGroupIds() {\n return this.audioGroups ? [this.audioGroupId] : undefined;\n }\n get textGroupIds() {\n return this.subtitleGroups ? [this.textGroupId] : undefined;\n }\n get audioGroupId() {\n var _this$audioGroups;\n return (_this$audioGroups = this.audioGroups) == null ? void 0 : _this$audioGroups[0];\n }\n get textGroupId() {\n var _this$subtitleGroups;\n return (_this$subtitleGroups = this.subtitleGroups) == null ? void 0 : _this$subtitleGroups[0];\n }\n addFallback() {}\n}\nfunction hasGroup(groups, groupId) {\n if (!groupId || !groups) {\n return false;\n }\n return groups.indexOf(groupId) !== -1;\n}\n\nfunction updateFromToPTS(fragFrom, fragTo) {\n const fragToPTS = fragTo.startPTS;\n // if we know startPTS[toIdx]\n if (isFiniteNumber(fragToPTS)) {\n // update fragment duration.\n // it helps to fix drifts between playlist reported duration and fragment real duration\n let duration = 0;\n let frag;\n if (fragTo.sn > fragFrom.sn) {\n duration = fragToPTS - fragFrom.start;\n frag = fragFrom;\n } else {\n duration = fragFrom.start - fragToPTS;\n frag = fragTo;\n }\n if (frag.duration !== duration) {\n frag.duration = duration;\n }\n // we dont know startPTS[toIdx]\n } else if (fragTo.sn > fragFrom.sn) {\n const contiguous = fragFrom.cc === fragTo.cc;\n // TODO: With part-loading end/durations we need to confirm the whole fragment is loaded before using (or setting) minEndPTS\n if (contiguous && fragFrom.minEndPTS) {\n fragTo.start = fragFrom.start + (fragFrom.minEndPTS - fragFrom.start);\n } else {\n fragTo.start = fragFrom.start + fragFrom.duration;\n }\n } else {\n fragTo.start = Math.max(fragFrom.start - fragTo.duration, 0);\n }\n}\nfunction updateFragPTSDTS(details, frag, startPTS, endPTS, startDTS, endDTS) {\n const parsedMediaDuration = endPTS - startPTS;\n if (parsedMediaDuration <= 0) {\n logger.warn('Fragment should have a positive duration', frag);\n endPTS = startPTS + frag.duration;\n endDTS = startDTS + frag.duration;\n }\n let maxStartPTS = startPTS;\n let minEndPTS = endPTS;\n const fragStartPts = frag.startPTS;\n const fragEndPts = frag.endPTS;\n if (isFiniteNumber(fragStartPts)) {\n // delta PTS between audio and video\n const deltaPTS = Math.abs(fragStartPts - startPTS);\n if (!isFiniteNumber(frag.deltaPTS)) {\n frag.deltaPTS = deltaPTS;\n } else {\n frag.deltaPTS = Math.max(deltaPTS, frag.deltaPTS);\n }\n maxStartPTS = Math.max(startPTS, fragStartPts);\n startPTS = Math.min(startPTS, fragStartPts);\n startDTS = Math.min(startDTS, frag.startDTS);\n minEndPTS = Math.min(endPTS, fragEndPts);\n endPTS = Math.max(endPTS, fragEndPts);\n endDTS = Math.max(endDTS, frag.endDTS);\n }\n const drift = startPTS - frag.start;\n if (frag.start !== 0) {\n frag.start = startPTS;\n }\n frag.duration = endPTS - frag.start;\n frag.startPTS = startPTS;\n frag.maxStartPTS = maxStartPTS;\n frag.startDTS = startDTS;\n frag.endPTS = endPTS;\n frag.minEndPTS = minEndPTS;\n frag.endDTS = endDTS;\n const sn = frag.sn; // 'initSegment'\n // exit if sn out of range\n if (!details || sn < details.startSN || sn > details.endSN) {\n return 0;\n }\n let i;\n const fragIdx = sn - details.startSN;\n const fragments = details.fragments;\n // update frag reference in fragments array\n // rationale is that fragments array might not contain this frag object.\n // this will happen if playlist has been refreshed between frag loading and call to updateFragPTSDTS()\n // if we don't update frag, we won't be able to propagate PTS info on the playlist\n // resulting in invalid sliding computation\n fragments[fragIdx] = frag;\n // adjust fragment PTS/duration from seqnum-1 to frag 0\n for (i = fragIdx; i > 0; i--) {\n updateFromToPTS(fragments[i], fragments[i - 1]);\n }\n\n // adjust fragment PTS/duration from seqnum to last frag\n for (i = fragIdx; i < fragments.length - 1; i++) {\n updateFromToPTS(fragments[i], fragments[i + 1]);\n }\n if (details.fragmentHint) {\n updateFromToPTS(fragments[fragments.length - 1], details.fragmentHint);\n }\n details.PTSKnown = details.alignedSliding = true;\n return drift;\n}\nfunction mergeDetails(oldDetails, newDetails) {\n // Track the last initSegment processed. Initialize it to the last one on the timeline.\n let currentInitSegment = null;\n const oldFragments = oldDetails.fragments;\n for (let i = oldFragments.length - 1; i >= 0; i--) {\n const oldInit = oldFragments[i].initSegment;\n if (oldInit) {\n currentInitSegment = oldInit;\n break;\n }\n }\n if (oldDetails.fragmentHint) {\n // prevent PTS and duration from being adjusted on the next hint\n delete oldDetails.fragmentHint.endPTS;\n }\n // check if old/new playlists have fragments in common\n // loop through overlapping SN and update startPTS , cc, and duration if any found\n let ccOffset = 0;\n let PTSFrag;\n mapFragmentIntersection(oldDetails, newDetails, (oldFrag, newFrag) => {\n if (oldFrag.relurl) {\n // Do not compare CC if the old fragment has no url. This is a level.fragmentHint used by LL-HLS parts.\n // It maybe be off by 1 if it was created before any parts or discontinuity tags were appended to the end\n // of the playlist.\n ccOffset = oldFrag.cc - newFrag.cc;\n }\n if (isFiniteNumber(oldFrag.startPTS) && isFiniteNumber(oldFrag.endPTS)) {\n newFrag.start = newFrag.startPTS = oldFrag.startPTS;\n newFrag.startDTS = oldFrag.startDTS;\n newFrag.maxStartPTS = oldFrag.maxStartPTS;\n newFrag.endPTS = oldFrag.endPTS;\n newFrag.endDTS = oldFrag.endDTS;\n newFrag.minEndPTS = oldFrag.minEndPTS;\n newFrag.duration = oldFrag.endPTS - oldFrag.startPTS;\n if (newFrag.duration) {\n PTSFrag = newFrag;\n }\n\n // PTS is known when any segment has startPTS and endPTS\n newDetails.PTSKnown = newDetails.alignedSliding = true;\n }\n newFrag.elementaryStreams = oldFrag.elementaryStreams;\n newFrag.loader = oldFrag.loader;\n newFrag.stats = oldFrag.stats;\n if (oldFrag.initSegment) {\n newFrag.initSegment = oldFrag.initSegment;\n currentInitSegment = oldFrag.initSegment;\n }\n });\n if (currentInitSegment) {\n const fragmentsToCheck = newDetails.fragmentHint ? newDetails.fragments.concat(newDetails.fragmentHint) : newDetails.fragments;\n fragmentsToCheck.forEach(frag => {\n var _currentInitSegment;\n if (frag && (!frag.initSegment || frag.initSegment.relurl === ((_currentInitSegment = currentInitSegment) == null ? void 0 : _currentInitSegment.relurl))) {\n frag.initSegment = currentInitSegment;\n }\n });\n }\n if (newDetails.skippedSegments) {\n newDetails.deltaUpdateFailed = newDetails.fragments.some(frag => !frag);\n if (newDetails.deltaUpdateFailed) {\n logger.warn('[level-helper] Previous playlist missing segments skipped in delta playlist');\n for (let i = newDetails.skippedSegments; i--;) {\n newDetails.fragments.shift();\n }\n newDetails.startSN = newDetails.fragments[0].sn;\n newDetails.startCC = newDetails.fragments[0].cc;\n } else if (newDetails.canSkipDateRanges) {\n newDetails.dateRanges = mergeDateRanges(oldDetails.dateRanges, newDetails.dateRanges, newDetails.recentlyRemovedDateranges);\n }\n }\n const newFragments = newDetails.fragments;\n if (ccOffset) {\n logger.warn('discontinuity sliding from playlist, take drift into account');\n for (let i = 0; i < newFragments.length; i++) {\n newFragments[i].cc += ccOffset;\n }\n }\n if (newDetails.skippedSegments) {\n newDetails.startCC = newDetails.fragments[0].cc;\n }\n\n // Merge parts\n mapPartIntersection(oldDetails.partList, newDetails.partList, (oldPart, newPart) => {\n newPart.elementaryStreams = oldPart.elementaryStreams;\n newPart.stats = oldPart.stats;\n });\n\n // if at least one fragment contains PTS info, recompute PTS information for all fragments\n if (PTSFrag) {\n updateFragPTSDTS(newDetails, PTSFrag, PTSFrag.startPTS, PTSFrag.endPTS, PTSFrag.startDTS, PTSFrag.endDTS);\n } else {\n // ensure that delta is within oldFragments range\n // also adjust sliding in case delta is 0 (we could have old=[50-60] and new=old=[50-61])\n // in that case we also need to adjust start offset of all fragments\n adjustSliding(oldDetails, newDetails);\n }\n if (newFragments.length) {\n newDetails.totalduration = newDetails.edge - newFragments[0].start;\n }\n newDetails.driftStartTime = oldDetails.driftStartTime;\n newDetails.driftStart = oldDetails.driftStart;\n const advancedDateTime = newDetails.advancedDateTime;\n if (newDetails.advanced && advancedDateTime) {\n const edge = newDetails.edge;\n if (!newDetails.driftStart) {\n newDetails.driftStartTime = advancedDateTime;\n newDetails.driftStart = edge;\n }\n newDetails.driftEndTime = advancedDateTime;\n newDetails.driftEnd = edge;\n } else {\n newDetails.driftEndTime = oldDetails.driftEndTime;\n newDetails.driftEnd = oldDetails.driftEnd;\n newDetails.advancedDateTime = oldDetails.advancedDateTime;\n }\n}\nfunction mergeDateRanges(oldDateRanges, deltaDateRanges, recentlyRemovedDateranges) {\n const dateRanges = _extends({}, oldDateRanges);\n if (recentlyRemovedDateranges) {\n recentlyRemovedDateranges.forEach(id => {\n delete dateRanges[id];\n });\n }\n Object.keys(deltaDateRanges).forEach(id => {\n const dateRange = new DateRange(deltaDateRanges[id].attr, dateRanges[id]);\n if (dateRange.isValid) {\n dateRanges[id] = dateRange;\n } else {\n logger.warn(`Ignoring invalid Playlist Delta Update DATERANGE tag: \"${JSON.stringify(deltaDateRanges[id].attr)}\"`);\n }\n });\n return dateRanges;\n}\nfunction mapPartIntersection(oldParts, newParts, intersectionFn) {\n if (oldParts && newParts) {\n let delta = 0;\n for (let i = 0, len = oldParts.length; i <= len; i++) {\n const oldPart = oldParts[i];\n const newPart = newParts[i + delta];\n if (oldPart && newPart && oldPart.index === newPart.index && oldPart.fragment.sn === newPart.fragment.sn) {\n intersectionFn(oldPart, newPart);\n } else {\n delta--;\n }\n }\n }\n}\nfunction mapFragmentIntersection(oldDetails, newDetails, intersectionFn) {\n const skippedSegments = newDetails.skippedSegments;\n const start = Math.max(oldDetails.startSN, newDetails.startSN) - newDetails.startSN;\n const end = (oldDetails.fragmentHint ? 1 : 0) + (skippedSegments ? newDetails.endSN : Math.min(oldDetails.endSN, newDetails.endSN)) - newDetails.startSN;\n const delta = newDetails.startSN - oldDetails.startSN;\n const newFrags = newDetails.fragmentHint ? newDetails.fragments.concat(newDetails.fragmentHint) : newDetails.fragments;\n const oldFrags = oldDetails.fragmentHint ? oldDetails.fragments.concat(oldDetails.fragmentHint) : oldDetails.fragments;\n for (let i = start; i <= end; i++) {\n const oldFrag = oldFrags[delta + i];\n let newFrag = newFrags[i];\n if (skippedSegments && !newFrag && i < skippedSegments) {\n // Fill in skipped segments in delta playlist\n newFrag = newDetails.fragments[i] = oldFrag;\n }\n if (oldFrag && newFrag) {\n intersectionFn(oldFrag, newFrag);\n }\n }\n}\nfunction adjustSliding(oldDetails, newDetails) {\n const delta = newDetails.startSN + newDetails.skippedSegments - oldDetails.startSN;\n const oldFragments = oldDetails.fragments;\n if (delta < 0 || delta >= oldFragments.length) {\n return;\n }\n addSliding(newDetails, oldFragments[delta].start);\n}\nfunction addSliding(details, start) {\n if (start) {\n const fragments = details.fragments;\n for (let i = details.skippedSegments; i < fragments.length; i++) {\n fragments[i].start += start;\n }\n if (details.fragmentHint) {\n details.fragmentHint.start += start;\n }\n }\n}\nfunction computeReloadInterval(newDetails, distanceToLiveEdgeMs = Infinity) {\n let reloadInterval = 1000 * newDetails.targetduration;\n if (newDetails.updated) {\n // Use last segment duration when shorter than target duration and near live edge\n const fragments = newDetails.fragments;\n const liveEdgeMaxTargetDurations = 4;\n if (fragments.length && reloadInterval * liveEdgeMaxTargetDurations > distanceToLiveEdgeMs) {\n const lastSegmentDuration = fragments[fragments.length - 1].duration * 1000;\n if (lastSegmentDuration < reloadInterval) {\n reloadInterval = lastSegmentDuration;\n }\n }\n } else {\n // estimate = 'miss half average';\n // follow HLS Spec, If the client reloads a Playlist file and finds that it has not\n // changed then it MUST wait for a period of one-half the target\n // duration before retrying.\n reloadInterval /= 2;\n }\n return Math.round(reloadInterval);\n}\nfunction getFragmentWithSN(level, sn, fragCurrent) {\n if (!(level != null && level.details)) {\n return null;\n }\n const levelDetails = level.details;\n let fragment = levelDetails.fragments[sn - levelDetails.startSN];\n if (fragment) {\n return fragment;\n }\n fragment = levelDetails.fragmentHint;\n if (fragment && fragment.sn === sn) {\n return fragment;\n }\n if (sn < levelDetails.startSN && fragCurrent && fragCurrent.sn === sn) {\n return fragCurrent;\n }\n return null;\n}\nfunction getPartWith(level, sn, partIndex) {\n var _level$details;\n if (!(level != null && level.details)) {\n return null;\n }\n return findPart((_level$details = level.details) == null ? void 0 : _level$details.partList, sn, partIndex);\n}\nfunction findPart(partList, sn, partIndex) {\n if (partList) {\n for (let i = partList.length; i--;) {\n const part = partList[i];\n if (part.index === partIndex && part.fragment.sn === sn) {\n return part;\n }\n }\n }\n return null;\n}\nfunction reassignFragmentLevelIndexes(levels) {\n levels.forEach((level, index) => {\n const {\n details\n } = level;\n if (details != null && details.fragments) {\n details.fragments.forEach(fragment => {\n fragment.level = index;\n });\n }\n });\n}\n\nfunction isTimeoutError(error) {\n switch (error.details) {\n case ErrorDetails.FRAG_LOAD_TIMEOUT:\n case ErrorDetails.KEY_LOAD_TIMEOUT:\n case ErrorDetails.LEVEL_LOAD_TIMEOUT:\n case ErrorDetails.MANIFEST_LOAD_TIMEOUT:\n return true;\n }\n return false;\n}\nfunction getRetryConfig(loadPolicy, error) {\n const isTimeout = isTimeoutError(error);\n return loadPolicy.default[`${isTimeout ? 'timeout' : 'error'}Retry`];\n}\nfunction getRetryDelay(retryConfig, retryCount) {\n // exponential backoff capped to max retry delay\n const backoffFactor = retryConfig.backoff === 'linear' ? 1 : Math.pow(2, retryCount);\n return Math.min(backoffFactor * retryConfig.retryDelayMs, retryConfig.maxRetryDelayMs);\n}\nfunction getLoaderConfigWithoutReties(loderConfig) {\n return _objectSpread2(_objectSpread2({}, loderConfig), {\n errorRetry: null,\n timeoutRetry: null\n });\n}\nfunction shouldRetry(retryConfig, retryCount, isTimeout, loaderResponse) {\n if (!retryConfig) {\n return false;\n }\n const httpStatus = loaderResponse == null ? void 0 : loaderResponse.code;\n const retry = retryCount < retryConfig.maxNumRetry && (retryForHttpStatus(httpStatus) || !!isTimeout);\n return retryConfig.shouldRetry ? retryConfig.shouldRetry(retryConfig, retryCount, isTimeout, loaderResponse, retry) : retry;\n}\nfunction retryForHttpStatus(httpStatus) {\n // Do not retry on status 4xx, status 0 (CORS error), or undefined (decrypt/gap/parse error)\n return httpStatus === 0 && navigator.onLine === false || !!httpStatus && (httpStatus < 400 || httpStatus > 499);\n}\n\nconst BinarySearch = {\n /**\n * Searches for an item in an array which matches a certain condition.\n * This requires the condition to only match one item in the array,\n * and for the array to be ordered.\n *\n * @param list The array to search.\n * @param comparisonFn\n * Called and provided a candidate item as the first argument.\n * Should return:\n * > -1 if the item should be located at a lower index than the provided item.\n * > 1 if the item should be located at a higher index than the provided item.\n * > 0 if the item is the item you're looking for.\n *\n * @returns the object if found, otherwise returns null\n */\n search: function (list, comparisonFn) {\n let minIndex = 0;\n let maxIndex = list.length - 1;\n let currentIndex = null;\n let currentElement = null;\n while (minIndex <= maxIndex) {\n currentIndex = (minIndex + maxIndex) / 2 | 0;\n currentElement = list[currentIndex];\n const comparisonResult = comparisonFn(currentElement);\n if (comparisonResult > 0) {\n minIndex = currentIndex + 1;\n } else if (comparisonResult < 0) {\n maxIndex = currentIndex - 1;\n } else {\n return currentElement;\n }\n }\n return null;\n }\n};\n\n/**\n * Returns first fragment whose endPdt value exceeds the given PDT, or null.\n * @param fragments - The array of candidate fragments\n * @param PDTValue - The PDT value which must be exceeded\n * @param maxFragLookUpTolerance - The amount of time that a fragment's start/end can be within in order to be considered contiguous\n */\nfunction findFragmentByPDT(fragments, PDTValue, maxFragLookUpTolerance) {\n if (PDTValue === null || !Array.isArray(fragments) || !fragments.length || !isFiniteNumber(PDTValue)) {\n return null;\n }\n\n // if less than start\n const startPDT = fragments[0].programDateTime;\n if (PDTValue < (startPDT || 0)) {\n return null;\n }\n const endPDT = fragments[fragments.length - 1].endProgramDateTime;\n if (PDTValue >= (endPDT || 0)) {\n return null;\n }\n maxFragLookUpTolerance = maxFragLookUpTolerance || 0;\n for (let seg = 0; seg < fragments.length; ++seg) {\n const frag = fragments[seg];\n if (pdtWithinToleranceTest(PDTValue, maxFragLookUpTolerance, frag)) {\n return frag;\n }\n }\n return null;\n}\n\n/**\n * Finds a fragment based on the SN of the previous fragment; or based on the needs of the current buffer.\n * This method compensates for small buffer gaps by applying a tolerance to the start of any candidate fragment, thus\n * breaking any traps which would cause the same fragment to be continuously selected within a small range.\n * @param fragPrevious - The last frag successfully appended\n * @param fragments - The array of candidate fragments\n * @param bufferEnd - The end of the contiguous buffered range the playhead is currently within\n * @param maxFragLookUpTolerance - The amount of time that a fragment's start/end can be within in order to be considered contiguous\n * @returns a matching fragment or null\n */\nfunction findFragmentByPTS(fragPrevious, fragments, bufferEnd = 0, maxFragLookUpTolerance = 0, nextFragLookupTolerance = 0.005) {\n let fragNext = null;\n if (fragPrevious) {\n fragNext = fragments[fragPrevious.sn - fragments[0].sn + 1] || null;\n // check for buffer-end rounding error\n const bufferEdgeError = fragPrevious.endDTS - bufferEnd;\n if (bufferEdgeError > 0 && bufferEdgeError < 0.0000015) {\n bufferEnd += 0.0000015;\n }\n } else if (bufferEnd === 0 && fragments[0].start === 0) {\n fragNext = fragments[0];\n }\n // Prefer the next fragment if it's within tolerance\n if (fragNext && ((!fragPrevious || fragPrevious.level === fragNext.level) && fragmentWithinToleranceTest(bufferEnd, maxFragLookUpTolerance, fragNext) === 0 || fragmentWithinFastStartSwitch(fragNext, fragPrevious, Math.min(nextFragLookupTolerance, maxFragLookUpTolerance)))) {\n return fragNext;\n }\n // We might be seeking past the tolerance so find the best match\n const foundFragment = BinarySearch.search(fragments, fragmentWithinToleranceTest.bind(null, bufferEnd, maxFragLookUpTolerance));\n if (foundFragment && (foundFragment !== fragPrevious || !fragNext)) {\n return foundFragment;\n }\n // If no match was found return the next fragment after fragPrevious, or null\n return fragNext;\n}\nfunction fragmentWithinFastStartSwitch(fragNext, fragPrevious, nextFragLookupTolerance) {\n if (fragPrevious && fragPrevious.start === 0 && fragPrevious.level < fragNext.level && (fragPrevious.endPTS || 0) > 0) {\n const firstDuration = fragPrevious.tagList.reduce((duration, tag) => {\n if (tag[0] === 'INF') {\n duration += parseFloat(tag[1]);\n }\n return duration;\n }, nextFragLookupTolerance);\n return fragNext.start <= firstDuration;\n }\n return false;\n}\n\n/**\n * The test function used by the findFragmentBySn's BinarySearch to look for the best match to the current buffer conditions.\n * @param candidate - The fragment to test\n * @param bufferEnd - The end of the current buffered range the playhead is currently within\n * @param maxFragLookUpTolerance - The amount of time that a fragment's start can be within in order to be considered contiguous\n * @returns 0 if it matches, 1 if too low, -1 if too high\n */\nfunction fragmentWithinToleranceTest(bufferEnd = 0, maxFragLookUpTolerance = 0, candidate) {\n // eagerly accept an accurate match (no tolerance)\n if (candidate.start <= bufferEnd && candidate.start + candidate.duration > bufferEnd) {\n return 0;\n }\n // offset should be within fragment boundary - config.maxFragLookUpTolerance\n // this is to cope with situations like\n // bufferEnd = 9.991\n // frag[Ø] : [0,10]\n // frag[1] : [10,20]\n // bufferEnd is within frag[0] range ... although what we are expecting is to return frag[1] here\n // frag start frag start+duration\n // |-----------------------------|\n // <---> <--->\n // ...--------><-----------------------------><---------....\n // previous frag matching fragment next frag\n // return -1 return 0 return 1\n // logger.log(`level/sn/start/end/bufEnd:${level}/${candidate.sn}/${candidate.start}/${(candidate.start+candidate.duration)}/${bufferEnd}`);\n // Set the lookup tolerance to be small enough to detect the current segment - ensures we don't skip over very small segments\n const candidateLookupTolerance = Math.min(maxFragLookUpTolerance, candidate.duration + (candidate.deltaPTS ? candidate.deltaPTS : 0));\n if (candidate.start + candidate.duration - candidateLookupTolerance <= bufferEnd) {\n return 1;\n } else if (candidate.start - candidateLookupTolerance > bufferEnd && candidate.start) {\n // if maxFragLookUpTolerance will have negative value then don't return -1 for first element\n return -1;\n }\n return 0;\n}\n\n/**\n * The test function used by the findFragmentByPdt's BinarySearch to look for the best match to the current buffer conditions.\n * This function tests the candidate's program date time values, as represented in Unix time\n * @param candidate - The fragment to test\n * @param pdtBufferEnd - The Unix time representing the end of the current buffered range\n * @param maxFragLookUpTolerance - The amount of time that a fragment's start can be within in order to be considered contiguous\n * @returns true if contiguous, false otherwise\n */\nfunction pdtWithinToleranceTest(pdtBufferEnd, maxFragLookUpTolerance, candidate) {\n const candidateLookupTolerance = Math.min(maxFragLookUpTolerance, candidate.duration + (candidate.deltaPTS ? candidate.deltaPTS : 0)) * 1000;\n\n // endProgramDateTime can be null, default to zero\n const endProgramDateTime = candidate.endProgramDateTime || 0;\n return endProgramDateTime - candidateLookupTolerance > pdtBufferEnd;\n}\nfunction findFragWithCC(fragments, cc) {\n return BinarySearch.search(fragments, candidate => {\n if (candidate.cc < cc) {\n return 1;\n } else if (candidate.cc > cc) {\n return -1;\n } else {\n return 0;\n }\n });\n}\n\nvar NetworkErrorAction = {\n DoNothing: 0,\n SendEndCallback: 1,\n SendAlternateToPenaltyBox: 2,\n RemoveAlternatePermanently: 3,\n InsertDiscontinuity: 4,\n RetryRequest: 5\n};\nvar ErrorActionFlags = {\n None: 0,\n MoveAllAlternatesMatchingHost: 1,\n MoveAllAlternatesMatchingHDCP: 2,\n SwitchToSDR: 4\n}; // Reserved for future use\nclass ErrorController {\n constructor(hls) {\n this.hls = void 0;\n this.playlistError = 0;\n this.penalizedRenditions = {};\n this.log = void 0;\n this.warn = void 0;\n this.error = void 0;\n this.hls = hls;\n this.log = logger.log.bind(logger, `[info]:`);\n this.warn = logger.warn.bind(logger, `[warning]:`);\n this.error = logger.error.bind(logger, `[error]:`);\n this.registerListeners();\n }\n registerListeners() {\n const hls = this.hls;\n hls.on(Events.ERROR, this.onError, this);\n hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(Events.LEVEL_UPDATED, this.onLevelUpdated, this);\n }\n unregisterListeners() {\n const hls = this.hls;\n if (!hls) {\n return;\n }\n hls.off(Events.ERROR, this.onError, this);\n hls.off(Events.ERROR, this.onErrorOut, this);\n hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(Events.LEVEL_UPDATED, this.onLevelUpdated, this);\n }\n destroy() {\n this.unregisterListeners();\n // @ts-ignore\n this.hls = null;\n this.penalizedRenditions = {};\n }\n startLoad(startPosition) {}\n stopLoad() {\n this.playlistError = 0;\n }\n getVariantLevelIndex(frag) {\n return (frag == null ? void 0 : frag.type) === PlaylistLevelType.MAIN ? frag.level : this.hls.loadLevel;\n }\n onManifestLoading() {\n this.playlistError = 0;\n this.penalizedRenditions = {};\n }\n onLevelUpdated() {\n this.playlistError = 0;\n }\n onError(event, data) {\n var _data$frag, _data$level;\n if (data.fatal) {\n return;\n }\n const hls = this.hls;\n const context = data.context;\n switch (data.details) {\n case ErrorDetails.FRAG_LOAD_ERROR:\n case ErrorDetails.FRAG_LOAD_TIMEOUT:\n case ErrorDetails.KEY_LOAD_ERROR:\n case ErrorDetails.KEY_LOAD_TIMEOUT:\n data.errorAction = this.getFragRetryOrSwitchAction(data);\n return;\n case ErrorDetails.FRAG_PARSING_ERROR:\n // ignore empty segment errors marked as gap\n if ((_data$frag = data.frag) != null && _data$frag.gap) {\n data.errorAction = {\n action: NetworkErrorAction.DoNothing,\n flags: ErrorActionFlags.None\n };\n return;\n }\n // falls through\n case ErrorDetails.FRAG_GAP:\n case ErrorDetails.FRAG_DECRYPT_ERROR:\n {\n // Switch level if possible, otherwise allow retry count to reach max error retries\n data.errorAction = this.getFragRetryOrSwitchAction(data);\n data.errorAction.action = NetworkErrorAction.SendAlternateToPenaltyBox;\n return;\n }\n case ErrorDetails.LEVEL_EMPTY_ERROR:\n case ErrorDetails.LEVEL_PARSING_ERROR:\n {\n var _data$context, _data$context$levelDe;\n // Only retry when empty and live\n const levelIndex = data.parent === PlaylistLevelType.MAIN ? data.level : hls.loadLevel;\n if (data.details === ErrorDetails.LEVEL_EMPTY_ERROR && !!((_data$context = data.context) != null && (_data$context$levelDe = _data$context.levelDetails) != null && _data$context$levelDe.live)) {\n data.errorAction = this.getPlaylistRetryOrSwitchAction(data, levelIndex);\n } else {\n // Escalate to fatal if not retrying or switching\n data.levelRetry = false;\n data.errorAction = this.getLevelSwitchAction(data, levelIndex);\n }\n }\n return;\n case ErrorDetails.LEVEL_LOAD_ERROR:\n case ErrorDetails.LEVEL_LOAD_TIMEOUT:\n if (typeof (context == null ? void 0 : context.level) === 'number') {\n data.errorAction = this.getPlaylistRetryOrSwitchAction(data, context.level);\n }\n return;\n case ErrorDetails.AUDIO_TRACK_LOAD_ERROR:\n case ErrorDetails.AUDIO_TRACK_LOAD_TIMEOUT:\n case ErrorDetails.SUBTITLE_LOAD_ERROR:\n case ErrorDetails.SUBTITLE_TRACK_LOAD_TIMEOUT:\n if (context) {\n const level = hls.levels[hls.loadLevel];\n if (level && (context.type === PlaylistContextType.AUDIO_TRACK && level.hasAudioGroup(context.groupId) || context.type === PlaylistContextType.SUBTITLE_TRACK && level.hasSubtitleGroup(context.groupId))) {\n // Perform Pathway switch or Redundant failover if possible for fastest recovery\n // otherwise allow playlist retry count to reach max error retries\n data.errorAction = this.getPlaylistRetryOrSwitchAction(data, hls.loadLevel);\n data.errorAction.action = NetworkErrorAction.SendAlternateToPenaltyBox;\n data.errorAction.flags = ErrorActionFlags.MoveAllAlternatesMatchingHost;\n return;\n }\n }\n return;\n case ErrorDetails.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED:\n {\n const level = hls.levels[hls.loadLevel];\n const restrictedHdcpLevel = level == null ? void 0 : level.attrs['HDCP-LEVEL'];\n if (restrictedHdcpLevel) {\n data.errorAction = {\n action: NetworkErrorAction.SendAlternateToPenaltyBox,\n flags: ErrorActionFlags.MoveAllAlternatesMatchingHDCP,\n hdcpLevel: restrictedHdcpLevel\n };\n } else {\n this.keySystemError(data);\n }\n }\n return;\n case ErrorDetails.BUFFER_ADD_CODEC_ERROR:\n case ErrorDetails.REMUX_ALLOC_ERROR:\n case ErrorDetails.BUFFER_APPEND_ERROR:\n data.errorAction = this.getLevelSwitchAction(data, (_data$level = data.level) != null ? _data$level : hls.loadLevel);\n return;\n case ErrorDetails.INTERNAL_EXCEPTION:\n case ErrorDetails.BUFFER_APPENDING_ERROR:\n case ErrorDetails.BUFFER_FULL_ERROR:\n case ErrorDetails.LEVEL_SWITCH_ERROR:\n case ErrorDetails.BUFFER_STALLED_ERROR:\n case ErrorDetails.BUFFER_SEEK_OVER_HOLE:\n case ErrorDetails.BUFFER_NUDGE_ON_STALL:\n data.errorAction = {\n action: NetworkErrorAction.DoNothing,\n flags: ErrorActionFlags.None\n };\n return;\n }\n if (data.type === ErrorTypes.KEY_SYSTEM_ERROR) {\n this.keySystemError(data);\n }\n }\n keySystemError(data) {\n const levelIndex = this.getVariantLevelIndex(data.frag);\n // Do not retry level. Escalate to fatal if switching levels fails.\n data.levelRetry = false;\n data.errorAction = this.getLevelSwitchAction(data, levelIndex);\n }\n getPlaylistRetryOrSwitchAction(data, levelIndex) {\n const hls = this.hls;\n const retryConfig = getRetryConfig(hls.config.playlistLoadPolicy, data);\n const retryCount = this.playlistError++;\n const retry = shouldRetry(retryConfig, retryCount, isTimeoutError(data), data.response);\n if (retry) {\n return {\n action: NetworkErrorAction.RetryRequest,\n flags: ErrorActionFlags.None,\n retryConfig,\n retryCount\n };\n }\n const errorAction = this.getLevelSwitchAction(data, levelIndex);\n if (retryConfig) {\n errorAction.retryConfig = retryConfig;\n errorAction.retryCount = retryCount;\n }\n return errorAction;\n }\n getFragRetryOrSwitchAction(data) {\n const hls = this.hls;\n // Share fragment error count accross media options (main, audio, subs)\n // This allows for level based rendition switching when media option assets fail\n const variantLevelIndex = this.getVariantLevelIndex(data.frag);\n const level = hls.levels[variantLevelIndex];\n const {\n fragLoadPolicy,\n keyLoadPolicy\n } = hls.config;\n const retryConfig = getRetryConfig(data.details.startsWith('key') ? keyLoadPolicy : fragLoadPolicy, data);\n const fragmentErrors = hls.levels.reduce((acc, level) => acc + level.fragmentError, 0);\n // Switch levels when out of retried or level index out of bounds\n if (level) {\n if (data.details !== ErrorDetails.FRAG_GAP) {\n level.fragmentError++;\n }\n const retry = shouldRetry(retryConfig, fragmentErrors, isTimeoutError(data), data.response);\n if (retry) {\n return {\n action: NetworkErrorAction.RetryRequest,\n flags: ErrorActionFlags.None,\n retryConfig,\n retryCount: fragmentErrors\n };\n }\n }\n // Reach max retry count, or Missing level reference\n // Switch to valid index\n const errorAction = this.getLevelSwitchAction(data, variantLevelIndex);\n // Add retry details to allow skipping of FRAG_PARSING_ERROR\n if (retryConfig) {\n errorAction.retryConfig = retryConfig;\n errorAction.retryCount = fragmentErrors;\n }\n return errorAction;\n }\n getLevelSwitchAction(data, levelIndex) {\n const hls = this.hls;\n if (levelIndex === null || levelIndex === undefined) {\n levelIndex = hls.loadLevel;\n }\n const level = this.hls.levels[levelIndex];\n if (level) {\n var _data$frag2, _data$context2;\n const errorDetails = data.details;\n level.loadError++;\n if (errorDetails === ErrorDetails.BUFFER_APPEND_ERROR) {\n level.fragmentError++;\n }\n // Search for next level to retry\n let nextLevel = -1;\n const {\n levels,\n loadLevel,\n minAutoLevel,\n maxAutoLevel\n } = hls;\n if (!hls.autoLevelEnabled) {\n hls.loadLevel = -1;\n }\n const fragErrorType = (_data$frag2 = data.frag) == null ? void 0 : _data$frag2.type;\n // Find alternate audio codec if available on audio codec error\n const isAudioCodecError = fragErrorType === PlaylistLevelType.AUDIO && errorDetails === ErrorDetails.FRAG_PARSING_ERROR || data.sourceBufferName === 'audio' && (errorDetails === ErrorDetails.BUFFER_ADD_CODEC_ERROR || errorDetails === ErrorDetails.BUFFER_APPEND_ERROR);\n const findAudioCodecAlternate = isAudioCodecError && levels.some(({\n audioCodec\n }) => level.audioCodec !== audioCodec);\n // Find alternate video codec if available on video codec error\n const isVideoCodecError = data.sourceBufferName === 'video' && (errorDetails === ErrorDetails.BUFFER_ADD_CODEC_ERROR || errorDetails === ErrorDetails.BUFFER_APPEND_ERROR);\n const findVideoCodecAlternate = isVideoCodecError && levels.some(({\n codecSet,\n audioCodec\n }) => level.codecSet !== codecSet && level.audioCodec === audioCodec);\n const {\n type: playlistErrorType,\n groupId: playlistErrorGroupId\n } = (_data$context2 = data.context) != null ? _data$context2 : {};\n for (let i = levels.length; i--;) {\n const candidate = (i + loadLevel) % levels.length;\n if (candidate !== loadLevel && candidate >= minAutoLevel && candidate <= maxAutoLevel && levels[candidate].loadError === 0) {\n var _level$audioGroups, _level$subtitleGroups;\n const levelCandidate = levels[candidate];\n // Skip level switch if GAP tag is found in next level at same position\n if (errorDetails === ErrorDetails.FRAG_GAP && fragErrorType === PlaylistLevelType.MAIN && data.frag) {\n const levelDetails = levels[candidate].details;\n if (levelDetails) {\n const fragCandidate = findFragmentByPTS(data.frag, levelDetails.fragments, data.frag.start);\n if (fragCandidate != null && fragCandidate.gap) {\n continue;\n }\n }\n } else if (playlistErrorType === PlaylistContextType.AUDIO_TRACK && levelCandidate.hasAudioGroup(playlistErrorGroupId) || playlistErrorType === PlaylistContextType.SUBTITLE_TRACK && levelCandidate.hasSubtitleGroup(playlistErrorGroupId)) {\n // For audio/subs playlist errors find another group ID or fallthrough to redundant fail-over\n continue;\n } else if (fragErrorType === PlaylistLevelType.AUDIO && (_level$audioGroups = level.audioGroups) != null && _level$audioGroups.some(groupId => levelCandidate.hasAudioGroup(groupId)) || fragErrorType === PlaylistLevelType.SUBTITLE && (_level$subtitleGroups = level.subtitleGroups) != null && _level$subtitleGroups.some(groupId => levelCandidate.hasSubtitleGroup(groupId)) || findAudioCodecAlternate && level.audioCodec === levelCandidate.audioCodec || !findAudioCodecAlternate && level.audioCodec !== levelCandidate.audioCodec || findVideoCodecAlternate && level.codecSet === levelCandidate.codecSet) {\n // For video/audio/subs frag errors find another group ID or fallthrough to redundant fail-over\n continue;\n }\n nextLevel = candidate;\n break;\n }\n }\n if (nextLevel > -1 && hls.loadLevel !== nextLevel) {\n data.levelRetry = true;\n this.playlistError = 0;\n return {\n action: NetworkErrorAction.SendAlternateToPenaltyBox,\n flags: ErrorActionFlags.None,\n nextAutoLevel: nextLevel\n };\n }\n }\n // No levels to switch / Manual level selection / Level not found\n // Resolve with Pathway switch, Redundant fail-over, or stay on lowest Level\n return {\n action: NetworkErrorAction.SendAlternateToPenaltyBox,\n flags: ErrorActionFlags.MoveAllAlternatesMatchingHost\n };\n }\n onErrorOut(event, data) {\n var _data$errorAction;\n switch ((_data$errorAction = data.errorAction) == null ? void 0 : _data$errorAction.action) {\n case NetworkErrorAction.DoNothing:\n break;\n case NetworkErrorAction.SendAlternateToPenaltyBox:\n this.sendAlternateToPenaltyBox(data);\n if (!data.errorAction.resolved && data.details !== ErrorDetails.FRAG_GAP) {\n data.fatal = true;\n } else if (/MediaSource readyState: ended/.test(data.error.message)) {\n this.warn(`MediaSource ended after \"${data.sourceBufferName}\" sourceBuffer append error. Attempting to recover from media error.`);\n this.hls.recoverMediaError();\n }\n break;\n case NetworkErrorAction.RetryRequest:\n // handled by stream and playlist/level controllers\n break;\n }\n if (data.fatal) {\n this.hls.stopLoad();\n return;\n }\n }\n sendAlternateToPenaltyBox(data) {\n const hls = this.hls;\n const errorAction = data.errorAction;\n if (!errorAction) {\n return;\n }\n const {\n flags,\n hdcpLevel,\n nextAutoLevel\n } = errorAction;\n switch (flags) {\n case ErrorActionFlags.None:\n this.switchLevel(data, nextAutoLevel);\n break;\n case ErrorActionFlags.MoveAllAlternatesMatchingHDCP:\n if (hdcpLevel) {\n hls.maxHdcpLevel = HdcpLevels[HdcpLevels.indexOf(hdcpLevel) - 1];\n errorAction.resolved = true;\n }\n this.warn(`Restricting playback to HDCP-LEVEL of \"${hls.maxHdcpLevel}\" or lower`);\n break;\n }\n // If not resolved by previous actions try to switch to next level\n if (!errorAction.resolved) {\n this.switchLevel(data, nextAutoLevel);\n }\n }\n switchLevel(data, levelIndex) {\n if (levelIndex !== undefined && data.errorAction) {\n this.warn(`switching to level ${levelIndex} after ${data.details}`);\n this.hls.nextAutoLevel = levelIndex;\n data.errorAction.resolved = true;\n // Stream controller is responsible for this but won't switch on false start\n this.hls.nextLoadLevel = this.hls.nextAutoLevel;\n }\n }\n}\n\nclass BasePlaylistController {\n constructor(hls, logPrefix) {\n this.hls = void 0;\n this.timer = -1;\n this.requestScheduled = -1;\n this.canLoad = false;\n this.log = void 0;\n this.warn = void 0;\n this.log = logger.log.bind(logger, `${logPrefix}:`);\n this.warn = logger.warn.bind(logger, `${logPrefix}:`);\n this.hls = hls;\n }\n destroy() {\n this.clearTimer();\n // @ts-ignore\n this.hls = this.log = this.warn = null;\n }\n clearTimer() {\n if (this.timer !== -1) {\n self.clearTimeout(this.timer);\n this.timer = -1;\n }\n }\n startLoad() {\n this.canLoad = true;\n this.requestScheduled = -1;\n this.loadPlaylist();\n }\n stopLoad() {\n this.canLoad = false;\n this.clearTimer();\n }\n switchParams(playlistUri, previous, current) {\n const renditionReports = previous == null ? void 0 : previous.renditionReports;\n if (renditionReports) {\n let foundIndex = -1;\n for (let i = 0; i < renditionReports.length; i++) {\n const attr = renditionReports[i];\n let uri;\n try {\n uri = new self.URL(attr.URI, previous.url).href;\n } catch (error) {\n logger.warn(`Could not construct new URL for Rendition Report: ${error}`);\n uri = attr.URI || '';\n }\n // Use exact match. Otherwise, the last partial match, if any, will be used\n // (Playlist URI includes a query string that the Rendition Report does not)\n if (uri === playlistUri) {\n foundIndex = i;\n break;\n } else if (uri === playlistUri.substring(0, uri.length)) {\n foundIndex = i;\n }\n }\n if (foundIndex !== -1) {\n const attr = renditionReports[foundIndex];\n const msn = parseInt(attr['LAST-MSN']) || (previous == null ? void 0 : previous.lastPartSn);\n let part = parseInt(attr['LAST-PART']) || (previous == null ? void 0 : previous.lastPartIndex);\n if (this.hls.config.lowLatencyMode) {\n const currentGoal = Math.min(previous.age - previous.partTarget, previous.targetduration);\n if (part >= 0 && currentGoal > previous.partTarget) {\n part += 1;\n }\n }\n const skip = current && getSkipValue(current);\n return new HlsUrlParameters(msn, part >= 0 ? part : undefined, skip);\n }\n }\n }\n loadPlaylist(hlsUrlParameters) {\n if (this.requestScheduled === -1) {\n this.requestScheduled = self.performance.now();\n }\n // Loading is handled by the subclasses\n }\n shouldLoadPlaylist(playlist) {\n return this.canLoad && !!playlist && !!playlist.url && (!playlist.details || playlist.details.live);\n }\n shouldReloadPlaylist(playlist) {\n return this.timer === -1 && this.requestScheduled === -1 && this.shouldLoadPlaylist(playlist);\n }\n playlistLoaded(index, data, previousDetails) {\n const {\n details,\n stats\n } = data;\n\n // Set last updated date-time\n const now = self.performance.now();\n const elapsed = stats.loading.first ? Math.max(0, now - stats.loading.first) : 0;\n details.advancedDateTime = Date.now() - elapsed;\n\n // if current playlist is a live playlist, arm a timer to reload it\n if (details.live || previousDetails != null && previousDetails.live) {\n details.reloaded(previousDetails);\n if (previousDetails) {\n this.log(`live playlist ${index} ${details.advanced ? 'REFRESHED ' + details.lastPartSn + '-' + details.lastPartIndex : details.updated ? 'UPDATED' : 'MISSED'}`);\n }\n // Merge live playlists to adjust fragment starts and fill in delta playlist skipped segments\n if (previousDetails && details.fragments.length > 0) {\n mergeDetails(previousDetails, details);\n }\n if (!this.canLoad || !details.live) {\n return;\n }\n let deliveryDirectives;\n let msn = undefined;\n let part = undefined;\n if (details.canBlockReload && details.endSN && details.advanced) {\n // Load level with LL-HLS delivery directives\n const lowLatencyMode = this.hls.config.lowLatencyMode;\n const lastPartSn = details.lastPartSn;\n const endSn = details.endSN;\n const lastPartIndex = details.lastPartIndex;\n const hasParts = lastPartIndex !== -1;\n const lastPart = lastPartSn === endSn;\n // When low latency mode is disabled, we'll skip part requests once the last part index is found\n const nextSnStartIndex = lowLatencyMode ? 0 : lastPartIndex;\n if (hasParts) {\n msn = lastPart ? endSn + 1 : lastPartSn;\n part = lastPart ? nextSnStartIndex : lastPartIndex + 1;\n } else {\n msn = endSn + 1;\n }\n // Low-Latency CDN Tune-in: \"age\" header and time since load indicates we're behind by more than one part\n // Update directives to obtain the Playlist that has the estimated additional duration of media\n const lastAdvanced = details.age;\n const cdnAge = lastAdvanced + details.ageHeader;\n let currentGoal = Math.min(cdnAge - details.partTarget, details.targetduration * 1.5);\n if (currentGoal > 0) {\n if (previousDetails && currentGoal > previousDetails.tuneInGoal) {\n // If we attempted to get the next or latest playlist update, but currentGoal increased,\n // then we either can't catchup, or the \"age\" header cannot be trusted.\n this.warn(`CDN Tune-in goal increased from: ${previousDetails.tuneInGoal} to: ${currentGoal} with playlist age: ${details.age}`);\n currentGoal = 0;\n } else {\n const segments = Math.floor(currentGoal / details.targetduration);\n msn += segments;\n if (part !== undefined) {\n const parts = Math.round(currentGoal % details.targetduration / details.partTarget);\n part += parts;\n }\n this.log(`CDN Tune-in age: ${details.ageHeader}s last advanced ${lastAdvanced.toFixed(2)}s goal: ${currentGoal} skip sn ${segments} to part ${part}`);\n }\n details.tuneInGoal = currentGoal;\n }\n deliveryDirectives = this.getDeliveryDirectives(details, data.deliveryDirectives, msn, part);\n if (lowLatencyMode || !lastPart) {\n this.loadPlaylist(deliveryDirectives);\n return;\n }\n } else if (details.canBlockReload || details.canSkipUntil) {\n deliveryDirectives = this.getDeliveryDirectives(details, data.deliveryDirectives, msn, part);\n }\n const bufferInfo = this.hls.mainForwardBufferInfo;\n const position = bufferInfo ? bufferInfo.end - bufferInfo.len : 0;\n const distanceToLiveEdgeMs = (details.edge - position) * 1000;\n const reloadInterval = computeReloadInterval(details, distanceToLiveEdgeMs);\n if (details.updated && now > this.requestScheduled + reloadInterval) {\n this.requestScheduled = stats.loading.start;\n }\n if (msn !== undefined && details.canBlockReload) {\n this.requestScheduled = stats.loading.first + reloadInterval - (details.partTarget * 1000 || 1000);\n } else if (this.requestScheduled === -1 || this.requestScheduled + reloadInterval < now) {\n this.requestScheduled = now;\n } else if (this.requestScheduled - now <= 0) {\n this.requestScheduled += reloadInterval;\n }\n let estimatedTimeUntilUpdate = this.requestScheduled - now;\n estimatedTimeUntilUpdate = Math.max(0, estimatedTimeUntilUpdate);\n this.log(`reload live playlist ${index} in ${Math.round(estimatedTimeUntilUpdate)} ms`);\n // this.log(\n // `live reload ${details.updated ? 'REFRESHED' : 'MISSED'}\n // reload in ${estimatedTimeUntilUpdate / 1000}\n // round trip ${(stats.loading.end - stats.loading.start) / 1000}\n // diff ${\n // (reloadInterval -\n // (estimatedTimeUntilUpdate +\n // stats.loading.end -\n // stats.loading.start)) /\n // 1000\n // }\n // reload interval ${reloadInterval / 1000}\n // target duration ${details.targetduration}\n // distance to edge ${distanceToLiveEdgeMs / 1000}`\n // );\n\n this.timer = self.setTimeout(() => this.loadPlaylist(deliveryDirectives), estimatedTimeUntilUpdate);\n } else {\n this.clearTimer();\n }\n }\n getDeliveryDirectives(details, previousDeliveryDirectives, msn, part) {\n let skip = getSkipValue(details);\n if (previousDeliveryDirectives != null && previousDeliveryDirectives.skip && details.deltaUpdateFailed) {\n msn = previousDeliveryDirectives.msn;\n part = previousDeliveryDirectives.part;\n skip = HlsSkip.No;\n }\n return new HlsUrlParameters(msn, part, skip);\n }\n checkRetry(errorEvent) {\n const errorDetails = errorEvent.details;\n const isTimeout = isTimeoutError(errorEvent);\n const errorAction = errorEvent.errorAction;\n const {\n action,\n retryCount = 0,\n retryConfig\n } = errorAction || {};\n const retry = !!errorAction && !!retryConfig && (action === NetworkErrorAction.RetryRequest || !errorAction.resolved && action === NetworkErrorAction.SendAlternateToPenaltyBox);\n if (retry) {\n var _errorEvent$context;\n this.requestScheduled = -1;\n if (retryCount >= retryConfig.maxNumRetry) {\n return false;\n }\n if (isTimeout && (_errorEvent$context = errorEvent.context) != null && _errorEvent$context.deliveryDirectives) {\n // The LL-HLS request already timed out so retry immediately\n this.warn(`Retrying playlist loading ${retryCount + 1}/${retryConfig.maxNumRetry} after \"${errorDetails}\" without delivery-directives`);\n this.loadPlaylist();\n } else {\n const delay = getRetryDelay(retryConfig, retryCount);\n // Schedule level/track reload\n this.timer = self.setTimeout(() => this.loadPlaylist(), delay);\n this.warn(`Retrying playlist loading ${retryCount + 1}/${retryConfig.maxNumRetry} after \"${errorDetails}\" in ${delay}ms`);\n }\n // `levelRetry = true` used to inform other controllers that a retry is happening\n errorEvent.levelRetry = true;\n errorAction.resolved = true;\n }\n return retry;\n }\n}\n\n/*\n * compute an Exponential Weighted moving average\n * - https://en.wikipedia.org/wiki/Moving_average#Exponential_moving_average\n * - heavily inspired from shaka-player\n */\n\nclass EWMA {\n // About half of the estimated value will be from the last |halfLife| samples by weight.\n constructor(halfLife, estimate = 0, weight = 0) {\n this.halfLife = void 0;\n this.alpha_ = void 0;\n this.estimate_ = void 0;\n this.totalWeight_ = void 0;\n this.halfLife = halfLife;\n // Larger values of alpha expire historical data more slowly.\n this.alpha_ = halfLife ? Math.exp(Math.log(0.5) / halfLife) : 0;\n this.estimate_ = estimate;\n this.totalWeight_ = weight;\n }\n sample(weight, value) {\n const adjAlpha = Math.pow(this.alpha_, weight);\n this.estimate_ = value * (1 - adjAlpha) + adjAlpha * this.estimate_;\n this.totalWeight_ += weight;\n }\n getTotalWeight() {\n return this.totalWeight_;\n }\n getEstimate() {\n if (this.alpha_) {\n const zeroFactor = 1 - Math.pow(this.alpha_, this.totalWeight_);\n if (zeroFactor) {\n return this.estimate_ / zeroFactor;\n }\n }\n return this.estimate_;\n }\n}\n\n/*\n * EWMA Bandwidth Estimator\n * - heavily inspired from shaka-player\n * Tracks bandwidth samples and estimates available bandwidth.\n * Based on the minimum of two exponentially-weighted moving averages with\n * different half-lives.\n */\n\nclass EwmaBandWidthEstimator {\n constructor(slow, fast, defaultEstimate, defaultTTFB = 100) {\n this.defaultEstimate_ = void 0;\n this.minWeight_ = void 0;\n this.minDelayMs_ = void 0;\n this.slow_ = void 0;\n this.fast_ = void 0;\n this.defaultTTFB_ = void 0;\n this.ttfb_ = void 0;\n this.defaultEstimate_ = defaultEstimate;\n this.minWeight_ = 0.001;\n this.minDelayMs_ = 50;\n this.slow_ = new EWMA(slow);\n this.fast_ = new EWMA(fast);\n this.defaultTTFB_ = defaultTTFB;\n this.ttfb_ = new EWMA(slow);\n }\n update(slow, fast) {\n const {\n slow_,\n fast_,\n ttfb_\n } = this;\n if (slow_.halfLife !== slow) {\n this.slow_ = new EWMA(slow, slow_.getEstimate(), slow_.getTotalWeight());\n }\n if (fast_.halfLife !== fast) {\n this.fast_ = new EWMA(fast, fast_.getEstimate(), fast_.getTotalWeight());\n }\n if (ttfb_.halfLife !== slow) {\n this.ttfb_ = new EWMA(slow, ttfb_.getEstimate(), ttfb_.getTotalWeight());\n }\n }\n sample(durationMs, numBytes) {\n durationMs = Math.max(durationMs, this.minDelayMs_);\n const numBits = 8 * numBytes;\n // weight is duration in seconds\n const durationS = durationMs / 1000;\n // value is bandwidth in bits/s\n const bandwidthInBps = numBits / durationS;\n this.fast_.sample(durationS, bandwidthInBps);\n this.slow_.sample(durationS, bandwidthInBps);\n }\n sampleTTFB(ttfb) {\n // weight is frequency curve applied to TTFB in seconds\n // (longer times have less weight with expected input under 1 second)\n const seconds = ttfb / 1000;\n const weight = Math.sqrt(2) * Math.exp(-Math.pow(seconds, 2) / 2);\n this.ttfb_.sample(weight, Math.max(ttfb, 5));\n }\n canEstimate() {\n return this.fast_.getTotalWeight() >= this.minWeight_;\n }\n getEstimate() {\n if (this.canEstimate()) {\n // console.log('slow estimate:'+ Math.round(this.slow_.getEstimate()));\n // console.log('fast estimate:'+ Math.round(this.fast_.getEstimate()));\n // Take the minimum of these two estimates. This should have the effect of\n // adapting down quickly, but up more slowly.\n return Math.min(this.fast_.getEstimate(), this.slow_.getEstimate());\n } else {\n return this.defaultEstimate_;\n }\n }\n getEstimateTTFB() {\n if (this.ttfb_.getTotalWeight() >= this.minWeight_) {\n return this.ttfb_.getEstimate();\n } else {\n return this.defaultTTFB_;\n }\n }\n destroy() {}\n}\n\nconst SUPPORTED_INFO_DEFAULT = {\n supported: true,\n configurations: [],\n decodingInfoResults: [{\n supported: true,\n powerEfficient: true,\n smooth: true\n }]\n};\nconst SUPPORTED_INFO_CACHE = {};\nfunction requiresMediaCapabilitiesDecodingInfo(level, audioTracksByGroup, currentVideoRange, currentFrameRate, currentBw, audioPreference) {\n // Only test support when configuration is exceeds minimum options\n const audioGroups = level.audioCodec ? level.audioGroups : null;\n const audioCodecPreference = audioPreference == null ? void 0 : audioPreference.audioCodec;\n const channelsPreference = audioPreference == null ? void 0 : audioPreference.channels;\n const maxChannels = channelsPreference ? parseInt(channelsPreference) : audioCodecPreference ? Infinity : 2;\n let audioChannels = null;\n if (audioGroups != null && audioGroups.length) {\n try {\n if (audioGroups.length === 1 && audioGroups[0]) {\n audioChannels = audioTracksByGroup.groups[audioGroups[0]].channels;\n } else {\n audioChannels = audioGroups.reduce((acc, groupId) => {\n if (groupId) {\n const audioTrackGroup = audioTracksByGroup.groups[groupId];\n if (!audioTrackGroup) {\n throw new Error(`Audio track group ${groupId} not found`);\n }\n // Sum all channel key values\n Object.keys(audioTrackGroup.channels).forEach(key => {\n acc[key] = (acc[key] || 0) + audioTrackGroup.channels[key];\n });\n }\n return acc;\n }, {\n 2: 0\n });\n }\n } catch (error) {\n return true;\n }\n }\n return level.videoCodec !== undefined && (level.width > 1920 && level.height > 1088 || level.height > 1920 && level.width > 1088 || level.frameRate > Math.max(currentFrameRate, 30) || level.videoRange !== 'SDR' && level.videoRange !== currentVideoRange || level.bitrate > Math.max(currentBw, 8e6)) || !!audioChannels && isFiniteNumber(maxChannels) && Object.keys(audioChannels).some(channels => parseInt(channels) > maxChannels);\n}\nfunction getMediaDecodingInfoPromise(level, audioTracksByGroup, mediaCapabilities) {\n const videoCodecs = level.videoCodec;\n const audioCodecs = level.audioCodec;\n if (!videoCodecs || !audioCodecs || !mediaCapabilities) {\n return Promise.resolve(SUPPORTED_INFO_DEFAULT);\n }\n const baseVideoConfiguration = {\n width: level.width,\n height: level.height,\n bitrate: Math.ceil(Math.max(level.bitrate * 0.9, level.averageBitrate)),\n // Assume a framerate of 30fps since MediaCapabilities will not accept Level default of 0.\n framerate: level.frameRate || 30\n };\n const videoRange = level.videoRange;\n if (videoRange !== 'SDR') {\n baseVideoConfiguration.transferFunction = videoRange.toLowerCase();\n }\n const configurations = videoCodecs.split(',').map(videoCodec => ({\n type: 'media-source',\n video: _objectSpread2(_objectSpread2({}, baseVideoConfiguration), {}, {\n contentType: mimeTypeForCodec(videoCodec, 'video')\n })\n }));\n if (audioCodecs && level.audioGroups) {\n level.audioGroups.forEach(audioGroupId => {\n var _audioTracksByGroup$g;\n if (!audioGroupId) {\n return;\n }\n (_audioTracksByGroup$g = audioTracksByGroup.groups[audioGroupId]) == null ? void 0 : _audioTracksByGroup$g.tracks.forEach(audioTrack => {\n if (audioTrack.groupId === audioGroupId) {\n const channels = audioTrack.channels || '';\n const channelsNumber = parseFloat(channels);\n if (isFiniteNumber(channelsNumber) && channelsNumber > 2) {\n configurations.push.apply(configurations, audioCodecs.split(',').map(audioCodec => ({\n type: 'media-source',\n audio: {\n contentType: mimeTypeForCodec(audioCodec, 'audio'),\n channels: '' + channelsNumber\n // spatialRendering:\n // audioCodec === 'ec-3' && channels.indexOf('JOC'),\n }\n })));\n }\n }\n });\n });\n }\n return Promise.all(configurations.map(configuration => {\n // Cache MediaCapabilities promises\n const decodingInfoKey = getMediaDecodingInfoKey(configuration);\n return SUPPORTED_INFO_CACHE[decodingInfoKey] || (SUPPORTED_INFO_CACHE[decodingInfoKey] = mediaCapabilities.decodingInfo(configuration));\n })).then(decodingInfoResults => ({\n supported: !decodingInfoResults.some(info => !info.supported),\n configurations,\n decodingInfoResults\n })).catch(error => ({\n supported: false,\n configurations,\n decodingInfoResults: [],\n error\n }));\n}\nfunction getMediaDecodingInfoKey(config) {\n const {\n audio,\n video\n } = config;\n const mediaConfig = video || audio;\n if (mediaConfig) {\n const codec = mediaConfig.contentType.split('\"')[1];\n if (video) {\n return `r${video.height}x${video.width}f${Math.ceil(video.framerate)}${video.transferFunction || 'sd'}_${codec}_${Math.ceil(video.bitrate / 1e5)}`;\n }\n if (audio) {\n return `c${audio.channels}${audio.spatialRendering ? 's' : 'n'}_${codec}`;\n }\n }\n return '';\n}\n\n/**\n * @returns Whether we can detect and validate HDR capability within the window context\n */\nfunction isHdrSupported() {\n if (typeof matchMedia === 'function') {\n const mediaQueryList = matchMedia('(dynamic-range: high)');\n const badQuery = matchMedia('bad query');\n if (mediaQueryList.media !== badQuery.media) {\n return mediaQueryList.matches === true;\n }\n }\n return false;\n}\n\n/**\n * Sanitizes inputs to return the active video selection options for HDR/SDR.\n * When both inputs are null:\n *\n * `{ preferHDR: false, allowedVideoRanges: [] }`\n *\n * When `currentVideoRange` non-null, maintain the active range:\n *\n * `{ preferHDR: currentVideoRange !== 'SDR', allowedVideoRanges: [currentVideoRange] }`\n *\n * When VideoSelectionOption non-null:\n *\n * - Allow all video ranges if `allowedVideoRanges` unspecified.\n * - If `preferHDR` is non-null use the value to filter `allowedVideoRanges`.\n * - Else check window for HDR support and set `preferHDR` to the result.\n *\n * @param currentVideoRange\n * @param videoPreference\n */\nfunction getVideoSelectionOptions(currentVideoRange, videoPreference) {\n let preferHDR = false;\n let allowedVideoRanges = [];\n if (currentVideoRange) {\n preferHDR = currentVideoRange !== 'SDR';\n allowedVideoRanges = [currentVideoRange];\n }\n if (videoPreference) {\n allowedVideoRanges = videoPreference.allowedVideoRanges || VideoRangeValues.slice(0);\n preferHDR = videoPreference.preferHDR !== undefined ? videoPreference.preferHDR : isHdrSupported();\n if (preferHDR) {\n allowedVideoRanges = allowedVideoRanges.filter(range => range !== 'SDR');\n } else {\n allowedVideoRanges = ['SDR'];\n }\n }\n return {\n preferHDR,\n allowedVideoRanges\n };\n}\n\nfunction getStartCodecTier(codecTiers, currentVideoRange, currentBw, audioPreference, videoPreference) {\n const codecSets = Object.keys(codecTiers);\n const channelsPreference = audioPreference == null ? void 0 : audioPreference.channels;\n const audioCodecPreference = audioPreference == null ? void 0 : audioPreference.audioCodec;\n const preferStereo = channelsPreference && parseInt(channelsPreference) === 2;\n // Use first level set to determine stereo, and minimum resolution and framerate\n let hasStereo = true;\n let hasCurrentVideoRange = false;\n let minHeight = Infinity;\n let minFramerate = Infinity;\n let minBitrate = Infinity;\n let selectedScore = 0;\n let videoRanges = [];\n const {\n preferHDR,\n allowedVideoRanges\n } = getVideoSelectionOptions(currentVideoRange, videoPreference);\n for (let i = codecSets.length; i--;) {\n const tier = codecTiers[codecSets[i]];\n hasStereo = tier.channels[2] > 0;\n minHeight = Math.min(minHeight, tier.minHeight);\n minFramerate = Math.min(minFramerate, tier.minFramerate);\n minBitrate = Math.min(minBitrate, tier.minBitrate);\n const matchingVideoRanges = allowedVideoRanges.filter(range => tier.videoRanges[range] > 0);\n if (matchingVideoRanges.length > 0) {\n hasCurrentVideoRange = true;\n videoRanges = matchingVideoRanges;\n }\n }\n minHeight = isFiniteNumber(minHeight) ? minHeight : 0;\n minFramerate = isFiniteNumber(minFramerate) ? minFramerate : 0;\n const maxHeight = Math.max(1080, minHeight);\n const maxFramerate = Math.max(30, minFramerate);\n minBitrate = isFiniteNumber(minBitrate) ? minBitrate : currentBw;\n currentBw = Math.max(minBitrate, currentBw);\n // If there are no variants with matching preference, set currentVideoRange to undefined\n if (!hasCurrentVideoRange) {\n currentVideoRange = undefined;\n videoRanges = [];\n }\n const codecSet = codecSets.reduce((selected, candidate) => {\n // Remove candiates which do not meet bitrate, default audio, stereo or channels preference, 1080p or lower, 30fps or lower, or SDR/HDR selection if present\n const candidateTier = codecTiers[candidate];\n if (candidate === selected) {\n return selected;\n }\n if (candidateTier.minBitrate > currentBw) {\n logStartCodecCandidateIgnored(candidate, `min bitrate of ${candidateTier.minBitrate} > current estimate of ${currentBw}`);\n return selected;\n }\n if (!candidateTier.hasDefaultAudio) {\n logStartCodecCandidateIgnored(candidate, `no renditions with default or auto-select sound found`);\n return selected;\n }\n if (audioCodecPreference && candidate.indexOf(audioCodecPreference.substring(0, 4)) % 5 !== 0) {\n logStartCodecCandidateIgnored(candidate, `audio codec preference \"${audioCodecPreference}\" not found`);\n return selected;\n }\n if (channelsPreference && !preferStereo) {\n if (!candidateTier.channels[channelsPreference]) {\n logStartCodecCandidateIgnored(candidate, `no renditions with ${channelsPreference} channel sound found (channels options: ${Object.keys(candidateTier.channels)})`);\n return selected;\n }\n } else if ((!audioCodecPreference || preferStereo) && hasStereo && candidateTier.channels['2'] === 0) {\n logStartCodecCandidateIgnored(candidate, `no renditions with stereo sound found`);\n return selected;\n }\n if (candidateTier.minHeight > maxHeight) {\n logStartCodecCandidateIgnored(candidate, `min resolution of ${candidateTier.minHeight} > maximum of ${maxHeight}`);\n return selected;\n }\n if (candidateTier.minFramerate > maxFramerate) {\n logStartCodecCandidateIgnored(candidate, `min framerate of ${candidateTier.minFramerate} > maximum of ${maxFramerate}`);\n return selected;\n }\n if (!videoRanges.some(range => candidateTier.videoRanges[range] > 0)) {\n logStartCodecCandidateIgnored(candidate, `no variants with VIDEO-RANGE of ${JSON.stringify(videoRanges)} found`);\n return selected;\n }\n if (candidateTier.maxScore < selectedScore) {\n logStartCodecCandidateIgnored(candidate, `max score of ${candidateTier.maxScore} < selected max of ${selectedScore}`);\n return selected;\n }\n // Remove candiates with less preferred codecs or more errors\n if (selected && (codecsSetSelectionPreferenceValue(candidate) >= codecsSetSelectionPreferenceValue(selected) || candidateTier.fragmentError > codecTiers[selected].fragmentError)) {\n return selected;\n }\n selectedScore = candidateTier.maxScore;\n return candidate;\n }, undefined);\n return {\n codecSet,\n videoRanges,\n preferHDR,\n minFramerate,\n minBitrate\n };\n}\nfunction logStartCodecCandidateIgnored(codeSet, reason) {\n logger.log(`[abr] start candidates with \"${codeSet}\" ignored because ${reason}`);\n}\nfunction getAudioTracksByGroup(allAudioTracks) {\n return allAudioTracks.reduce((audioTracksByGroup, track) => {\n let trackGroup = audioTracksByGroup.groups[track.groupId];\n if (!trackGroup) {\n trackGroup = audioTracksByGroup.groups[track.groupId] = {\n tracks: [],\n channels: {\n 2: 0\n },\n hasDefault: false,\n hasAutoSelect: false\n };\n }\n trackGroup.tracks.push(track);\n const channelsKey = track.channels || '2';\n trackGroup.channels[channelsKey] = (trackGroup.channels[channelsKey] || 0) + 1;\n trackGroup.hasDefault = trackGroup.hasDefault || track.default;\n trackGroup.hasAutoSelect = trackGroup.hasAutoSelect || track.autoselect;\n if (trackGroup.hasDefault) {\n audioTracksByGroup.hasDefaultAudio = true;\n }\n if (trackGroup.hasAutoSelect) {\n audioTracksByGroup.hasAutoSelectAudio = true;\n }\n return audioTracksByGroup;\n }, {\n hasDefaultAudio: false,\n hasAutoSelectAudio: false,\n groups: {}\n });\n}\nfunction getCodecTiers(levels, audioTracksByGroup, minAutoLevel, maxAutoLevel) {\n return levels.slice(minAutoLevel, maxAutoLevel + 1).reduce((tiers, level) => {\n if (!level.codecSet) {\n return tiers;\n }\n const audioGroups = level.audioGroups;\n let tier = tiers[level.codecSet];\n if (!tier) {\n tiers[level.codecSet] = tier = {\n minBitrate: Infinity,\n minHeight: Infinity,\n minFramerate: Infinity,\n maxScore: 0,\n videoRanges: {\n SDR: 0\n },\n channels: {\n '2': 0\n },\n hasDefaultAudio: !audioGroups,\n fragmentError: 0\n };\n }\n tier.minBitrate = Math.min(tier.minBitrate, level.bitrate);\n const lesserWidthOrHeight = Math.min(level.height, level.width);\n tier.minHeight = Math.min(tier.minHeight, lesserWidthOrHeight);\n tier.minFramerate = Math.min(tier.minFramerate, level.frameRate);\n tier.maxScore = Math.max(tier.maxScore, level.score);\n tier.fragmentError += level.fragmentError;\n tier.videoRanges[level.videoRange] = (tier.videoRanges[level.videoRange] || 0) + 1;\n if (audioGroups) {\n audioGroups.forEach(audioGroupId => {\n if (!audioGroupId) {\n return;\n }\n const audioGroup = audioTracksByGroup.groups[audioGroupId];\n if (!audioGroup) {\n return;\n }\n // Default audio is any group with DEFAULT=YES, or if missing then any group with AUTOSELECT=YES, or all variants\n tier.hasDefaultAudio = tier.hasDefaultAudio || audioTracksByGroup.hasDefaultAudio ? audioGroup.hasDefault : audioGroup.hasAutoSelect || !audioTracksByGroup.hasDefaultAudio && !audioTracksByGroup.hasAutoSelectAudio;\n Object.keys(audioGroup.channels).forEach(channels => {\n tier.channels[channels] = (tier.channels[channels] || 0) + audioGroup.channels[channels];\n });\n });\n }\n return tiers;\n }, {});\n}\nfunction findMatchingOption(option, tracks, matchPredicate) {\n if ('attrs' in option) {\n const index = tracks.indexOf(option);\n if (index !== -1) {\n return index;\n }\n }\n for (let i = 0; i < tracks.length; i++) {\n const track = tracks[i];\n if (matchesOption(option, track, matchPredicate)) {\n return i;\n }\n }\n return -1;\n}\nfunction matchesOption(option, track, matchPredicate) {\n const {\n groupId,\n name,\n lang,\n assocLang,\n characteristics,\n default: isDefault\n } = option;\n const forced = option.forced;\n return (groupId === undefined || track.groupId === groupId) && (name === undefined || track.name === name) && (lang === undefined || track.lang === lang) && (lang === undefined || track.assocLang === assocLang) && (isDefault === undefined || track.default === isDefault) && (forced === undefined || track.forced === forced) && (characteristics === undefined || characteristicsMatch(characteristics, track.characteristics)) && (matchPredicate === undefined || matchPredicate(option, track));\n}\nfunction characteristicsMatch(characteristicsA, characteristicsB = '') {\n const arrA = characteristicsA.split(',');\n const arrB = characteristicsB.split(',');\n // Expects each item to be unique:\n return arrA.length === arrB.length && !arrA.some(el => arrB.indexOf(el) === -1);\n}\nfunction audioMatchPredicate(option, track) {\n const {\n audioCodec,\n channels\n } = option;\n return (audioCodec === undefined || (track.audioCodec || '').substring(0, 4) === audioCodec.substring(0, 4)) && (channels === undefined || channels === (track.channels || '2'));\n}\nfunction findClosestLevelWithAudioGroup(option, levels, allAudioTracks, searchIndex, matchPredicate) {\n const currentLevel = levels[searchIndex];\n // Are there variants with same URI as current level?\n // If so, find a match that does not require any level URI change\n const variants = levels.reduce((variantMap, level, index) => {\n const uri = level.uri;\n const renditions = variantMap[uri] || (variantMap[uri] = []);\n renditions.push(index);\n return variantMap;\n }, {});\n const renditions = variants[currentLevel.uri];\n if (renditions.length > 1) {\n searchIndex = Math.max.apply(Math, renditions);\n }\n // Find best match\n const currentVideoRange = currentLevel.videoRange;\n const currentFrameRate = currentLevel.frameRate;\n const currentVideoCodec = currentLevel.codecSet.substring(0, 4);\n const matchingVideo = searchDownAndUpList(levels, searchIndex, level => {\n if (level.videoRange !== currentVideoRange || level.frameRate !== currentFrameRate || level.codecSet.substring(0, 4) !== currentVideoCodec) {\n return false;\n }\n const audioGroups = level.audioGroups;\n const tracks = allAudioTracks.filter(track => !audioGroups || audioGroups.indexOf(track.groupId) !== -1);\n return findMatchingOption(option, tracks, matchPredicate) > -1;\n });\n if (matchingVideo > -1) {\n return matchingVideo;\n }\n return searchDownAndUpList(levels, searchIndex, level => {\n const audioGroups = level.audioGroups;\n const tracks = allAudioTracks.filter(track => !audioGroups || audioGroups.indexOf(track.groupId) !== -1);\n return findMatchingOption(option, tracks, matchPredicate) > -1;\n });\n}\nfunction searchDownAndUpList(arr, searchIndex, predicate) {\n for (let i = searchIndex; i > -1; i--) {\n if (predicate(arr[i])) {\n return i;\n }\n }\n for (let i = searchIndex + 1; i < arr.length; i++) {\n if (predicate(arr[i])) {\n return i;\n }\n }\n return -1;\n}\n\nclass AbrController {\n constructor(_hls) {\n this.hls = void 0;\n this.lastLevelLoadSec = 0;\n this.lastLoadedFragLevel = -1;\n this.firstSelection = -1;\n this._nextAutoLevel = -1;\n this.nextAutoLevelKey = '';\n this.audioTracksByGroup = null;\n this.codecTiers = null;\n this.timer = -1;\n this.fragCurrent = null;\n this.partCurrent = null;\n this.bitrateTestDelay = 0;\n this.bwEstimator = void 0;\n /*\n This method monitors the download rate of the current fragment, and will downswitch if that fragment will not load\n quickly enough to prevent underbuffering\n */\n this._abandonRulesCheck = () => {\n const {\n fragCurrent: frag,\n partCurrent: part,\n hls\n } = this;\n const {\n autoLevelEnabled,\n media\n } = hls;\n if (!frag || !media) {\n return;\n }\n const now = performance.now();\n const stats = part ? part.stats : frag.stats;\n const duration = part ? part.duration : frag.duration;\n const timeLoading = now - stats.loading.start;\n const minAutoLevel = hls.minAutoLevel;\n // If frag loading is aborted, complete, or from lowest level, stop timer and return\n if (stats.aborted || stats.loaded && stats.loaded === stats.total || frag.level <= minAutoLevel) {\n this.clearTimer();\n // reset forced auto level value so that next level will be selected\n this._nextAutoLevel = -1;\n return;\n }\n\n // This check only runs if we're in ABR mode and actually playing\n if (!autoLevelEnabled || media.paused || !media.playbackRate || !media.readyState) {\n return;\n }\n const bufferInfo = hls.mainForwardBufferInfo;\n if (bufferInfo === null) {\n return;\n }\n const ttfbEstimate = this.bwEstimator.getEstimateTTFB();\n const playbackRate = Math.abs(media.playbackRate);\n // To maintain stable adaptive playback, only begin monitoring frag loading after half or more of its playback duration has passed\n if (timeLoading <= Math.max(ttfbEstimate, 1000 * (duration / (playbackRate * 2)))) {\n return;\n }\n\n // bufferStarvationDelay is an estimate of the amount time (in seconds) it will take to exhaust the buffer\n const bufferStarvationDelay = bufferInfo.len / playbackRate;\n const ttfb = stats.loading.first ? stats.loading.first - stats.loading.start : -1;\n const loadedFirstByte = stats.loaded && ttfb > -1;\n const bwEstimate = this.getBwEstimate();\n const levels = hls.levels;\n const level = levels[frag.level];\n const expectedLen = stats.total || Math.max(stats.loaded, Math.round(duration * level.averageBitrate / 8));\n let timeStreaming = loadedFirstByte ? timeLoading - ttfb : timeLoading;\n if (timeStreaming < 1 && loadedFirstByte) {\n timeStreaming = Math.min(timeLoading, stats.loaded * 8 / bwEstimate);\n }\n const loadRate = loadedFirstByte ? stats.loaded * 1000 / timeStreaming : 0;\n // fragLoadDelay is an estimate of the time (in seconds) it will take to buffer the remainder of the fragment\n const fragLoadedDelay = loadRate ? (expectedLen - stats.loaded) / loadRate : expectedLen * 8 / bwEstimate + ttfbEstimate / 1000;\n // Only downswitch if the time to finish loading the current fragment is greater than the amount of buffer left\n if (fragLoadedDelay <= bufferStarvationDelay) {\n return;\n }\n const bwe = loadRate ? loadRate * 8 : bwEstimate;\n let fragLevelNextLoadedDelay = Number.POSITIVE_INFINITY;\n let nextLoadLevel;\n // Iterate through lower level and try to find the largest one that avoids rebuffering\n for (nextLoadLevel = frag.level - 1; nextLoadLevel > minAutoLevel; nextLoadLevel--) {\n // compute time to load next fragment at lower level\n // 8 = bits per byte (bps/Bps)\n const levelNextBitrate = levels[nextLoadLevel].maxBitrate;\n fragLevelNextLoadedDelay = this.getTimeToLoadFrag(ttfbEstimate / 1000, bwe, duration * levelNextBitrate, !levels[nextLoadLevel].details);\n if (fragLevelNextLoadedDelay < bufferStarvationDelay) {\n break;\n }\n }\n // Only emergency switch down if it takes less time to load a new fragment at lowest level instead of continuing\n // to load the current one\n if (fragLevelNextLoadedDelay >= fragLoadedDelay) {\n return;\n }\n\n // if estimated load time of new segment is completely unreasonable, ignore and do not emergency switch down\n if (fragLevelNextLoadedDelay > duration * 10) {\n return;\n }\n hls.nextLoadLevel = hls.nextAutoLevel = nextLoadLevel;\n if (loadedFirstByte) {\n // If there has been loading progress, sample bandwidth using loading time offset by minimum TTFB time\n this.bwEstimator.sample(timeLoading - Math.min(ttfbEstimate, ttfb), stats.loaded);\n } else {\n // If there has been no loading progress, sample TTFB\n this.bwEstimator.sampleTTFB(timeLoading);\n }\n const nextLoadLevelBitrate = levels[nextLoadLevel].maxBitrate;\n if (this.getBwEstimate() * this.hls.config.abrBandWidthUpFactor > nextLoadLevelBitrate) {\n this.resetEstimator(nextLoadLevelBitrate);\n }\n this.clearTimer();\n logger.warn(`[abr] Fragment ${frag.sn}${part ? ' part ' + part.index : ''} of level ${frag.level} is loading too slowly;\n Time to underbuffer: ${bufferStarvationDelay.toFixed(3)} s\n Estimated load time for current fragment: ${fragLoadedDelay.toFixed(3)} s\n Estimated load time for down switch fragment: ${fragLevelNextLoadedDelay.toFixed(3)} s\n TTFB estimate: ${ttfb | 0} ms\n Current BW estimate: ${isFiniteNumber(bwEstimate) ? bwEstimate | 0 : 'Unknown'} bps\n New BW estimate: ${this.getBwEstimate() | 0} bps\n Switching to level ${nextLoadLevel} @ ${nextLoadLevelBitrate | 0} bps`);\n hls.trigger(Events.FRAG_LOAD_EMERGENCY_ABORTED, {\n frag,\n part,\n stats\n });\n };\n this.hls = _hls;\n this.bwEstimator = this.initEstimator();\n this.registerListeners();\n }\n resetEstimator(abrEwmaDefaultEstimate) {\n if (abrEwmaDefaultEstimate) {\n logger.log(`setting initial bwe to ${abrEwmaDefaultEstimate}`);\n this.hls.config.abrEwmaDefaultEstimate = abrEwmaDefaultEstimate;\n }\n this.firstSelection = -1;\n this.bwEstimator = this.initEstimator();\n }\n initEstimator() {\n const config = this.hls.config;\n return new EwmaBandWidthEstimator(config.abrEwmaSlowVoD, config.abrEwmaFastVoD, config.abrEwmaDefaultEstimate);\n }\n registerListeners() {\n const {\n hls\n } = this;\n hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(Events.FRAG_LOADING, this.onFragLoading, this);\n hls.on(Events.FRAG_LOADED, this.onFragLoaded, this);\n hls.on(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n hls.on(Events.LEVEL_SWITCHING, this.onLevelSwitching, this);\n hls.on(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n hls.on(Events.LEVELS_UPDATED, this.onLevelsUpdated, this);\n hls.on(Events.MAX_AUTO_LEVEL_UPDATED, this.onMaxAutoLevelUpdated, this);\n hls.on(Events.ERROR, this.onError, this);\n }\n unregisterListeners() {\n const {\n hls\n } = this;\n if (!hls) {\n return;\n }\n hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(Events.FRAG_LOADING, this.onFragLoading, this);\n hls.off(Events.FRAG_LOADED, this.onFragLoaded, this);\n hls.off(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n hls.off(Events.LEVEL_SWITCHING, this.onLevelSwitching, this);\n hls.off(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n hls.off(Events.LEVELS_UPDATED, this.onLevelsUpdated, this);\n hls.off(Events.MAX_AUTO_LEVEL_UPDATED, this.onMaxAutoLevelUpdated, this);\n hls.off(Events.ERROR, this.onError, this);\n }\n destroy() {\n this.unregisterListeners();\n this.clearTimer();\n // @ts-ignore\n this.hls = this._abandonRulesCheck = null;\n this.fragCurrent = this.partCurrent = null;\n }\n onManifestLoading(event, data) {\n this.lastLoadedFragLevel = -1;\n this.firstSelection = -1;\n this.lastLevelLoadSec = 0;\n this.fragCurrent = this.partCurrent = null;\n this.onLevelsUpdated();\n this.clearTimer();\n }\n onLevelsUpdated() {\n if (this.lastLoadedFragLevel > -1 && this.fragCurrent) {\n this.lastLoadedFragLevel = this.fragCurrent.level;\n }\n this._nextAutoLevel = -1;\n this.onMaxAutoLevelUpdated();\n this.codecTiers = null;\n this.audioTracksByGroup = null;\n }\n onMaxAutoLevelUpdated() {\n this.firstSelection = -1;\n this.nextAutoLevelKey = '';\n }\n onFragLoading(event, data) {\n const frag = data.frag;\n if (this.ignoreFragment(frag)) {\n return;\n }\n if (!frag.bitrateTest) {\n var _data$part;\n this.fragCurrent = frag;\n this.partCurrent = (_data$part = data.part) != null ? _data$part : null;\n }\n this.clearTimer();\n this.timer = self.setInterval(this._abandonRulesCheck, 100);\n }\n onLevelSwitching(event, data) {\n this.clearTimer();\n }\n onError(event, data) {\n if (data.fatal) {\n return;\n }\n switch (data.details) {\n case ErrorDetails.BUFFER_ADD_CODEC_ERROR:\n case ErrorDetails.BUFFER_APPEND_ERROR:\n // Reset last loaded level so that a new selection can be made after calling recoverMediaError\n this.lastLoadedFragLevel = -1;\n this.firstSelection = -1;\n break;\n case ErrorDetails.FRAG_LOAD_TIMEOUT:\n {\n const frag = data.frag;\n const {\n fragCurrent,\n partCurrent: part\n } = this;\n if (frag && fragCurrent && frag.sn === fragCurrent.sn && frag.level === fragCurrent.level) {\n const now = performance.now();\n const stats = part ? part.stats : frag.stats;\n const timeLoading = now - stats.loading.start;\n const ttfb = stats.loading.first ? stats.loading.first - stats.loading.start : -1;\n const loadedFirstByte = stats.loaded && ttfb > -1;\n if (loadedFirstByte) {\n const ttfbEstimate = this.bwEstimator.getEstimateTTFB();\n this.bwEstimator.sample(timeLoading - Math.min(ttfbEstimate, ttfb), stats.loaded);\n } else {\n this.bwEstimator.sampleTTFB(timeLoading);\n }\n }\n break;\n }\n }\n }\n getTimeToLoadFrag(timeToFirstByteSec, bandwidth, fragSizeBits, isSwitch) {\n const fragLoadSec = timeToFirstByteSec + fragSizeBits / bandwidth;\n const playlistLoadSec = isSwitch ? this.lastLevelLoadSec : 0;\n return fragLoadSec + playlistLoadSec;\n }\n onLevelLoaded(event, data) {\n const config = this.hls.config;\n const {\n loading\n } = data.stats;\n const timeLoadingMs = loading.end - loading.start;\n if (isFiniteNumber(timeLoadingMs)) {\n this.lastLevelLoadSec = timeLoadingMs / 1000;\n }\n if (data.details.live) {\n this.bwEstimator.update(config.abrEwmaSlowLive, config.abrEwmaFastLive);\n } else {\n this.bwEstimator.update(config.abrEwmaSlowVoD, config.abrEwmaFastVoD);\n }\n }\n onFragLoaded(event, {\n frag,\n part\n }) {\n const stats = part ? part.stats : frag.stats;\n if (frag.type === PlaylistLevelType.MAIN) {\n this.bwEstimator.sampleTTFB(stats.loading.first - stats.loading.start);\n }\n if (this.ignoreFragment(frag)) {\n return;\n }\n // stop monitoring bw once frag loaded\n this.clearTimer();\n // reset forced auto level value so that next level will be selected\n if (frag.level === this._nextAutoLevel) {\n this._nextAutoLevel = -1;\n }\n this.firstSelection = -1;\n\n // compute level average bitrate\n if (this.hls.config.abrMaxWithRealBitrate) {\n const duration = part ? part.duration : frag.duration;\n const level = this.hls.levels[frag.level];\n const loadedBytes = (level.loaded ? level.loaded.bytes : 0) + stats.loaded;\n const loadedDuration = (level.loaded ? level.loaded.duration : 0) + duration;\n level.loaded = {\n bytes: loadedBytes,\n duration: loadedDuration\n };\n level.realBitrate = Math.round(8 * loadedBytes / loadedDuration);\n }\n if (frag.bitrateTest) {\n const fragBufferedData = {\n stats,\n frag,\n part,\n id: frag.type\n };\n this.onFragBuffered(Events.FRAG_BUFFERED, fragBufferedData);\n frag.bitrateTest = false;\n } else {\n // store level id after successful fragment load for playback\n this.lastLoadedFragLevel = frag.level;\n }\n }\n onFragBuffered(event, data) {\n const {\n frag,\n part\n } = data;\n const stats = part != null && part.stats.loaded ? part.stats : frag.stats;\n if (stats.aborted) {\n return;\n }\n if (this.ignoreFragment(frag)) {\n return;\n }\n // Use the difference between parsing and request instead of buffering and request to compute fragLoadingProcessing;\n // rationale is that buffer appending only happens once media is attached. This can happen when config.startFragPrefetch\n // is used. If we used buffering in that case, our BW estimate sample will be very large.\n const processingMs = stats.parsing.end - stats.loading.start - Math.min(stats.loading.first - stats.loading.start, this.bwEstimator.getEstimateTTFB());\n this.bwEstimator.sample(processingMs, stats.loaded);\n stats.bwEstimate = this.getBwEstimate();\n if (frag.bitrateTest) {\n this.bitrateTestDelay = processingMs / 1000;\n } else {\n this.bitrateTestDelay = 0;\n }\n }\n ignoreFragment(frag) {\n // Only count non-alt-audio frags which were actually buffered in our BW calculations\n return frag.type !== PlaylistLevelType.MAIN || frag.sn === 'initSegment';\n }\n clearTimer() {\n if (this.timer > -1) {\n self.clearInterval(this.timer);\n this.timer = -1;\n }\n }\n get firstAutoLevel() {\n const {\n maxAutoLevel,\n minAutoLevel\n } = this.hls;\n const bwEstimate = this.getBwEstimate();\n const maxStartDelay = this.hls.config.maxStarvationDelay;\n const abrAutoLevel = this.findBestLevel(bwEstimate, minAutoLevel, maxAutoLevel, 0, maxStartDelay, 1, 1);\n if (abrAutoLevel > -1) {\n return abrAutoLevel;\n }\n const firstLevel = this.hls.firstLevel;\n const clamped = Math.min(Math.max(firstLevel, minAutoLevel), maxAutoLevel);\n logger.warn(`[abr] Could not find best starting auto level. Defaulting to first in playlist ${firstLevel} clamped to ${clamped}`);\n return clamped;\n }\n get forcedAutoLevel() {\n if (this.nextAutoLevelKey) {\n return -1;\n }\n return this._nextAutoLevel;\n }\n\n // return next auto level\n get nextAutoLevel() {\n const forcedAutoLevel = this.forcedAutoLevel;\n const bwEstimator = this.bwEstimator;\n const useEstimate = bwEstimator.canEstimate();\n const loadedFirstFrag = this.lastLoadedFragLevel > -1;\n // in case next auto level has been forced, and bw not available or not reliable, return forced value\n if (forcedAutoLevel !== -1 && (!useEstimate || !loadedFirstFrag || this.nextAutoLevelKey === this.getAutoLevelKey())) {\n return forcedAutoLevel;\n }\n\n // compute next level using ABR logic\n const nextABRAutoLevel = useEstimate && loadedFirstFrag ? this.getNextABRAutoLevel() : this.firstAutoLevel;\n\n // use forced auto level while it hasn't errored more than ABR selection\n if (forcedAutoLevel !== -1) {\n const levels = this.hls.levels;\n if (levels.length > Math.max(forcedAutoLevel, nextABRAutoLevel) && levels[forcedAutoLevel].loadError <= levels[nextABRAutoLevel].loadError) {\n return forcedAutoLevel;\n }\n }\n\n // save result until state has changed\n this._nextAutoLevel = nextABRAutoLevel;\n this.nextAutoLevelKey = this.getAutoLevelKey();\n return nextABRAutoLevel;\n }\n getAutoLevelKey() {\n return `${this.getBwEstimate()}_${this.getStarvationDelay().toFixed(2)}`;\n }\n getNextABRAutoLevel() {\n const {\n fragCurrent,\n partCurrent,\n hls\n } = this;\n const {\n maxAutoLevel,\n config,\n minAutoLevel\n } = hls;\n const currentFragDuration = partCurrent ? partCurrent.duration : fragCurrent ? fragCurrent.duration : 0;\n const avgbw = this.getBwEstimate();\n // bufferStarvationDelay is the wall-clock time left until the playback buffer is exhausted.\n const bufferStarvationDelay = this.getStarvationDelay();\n let bwFactor = config.abrBandWidthFactor;\n let bwUpFactor = config.abrBandWidthUpFactor;\n\n // First, look to see if we can find a level matching with our avg bandwidth AND that could also guarantee no rebuffering at all\n if (bufferStarvationDelay) {\n const _bestLevel = this.findBestLevel(avgbw, minAutoLevel, maxAutoLevel, bufferStarvationDelay, 0, bwFactor, bwUpFactor);\n if (_bestLevel >= 0) {\n return _bestLevel;\n }\n }\n // not possible to get rid of rebuffering... try to find level that will guarantee less than maxStarvationDelay of rebuffering\n let maxStarvationDelay = currentFragDuration ? Math.min(currentFragDuration, config.maxStarvationDelay) : config.maxStarvationDelay;\n if (!bufferStarvationDelay) {\n // in case buffer is empty, let's check if previous fragment was loaded to perform a bitrate test\n const bitrateTestDelay = this.bitrateTestDelay;\n if (bitrateTestDelay) {\n // if it is the case, then we need to adjust our max starvation delay using maxLoadingDelay config value\n // max video loading delay used in automatic start level selection :\n // in that mode ABR controller will ensure that video loading time (ie the time to fetch the first fragment at lowest quality level +\n // the time to fetch the fragment at the appropriate quality level is less than ```maxLoadingDelay``` )\n // cap maxLoadingDelay and ensure it is not bigger 'than bitrate test' frag duration\n const maxLoadingDelay = currentFragDuration ? Math.min(currentFragDuration, config.maxLoadingDelay) : config.maxLoadingDelay;\n maxStarvationDelay = maxLoadingDelay - bitrateTestDelay;\n logger.info(`[abr] bitrate test took ${Math.round(1000 * bitrateTestDelay)}ms, set first fragment max fetchDuration to ${Math.round(1000 * maxStarvationDelay)} ms`);\n // don't use conservative factor on bitrate test\n bwFactor = bwUpFactor = 1;\n }\n }\n const bestLevel = this.findBestLevel(avgbw, minAutoLevel, maxAutoLevel, bufferStarvationDelay, maxStarvationDelay, bwFactor, bwUpFactor);\n logger.info(`[abr] ${bufferStarvationDelay ? 'rebuffering expected' : 'buffer is empty'}, optimal quality level ${bestLevel}`);\n if (bestLevel > -1) {\n return bestLevel;\n }\n // If no matching level found, see if min auto level would be a better option\n const minLevel = hls.levels[minAutoLevel];\n const autoLevel = hls.levels[hls.loadLevel];\n if ((minLevel == null ? void 0 : minLevel.bitrate) < (autoLevel == null ? void 0 : autoLevel.bitrate)) {\n return minAutoLevel;\n }\n // or if bitrate is not lower, continue to use loadLevel\n return hls.loadLevel;\n }\n getStarvationDelay() {\n const hls = this.hls;\n const media = hls.media;\n if (!media) {\n return Infinity;\n }\n // playbackRate is the absolute value of the playback rate; if media.playbackRate is 0, we use 1 to load as\n // if we're playing back at the normal rate.\n const playbackRate = media && media.playbackRate !== 0 ? Math.abs(media.playbackRate) : 1.0;\n const bufferInfo = hls.mainForwardBufferInfo;\n return (bufferInfo ? bufferInfo.len : 0) / playbackRate;\n }\n getBwEstimate() {\n return this.bwEstimator.canEstimate() ? this.bwEstimator.getEstimate() : this.hls.config.abrEwmaDefaultEstimate;\n }\n findBestLevel(currentBw, minAutoLevel, maxAutoLevel, bufferStarvationDelay, maxStarvationDelay, bwFactor, bwUpFactor) {\n var _level$details;\n const maxFetchDuration = bufferStarvationDelay + maxStarvationDelay;\n const lastLoadedFragLevel = this.lastLoadedFragLevel;\n const selectionBaseLevel = lastLoadedFragLevel === -1 ? this.hls.firstLevel : lastLoadedFragLevel;\n const {\n fragCurrent,\n partCurrent\n } = this;\n const {\n levels,\n allAudioTracks,\n loadLevel,\n config\n } = this.hls;\n if (levels.length === 1) {\n return 0;\n }\n const level = levels[selectionBaseLevel];\n const live = !!(level != null && (_level$details = level.details) != null && _level$details.live);\n const firstSelection = loadLevel === -1 || lastLoadedFragLevel === -1;\n let currentCodecSet;\n let currentVideoRange = 'SDR';\n let currentFrameRate = (level == null ? void 0 : level.frameRate) || 0;\n const {\n audioPreference,\n videoPreference\n } = config;\n const audioTracksByGroup = this.audioTracksByGroup || (this.audioTracksByGroup = getAudioTracksByGroup(allAudioTracks));\n if (firstSelection) {\n if (this.firstSelection !== -1) {\n return this.firstSelection;\n }\n const codecTiers = this.codecTiers || (this.codecTiers = getCodecTiers(levels, audioTracksByGroup, minAutoLevel, maxAutoLevel));\n const startTier = getStartCodecTier(codecTiers, currentVideoRange, currentBw, audioPreference, videoPreference);\n const {\n codecSet,\n videoRanges,\n minFramerate,\n minBitrate,\n preferHDR\n } = startTier;\n currentCodecSet = codecSet;\n currentVideoRange = preferHDR ? videoRanges[videoRanges.length - 1] : videoRanges[0];\n currentFrameRate = minFramerate;\n currentBw = Math.max(currentBw, minBitrate);\n logger.log(`[abr] picked start tier ${JSON.stringify(startTier)}`);\n } else {\n currentCodecSet = level == null ? void 0 : level.codecSet;\n currentVideoRange = level == null ? void 0 : level.videoRange;\n }\n const currentFragDuration = partCurrent ? partCurrent.duration : fragCurrent ? fragCurrent.duration : 0;\n const ttfbEstimateSec = this.bwEstimator.getEstimateTTFB() / 1000;\n const levelsSkipped = [];\n for (let i = maxAutoLevel; i >= minAutoLevel; i--) {\n var _levelInfo$supportedR;\n const levelInfo = levels[i];\n const upSwitch = i > selectionBaseLevel;\n if (!levelInfo) {\n continue;\n }\n if (config.useMediaCapabilities && !levelInfo.supportedResult && !levelInfo.supportedPromise) {\n const mediaCapabilities = navigator.mediaCapabilities;\n if (typeof (mediaCapabilities == null ? void 0 : mediaCapabilities.decodingInfo) === 'function' && requiresMediaCapabilitiesDecodingInfo(levelInfo, audioTracksByGroup, currentVideoRange, currentFrameRate, currentBw, audioPreference)) {\n levelInfo.supportedPromise = getMediaDecodingInfoPromise(levelInfo, audioTracksByGroup, mediaCapabilities);\n levelInfo.supportedPromise.then(decodingInfo => {\n if (!this.hls) {\n return;\n }\n levelInfo.supportedResult = decodingInfo;\n const levels = this.hls.levels;\n const index = levels.indexOf(levelInfo);\n if (decodingInfo.error) {\n logger.warn(`[abr] MediaCapabilities decodingInfo error: \"${decodingInfo.error}\" for level ${index} ${JSON.stringify(decodingInfo)}`);\n } else if (!decodingInfo.supported) {\n logger.warn(`[abr] Unsupported MediaCapabilities decodingInfo result for level ${index} ${JSON.stringify(decodingInfo)}`);\n if (index > -1 && levels.length > 1) {\n logger.log(`[abr] Removing unsupported level ${index}`);\n this.hls.removeLevel(index);\n }\n }\n });\n } else {\n levelInfo.supportedResult = SUPPORTED_INFO_DEFAULT;\n }\n }\n\n // skip candidates which change codec-family or video-range,\n // and which decrease or increase frame-rate for up and down-switch respectfully\n if (currentCodecSet && levelInfo.codecSet !== currentCodecSet || currentVideoRange && levelInfo.videoRange !== currentVideoRange || upSwitch && currentFrameRate > levelInfo.frameRate || !upSwitch && currentFrameRate > 0 && currentFrameRate < levelInfo.frameRate || levelInfo.supportedResult && !((_levelInfo$supportedR = levelInfo.supportedResult.decodingInfoResults) != null && _levelInfo$supportedR[0].smooth)) {\n levelsSkipped.push(i);\n continue;\n }\n const levelDetails = levelInfo.details;\n const avgDuration = (partCurrent ? levelDetails == null ? void 0 : levelDetails.partTarget : levelDetails == null ? void 0 : levelDetails.averagetargetduration) || currentFragDuration;\n let adjustedbw;\n // follow algorithm captured from stagefright :\n // https://android.googlesource.com/platform/frameworks/av/+/master/media/libstagefright/httplive/LiveSession.cpp\n // Pick the highest bandwidth stream below or equal to estimated bandwidth.\n // consider only 80% of the available bandwidth, but if we are switching up,\n // be even more conservative (70%) to avoid overestimating and immediately\n // switching back.\n if (!upSwitch) {\n adjustedbw = bwFactor * currentBw;\n } else {\n adjustedbw = bwUpFactor * currentBw;\n }\n\n // Use average bitrate when starvation delay (buffer length) is gt or eq two segment durations and rebuffering is not expected (maxStarvationDelay > 0)\n const bitrate = currentFragDuration && bufferStarvationDelay >= currentFragDuration * 2 && maxStarvationDelay === 0 ? levels[i].averageBitrate : levels[i].maxBitrate;\n const fetchDuration = this.getTimeToLoadFrag(ttfbEstimateSec, adjustedbw, bitrate * avgDuration, levelDetails === undefined);\n const canSwitchWithinTolerance =\n // if adjusted bw is greater than level bitrate AND\n adjustedbw >= bitrate && (\n // no level change, or new level has no error history\n i === lastLoadedFragLevel || levelInfo.loadError === 0 && levelInfo.fragmentError === 0) && (\n // fragment fetchDuration unknown OR live stream OR fragment fetchDuration less than max allowed fetch duration, then this level matches\n // we don't account for max Fetch Duration for live streams, this is to avoid switching down when near the edge of live sliding window ...\n // special case to support startLevel = -1 (bitrateTest) on live streams : in that case we should not exit loop so that findBestLevel will return -1\n fetchDuration <= ttfbEstimateSec || !isFiniteNumber(fetchDuration) || live && !this.bitrateTestDelay || fetchDuration < maxFetchDuration);\n if (canSwitchWithinTolerance) {\n const forcedAutoLevel = this.forcedAutoLevel;\n if (i !== loadLevel && (forcedAutoLevel === -1 || forcedAutoLevel !== loadLevel)) {\n if (levelsSkipped.length) {\n logger.trace(`[abr] Skipped level(s) ${levelsSkipped.join(',')} of ${maxAutoLevel} max with CODECS and VIDEO-RANGE:\"${levels[levelsSkipped[0]].codecs}\" ${levels[levelsSkipped[0]].videoRange}; not compatible with \"${level.codecs}\" ${currentVideoRange}`);\n }\n logger.info(`[abr] switch candidate:${selectionBaseLevel}->${i} adjustedbw(${Math.round(adjustedbw)})-bitrate=${Math.round(adjustedbw - bitrate)} ttfb:${ttfbEstimateSec.toFixed(1)} avgDuration:${avgDuration.toFixed(1)} maxFetchDuration:${maxFetchDuration.toFixed(1)} fetchDuration:${fetchDuration.toFixed(1)} firstSelection:${firstSelection} codecSet:${currentCodecSet} videoRange:${currentVideoRange} hls.loadLevel:${loadLevel}`);\n }\n if (firstSelection) {\n this.firstSelection = i;\n }\n // as we are looping from highest to lowest, this will return the best achievable quality level\n return i;\n }\n }\n // not enough time budget even with quality level 0 ... rebuffering might happen\n return -1;\n }\n set nextAutoLevel(nextLevel) {\n const {\n maxAutoLevel,\n minAutoLevel\n } = this.hls;\n const value = Math.min(Math.max(nextLevel, minAutoLevel), maxAutoLevel);\n if (this._nextAutoLevel !== value) {\n this.nextAutoLevelKey = '';\n this._nextAutoLevel = value;\n }\n }\n}\n\n/**\n * @ignore\n * Sub-class specialization of EventHandler base class.\n *\n * TaskLoop allows to schedule a task function being called (optionnaly repeatedly) on the main loop,\n * scheduled asynchroneously, avoiding recursive calls in the same tick.\n *\n * The task itself is implemented in `doTick`. It can be requested and called for single execution\n * using the `tick` method.\n *\n * It will be assured that the task execution method (`tick`) only gets called once per main loop \"tick\",\n * no matter how often it gets requested for execution. Execution in further ticks will be scheduled accordingly.\n *\n * If further execution requests have already been scheduled on the next tick, it can be checked with `hasNextTick`,\n * and cancelled with `clearNextTick`.\n *\n * The task can be scheduled as an interval repeatedly with a period as parameter (see `setInterval`, `clearInterval`).\n *\n * Sub-classes need to implement the `doTick` method which will effectively have the task execution routine.\n *\n * Further explanations:\n *\n * The baseclass has a `tick` method that will schedule the doTick call. It may be called synchroneously\n * only for a stack-depth of one. On re-entrant calls, sub-sequent calls are scheduled for next main loop ticks.\n *\n * When the task execution (`tick` method) is called in re-entrant way this is detected and\n * we are limiting the task execution per call stack to exactly one, but scheduling/post-poning further\n * task processing on the next main loop iteration (also known as \"next tick\" in the Node/JS runtime lingo).\n */\nclass TaskLoop {\n constructor() {\n this._boundTick = void 0;\n this._tickTimer = null;\n this._tickInterval = null;\n this._tickCallCount = 0;\n this._boundTick = this.tick.bind(this);\n }\n destroy() {\n this.onHandlerDestroying();\n this.onHandlerDestroyed();\n }\n onHandlerDestroying() {\n // clear all timers before unregistering from event bus\n this.clearNextTick();\n this.clearInterval();\n }\n onHandlerDestroyed() {}\n hasInterval() {\n return !!this._tickInterval;\n }\n hasNextTick() {\n return !!this._tickTimer;\n }\n\n /**\n * @param millis - Interval time (ms)\n * @eturns True when interval has been scheduled, false when already scheduled (no effect)\n */\n setInterval(millis) {\n if (!this._tickInterval) {\n this._tickCallCount = 0;\n this._tickInterval = self.setInterval(this._boundTick, millis);\n return true;\n }\n return false;\n }\n\n /**\n * @returns True when interval was cleared, false when none was set (no effect)\n */\n clearInterval() {\n if (this._tickInterval) {\n self.clearInterval(this._tickInterval);\n this._tickInterval = null;\n return true;\n }\n return false;\n }\n\n /**\n * @returns True when timeout was cleared, false when none was set (no effect)\n */\n clearNextTick() {\n if (this._tickTimer) {\n self.clearTimeout(this._tickTimer);\n this._tickTimer = null;\n return true;\n }\n return false;\n }\n\n /**\n * Will call the subclass doTick implementation in this main loop tick\n * or in the next one (via setTimeout(,0)) in case it has already been called\n * in this tick (in case this is a re-entrant call).\n */\n tick() {\n this._tickCallCount++;\n if (this._tickCallCount === 1) {\n this.doTick();\n // re-entrant call to tick from previous doTick call stack\n // -> schedule a call on the next main loop iteration to process this task processing request\n if (this._tickCallCount > 1) {\n // make sure only one timer exists at any time at max\n this.tickImmediate();\n }\n this._tickCallCount = 0;\n }\n }\n tickImmediate() {\n this.clearNextTick();\n this._tickTimer = self.setTimeout(this._boundTick, 0);\n }\n\n /**\n * For subclass to implement task logic\n * @abstract\n */\n doTick() {}\n}\n\nvar FragmentState = {\n NOT_LOADED: \"NOT_LOADED\",\n APPENDING: \"APPENDING\",\n PARTIAL: \"PARTIAL\",\n OK: \"OK\"\n};\nclass FragmentTracker {\n constructor(hls) {\n this.activePartLists = Object.create(null);\n this.endListFragments = Object.create(null);\n this.fragments = Object.create(null);\n this.timeRanges = Object.create(null);\n this.bufferPadding = 0.2;\n this.hls = void 0;\n this.hasGaps = false;\n this.hls = hls;\n this._registerListeners();\n }\n _registerListeners() {\n const {\n hls\n } = this;\n hls.on(Events.BUFFER_APPENDED, this.onBufferAppended, this);\n hls.on(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n hls.on(Events.FRAG_LOADED, this.onFragLoaded, this);\n }\n _unregisterListeners() {\n const {\n hls\n } = this;\n hls.off(Events.BUFFER_APPENDED, this.onBufferAppended, this);\n hls.off(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n hls.off(Events.FRAG_LOADED, this.onFragLoaded, this);\n }\n destroy() {\n this._unregisterListeners();\n // @ts-ignore\n this.fragments =\n // @ts-ignore\n this.activePartLists =\n // @ts-ignore\n this.endListFragments = this.timeRanges = null;\n }\n\n /**\n * Return a Fragment or Part with an appended range that matches the position and levelType\n * Otherwise, return null\n */\n getAppendedFrag(position, levelType) {\n const activeParts = this.activePartLists[levelType];\n if (activeParts) {\n for (let i = activeParts.length; i--;) {\n const activePart = activeParts[i];\n if (!activePart) {\n break;\n }\n const appendedPTS = activePart.end;\n if (activePart.start <= position && appendedPTS !== null && position <= appendedPTS) {\n return activePart;\n }\n }\n }\n return this.getBufferedFrag(position, levelType);\n }\n\n /**\n * Return a buffered Fragment that matches the position and levelType.\n * A buffered Fragment is one whose loading, parsing and appending is done (completed or \"partial\" meaning aborted).\n * If not found any Fragment, return null\n */\n getBufferedFrag(position, levelType) {\n const {\n fragments\n } = this;\n const keys = Object.keys(fragments);\n for (let i = keys.length; i--;) {\n const fragmentEntity = fragments[keys[i]];\n if ((fragmentEntity == null ? void 0 : fragmentEntity.body.type) === levelType && fragmentEntity.buffered) {\n const frag = fragmentEntity.body;\n if (frag.start <= position && position <= frag.end) {\n return frag;\n }\n }\n }\n return null;\n }\n\n /**\n * Partial fragments effected by coded frame eviction will be removed\n * The browser will unload parts of the buffer to free up memory for new buffer data\n * Fragments will need to be reloaded when the buffer is freed up, removing partial fragments will allow them to reload(since there might be parts that are still playable)\n */\n detectEvictedFragments(elementaryStream, timeRange, playlistType, appendedPart) {\n if (this.timeRanges) {\n this.timeRanges[elementaryStream] = timeRange;\n }\n // Check if any flagged fragments have been unloaded\n // excluding anything newer than appendedPartSn\n const appendedPartSn = (appendedPart == null ? void 0 : appendedPart.fragment.sn) || -1;\n Object.keys(this.fragments).forEach(key => {\n const fragmentEntity = this.fragments[key];\n if (!fragmentEntity) {\n return;\n }\n if (appendedPartSn >= fragmentEntity.body.sn) {\n return;\n }\n if (!fragmentEntity.buffered && !fragmentEntity.loaded) {\n if (fragmentEntity.body.type === playlistType) {\n this.removeFragment(fragmentEntity.body);\n }\n return;\n }\n const esData = fragmentEntity.range[elementaryStream];\n if (!esData) {\n return;\n }\n esData.time.some(time => {\n const isNotBuffered = !this.isTimeBuffered(time.startPTS, time.endPTS, timeRange);\n if (isNotBuffered) {\n // Unregister partial fragment as it needs to load again to be reused\n this.removeFragment(fragmentEntity.body);\n }\n return isNotBuffered;\n });\n });\n }\n\n /**\n * Checks if the fragment passed in is loaded in the buffer properly\n * Partially loaded fragments will be registered as a partial fragment\n */\n detectPartialFragments(data) {\n const timeRanges = this.timeRanges;\n const {\n frag,\n part\n } = data;\n if (!timeRanges || frag.sn === 'initSegment') {\n return;\n }\n const fragKey = getFragmentKey(frag);\n const fragmentEntity = this.fragments[fragKey];\n if (!fragmentEntity || fragmentEntity.buffered && frag.gap) {\n return;\n }\n const isFragHint = !frag.relurl;\n Object.keys(timeRanges).forEach(elementaryStream => {\n const streamInfo = frag.elementaryStreams[elementaryStream];\n if (!streamInfo) {\n return;\n }\n const timeRange = timeRanges[elementaryStream];\n const partial = isFragHint || streamInfo.partial === true;\n fragmentEntity.range[elementaryStream] = this.getBufferedTimes(frag, part, partial, timeRange);\n });\n fragmentEntity.loaded = null;\n if (Object.keys(fragmentEntity.range).length) {\n fragmentEntity.buffered = true;\n const endList = fragmentEntity.body.endList = frag.endList || fragmentEntity.body.endList;\n if (endList) {\n this.endListFragments[fragmentEntity.body.type] = fragmentEntity;\n }\n if (!isPartial(fragmentEntity)) {\n // Remove older fragment parts from lookup after frag is tracked as buffered\n this.removeParts(frag.sn - 1, frag.type);\n }\n } else {\n // remove fragment if nothing was appended\n this.removeFragment(fragmentEntity.body);\n }\n }\n removeParts(snToKeep, levelType) {\n const activeParts = this.activePartLists[levelType];\n if (!activeParts) {\n return;\n }\n this.activePartLists[levelType] = activeParts.filter(part => part.fragment.sn >= snToKeep);\n }\n fragBuffered(frag, force) {\n const fragKey = getFragmentKey(frag);\n let fragmentEntity = this.fragments[fragKey];\n if (!fragmentEntity && force) {\n fragmentEntity = this.fragments[fragKey] = {\n body: frag,\n appendedPTS: null,\n loaded: null,\n buffered: false,\n range: Object.create(null)\n };\n if (frag.gap) {\n this.hasGaps = true;\n }\n }\n if (fragmentEntity) {\n fragmentEntity.loaded = null;\n fragmentEntity.buffered = true;\n }\n }\n getBufferedTimes(fragment, part, partial, timeRange) {\n const buffered = {\n time: [],\n partial\n };\n const startPTS = fragment.start;\n const endPTS = fragment.end;\n const minEndPTS = fragment.minEndPTS || endPTS;\n const maxStartPTS = fragment.maxStartPTS || startPTS;\n for (let i = 0; i < timeRange.length; i++) {\n const startTime = timeRange.start(i) - this.bufferPadding;\n const endTime = timeRange.end(i) + this.bufferPadding;\n if (maxStartPTS >= startTime && minEndPTS <= endTime) {\n // Fragment is entirely contained in buffer\n // No need to check the other timeRange times since it's completely playable\n buffered.time.push({\n startPTS: Math.max(startPTS, timeRange.start(i)),\n endPTS: Math.min(endPTS, timeRange.end(i))\n });\n break;\n } else if (startPTS < endTime && endPTS > startTime) {\n const start = Math.max(startPTS, timeRange.start(i));\n const end = Math.min(endPTS, timeRange.end(i));\n if (end > start) {\n buffered.partial = true;\n // Check for intersection with buffer\n // Get playable sections of the fragment\n buffered.time.push({\n startPTS: start,\n endPTS: end\n });\n }\n } else if (endPTS <= startTime) {\n // No need to check the rest of the timeRange as it is in order\n break;\n }\n }\n return buffered;\n }\n\n /**\n * Gets the partial fragment for a certain time\n */\n getPartialFragment(time) {\n let bestFragment = null;\n let timePadding;\n let startTime;\n let endTime;\n let bestOverlap = 0;\n const {\n bufferPadding,\n fragments\n } = this;\n Object.keys(fragments).forEach(key => {\n const fragmentEntity = fragments[key];\n if (!fragmentEntity) {\n return;\n }\n if (isPartial(fragmentEntity)) {\n startTime = fragmentEntity.body.start - bufferPadding;\n endTime = fragmentEntity.body.end + bufferPadding;\n if (time >= startTime && time <= endTime) {\n // Use the fragment that has the most padding from start and end time\n timePadding = Math.min(time - startTime, endTime - time);\n if (bestOverlap <= timePadding) {\n bestFragment = fragmentEntity.body;\n bestOverlap = timePadding;\n }\n }\n }\n });\n return bestFragment;\n }\n isEndListAppended(type) {\n const lastFragmentEntity = this.endListFragments[type];\n return lastFragmentEntity !== undefined && (lastFragmentEntity.buffered || isPartial(lastFragmentEntity));\n }\n getState(fragment) {\n const fragKey = getFragmentKey(fragment);\n const fragmentEntity = this.fragments[fragKey];\n if (fragmentEntity) {\n if (!fragmentEntity.buffered) {\n return FragmentState.APPENDING;\n } else if (isPartial(fragmentEntity)) {\n return FragmentState.PARTIAL;\n } else {\n return FragmentState.OK;\n }\n }\n return FragmentState.NOT_LOADED;\n }\n isTimeBuffered(startPTS, endPTS, timeRange) {\n let startTime;\n let endTime;\n for (let i = 0; i < timeRange.length; i++) {\n startTime = timeRange.start(i) - this.bufferPadding;\n endTime = timeRange.end(i) + this.bufferPadding;\n if (startPTS >= startTime && endPTS <= endTime) {\n return true;\n }\n if (endPTS <= startTime) {\n // No need to check the rest of the timeRange as it is in order\n return false;\n }\n }\n return false;\n }\n onFragLoaded(event, data) {\n const {\n frag,\n part\n } = data;\n // don't track initsegment (for which sn is not a number)\n // don't track frags used for bitrateTest, they're irrelevant.\n if (frag.sn === 'initSegment' || frag.bitrateTest) {\n return;\n }\n\n // Fragment entity `loaded` FragLoadedData is null when loading parts\n const loaded = part ? null : data;\n const fragKey = getFragmentKey(frag);\n this.fragments[fragKey] = {\n body: frag,\n appendedPTS: null,\n loaded,\n buffered: false,\n range: Object.create(null)\n };\n }\n onBufferAppended(event, data) {\n const {\n frag,\n part,\n timeRanges\n } = data;\n if (frag.sn === 'initSegment') {\n return;\n }\n const playlistType = frag.type;\n if (part) {\n let activeParts = this.activePartLists[playlistType];\n if (!activeParts) {\n this.activePartLists[playlistType] = activeParts = [];\n }\n activeParts.push(part);\n }\n // Store the latest timeRanges loaded in the buffer\n this.timeRanges = timeRanges;\n Object.keys(timeRanges).forEach(elementaryStream => {\n const timeRange = timeRanges[elementaryStream];\n this.detectEvictedFragments(elementaryStream, timeRange, playlistType, part);\n });\n }\n onFragBuffered(event, data) {\n this.detectPartialFragments(data);\n }\n hasFragment(fragment) {\n const fragKey = getFragmentKey(fragment);\n return !!this.fragments[fragKey];\n }\n hasParts(type) {\n var _this$activePartLists;\n return !!((_this$activePartLists = this.activePartLists[type]) != null && _this$activePartLists.length);\n }\n removeFragmentsInRange(start, end, playlistType, withGapOnly, unbufferedOnly) {\n if (withGapOnly && !this.hasGaps) {\n return;\n }\n Object.keys(this.fragments).forEach(key => {\n const fragmentEntity = this.fragments[key];\n if (!fragmentEntity) {\n return;\n }\n const frag = fragmentEntity.body;\n if (frag.type !== playlistType || withGapOnly && !frag.gap) {\n return;\n }\n if (frag.start < end && frag.end > start && (fragmentEntity.buffered || unbufferedOnly)) {\n this.removeFragment(frag);\n }\n });\n }\n removeFragment(fragment) {\n const fragKey = getFragmentKey(fragment);\n fragment.stats.loaded = 0;\n fragment.clearElementaryStreamInfo();\n const activeParts = this.activePartLists[fragment.type];\n if (activeParts) {\n const snToRemove = fragment.sn;\n this.activePartLists[fragment.type] = activeParts.filter(part => part.fragment.sn !== snToRemove);\n }\n delete this.fragments[fragKey];\n if (fragment.endList) {\n delete this.endListFragments[fragment.type];\n }\n }\n removeAllFragments() {\n this.fragments = Object.create(null);\n this.endListFragments = Object.create(null);\n this.activePartLists = Object.create(null);\n this.hasGaps = false;\n }\n}\nfunction isPartial(fragmentEntity) {\n var _fragmentEntity$range, _fragmentEntity$range2, _fragmentEntity$range3;\n return fragmentEntity.buffered && (fragmentEntity.body.gap || ((_fragmentEntity$range = fragmentEntity.range.video) == null ? void 0 : _fragmentEntity$range.partial) || ((_fragmentEntity$range2 = fragmentEntity.range.audio) == null ? void 0 : _fragmentEntity$range2.partial) || ((_fragmentEntity$range3 = fragmentEntity.range.audiovideo) == null ? void 0 : _fragmentEntity$range3.partial));\n}\nfunction getFragmentKey(fragment) {\n return `${fragment.type}_${fragment.level}_${fragment.sn}`;\n}\n\n/**\n * Provides methods dealing with buffer length retrieval for example.\n *\n * In general, a helper around HTML5 MediaElement TimeRanges gathered from `buffered` property.\n *\n * Also @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/buffered\n */\n\nconst noopBuffered = {\n length: 0,\n start: () => 0,\n end: () => 0\n};\nclass BufferHelper {\n /**\n * Return true if `media`'s buffered include `position`\n */\n static isBuffered(media, position) {\n try {\n if (media) {\n const buffered = BufferHelper.getBuffered(media);\n for (let i = 0; i < buffered.length; i++) {\n if (position >= buffered.start(i) && position <= buffered.end(i)) {\n return true;\n }\n }\n }\n } catch (error) {\n // this is to catch\n // InvalidStateError: Failed to read the 'buffered' property from 'SourceBuffer':\n // This SourceBuffer has been removed from the parent media source\n }\n return false;\n }\n static bufferInfo(media, pos, maxHoleDuration) {\n try {\n if (media) {\n const vbuffered = BufferHelper.getBuffered(media);\n const buffered = [];\n let i;\n for (i = 0; i < vbuffered.length; i++) {\n buffered.push({\n start: vbuffered.start(i),\n end: vbuffered.end(i)\n });\n }\n return this.bufferedInfo(buffered, pos, maxHoleDuration);\n }\n } catch (error) {\n // this is to catch\n // InvalidStateError: Failed to read the 'buffered' property from 'SourceBuffer':\n // This SourceBuffer has been removed from the parent media source\n }\n return {\n len: 0,\n start: pos,\n end: pos,\n nextStart: undefined\n };\n }\n static bufferedInfo(buffered, pos, maxHoleDuration) {\n pos = Math.max(0, pos);\n // sort on buffer.start/smaller end (IE does not always return sorted buffered range)\n buffered.sort(function (a, b) {\n const diff = a.start - b.start;\n if (diff) {\n return diff;\n } else {\n return b.end - a.end;\n }\n });\n let buffered2 = [];\n if (maxHoleDuration) {\n // there might be some small holes between buffer time range\n // consider that holes smaller than maxHoleDuration are irrelevant and build another\n // buffer time range representations that discards those holes\n for (let i = 0; i < buffered.length; i++) {\n const buf2len = buffered2.length;\n if (buf2len) {\n const buf2end = buffered2[buf2len - 1].end;\n // if small hole (value between 0 or maxHoleDuration ) or overlapping (negative)\n if (buffered[i].start - buf2end < maxHoleDuration) {\n // merge overlapping time ranges\n // update lastRange.end only if smaller than item.end\n // e.g. [ 1, 15] with [ 2,8] => [ 1,15] (no need to modify lastRange.end)\n // whereas [ 1, 8] with [ 2,15] => [ 1,15] ( lastRange should switch from [1,8] to [1,15])\n if (buffered[i].end > buf2end) {\n buffered2[buf2len - 1].end = buffered[i].end;\n }\n } else {\n // big hole\n buffered2.push(buffered[i]);\n }\n } else {\n // first value\n buffered2.push(buffered[i]);\n }\n }\n } else {\n buffered2 = buffered;\n }\n let bufferLen = 0;\n\n // bufferStartNext can possibly be undefined based on the conditional logic below\n let bufferStartNext;\n\n // bufferStart and bufferEnd are buffer boundaries around current video position\n let bufferStart = pos;\n let bufferEnd = pos;\n for (let i = 0; i < buffered2.length; i++) {\n const start = buffered2[i].start;\n const end = buffered2[i].end;\n // logger.log('buf start/end:' + buffered.start(i) + '/' + buffered.end(i));\n if (pos + maxHoleDuration >= start && pos < end) {\n // play position is inside this buffer TimeRange, retrieve end of buffer position and buffer length\n bufferStart = start;\n bufferEnd = end;\n bufferLen = bufferEnd - pos;\n } else if (pos + maxHoleDuration < start) {\n bufferStartNext = start;\n break;\n }\n }\n return {\n len: bufferLen,\n start: bufferStart || 0,\n end: bufferEnd || 0,\n nextStart: bufferStartNext\n };\n }\n\n /**\n * Safe method to get buffered property.\n * SourceBuffer.buffered may throw if SourceBuffer is removed from it's MediaSource\n */\n static getBuffered(media) {\n try {\n return media.buffered;\n } catch (e) {\n logger.log('failed to get media.buffered', e);\n return noopBuffered;\n }\n }\n}\n\nclass ChunkMetadata {\n constructor(level, sn, id, size = 0, part = -1, partial = false) {\n this.level = void 0;\n this.sn = void 0;\n this.part = void 0;\n this.id = void 0;\n this.size = void 0;\n this.partial = void 0;\n this.transmuxing = getNewPerformanceTiming();\n this.buffering = {\n audio: getNewPerformanceTiming(),\n video: getNewPerformanceTiming(),\n audiovideo: getNewPerformanceTiming()\n };\n this.level = level;\n this.sn = sn;\n this.id = id;\n this.size = size;\n this.part = part;\n this.partial = partial;\n }\n}\nfunction getNewPerformanceTiming() {\n return {\n start: 0,\n executeStart: 0,\n executeEnd: 0,\n end: 0\n };\n}\n\nfunction findFirstFragWithCC(fragments, cc) {\n for (let i = 0, len = fragments.length; i < len; i++) {\n var _fragments$i;\n if (((_fragments$i = fragments[i]) == null ? void 0 : _fragments$i.cc) === cc) {\n return fragments[i];\n }\n }\n return null;\n}\nfunction shouldAlignOnDiscontinuities(lastFrag, switchDetails, details) {\n if (switchDetails) {\n if (details.endCC > details.startCC || lastFrag && lastFrag.cc < details.startCC) {\n return true;\n }\n }\n return false;\n}\n\n// Find the first frag in the previous level which matches the CC of the first frag of the new level\nfunction findDiscontinuousReferenceFrag(prevDetails, curDetails) {\n const prevFrags = prevDetails.fragments;\n const curFrags = curDetails.fragments;\n if (!curFrags.length || !prevFrags.length) {\n logger.log('No fragments to align');\n return;\n }\n const prevStartFrag = findFirstFragWithCC(prevFrags, curFrags[0].cc);\n if (!prevStartFrag || prevStartFrag && !prevStartFrag.startPTS) {\n logger.log('No frag in previous level to align on');\n return;\n }\n return prevStartFrag;\n}\nfunction adjustFragmentStart(frag, sliding) {\n if (frag) {\n const start = frag.start + sliding;\n frag.start = frag.startPTS = start;\n frag.endPTS = start + frag.duration;\n }\n}\nfunction adjustSlidingStart(sliding, details) {\n // Update segments\n const fragments = details.fragments;\n for (let i = 0, len = fragments.length; i < len; i++) {\n adjustFragmentStart(fragments[i], sliding);\n }\n // Update LL-HLS parts at the end of the playlist\n if (details.fragmentHint) {\n adjustFragmentStart(details.fragmentHint, sliding);\n }\n details.alignedSliding = true;\n}\n\n/**\n * Using the parameters of the last level, this function computes PTS' of the new fragments so that they form a\n * contiguous stream with the last fragments.\n * The PTS of a fragment lets Hls.js know where it fits into a stream - by knowing every PTS, we know which fragment to\n * download at any given time. PTS is normally computed when the fragment is demuxed, so taking this step saves us time\n * and an extra download.\n * @param lastFrag\n * @param lastLevel\n * @param details\n */\nfunction alignStream(lastFrag, switchDetails, details) {\n if (!switchDetails) {\n return;\n }\n alignDiscontinuities(lastFrag, details, switchDetails);\n if (!details.alignedSliding && switchDetails) {\n // If the PTS wasn't figured out via discontinuity sequence that means there was no CC increase within the level.\n // Aligning via Program Date Time should therefore be reliable, since PDT should be the same within the same\n // discontinuity sequence.\n alignMediaPlaylistByPDT(details, switchDetails);\n }\n if (!details.alignedSliding && switchDetails && !details.skippedSegments) {\n // Try to align on sn so that we pick a better start fragment.\n // Do not perform this on playlists with delta updates as this is only to align levels on switch\n // and adjustSliding only adjusts fragments after skippedSegments.\n adjustSliding(switchDetails, details);\n }\n}\n\n/**\n * Computes the PTS if a new level's fragments using the PTS of a fragment in the last level which shares the same\n * discontinuity sequence.\n * @param lastFrag - The last Fragment which shares the same discontinuity sequence\n * @param lastLevel - The details of the last loaded level\n * @param details - The details of the new level\n */\nfunction alignDiscontinuities(lastFrag, details, switchDetails) {\n if (shouldAlignOnDiscontinuities(lastFrag, switchDetails, details)) {\n const referenceFrag = findDiscontinuousReferenceFrag(switchDetails, details);\n if (referenceFrag && isFiniteNumber(referenceFrag.start)) {\n logger.log(`Adjusting PTS using last level due to CC increase within current level ${details.url}`);\n adjustSlidingStart(referenceFrag.start, details);\n }\n }\n}\n\n/**\n * Ensures appropriate time-alignment between renditions based on PDT.\n * This function assumes the timelines represented in `refDetails` are accurate, including the PDTs\n * for the last discontinuity sequence number shared by both playlists when present,\n * and uses the \"wallclock\"/PDT timeline as a cross-reference to `details`, adjusting the presentation\n * times/timelines of `details` accordingly.\n * Given the asynchronous nature of fetches and initial loads of live `main` and audio/subtitle tracks,\n * the primary purpose of this function is to ensure the \"local timelines\" of audio/subtitle tracks\n * are aligned to the main/video timeline, using PDT as the cross-reference/\"anchor\" that should\n * be consistent across playlists, per the HLS spec.\n * @param details - The details of the rendition you'd like to time-align (e.g. an audio rendition).\n * @param refDetails - The details of the reference rendition with start and PDT times for alignment.\n */\nfunction alignMediaPlaylistByPDT(details, refDetails) {\n if (!details.hasProgramDateTime || !refDetails.hasProgramDateTime) {\n return;\n }\n const fragments = details.fragments;\n const refFragments = refDetails.fragments;\n if (!fragments.length || !refFragments.length) {\n return;\n }\n\n // Calculate a delta to apply to all fragments according to the delta in PDT times and start times\n // of a fragment in the reference details, and a fragment in the target details of the same discontinuity.\n // If a fragment of the same discontinuity was not found use the middle fragment of both.\n let refFrag;\n let frag;\n const targetCC = Math.min(refDetails.endCC, details.endCC);\n if (refDetails.startCC < targetCC && details.startCC < targetCC) {\n refFrag = findFirstFragWithCC(refFragments, targetCC);\n frag = findFirstFragWithCC(fragments, targetCC);\n }\n if (!refFrag || !frag) {\n refFrag = refFragments[Math.floor(refFragments.length / 2)];\n frag = findFirstFragWithCC(fragments, refFrag.cc) || fragments[Math.floor(fragments.length / 2)];\n }\n const refPDT = refFrag.programDateTime;\n const targetPDT = frag.programDateTime;\n if (!refPDT || !targetPDT) {\n return;\n }\n const delta = (targetPDT - refPDT) / 1000 - (frag.start - refFrag.start);\n adjustSlidingStart(delta, details);\n}\n\nconst MIN_CHUNK_SIZE = Math.pow(2, 17); // 128kb\n\nclass FragmentLoader {\n constructor(config) {\n this.config = void 0;\n this.loader = null;\n this.partLoadTimeout = -1;\n this.config = config;\n }\n destroy() {\n if (this.loader) {\n this.loader.destroy();\n this.loader = null;\n }\n }\n abort() {\n if (this.loader) {\n // Abort the loader for current fragment. Only one may load at any given time\n this.loader.abort();\n }\n }\n load(frag, onProgress) {\n const url = frag.url;\n if (!url) {\n return Promise.reject(new LoadError({\n type: ErrorTypes.NETWORK_ERROR,\n details: ErrorDetails.FRAG_LOAD_ERROR,\n fatal: false,\n frag,\n error: new Error(`Fragment does not have a ${url ? 'part list' : 'url'}`),\n networkDetails: null\n }));\n }\n this.abort();\n const config = this.config;\n const FragmentILoader = config.fLoader;\n const DefaultILoader = config.loader;\n return new Promise((resolve, reject) => {\n if (this.loader) {\n this.loader.destroy();\n }\n if (frag.gap) {\n if (frag.tagList.some(tags => tags[0] === 'GAP')) {\n reject(createGapLoadError(frag));\n return;\n } else {\n // Reset temporary treatment as GAP tag\n frag.gap = false;\n }\n }\n const loader = this.loader = frag.loader = FragmentILoader ? new FragmentILoader(config) : new DefaultILoader(config);\n const loaderContext = createLoaderContext(frag);\n const loadPolicy = getLoaderConfigWithoutReties(config.fragLoadPolicy.default);\n const loaderConfig = {\n loadPolicy,\n timeout: loadPolicy.maxLoadTimeMs,\n maxRetry: 0,\n retryDelay: 0,\n maxRetryDelay: 0,\n highWaterMark: frag.sn === 'initSegment' ? Infinity : MIN_CHUNK_SIZE\n };\n // Assign frag stats to the loader's stats reference\n frag.stats = loader.stats;\n loader.load(loaderContext, loaderConfig, {\n onSuccess: (response, stats, context, networkDetails) => {\n this.resetLoader(frag, loader);\n let payload = response.data;\n if (context.resetIV && frag.decryptdata) {\n frag.decryptdata.iv = new Uint8Array(payload.slice(0, 16));\n payload = payload.slice(16);\n }\n resolve({\n frag,\n part: null,\n payload,\n networkDetails\n });\n },\n onError: (response, context, networkDetails, stats) => {\n this.resetLoader(frag, loader);\n reject(new LoadError({\n type: ErrorTypes.NETWORK_ERROR,\n details: ErrorDetails.FRAG_LOAD_ERROR,\n fatal: false,\n frag,\n response: _objectSpread2({\n url,\n data: undefined\n }, response),\n error: new Error(`HTTP Error ${response.code} ${response.text}`),\n networkDetails,\n stats\n }));\n },\n onAbort: (stats, context, networkDetails) => {\n this.resetLoader(frag, loader);\n reject(new LoadError({\n type: ErrorTypes.NETWORK_ERROR,\n details: ErrorDetails.INTERNAL_ABORTED,\n fatal: false,\n frag,\n error: new Error('Aborted'),\n networkDetails,\n stats\n }));\n },\n onTimeout: (stats, context, networkDetails) => {\n this.resetLoader(frag, loader);\n reject(new LoadError({\n type: ErrorTypes.NETWORK_ERROR,\n details: ErrorDetails.FRAG_LOAD_TIMEOUT,\n fatal: false,\n frag,\n error: new Error(`Timeout after ${loaderConfig.timeout}ms`),\n networkDetails,\n stats\n }));\n },\n onProgress: (stats, context, data, networkDetails) => {\n if (onProgress) {\n onProgress({\n frag,\n part: null,\n payload: data,\n networkDetails\n });\n }\n }\n });\n });\n }\n loadPart(frag, part, onProgress) {\n this.abort();\n const config = this.config;\n const FragmentILoader = config.fLoader;\n const DefaultILoader = config.loader;\n return new Promise((resolve, reject) => {\n if (this.loader) {\n this.loader.destroy();\n }\n if (frag.gap || part.gap) {\n reject(createGapLoadError(frag, part));\n return;\n }\n const loader = this.loader = frag.loader = FragmentILoader ? new FragmentILoader(config) : new DefaultILoader(config);\n const loaderContext = createLoaderContext(frag, part);\n // Should we define another load policy for parts?\n const loadPolicy = getLoaderConfigWithoutReties(config.fragLoadPolicy.default);\n const loaderConfig = {\n loadPolicy,\n timeout: loadPolicy.maxLoadTimeMs,\n maxRetry: 0,\n retryDelay: 0,\n maxRetryDelay: 0,\n highWaterMark: MIN_CHUNK_SIZE\n };\n // Assign part stats to the loader's stats reference\n part.stats = loader.stats;\n loader.load(loaderContext, loaderConfig, {\n onSuccess: (response, stats, context, networkDetails) => {\n this.resetLoader(frag, loader);\n this.updateStatsFromPart(frag, part);\n const partLoadedData = {\n frag,\n part,\n payload: response.data,\n networkDetails\n };\n onProgress(partLoadedData);\n resolve(partLoadedData);\n },\n onError: (response, context, networkDetails, stats) => {\n this.resetLoader(frag, loader);\n reject(new LoadError({\n type: ErrorTypes.NETWORK_ERROR,\n details: ErrorDetails.FRAG_LOAD_ERROR,\n fatal: false,\n frag,\n part,\n response: _objectSpread2({\n url: loaderContext.url,\n data: undefined\n }, response),\n error: new Error(`HTTP Error ${response.code} ${response.text}`),\n networkDetails,\n stats\n }));\n },\n onAbort: (stats, context, networkDetails) => {\n frag.stats.aborted = part.stats.aborted;\n this.resetLoader(frag, loader);\n reject(new LoadError({\n type: ErrorTypes.NETWORK_ERROR,\n details: ErrorDetails.INTERNAL_ABORTED,\n fatal: false,\n frag,\n part,\n error: new Error('Aborted'),\n networkDetails,\n stats\n }));\n },\n onTimeout: (stats, context, networkDetails) => {\n this.resetLoader(frag, loader);\n reject(new LoadError({\n type: ErrorTypes.NETWORK_ERROR,\n details: ErrorDetails.FRAG_LOAD_TIMEOUT,\n fatal: false,\n frag,\n part,\n error: new Error(`Timeout after ${loaderConfig.timeout}ms`),\n networkDetails,\n stats\n }));\n }\n });\n });\n }\n updateStatsFromPart(frag, part) {\n const fragStats = frag.stats;\n const partStats = part.stats;\n const partTotal = partStats.total;\n fragStats.loaded += partStats.loaded;\n if (partTotal) {\n const estTotalParts = Math.round(frag.duration / part.duration);\n const estLoadedParts = Math.min(Math.round(fragStats.loaded / partTotal), estTotalParts);\n const estRemainingParts = estTotalParts - estLoadedParts;\n const estRemainingBytes = estRemainingParts * Math.round(fragStats.loaded / estLoadedParts);\n fragStats.total = fragStats.loaded + estRemainingBytes;\n } else {\n fragStats.total = Math.max(fragStats.loaded, fragStats.total);\n }\n const fragLoading = fragStats.loading;\n const partLoading = partStats.loading;\n if (fragLoading.start) {\n // add to fragment loader latency\n fragLoading.first += partLoading.first - partLoading.start;\n } else {\n fragLoading.start = partLoading.start;\n fragLoading.first = partLoading.first;\n }\n fragLoading.end = partLoading.end;\n }\n resetLoader(frag, loader) {\n frag.loader = null;\n if (this.loader === loader) {\n self.clearTimeout(this.partLoadTimeout);\n this.loader = null;\n }\n loader.destroy();\n }\n}\nfunction createLoaderContext(frag, part = null) {\n const segment = part || frag;\n const loaderContext = {\n frag,\n part,\n responseType: 'arraybuffer',\n url: segment.url,\n headers: {},\n rangeStart: 0,\n rangeEnd: 0\n };\n const start = segment.byteRangeStartOffset;\n const end = segment.byteRangeEndOffset;\n if (isFiniteNumber(start) && isFiniteNumber(end)) {\n var _frag$decryptdata;\n let byteRangeStart = start;\n let byteRangeEnd = end;\n if (frag.sn === 'initSegment' && ((_frag$decryptdata = frag.decryptdata) == null ? void 0 : _frag$decryptdata.method) === 'AES-128') {\n // MAP segment encrypted with method 'AES-128', when served with HTTP Range,\n // has the unencrypted size specified in the range.\n // Ref: https://tools.ietf.org/html/draft-pantos-hls-rfc8216bis-08#section-6.3.6\n const fragmentLen = end - start;\n if (fragmentLen % 16) {\n byteRangeEnd = end + (16 - fragmentLen % 16);\n }\n if (start !== 0) {\n loaderContext.resetIV = true;\n byteRangeStart = start - 16;\n }\n }\n loaderContext.rangeStart = byteRangeStart;\n loaderContext.rangeEnd = byteRangeEnd;\n }\n return loaderContext;\n}\nfunction createGapLoadError(frag, part) {\n const error = new Error(`GAP ${frag.gap ? 'tag' : 'attribute'} found`);\n const errorData = {\n type: ErrorTypes.MEDIA_ERROR,\n details: ErrorDetails.FRAG_GAP,\n fatal: false,\n frag,\n error,\n networkDetails: null\n };\n if (part) {\n errorData.part = part;\n }\n (part ? part : frag).stats.aborted = true;\n return new LoadError(errorData);\n}\nclass LoadError extends Error {\n constructor(data) {\n super(data.error.message);\n this.data = void 0;\n this.data = data;\n }\n}\n\nclass AESCrypto {\n constructor(subtle, iv) {\n this.subtle = void 0;\n this.aesIV = void 0;\n this.subtle = subtle;\n this.aesIV = iv;\n }\n decrypt(data, key) {\n return this.subtle.decrypt({\n name: 'AES-CBC',\n iv: this.aesIV\n }, key, data);\n }\n}\n\nclass FastAESKey {\n constructor(subtle, key) {\n this.subtle = void 0;\n this.key = void 0;\n this.subtle = subtle;\n this.key = key;\n }\n expandKey() {\n return this.subtle.importKey('raw', this.key, {\n name: 'AES-CBC'\n }, false, ['encrypt', 'decrypt']);\n }\n}\n\n// PKCS7\nfunction removePadding(array) {\n const outputBytes = array.byteLength;\n const paddingBytes = outputBytes && new DataView(array.buffer).getUint8(outputBytes - 1);\n if (paddingBytes) {\n return sliceUint8(array, 0, outputBytes - paddingBytes);\n }\n return array;\n}\nclass AESDecryptor {\n constructor() {\n this.rcon = [0x0, 0x1, 0x2, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n this.subMix = [new Uint32Array(256), new Uint32Array(256), new Uint32Array(256), new Uint32Array(256)];\n this.invSubMix = [new Uint32Array(256), new Uint32Array(256), new Uint32Array(256), new Uint32Array(256)];\n this.sBox = new Uint32Array(256);\n this.invSBox = new Uint32Array(256);\n this.key = new Uint32Array(0);\n this.ksRows = 0;\n this.keySize = 0;\n this.keySchedule = void 0;\n this.invKeySchedule = void 0;\n this.initTable();\n }\n\n // Using view.getUint32() also swaps the byte order.\n uint8ArrayToUint32Array_(arrayBuffer) {\n const view = new DataView(arrayBuffer);\n const newArray = new Uint32Array(4);\n for (let i = 0; i < 4; i++) {\n newArray[i] = view.getUint32(i * 4);\n }\n return newArray;\n }\n initTable() {\n const sBox = this.sBox;\n const invSBox = this.invSBox;\n const subMix = this.subMix;\n const subMix0 = subMix[0];\n const subMix1 = subMix[1];\n const subMix2 = subMix[2];\n const subMix3 = subMix[3];\n const invSubMix = this.invSubMix;\n const invSubMix0 = invSubMix[0];\n const invSubMix1 = invSubMix[1];\n const invSubMix2 = invSubMix[2];\n const invSubMix3 = invSubMix[3];\n const d = new Uint32Array(256);\n let x = 0;\n let xi = 0;\n let i = 0;\n for (i = 0; i < 256; i++) {\n if (i < 128) {\n d[i] = i << 1;\n } else {\n d[i] = i << 1 ^ 0x11b;\n }\n }\n for (i = 0; i < 256; i++) {\n let sx = xi ^ xi << 1 ^ xi << 2 ^ xi << 3 ^ xi << 4;\n sx = sx >>> 8 ^ sx & 0xff ^ 0x63;\n sBox[x] = sx;\n invSBox[sx] = x;\n\n // Compute multiplication\n const x2 = d[x];\n const x4 = d[x2];\n const x8 = d[x4];\n\n // Compute sub/invSub bytes, mix columns tables\n let t = d[sx] * 0x101 ^ sx * 0x1010100;\n subMix0[x] = t << 24 | t >>> 8;\n subMix1[x] = t << 16 | t >>> 16;\n subMix2[x] = t << 8 | t >>> 24;\n subMix3[x] = t;\n\n // Compute inv sub bytes, inv mix columns tables\n t = x8 * 0x1010101 ^ x4 * 0x10001 ^ x2 * 0x101 ^ x * 0x1010100;\n invSubMix0[sx] = t << 24 | t >>> 8;\n invSubMix1[sx] = t << 16 | t >>> 16;\n invSubMix2[sx] = t << 8 | t >>> 24;\n invSubMix3[sx] = t;\n\n // Compute next counter\n if (!x) {\n x = xi = 1;\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]];\n xi ^= d[d[xi]];\n }\n }\n }\n expandKey(keyBuffer) {\n // convert keyBuffer to Uint32Array\n const key = this.uint8ArrayToUint32Array_(keyBuffer);\n let sameKey = true;\n let offset = 0;\n while (offset < key.length && sameKey) {\n sameKey = key[offset] === this.key[offset];\n offset++;\n }\n if (sameKey) {\n return;\n }\n this.key = key;\n const keySize = this.keySize = key.length;\n if (keySize !== 4 && keySize !== 6 && keySize !== 8) {\n throw new Error('Invalid aes key size=' + keySize);\n }\n const ksRows = this.ksRows = (keySize + 6 + 1) * 4;\n let ksRow;\n let invKsRow;\n const keySchedule = this.keySchedule = new Uint32Array(ksRows);\n const invKeySchedule = this.invKeySchedule = new Uint32Array(ksRows);\n const sbox = this.sBox;\n const rcon = this.rcon;\n const invSubMix = this.invSubMix;\n const invSubMix0 = invSubMix[0];\n const invSubMix1 = invSubMix[1];\n const invSubMix2 = invSubMix[2];\n const invSubMix3 = invSubMix[3];\n let prev;\n let t;\n for (ksRow = 0; ksRow < ksRows; ksRow++) {\n if (ksRow < keySize) {\n prev = keySchedule[ksRow] = key[ksRow];\n continue;\n }\n t = prev;\n if (ksRow % keySize === 0) {\n // Rot word\n t = t << 8 | t >>> 24;\n\n // Sub word\n t = sbox[t >>> 24] << 24 | sbox[t >>> 16 & 0xff] << 16 | sbox[t >>> 8 & 0xff] << 8 | sbox[t & 0xff];\n\n // Mix Rcon\n t ^= rcon[ksRow / keySize | 0] << 24;\n } else if (keySize > 6 && ksRow % keySize === 4) {\n // Sub word\n t = sbox[t >>> 24] << 24 | sbox[t >>> 16 & 0xff] << 16 | sbox[t >>> 8 & 0xff] << 8 | sbox[t & 0xff];\n }\n keySchedule[ksRow] = prev = (keySchedule[ksRow - keySize] ^ t) >>> 0;\n }\n for (invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n ksRow = ksRows - invKsRow;\n if (invKsRow & 3) {\n t = keySchedule[ksRow];\n } else {\n t = keySchedule[ksRow - 4];\n }\n if (invKsRow < 4 || ksRow <= 4) {\n invKeySchedule[invKsRow] = t;\n } else {\n invKeySchedule[invKsRow] = invSubMix0[sbox[t >>> 24]] ^ invSubMix1[sbox[t >>> 16 & 0xff]] ^ invSubMix2[sbox[t >>> 8 & 0xff]] ^ invSubMix3[sbox[t & 0xff]];\n }\n invKeySchedule[invKsRow] = invKeySchedule[invKsRow] >>> 0;\n }\n }\n\n // Adding this as a method greatly improves performance.\n networkToHostOrderSwap(word) {\n return word << 24 | (word & 0xff00) << 8 | (word & 0xff0000) >> 8 | word >>> 24;\n }\n decrypt(inputArrayBuffer, offset, aesIV) {\n const nRounds = this.keySize + 6;\n const invKeySchedule = this.invKeySchedule;\n const invSBOX = this.invSBox;\n const invSubMix = this.invSubMix;\n const invSubMix0 = invSubMix[0];\n const invSubMix1 = invSubMix[1];\n const invSubMix2 = invSubMix[2];\n const invSubMix3 = invSubMix[3];\n const initVector = this.uint8ArrayToUint32Array_(aesIV);\n let initVector0 = initVector[0];\n let initVector1 = initVector[1];\n let initVector2 = initVector[2];\n let initVector3 = initVector[3];\n const inputInt32 = new Int32Array(inputArrayBuffer);\n const outputInt32 = new Int32Array(inputInt32.length);\n let t0, t1, t2, t3;\n let s0, s1, s2, s3;\n let inputWords0, inputWords1, inputWords2, inputWords3;\n let ksRow, i;\n const swapWord = this.networkToHostOrderSwap;\n while (offset < inputInt32.length) {\n inputWords0 = swapWord(inputInt32[offset]);\n inputWords1 = swapWord(inputInt32[offset + 1]);\n inputWords2 = swapWord(inputInt32[offset + 2]);\n inputWords3 = swapWord(inputInt32[offset + 3]);\n s0 = inputWords0 ^ invKeySchedule[0];\n s1 = inputWords3 ^ invKeySchedule[1];\n s2 = inputWords2 ^ invKeySchedule[2];\n s3 = inputWords1 ^ invKeySchedule[3];\n ksRow = 4;\n\n // Iterate through the rounds of decryption\n for (i = 1; i < nRounds; i++) {\n t0 = invSubMix0[s0 >>> 24] ^ invSubMix1[s1 >> 16 & 0xff] ^ invSubMix2[s2 >> 8 & 0xff] ^ invSubMix3[s3 & 0xff] ^ invKeySchedule[ksRow];\n t1 = invSubMix0[s1 >>> 24] ^ invSubMix1[s2 >> 16 & 0xff] ^ invSubMix2[s3 >> 8 & 0xff] ^ invSubMix3[s0 & 0xff] ^ invKeySchedule[ksRow + 1];\n t2 = invSubMix0[s2 >>> 24] ^ invSubMix1[s3 >> 16 & 0xff] ^ invSubMix2[s0 >> 8 & 0xff] ^ invSubMix3[s1 & 0xff] ^ invKeySchedule[ksRow + 2];\n t3 = invSubMix0[s3 >>> 24] ^ invSubMix1[s0 >> 16 & 0xff] ^ invSubMix2[s1 >> 8 & 0xff] ^ invSubMix3[s2 & 0xff] ^ invKeySchedule[ksRow + 3];\n // Update state\n s0 = t0;\n s1 = t1;\n s2 = t2;\n s3 = t3;\n ksRow = ksRow + 4;\n }\n\n // Shift rows, sub bytes, add round key\n t0 = invSBOX[s0 >>> 24] << 24 ^ invSBOX[s1 >> 16 & 0xff] << 16 ^ invSBOX[s2 >> 8 & 0xff] << 8 ^ invSBOX[s3 & 0xff] ^ invKeySchedule[ksRow];\n t1 = invSBOX[s1 >>> 24] << 24 ^ invSBOX[s2 >> 16 & 0xff] << 16 ^ invSBOX[s3 >> 8 & 0xff] << 8 ^ invSBOX[s0 & 0xff] ^ invKeySchedule[ksRow + 1];\n t2 = invSBOX[s2 >>> 24] << 24 ^ invSBOX[s3 >> 16 & 0xff] << 16 ^ invSBOX[s0 >> 8 & 0xff] << 8 ^ invSBOX[s1 & 0xff] ^ invKeySchedule[ksRow + 2];\n t3 = invSBOX[s3 >>> 24] << 24 ^ invSBOX[s0 >> 16 & 0xff] << 16 ^ invSBOX[s1 >> 8 & 0xff] << 8 ^ invSBOX[s2 & 0xff] ^ invKeySchedule[ksRow + 3];\n\n // Write\n outputInt32[offset] = swapWord(t0 ^ initVector0);\n outputInt32[offset + 1] = swapWord(t3 ^ initVector1);\n outputInt32[offset + 2] = swapWord(t2 ^ initVector2);\n outputInt32[offset + 3] = swapWord(t1 ^ initVector3);\n\n // reset initVector to last 4 unsigned int\n initVector0 = inputWords0;\n initVector1 = inputWords1;\n initVector2 = inputWords2;\n initVector3 = inputWords3;\n offset = offset + 4;\n }\n return outputInt32.buffer;\n }\n}\n\nconst CHUNK_SIZE = 16; // 16 bytes, 128 bits\n\nclass Decrypter {\n constructor(config, {\n removePKCS7Padding = true\n } = {}) {\n this.logEnabled = true;\n this.removePKCS7Padding = void 0;\n this.subtle = null;\n this.softwareDecrypter = null;\n this.key = null;\n this.fastAesKey = null;\n this.remainderData = null;\n this.currentIV = null;\n this.currentResult = null;\n this.useSoftware = void 0;\n this.useSoftware = config.enableSoftwareAES;\n this.removePKCS7Padding = removePKCS7Padding;\n // built in decryptor expects PKCS7 padding\n if (removePKCS7Padding) {\n try {\n const browserCrypto = self.crypto;\n if (browserCrypto) {\n this.subtle = browserCrypto.subtle || browserCrypto.webkitSubtle;\n }\n } catch (e) {\n /* no-op */\n }\n }\n this.useSoftware = !this.subtle;\n }\n destroy() {\n this.subtle = null;\n this.softwareDecrypter = null;\n this.key = null;\n this.fastAesKey = null;\n this.remainderData = null;\n this.currentIV = null;\n this.currentResult = null;\n }\n isSync() {\n return this.useSoftware;\n }\n flush() {\n const {\n currentResult,\n remainderData\n } = this;\n if (!currentResult || remainderData) {\n this.reset();\n return null;\n }\n const data = new Uint8Array(currentResult);\n this.reset();\n if (this.removePKCS7Padding) {\n return removePadding(data);\n }\n return data;\n }\n reset() {\n this.currentResult = null;\n this.currentIV = null;\n this.remainderData = null;\n if (this.softwareDecrypter) {\n this.softwareDecrypter = null;\n }\n }\n decrypt(data, key, iv) {\n if (this.useSoftware) {\n return new Promise((resolve, reject) => {\n this.softwareDecrypt(new Uint8Array(data), key, iv);\n const decryptResult = this.flush();\n if (decryptResult) {\n resolve(decryptResult.buffer);\n } else {\n reject(new Error('[softwareDecrypt] Failed to decrypt data'));\n }\n });\n }\n return this.webCryptoDecrypt(new Uint8Array(data), key, iv);\n }\n\n // Software decryption is progressive. Progressive decryption may not return a result on each call. Any cached\n // data is handled in the flush() call\n softwareDecrypt(data, key, iv) {\n const {\n currentIV,\n currentResult,\n remainderData\n } = this;\n this.logOnce('JS AES decrypt');\n // The output is staggered during progressive parsing - the current result is cached, and emitted on the next call\n // This is done in order to strip PKCS7 padding, which is found at the end of each segment. We only know we've reached\n // the end on flush(), but by that time we have already received all bytes for the segment.\n // Progressive decryption does not work with WebCrypto\n\n if (remainderData) {\n data = appendUint8Array(remainderData, data);\n this.remainderData = null;\n }\n\n // Byte length must be a multiple of 16 (AES-128 = 128 bit blocks = 16 bytes)\n const currentChunk = this.getValidChunk(data);\n if (!currentChunk.length) {\n return null;\n }\n if (currentIV) {\n iv = currentIV;\n }\n let softwareDecrypter = this.softwareDecrypter;\n if (!softwareDecrypter) {\n softwareDecrypter = this.softwareDecrypter = new AESDecryptor();\n }\n softwareDecrypter.expandKey(key);\n const result = currentResult;\n this.currentResult = softwareDecrypter.decrypt(currentChunk.buffer, 0, iv);\n this.currentIV = sliceUint8(currentChunk, -16).buffer;\n if (!result) {\n return null;\n }\n return result;\n }\n webCryptoDecrypt(data, key, iv) {\n if (this.key !== key || !this.fastAesKey) {\n if (!this.subtle) {\n return Promise.resolve(this.onWebCryptoError(data, key, iv));\n }\n this.key = key;\n this.fastAesKey = new FastAESKey(this.subtle, key);\n }\n return this.fastAesKey.expandKey().then(aesKey => {\n // decrypt using web crypto\n if (!this.subtle) {\n return Promise.reject(new Error('web crypto not initialized'));\n }\n this.logOnce('WebCrypto AES decrypt');\n const crypto = new AESCrypto(this.subtle, new Uint8Array(iv));\n return crypto.decrypt(data.buffer, aesKey);\n }).catch(err => {\n logger.warn(`[decrypter]: WebCrypto Error, disable WebCrypto API, ${err.name}: ${err.message}`);\n return this.onWebCryptoError(data, key, iv);\n });\n }\n onWebCryptoError(data, key, iv) {\n this.useSoftware = true;\n this.logEnabled = true;\n this.softwareDecrypt(data, key, iv);\n const decryptResult = this.flush();\n if (decryptResult) {\n return decryptResult.buffer;\n }\n throw new Error('WebCrypto and softwareDecrypt: failed to decrypt data');\n }\n getValidChunk(data) {\n let currentChunk = data;\n const splitPoint = data.length - data.length % CHUNK_SIZE;\n if (splitPoint !== data.length) {\n currentChunk = sliceUint8(data, 0, splitPoint);\n this.remainderData = sliceUint8(data, splitPoint);\n }\n return currentChunk;\n }\n logOnce(msg) {\n if (!this.logEnabled) {\n return;\n }\n logger.log(`[decrypter]: ${msg}`);\n this.logEnabled = false;\n }\n}\n\n/**\n * TimeRanges to string helper\n */\n\nconst TimeRanges = {\n toString: function (r) {\n let log = '';\n const len = r.length;\n for (let i = 0; i < len; i++) {\n log += `[${r.start(i).toFixed(3)}-${r.end(i).toFixed(3)}]`;\n }\n return log;\n }\n};\n\nconst State = {\n STOPPED: 'STOPPED',\n IDLE: 'IDLE',\n KEY_LOADING: 'KEY_LOADING',\n FRAG_LOADING: 'FRAG_LOADING',\n FRAG_LOADING_WAITING_RETRY: 'FRAG_LOADING_WAITING_RETRY',\n WAITING_TRACK: 'WAITING_TRACK',\n PARSING: 'PARSING',\n PARSED: 'PARSED',\n ENDED: 'ENDED',\n ERROR: 'ERROR',\n WAITING_INIT_PTS: 'WAITING_INIT_PTS',\n WAITING_LEVEL: 'WAITING_LEVEL'\n};\nclass BaseStreamController extends TaskLoop {\n constructor(hls, fragmentTracker, keyLoader, logPrefix, playlistType) {\n super();\n this.hls = void 0;\n this.fragPrevious = null;\n this.fragCurrent = null;\n this.fragmentTracker = void 0;\n this.transmuxer = null;\n this._state = State.STOPPED;\n this.playlistType = void 0;\n this.media = null;\n this.mediaBuffer = null;\n this.config = void 0;\n this.bitrateTest = false;\n this.lastCurrentTime = 0;\n this.nextLoadPosition = 0;\n this.startPosition = 0;\n this.startTimeOffset = null;\n this.loadedmetadata = false;\n this.retryDate = 0;\n this.levels = null;\n this.fragmentLoader = void 0;\n this.keyLoader = void 0;\n this.levelLastLoaded = null;\n this.startFragRequested = false;\n this.decrypter = void 0;\n this.initPTS = [];\n this.buffering = true;\n this.onvseeking = null;\n this.onvended = null;\n this.logPrefix = '';\n this.log = void 0;\n this.warn = void 0;\n this.playlistType = playlistType;\n this.logPrefix = logPrefix;\n this.log = logger.log.bind(logger, `${logPrefix}:`);\n this.warn = logger.warn.bind(logger, `${logPrefix}:`);\n this.hls = hls;\n this.fragmentLoader = new FragmentLoader(hls.config);\n this.keyLoader = keyLoader;\n this.fragmentTracker = fragmentTracker;\n this.config = hls.config;\n this.decrypter = new Decrypter(hls.config);\n hls.on(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n }\n doTick() {\n this.onTickEnd();\n }\n onTickEnd() {}\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n startLoad(startPosition) {}\n stopLoad() {\n this.fragmentLoader.abort();\n this.keyLoader.abort(this.playlistType);\n const frag = this.fragCurrent;\n if (frag != null && frag.loader) {\n frag.abortRequests();\n this.fragmentTracker.removeFragment(frag);\n }\n this.resetTransmuxer();\n this.fragCurrent = null;\n this.fragPrevious = null;\n this.clearInterval();\n this.clearNextTick();\n this.state = State.STOPPED;\n }\n pauseBuffering() {\n this.buffering = false;\n }\n resumeBuffering() {\n this.buffering = true;\n }\n _streamEnded(bufferInfo, levelDetails) {\n // If playlist is live, there is another buffered range after the current range, nothing buffered, media is detached,\n // of nothing loading/loaded return false\n if (levelDetails.live || bufferInfo.nextStart || !bufferInfo.end || !this.media) {\n return false;\n }\n const partList = levelDetails.partList;\n // Since the last part isn't guaranteed to correspond to the last playlist segment for Low-Latency HLS,\n // check instead if the last part is buffered.\n if (partList != null && partList.length) {\n const lastPart = partList[partList.length - 1];\n\n // Checking the midpoint of the part for potential margin of error and related issues.\n // NOTE: Technically I believe parts could yield content that is < the computed duration (including potential a duration of 0)\n // and still be spec-compliant, so there may still be edge cases here. Likewise, there could be issues in end of stream\n // part mismatches for independent audio and video playlists/segments.\n const lastPartBuffered = BufferHelper.isBuffered(this.media, lastPart.start + lastPart.duration / 2);\n return lastPartBuffered;\n }\n const playlistType = levelDetails.fragments[levelDetails.fragments.length - 1].type;\n return this.fragmentTracker.isEndListAppended(playlistType);\n }\n getLevelDetails() {\n if (this.levels && this.levelLastLoaded !== null) {\n var _this$levelLastLoaded;\n return (_this$levelLastLoaded = this.levelLastLoaded) == null ? void 0 : _this$levelLastLoaded.details;\n }\n }\n onMediaAttached(event, data) {\n const media = this.media = this.mediaBuffer = data.media;\n this.onvseeking = this.onMediaSeeking.bind(this);\n this.onvended = this.onMediaEnded.bind(this);\n media.addEventListener('seeking', this.onvseeking);\n media.addEventListener('ended', this.onvended);\n const config = this.config;\n if (this.levels && config.autoStartLoad && this.state === State.STOPPED) {\n this.startLoad(config.startPosition);\n }\n }\n onMediaDetaching() {\n const media = this.media;\n if (media != null && media.ended) {\n this.log('MSE detaching and video ended, reset startPosition');\n this.startPosition = this.lastCurrentTime = 0;\n }\n\n // remove video listeners\n if (media && this.onvseeking && this.onvended) {\n media.removeEventListener('seeking', this.onvseeking);\n media.removeEventListener('ended', this.onvended);\n this.onvseeking = this.onvended = null;\n }\n if (this.keyLoader) {\n this.keyLoader.detach();\n }\n this.media = this.mediaBuffer = null;\n this.loadedmetadata = false;\n this.fragmentTracker.removeAllFragments();\n this.stopLoad();\n }\n onMediaSeeking() {\n const {\n config,\n fragCurrent,\n media,\n mediaBuffer,\n state\n } = this;\n const currentTime = media ? media.currentTime : 0;\n const bufferInfo = BufferHelper.bufferInfo(mediaBuffer ? mediaBuffer : media, currentTime, config.maxBufferHole);\n this.log(`media seeking to ${isFiniteNumber(currentTime) ? currentTime.toFixed(3) : currentTime}, state: ${state}`);\n if (this.state === State.ENDED) {\n this.resetLoadingState();\n } else if (fragCurrent) {\n // Seeking while frag load is in progress\n const tolerance = config.maxFragLookUpTolerance;\n const fragStartOffset = fragCurrent.start - tolerance;\n const fragEndOffset = fragCurrent.start + fragCurrent.duration + tolerance;\n // if seeking out of buffered range or into new one\n if (!bufferInfo.len || fragEndOffset < bufferInfo.start || fragStartOffset > bufferInfo.end) {\n const pastFragment = currentTime > fragEndOffset;\n // if the seek position is outside the current fragment range\n if (currentTime < fragStartOffset || pastFragment) {\n if (pastFragment && fragCurrent.loader) {\n this.log('seeking outside of buffer while fragment load in progress, cancel fragment load');\n fragCurrent.abortRequests();\n this.resetLoadingState();\n }\n this.fragPrevious = null;\n }\n }\n }\n if (media) {\n // Remove gap fragments\n this.fragmentTracker.removeFragmentsInRange(currentTime, Infinity, this.playlistType, true);\n this.lastCurrentTime = currentTime;\n }\n\n // in case seeking occurs although no media buffered, adjust startPosition and nextLoadPosition to seek target\n if (!this.loadedmetadata && !bufferInfo.len) {\n this.nextLoadPosition = this.startPosition = currentTime;\n }\n\n // Async tick to speed up processing\n this.tickImmediate();\n }\n onMediaEnded() {\n // reset startPosition and lastCurrentTime to restart playback @ stream beginning\n this.startPosition = this.lastCurrentTime = 0;\n }\n onManifestLoaded(event, data) {\n this.startTimeOffset = data.startTimeOffset;\n this.initPTS = [];\n }\n onHandlerDestroying() {\n this.hls.off(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n this.stopLoad();\n super.onHandlerDestroying();\n // @ts-ignore\n this.hls = null;\n }\n onHandlerDestroyed() {\n this.state = State.STOPPED;\n if (this.fragmentLoader) {\n this.fragmentLoader.destroy();\n }\n if (this.keyLoader) {\n this.keyLoader.destroy();\n }\n if (this.decrypter) {\n this.decrypter.destroy();\n }\n this.hls = this.log = this.warn = this.decrypter = this.keyLoader = this.fragmentLoader = this.fragmentTracker = null;\n super.onHandlerDestroyed();\n }\n loadFragment(frag, level, targetBufferTime) {\n this._loadFragForPlayback(frag, level, targetBufferTime);\n }\n _loadFragForPlayback(frag, level, targetBufferTime) {\n const progressCallback = data => {\n if (this.fragContextChanged(frag)) {\n this.warn(`Fragment ${frag.sn}${data.part ? ' p: ' + data.part.index : ''} of level ${frag.level} was dropped during download.`);\n this.fragmentTracker.removeFragment(frag);\n return;\n }\n frag.stats.chunkCount++;\n this._handleFragmentLoadProgress(data);\n };\n this._doFragLoad(frag, level, targetBufferTime, progressCallback).then(data => {\n if (!data) {\n // if we're here we probably needed to backtrack or are waiting for more parts\n return;\n }\n const state = this.state;\n if (this.fragContextChanged(frag)) {\n if (state === State.FRAG_LOADING || !this.fragCurrent && state === State.PARSING) {\n this.fragmentTracker.removeFragment(frag);\n this.state = State.IDLE;\n }\n return;\n }\n if ('payload' in data) {\n this.log(`Loaded fragment ${frag.sn} of level ${frag.level}`);\n this.hls.trigger(Events.FRAG_LOADED, data);\n }\n\n // Pass through the whole payload; controllers not implementing progressive loading receive data from this callback\n this._handleFragmentLoadComplete(data);\n }).catch(reason => {\n if (this.state === State.STOPPED || this.state === State.ERROR) {\n return;\n }\n this.warn(`Frag error: ${(reason == null ? void 0 : reason.message) || reason}`);\n this.resetFragmentLoading(frag);\n });\n }\n clearTrackerIfNeeded(frag) {\n var _this$mediaBuffer;\n const {\n fragmentTracker\n } = this;\n const fragState = fragmentTracker.getState(frag);\n if (fragState === FragmentState.APPENDING) {\n // Lower the max buffer length and try again\n const playlistType = frag.type;\n const bufferedInfo = this.getFwdBufferInfo(this.mediaBuffer, playlistType);\n const minForwardBufferLength = Math.max(frag.duration, bufferedInfo ? bufferedInfo.len : this.config.maxBufferLength);\n // If backtracking, always remove from the tracker without reducing max buffer length\n const backtrackFragment = this.backtrackFragment;\n const backtracked = backtrackFragment ? frag.sn - backtrackFragment.sn : 0;\n if (backtracked === 1 || this.reduceMaxBufferLength(minForwardBufferLength, frag.duration)) {\n fragmentTracker.removeFragment(frag);\n }\n } else if (((_this$mediaBuffer = this.mediaBuffer) == null ? void 0 : _this$mediaBuffer.buffered.length) === 0) {\n // Stop gap for bad tracker / buffer flush behavior\n fragmentTracker.removeAllFragments();\n } else if (fragmentTracker.hasParts(frag.type)) {\n // In low latency mode, remove fragments for which only some parts were buffered\n fragmentTracker.detectPartialFragments({\n frag,\n part: null,\n stats: frag.stats,\n id: frag.type\n });\n if (fragmentTracker.getState(frag) === FragmentState.PARTIAL) {\n fragmentTracker.removeFragment(frag);\n }\n }\n }\n checkLiveUpdate(details) {\n if (details.updated && !details.live) {\n // Live stream ended, update fragment tracker\n const lastFragment = details.fragments[details.fragments.length - 1];\n this.fragmentTracker.detectPartialFragments({\n frag: lastFragment,\n part: null,\n stats: lastFragment.stats,\n id: lastFragment.type\n });\n }\n if (!details.fragments[0]) {\n details.deltaUpdateFailed = true;\n }\n }\n flushMainBuffer(startOffset, endOffset, type = null) {\n if (!(startOffset - endOffset)) {\n return;\n }\n // When alternate audio is playing, the audio-stream-controller is responsible for the audio buffer. Otherwise,\n // passing a null type flushes both buffers\n const flushScope = {\n startOffset,\n endOffset,\n type\n };\n this.hls.trigger(Events.BUFFER_FLUSHING, flushScope);\n }\n _loadInitSegment(frag, level) {\n this._doFragLoad(frag, level).then(data => {\n if (!data || this.fragContextChanged(frag) || !this.levels) {\n throw new Error('init load aborted');\n }\n return data;\n }).then(data => {\n const {\n hls\n } = this;\n const {\n payload\n } = data;\n const decryptData = frag.decryptdata;\n\n // check to see if the payload needs to be decrypted\n if (payload && payload.byteLength > 0 && decryptData != null && decryptData.key && decryptData.iv && decryptData.method === 'AES-128') {\n const startTime = self.performance.now();\n // decrypt init segment data\n return this.decrypter.decrypt(new Uint8Array(payload), decryptData.key.buffer, decryptData.iv.buffer).catch(err => {\n hls.trigger(Events.ERROR, {\n type: ErrorTypes.MEDIA_ERROR,\n details: ErrorDetails.FRAG_DECRYPT_ERROR,\n fatal: false,\n error: err,\n reason: err.message,\n frag\n });\n throw err;\n }).then(decryptedData => {\n const endTime = self.performance.now();\n hls.trigger(Events.FRAG_DECRYPTED, {\n frag,\n payload: decryptedData,\n stats: {\n tstart: startTime,\n tdecrypt: endTime\n }\n });\n data.payload = decryptedData;\n return this.completeInitSegmentLoad(data);\n });\n }\n return this.completeInitSegmentLoad(data);\n }).catch(reason => {\n if (this.state === State.STOPPED || this.state === State.ERROR) {\n return;\n }\n this.warn(reason);\n this.resetFragmentLoading(frag);\n });\n }\n completeInitSegmentLoad(data) {\n const {\n levels\n } = this;\n if (!levels) {\n throw new Error('init load aborted, missing levels');\n }\n const stats = data.frag.stats;\n this.state = State.IDLE;\n data.frag.data = new Uint8Array(data.payload);\n stats.parsing.start = stats.buffering.start = self.performance.now();\n stats.parsing.end = stats.buffering.end = self.performance.now();\n this.tick();\n }\n fragContextChanged(frag) {\n const {\n fragCurrent\n } = this;\n return !frag || !fragCurrent || frag.sn !== fragCurrent.sn || frag.level !== fragCurrent.level;\n }\n fragBufferedComplete(frag, part) {\n var _frag$startPTS, _frag$endPTS, _this$fragCurrent, _this$fragPrevious;\n const media = this.mediaBuffer ? this.mediaBuffer : this.media;\n this.log(`Buffered ${frag.type} sn: ${frag.sn}${part ? ' part: ' + part.index : ''} of ${this.playlistType === PlaylistLevelType.MAIN ? 'level' : 'track'} ${frag.level} (frag:[${((_frag$startPTS = frag.startPTS) != null ? _frag$startPTS : NaN).toFixed(3)}-${((_frag$endPTS = frag.endPTS) != null ? _frag$endPTS : NaN).toFixed(3)}] > buffer:${media ? TimeRanges.toString(BufferHelper.getBuffered(media)) : '(detached)'})`);\n if (frag.sn !== 'initSegment') {\n var _this$levels;\n if (frag.type !== PlaylistLevelType.SUBTITLE) {\n const el = frag.elementaryStreams;\n if (!Object.keys(el).some(type => !!el[type])) {\n // empty segment\n this.state = State.IDLE;\n return;\n }\n }\n const level = (_this$levels = this.levels) == null ? void 0 : _this$levels[frag.level];\n if (level != null && level.fragmentError) {\n this.log(`Resetting level fragment error count of ${level.fragmentError} on frag buffered`);\n level.fragmentError = 0;\n }\n }\n this.state = State.IDLE;\n if (!media) {\n return;\n }\n if (!this.loadedmetadata && frag.type == PlaylistLevelType.MAIN && media.buffered.length && ((_this$fragCurrent = this.fragCurrent) == null ? void 0 : _this$fragCurrent.sn) === ((_this$fragPrevious = this.fragPrevious) == null ? void 0 : _this$fragPrevious.sn)) {\n this.loadedmetadata = true;\n this.seekToStartPos();\n }\n this.tick();\n }\n seekToStartPos() {}\n _handleFragmentLoadComplete(fragLoadedEndData) {\n const {\n transmuxer\n } = this;\n if (!transmuxer) {\n return;\n }\n const {\n frag,\n part,\n partsLoaded\n } = fragLoadedEndData;\n // If we did not load parts, or loaded all parts, we have complete (not partial) fragment data\n const complete = !partsLoaded || partsLoaded.length === 0 || partsLoaded.some(fragLoaded => !fragLoaded);\n const chunkMeta = new ChunkMetadata(frag.level, frag.sn, frag.stats.chunkCount + 1, 0, part ? part.index : -1, !complete);\n transmuxer.flush(chunkMeta);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _handleFragmentLoadProgress(frag) {}\n _doFragLoad(frag, level, targetBufferTime = null, progressCallback) {\n var _frag$decryptdata;\n const details = level == null ? void 0 : level.details;\n if (!this.levels || !details) {\n throw new Error(`frag load aborted, missing level${details ? '' : ' detail'}s`);\n }\n let keyLoadingPromise = null;\n if (frag.encrypted && !((_frag$decryptdata = frag.decryptdata) != null && _frag$decryptdata.key)) {\n this.log(`Loading key for ${frag.sn} of [${details.startSN}-${details.endSN}], ${this.logPrefix === '[stream-controller]' ? 'level' : 'track'} ${frag.level}`);\n this.state = State.KEY_LOADING;\n this.fragCurrent = frag;\n keyLoadingPromise = this.keyLoader.load(frag).then(keyLoadedData => {\n if (!this.fragContextChanged(keyLoadedData.frag)) {\n this.hls.trigger(Events.KEY_LOADED, keyLoadedData);\n if (this.state === State.KEY_LOADING) {\n this.state = State.IDLE;\n }\n return keyLoadedData;\n }\n });\n this.hls.trigger(Events.KEY_LOADING, {\n frag\n });\n if (this.fragCurrent === null) {\n keyLoadingPromise = Promise.reject(new Error(`frag load aborted, context changed in KEY_LOADING`));\n }\n } else if (!frag.encrypted && details.encryptedFragments.length) {\n this.keyLoader.loadClear(frag, details.encryptedFragments);\n }\n targetBufferTime = Math.max(frag.start, targetBufferTime || 0);\n if (this.config.lowLatencyMode && frag.sn !== 'initSegment') {\n const partList = details.partList;\n if (partList && progressCallback) {\n if (targetBufferTime > frag.end && details.fragmentHint) {\n frag = details.fragmentHint;\n }\n const partIndex = this.getNextPart(partList, frag, targetBufferTime);\n if (partIndex > -1) {\n const part = partList[partIndex];\n this.log(`Loading part sn: ${frag.sn} p: ${part.index} cc: ${frag.cc} of playlist [${details.startSN}-${details.endSN}] parts [0-${partIndex}-${partList.length - 1}] ${this.logPrefix === '[stream-controller]' ? 'level' : 'track'}: ${frag.level}, target: ${parseFloat(targetBufferTime.toFixed(3))}`);\n this.nextLoadPosition = part.start + part.duration;\n this.state = State.FRAG_LOADING;\n let _result;\n if (keyLoadingPromise) {\n _result = keyLoadingPromise.then(keyLoadedData => {\n if (!keyLoadedData || this.fragContextChanged(keyLoadedData.frag)) {\n return null;\n }\n return this.doFragPartsLoad(frag, part, level, progressCallback);\n }).catch(error => this.handleFragLoadError(error));\n } else {\n _result = this.doFragPartsLoad(frag, part, level, progressCallback).catch(error => this.handleFragLoadError(error));\n }\n this.hls.trigger(Events.FRAG_LOADING, {\n frag,\n part,\n targetBufferTime\n });\n if (this.fragCurrent === null) {\n return Promise.reject(new Error(`frag load aborted, context changed in FRAG_LOADING parts`));\n }\n return _result;\n } else if (!frag.url || this.loadedEndOfParts(partList, targetBufferTime)) {\n // Fragment hint has no parts\n return Promise.resolve(null);\n }\n }\n }\n this.log(`Loading fragment ${frag.sn} cc: ${frag.cc} ${details ? 'of [' + details.startSN + '-' + details.endSN + '] ' : ''}${this.logPrefix === '[stream-controller]' ? 'level' : 'track'}: ${frag.level}, target: ${parseFloat(targetBufferTime.toFixed(3))}`);\n // Don't update nextLoadPosition for fragments which are not buffered\n if (isFiniteNumber(frag.sn) && !this.bitrateTest) {\n this.nextLoadPosition = frag.start + frag.duration;\n }\n this.state = State.FRAG_LOADING;\n\n // Load key before streaming fragment data\n const dataOnProgress = this.config.progressive;\n let result;\n if (dataOnProgress && keyLoadingPromise) {\n result = keyLoadingPromise.then(keyLoadedData => {\n if (!keyLoadedData || this.fragContextChanged(keyLoadedData == null ? void 0 : keyLoadedData.frag)) {\n return null;\n }\n return this.fragmentLoader.load(frag, progressCallback);\n }).catch(error => this.handleFragLoadError(error));\n } else {\n // load unencrypted fragment data with progress event,\n // or handle fragment result after key and fragment are finished loading\n result = Promise.all([this.fragmentLoader.load(frag, dataOnProgress ? progressCallback : undefined), keyLoadingPromise]).then(([fragLoadedData]) => {\n if (!dataOnProgress && fragLoadedData && progressCallback) {\n progressCallback(fragLoadedData);\n }\n return fragLoadedData;\n }).catch(error => this.handleFragLoadError(error));\n }\n this.hls.trigger(Events.FRAG_LOADING, {\n frag,\n targetBufferTime\n });\n if (this.fragCurrent === null) {\n return Promise.reject(new Error(`frag load aborted, context changed in FRAG_LOADING`));\n }\n return result;\n }\n doFragPartsLoad(frag, fromPart, level, progressCallback) {\n return new Promise((resolve, reject) => {\n var _level$details;\n const partsLoaded = [];\n const initialPartList = (_level$details = level.details) == null ? void 0 : _level$details.partList;\n const loadPart = part => {\n this.fragmentLoader.loadPart(frag, part, progressCallback).then(partLoadedData => {\n partsLoaded[part.index] = partLoadedData;\n const loadedPart = partLoadedData.part;\n this.hls.trigger(Events.FRAG_LOADED, partLoadedData);\n const nextPart = getPartWith(level, frag.sn, part.index + 1) || findPart(initialPartList, frag.sn, part.index + 1);\n if (nextPart) {\n loadPart(nextPart);\n } else {\n return resolve({\n frag,\n part: loadedPart,\n partsLoaded\n });\n }\n }).catch(reject);\n };\n loadPart(fromPart);\n });\n }\n handleFragLoadError(error) {\n if ('data' in error) {\n const data = error.data;\n if (error.data && data.details === ErrorDetails.INTERNAL_ABORTED) {\n this.handleFragLoadAborted(data.frag, data.part);\n } else {\n this.hls.trigger(Events.ERROR, data);\n }\n } else {\n this.hls.trigger(Events.ERROR, {\n type: ErrorTypes.OTHER_ERROR,\n details: ErrorDetails.INTERNAL_EXCEPTION,\n err: error,\n error,\n fatal: true\n });\n }\n return null;\n }\n _handleTransmuxerFlush(chunkMeta) {\n const context = this.getCurrentContext(chunkMeta);\n if (!context || this.state !== State.PARSING) {\n if (!this.fragCurrent && this.state !== State.STOPPED && this.state !== State.ERROR) {\n this.state = State.IDLE;\n }\n return;\n }\n const {\n frag,\n part,\n level\n } = context;\n const now = self.performance.now();\n frag.stats.parsing.end = now;\n if (part) {\n part.stats.parsing.end = now;\n }\n this.updateLevelTiming(frag, part, level, chunkMeta.partial);\n }\n getCurrentContext(chunkMeta) {\n const {\n levels,\n fragCurrent\n } = this;\n const {\n level: levelIndex,\n sn,\n part: partIndex\n } = chunkMeta;\n if (!(levels != null && levels[levelIndex])) {\n this.warn(`Levels object was unset while buffering fragment ${sn} of level ${levelIndex}. The current chunk will not be buffered.`);\n return null;\n }\n const level = levels[levelIndex];\n const part = partIndex > -1 ? getPartWith(level, sn, partIndex) : null;\n const frag = part ? part.fragment : getFragmentWithSN(level, sn, fragCurrent);\n if (!frag) {\n return null;\n }\n if (fragCurrent && fragCurrent !== frag) {\n frag.stats = fragCurrent.stats;\n }\n return {\n frag,\n part,\n level\n };\n }\n bufferFragmentData(data, frag, part, chunkMeta, noBacktracking) {\n var _buffer;\n if (!data || this.state !== State.PARSING) {\n return;\n }\n const {\n data1,\n data2\n } = data;\n let buffer = data1;\n if (data1 && data2) {\n // Combine the moof + mdat so that we buffer with a single append\n buffer = appendUint8Array(data1, data2);\n }\n if (!((_buffer = buffer) != null && _buffer.length)) {\n return;\n }\n const segment = {\n type: data.type,\n frag,\n part,\n chunkMeta,\n parent: frag.type,\n data: buffer\n };\n this.hls.trigger(Events.BUFFER_APPENDING, segment);\n if (data.dropped && data.independent && !part) {\n if (noBacktracking) {\n return;\n }\n // Clear buffer so that we reload previous segments sequentially if required\n this.flushBufferGap(frag);\n }\n }\n flushBufferGap(frag) {\n const media = this.media;\n if (!media) {\n return;\n }\n // If currentTime is not buffered, clear the back buffer so that we can backtrack as much as needed\n if (!BufferHelper.isBuffered(media, media.currentTime)) {\n this.flushMainBuffer(0, frag.start);\n return;\n }\n // Remove back-buffer without interrupting playback to allow back tracking\n const currentTime = media.currentTime;\n const bufferInfo = BufferHelper.bufferInfo(media, currentTime, 0);\n const fragDuration = frag.duration;\n const segmentFraction = Math.min(this.config.maxFragLookUpTolerance * 2, fragDuration * 0.25);\n const start = Math.max(Math.min(frag.start - segmentFraction, bufferInfo.end - segmentFraction), currentTime + segmentFraction);\n if (frag.start - start > segmentFraction) {\n this.flushMainBuffer(start, frag.start);\n }\n }\n getFwdBufferInfo(bufferable, type) {\n const pos = this.getLoadPosition();\n if (!isFiniteNumber(pos)) {\n return null;\n }\n return this.getFwdBufferInfoAtPos(bufferable, pos, type);\n }\n getFwdBufferInfoAtPos(bufferable, pos, type) {\n const {\n config: {\n maxBufferHole\n }\n } = this;\n const bufferInfo = BufferHelper.bufferInfo(bufferable, pos, maxBufferHole);\n // Workaround flaw in getting forward buffer when maxBufferHole is smaller than gap at current pos\n if (bufferInfo.len === 0 && bufferInfo.nextStart !== undefined) {\n const bufferedFragAtPos = this.fragmentTracker.getBufferedFrag(pos, type);\n if (bufferedFragAtPos && bufferInfo.nextStart < bufferedFragAtPos.end) {\n return BufferHelper.bufferInfo(bufferable, pos, Math.max(bufferInfo.nextStart, maxBufferHole));\n }\n }\n return bufferInfo;\n }\n getMaxBufferLength(levelBitrate) {\n const {\n config\n } = this;\n let maxBufLen;\n if (levelBitrate) {\n maxBufLen = Math.max(8 * config.maxBufferSize / levelBitrate, config.maxBufferLength);\n } else {\n maxBufLen = config.maxBufferLength;\n }\n return Math.min(maxBufLen, config.maxMaxBufferLength);\n }\n reduceMaxBufferLength(threshold, fragDuration) {\n const config = this.config;\n const minLength = Math.max(Math.min(threshold - fragDuration, config.maxBufferLength), fragDuration);\n const reducedLength = Math.max(threshold - fragDuration * 3, config.maxMaxBufferLength / 2, minLength);\n if (reducedLength >= minLength) {\n // reduce max buffer length as it might be too high. we do this to avoid loop flushing ...\n config.maxMaxBufferLength = reducedLength;\n this.warn(`Reduce max buffer length to ${reducedLength}s`);\n return true;\n }\n return false;\n }\n getAppendedFrag(position, playlistType = PlaylistLevelType.MAIN) {\n const fragOrPart = this.fragmentTracker.getAppendedFrag(position, PlaylistLevelType.MAIN);\n if (fragOrPart && 'fragment' in fragOrPart) {\n return fragOrPart.fragment;\n }\n return fragOrPart;\n }\n getNextFragment(pos, levelDetails) {\n const fragments = levelDetails.fragments;\n const fragLen = fragments.length;\n if (!fragLen) {\n return null;\n }\n\n // find fragment index, contiguous with end of buffer position\n const {\n config\n } = this;\n const start = fragments[0].start;\n let frag;\n if (levelDetails.live) {\n const initialLiveManifestSize = config.initialLiveManifestSize;\n if (fragLen < initialLiveManifestSize) {\n this.warn(`Not enough fragments to start playback (have: ${fragLen}, need: ${initialLiveManifestSize})`);\n return null;\n }\n // The real fragment start times for a live stream are only known after the PTS range for that level is known.\n // In order to discover the range, we load the best matching fragment for that level and demux it.\n // Do not load using live logic if the starting frag is requested - we want to use getFragmentAtPosition() so that\n // we get the fragment matching that start time\n if (!levelDetails.PTSKnown && !this.startFragRequested && this.startPosition === -1 || pos < start) {\n frag = this.getInitialLiveFragment(levelDetails, fragments);\n this.startPosition = this.nextLoadPosition = frag ? this.hls.liveSyncPosition || frag.start : pos;\n }\n } else if (pos <= start) {\n // VoD playlist: if loadPosition before start of playlist, load first fragment\n frag = fragments[0];\n }\n\n // If we haven't run into any special cases already, just load the fragment most closely matching the requested position\n if (!frag) {\n const end = config.lowLatencyMode ? levelDetails.partEnd : levelDetails.fragmentEnd;\n frag = this.getFragmentAtPosition(pos, end, levelDetails);\n }\n return this.mapToInitFragWhenRequired(frag);\n }\n isLoopLoading(frag, targetBufferTime) {\n const trackerState = this.fragmentTracker.getState(frag);\n return (trackerState === FragmentState.OK || trackerState === FragmentState.PARTIAL && !!frag.gap) && this.nextLoadPosition > targetBufferTime;\n }\n getNextFragmentLoopLoading(frag, levelDetails, bufferInfo, playlistType, maxBufLen) {\n const gapStart = frag.gap;\n const nextFragment = this.getNextFragment(this.nextLoadPosition, levelDetails);\n if (nextFragment === null) {\n return nextFragment;\n }\n frag = nextFragment;\n if (gapStart && frag && !frag.gap && bufferInfo.nextStart) {\n // Media buffered after GAP tags should not make the next buffer timerange exceed forward buffer length\n const nextbufferInfo = this.getFwdBufferInfoAtPos(this.mediaBuffer ? this.mediaBuffer : this.media, bufferInfo.nextStart, playlistType);\n if (nextbufferInfo !== null && bufferInfo.len + nextbufferInfo.len >= maxBufLen) {\n // Returning here might result in not finding an audio and video candiate to skip to\n this.log(`buffer full after gaps in \"${playlistType}\" playlist starting at sn: ${frag.sn}`);\n return null;\n }\n }\n return frag;\n }\n mapToInitFragWhenRequired(frag) {\n // If an initSegment is present, it must be buffered first\n if (frag != null && frag.initSegment && !(frag != null && frag.initSegment.data) && !this.bitrateTest) {\n return frag.initSegment;\n }\n return frag;\n }\n getNextPart(partList, frag, targetBufferTime) {\n let nextPart = -1;\n let contiguous = false;\n let independentAttrOmitted = true;\n for (let i = 0, len = partList.length; i < len; i++) {\n const part = partList[i];\n independentAttrOmitted = independentAttrOmitted && !part.independent;\n if (nextPart > -1 && targetBufferTime < part.start) {\n break;\n }\n const loaded = part.loaded;\n if (loaded) {\n nextPart = -1;\n } else if ((contiguous || part.independent || independentAttrOmitted) && part.fragment === frag) {\n nextPart = i;\n }\n contiguous = loaded;\n }\n return nextPart;\n }\n loadedEndOfParts(partList, targetBufferTime) {\n const lastPart = partList[partList.length - 1];\n return lastPart && targetBufferTime > lastPart.start && lastPart.loaded;\n }\n\n /*\n This method is used find the best matching first fragment for a live playlist. This fragment is used to calculate the\n \"sliding\" of the playlist, which is its offset from the start of playback. After sliding we can compute the real\n start and end times for each fragment in the playlist (after which this method will not need to be called).\n */\n getInitialLiveFragment(levelDetails, fragments) {\n const fragPrevious = this.fragPrevious;\n let frag = null;\n if (fragPrevious) {\n if (levelDetails.hasProgramDateTime) {\n // Prefer using PDT, because it can be accurate enough to choose the correct fragment without knowing the level sliding\n this.log(`Live playlist, switching playlist, load frag with same PDT: ${fragPrevious.programDateTime}`);\n frag = findFragmentByPDT(fragments, fragPrevious.endProgramDateTime, this.config.maxFragLookUpTolerance);\n }\n if (!frag) {\n // SN does not need to be accurate between renditions, but depending on the packaging it may be so.\n const targetSN = fragPrevious.sn + 1;\n if (targetSN >= levelDetails.startSN && targetSN <= levelDetails.endSN) {\n const fragNext = fragments[targetSN - levelDetails.startSN];\n // Ensure that we're staying within the continuity range, since PTS resets upon a new range\n if (fragPrevious.cc === fragNext.cc) {\n frag = fragNext;\n this.log(`Live playlist, switching playlist, load frag with next SN: ${frag.sn}`);\n }\n }\n // It's important to stay within the continuity range if available; otherwise the fragments in the playlist\n // will have the wrong start times\n if (!frag) {\n frag = findFragWithCC(fragments, fragPrevious.cc);\n if (frag) {\n this.log(`Live playlist, switching playlist, load frag with same CC: ${frag.sn}`);\n }\n }\n }\n } else {\n // Find a new start fragment when fragPrevious is null\n const liveStart = this.hls.liveSyncPosition;\n if (liveStart !== null) {\n frag = this.getFragmentAtPosition(liveStart, this.bitrateTest ? levelDetails.fragmentEnd : levelDetails.edge, levelDetails);\n }\n }\n return frag;\n }\n\n /*\n This method finds the best matching fragment given the provided position.\n */\n getFragmentAtPosition(bufferEnd, end, levelDetails) {\n const {\n config\n } = this;\n let {\n fragPrevious\n } = this;\n let {\n fragments,\n endSN\n } = levelDetails;\n const {\n fragmentHint\n } = levelDetails;\n const {\n maxFragLookUpTolerance\n } = config;\n const partList = levelDetails.partList;\n const loadingParts = !!(config.lowLatencyMode && partList != null && partList.length && fragmentHint);\n if (loadingParts && fragmentHint && !this.bitrateTest) {\n // Include incomplete fragment with parts at end\n fragments = fragments.concat(fragmentHint);\n endSN = fragmentHint.sn;\n }\n let frag;\n if (bufferEnd < end) {\n const lookupTolerance = bufferEnd > end - maxFragLookUpTolerance ? 0 : maxFragLookUpTolerance;\n // Remove the tolerance if it would put the bufferEnd past the actual end of stream\n // Uses buffer and sequence number to calculate switch segment (required if using EXT-X-DISCONTINUITY-SEQUENCE)\n frag = findFragmentByPTS(fragPrevious, fragments, bufferEnd, lookupTolerance);\n } else {\n // reach end of playlist\n frag = fragments[fragments.length - 1];\n }\n if (frag) {\n const curSNIdx = frag.sn - levelDetails.startSN;\n // Move fragPrevious forward to support forcing the next fragment to load\n // when the buffer catches up to a previously buffered range.\n const fragState = this.fragmentTracker.getState(frag);\n if (fragState === FragmentState.OK || fragState === FragmentState.PARTIAL && frag.gap) {\n fragPrevious = frag;\n }\n if (fragPrevious && frag.sn === fragPrevious.sn && (!loadingParts || partList[0].fragment.sn > frag.sn)) {\n // Force the next fragment to load if the previous one was already selected. This can occasionally happen with\n // non-uniform fragment durations\n const sameLevel = fragPrevious && frag.level === fragPrevious.level;\n if (sameLevel) {\n const nextFrag = fragments[curSNIdx + 1];\n if (frag.sn < endSN && this.fragmentTracker.getState(nextFrag) !== FragmentState.OK) {\n frag = nextFrag;\n } else {\n frag = null;\n }\n }\n }\n }\n return frag;\n }\n synchronizeToLiveEdge(levelDetails) {\n const {\n config,\n media\n } = this;\n if (!media) {\n return;\n }\n const liveSyncPosition = this.hls.liveSyncPosition;\n const currentTime = media.currentTime;\n const start = levelDetails.fragments[0].start;\n const end = levelDetails.edge;\n const withinSlidingWindow = currentTime >= start - config.maxFragLookUpTolerance && currentTime <= end;\n // Continue if we can seek forward to sync position or if current time is outside of sliding window\n if (liveSyncPosition !== null && media.duration > liveSyncPosition && (currentTime < liveSyncPosition || !withinSlidingWindow)) {\n // Continue if buffer is starving or if current time is behind max latency\n const maxLatency = config.liveMaxLatencyDuration !== undefined ? config.liveMaxLatencyDuration : config.liveMaxLatencyDurationCount * levelDetails.targetduration;\n if (!withinSlidingWindow && media.readyState < 4 || currentTime < end - maxLatency) {\n if (!this.loadedmetadata) {\n this.nextLoadPosition = liveSyncPosition;\n }\n // Only seek if ready and there is not a significant forward buffer available for playback\n if (media.readyState) {\n this.warn(`Playback: ${currentTime.toFixed(3)} is located too far from the end of live sliding playlist: ${end}, reset currentTime to : ${liveSyncPosition.toFixed(3)}`);\n media.currentTime = liveSyncPosition;\n }\n }\n }\n }\n alignPlaylists(details, previousDetails, switchDetails) {\n // FIXME: If not for `shouldAlignOnDiscontinuities` requiring fragPrevious.cc,\n // this could all go in level-helper mergeDetails()\n const length = details.fragments.length;\n if (!length) {\n this.warn(`No fragments in live playlist`);\n return 0;\n }\n const slidingStart = details.fragments[0].start;\n const firstLevelLoad = !previousDetails;\n const aligned = details.alignedSliding && isFiniteNumber(slidingStart);\n if (firstLevelLoad || !aligned && !slidingStart) {\n const {\n fragPrevious\n } = this;\n alignStream(fragPrevious, switchDetails, details);\n const alignedSlidingStart = details.fragments[0].start;\n this.log(`Live playlist sliding: ${alignedSlidingStart.toFixed(2)} start-sn: ${previousDetails ? previousDetails.startSN : 'na'}->${details.startSN} prev-sn: ${fragPrevious ? fragPrevious.sn : 'na'} fragments: ${length}`);\n return alignedSlidingStart;\n }\n return slidingStart;\n }\n waitForCdnTuneIn(details) {\n // Wait for Low-Latency CDN Tune-in to get an updated playlist\n const advancePartLimit = 3;\n return details.live && details.canBlockReload && details.partTarget && details.tuneInGoal > Math.max(details.partHoldBack, details.partTarget * advancePartLimit);\n }\n setStartPosition(details, sliding) {\n // compute start position if set to -1. use it straight away if value is defined\n let startPosition = this.startPosition;\n if (startPosition < sliding) {\n startPosition = -1;\n }\n if (startPosition === -1 || this.lastCurrentTime === -1) {\n // Use Playlist EXT-X-START:TIME-OFFSET when set\n // Prioritize Multivariant Playlist offset so that main, audio, and subtitle stream-controller start times match\n const offsetInMultivariantPlaylist = this.startTimeOffset !== null;\n const startTimeOffset = offsetInMultivariantPlaylist ? this.startTimeOffset : details.startTimeOffset;\n if (startTimeOffset !== null && isFiniteNumber(startTimeOffset)) {\n startPosition = sliding + startTimeOffset;\n if (startTimeOffset < 0) {\n startPosition += details.totalduration;\n }\n startPosition = Math.min(Math.max(sliding, startPosition), sliding + details.totalduration);\n this.log(`Start time offset ${startTimeOffset} found in ${offsetInMultivariantPlaylist ? 'multivariant' : 'media'} playlist, adjust startPosition to ${startPosition}`);\n this.startPosition = startPosition;\n } else if (details.live) {\n // Leave this.startPosition at -1, so that we can use `getInitialLiveFragment` logic when startPosition has\n // not been specified via the config or an as an argument to startLoad (#3736).\n startPosition = this.hls.liveSyncPosition || sliding;\n } else {\n this.startPosition = startPosition = 0;\n }\n this.lastCurrentTime = startPosition;\n }\n this.nextLoadPosition = startPosition;\n }\n getLoadPosition() {\n const {\n media\n } = this;\n // if we have not yet loaded any fragment, start loading from start position\n let pos = 0;\n if (this.loadedmetadata && media) {\n pos = media.currentTime;\n } else if (this.nextLoadPosition) {\n pos = this.nextLoadPosition;\n }\n return pos;\n }\n handleFragLoadAborted(frag, part) {\n if (this.transmuxer && frag.sn !== 'initSegment' && frag.stats.aborted) {\n this.warn(`Fragment ${frag.sn}${part ? ' part ' + part.index : ''} of level ${frag.level} was aborted`);\n this.resetFragmentLoading(frag);\n }\n }\n resetFragmentLoading(frag) {\n if (!this.fragCurrent || !this.fragContextChanged(frag) && this.state !== State.FRAG_LOADING_WAITING_RETRY) {\n this.state = State.IDLE;\n }\n }\n onFragmentOrKeyLoadError(filterType, data) {\n if (data.chunkMeta && !data.frag) {\n const context = this.getCurrentContext(data.chunkMeta);\n if (context) {\n data.frag = context.frag;\n }\n }\n const frag = data.frag;\n // Handle frag error related to caller's filterType\n if (!frag || frag.type !== filterType || !this.levels) {\n return;\n }\n if (this.fragContextChanged(frag)) {\n var _this$fragCurrent2;\n this.warn(`Frag load error must match current frag to retry ${frag.url} > ${(_this$fragCurrent2 = this.fragCurrent) == null ? void 0 : _this$fragCurrent2.url}`);\n return;\n }\n const gapTagEncountered = data.details === ErrorDetails.FRAG_GAP;\n if (gapTagEncountered) {\n this.fragmentTracker.fragBuffered(frag, true);\n }\n // keep retrying until the limit will be reached\n const errorAction = data.errorAction;\n const {\n action,\n retryCount = 0,\n retryConfig\n } = errorAction || {};\n if (errorAction && action === NetworkErrorAction.RetryRequest && retryConfig) {\n this.resetStartWhenNotLoaded(this.levelLastLoaded);\n const delay = getRetryDelay(retryConfig, retryCount);\n this.warn(`Fragment ${frag.sn} of ${filterType} ${frag.level} errored with ${data.details}, retrying loading ${retryCount + 1}/${retryConfig.maxNumRetry} in ${delay}ms`);\n errorAction.resolved = true;\n this.retryDate = self.performance.now() + delay;\n this.state = State.FRAG_LOADING_WAITING_RETRY;\n } else if (retryConfig && errorAction) {\n this.resetFragmentErrors(filterType);\n if (retryCount < retryConfig.maxNumRetry) {\n // Network retry is skipped when level switch is preferred\n if (!gapTagEncountered && action !== NetworkErrorAction.RemoveAlternatePermanently) {\n errorAction.resolved = true;\n }\n } else {\n logger.warn(`${data.details} reached or exceeded max retry (${retryCount})`);\n return;\n }\n } else if ((errorAction == null ? void 0 : errorAction.action) === NetworkErrorAction.SendAlternateToPenaltyBox) {\n this.state = State.WAITING_LEVEL;\n } else {\n this.state = State.ERROR;\n }\n // Perform next async tick sooner to speed up error action resolution\n this.tickImmediate();\n }\n reduceLengthAndFlushBuffer(data) {\n // if in appending state\n if (this.state === State.PARSING || this.state === State.PARSED) {\n const frag = data.frag;\n const playlistType = data.parent;\n const bufferedInfo = this.getFwdBufferInfo(this.mediaBuffer, playlistType);\n // 0.5 : tolerance needed as some browsers stalls playback before reaching buffered end\n // reduce max buf len if current position is buffered\n const buffered = bufferedInfo && bufferedInfo.len > 0.5;\n if (buffered) {\n this.reduceMaxBufferLength(bufferedInfo.len, (frag == null ? void 0 : frag.duration) || 10);\n }\n const flushBuffer = !buffered;\n if (flushBuffer) {\n // current position is not buffered, but browser is still complaining about buffer full error\n // this happens on IE/Edge, refer to https://github.com/video-dev/hls.js/pull/708\n // in that case flush the whole audio buffer to recover\n this.warn(`Buffer full error while media.currentTime is not buffered, flush ${playlistType} buffer`);\n }\n if (frag) {\n this.fragmentTracker.removeFragment(frag);\n this.nextLoadPosition = frag.start;\n }\n this.resetLoadingState();\n return flushBuffer;\n }\n return false;\n }\n resetFragmentErrors(filterType) {\n if (filterType === PlaylistLevelType.AUDIO) {\n // Reset current fragment since audio track audio is essential and may not have a fail-over track\n this.fragCurrent = null;\n }\n // Fragment errors that result in a level switch or redundant fail-over\n // should reset the stream controller state to idle\n if (!this.loadedmetadata) {\n this.startFragRequested = false;\n }\n if (this.state !== State.STOPPED) {\n this.state = State.IDLE;\n }\n }\n afterBufferFlushed(media, bufferType, playlistType) {\n if (!media) {\n return;\n }\n // After successful buffer flushing, filter flushed fragments from bufferedFrags use mediaBuffered instead of media\n // (so that we will check against video.buffered ranges in case of alt audio track)\n const bufferedTimeRanges = BufferHelper.getBuffered(media);\n this.fragmentTracker.detectEvictedFragments(bufferType, bufferedTimeRanges, playlistType);\n if (this.state === State.ENDED) {\n this.resetLoadingState();\n }\n }\n resetLoadingState() {\n this.log('Reset loading state');\n this.fragCurrent = null;\n this.fragPrevious = null;\n this.state = State.IDLE;\n }\n resetStartWhenNotLoaded(level) {\n // if loadedmetadata is not set, it means that first frag request failed\n // in that case, reset startFragRequested flag\n if (!this.loadedmetadata) {\n this.startFragRequested = false;\n const details = level ? level.details : null;\n if (details != null && details.live) {\n // Update the start position and return to IDLE to recover live start\n this.startPosition = -1;\n this.setStartPosition(details, 0);\n this.resetLoadingState();\n } else {\n this.nextLoadPosition = this.startPosition;\n }\n }\n }\n resetWhenMissingContext(chunkMeta) {\n this.warn(`The loading context changed while buffering fragment ${chunkMeta.sn} of level ${chunkMeta.level}. This chunk will not be buffered.`);\n this.removeUnbufferedFrags();\n this.resetStartWhenNotLoaded(this.levelLastLoaded);\n this.resetLoadingState();\n }\n removeUnbufferedFrags(start = 0) {\n this.fragmentTracker.removeFragmentsInRange(start, Infinity, this.playlistType, false, true);\n }\n updateLevelTiming(frag, part, level, partial) {\n var _this$transmuxer;\n const details = level.details;\n if (!details) {\n this.warn('level.details undefined');\n return;\n }\n const parsed = Object.keys(frag.elementaryStreams).reduce((result, type) => {\n const info = frag.elementaryStreams[type];\n if (info) {\n const parsedDuration = info.endPTS - info.startPTS;\n if (parsedDuration <= 0) {\n // Destroy the transmuxer after it's next time offset failed to advance because duration was <= 0.\n // The new transmuxer will be configured with a time offset matching the next fragment start,\n // preventing the timeline from shifting.\n this.warn(`Could not parse fragment ${frag.sn} ${type} duration reliably (${parsedDuration})`);\n return result || false;\n }\n const drift = partial ? 0 : updateFragPTSDTS(details, frag, info.startPTS, info.endPTS, info.startDTS, info.endDTS);\n this.hls.trigger(Events.LEVEL_PTS_UPDATED, {\n details,\n level,\n drift,\n type,\n frag,\n start: info.startPTS,\n end: info.endPTS\n });\n return true;\n }\n return result;\n }, false);\n if (!parsed && ((_this$transmuxer = this.transmuxer) == null ? void 0 : _this$transmuxer.error) === null) {\n const error = new Error(`Found no media in fragment ${frag.sn} of level ${frag.level} resetting transmuxer to fallback to playlist timing`);\n if (level.fragmentError === 0) {\n // Mark and track the odd empty segment as a gap to avoid reloading\n level.fragmentError++;\n frag.gap = true;\n this.fragmentTracker.removeFragment(frag);\n this.fragmentTracker.fragBuffered(frag, true);\n }\n this.warn(error.message);\n this.hls.trigger(Events.ERROR, {\n type: ErrorTypes.MEDIA_ERROR,\n details: ErrorDetails.FRAG_PARSING_ERROR,\n fatal: false,\n error,\n frag,\n reason: `Found no media in msn ${frag.sn} of level \"${level.url}\"`\n });\n if (!this.hls) {\n return;\n }\n this.resetTransmuxer();\n // For this error fallthrough. Marking parsed will allow advancing to next fragment.\n }\n this.state = State.PARSED;\n this.hls.trigger(Events.FRAG_PARSED, {\n frag,\n part\n });\n }\n resetTransmuxer() {\n if (this.transmuxer) {\n this.transmuxer.destroy();\n this.transmuxer = null;\n }\n }\n recoverWorkerError(data) {\n if (data.event === 'demuxerWorker') {\n this.fragmentTracker.removeAllFragments();\n this.resetTransmuxer();\n this.resetStartWhenNotLoaded(this.levelLastLoaded);\n this.resetLoadingState();\n }\n }\n set state(nextState) {\n const previousState = this._state;\n if (previousState !== nextState) {\n this._state = nextState;\n this.log(`${previousState}->${nextState}`);\n }\n }\n get state() {\n return this._state;\n }\n}\n\nclass ChunkCache {\n constructor() {\n this.chunks = [];\n this.dataLength = 0;\n }\n push(chunk) {\n this.chunks.push(chunk);\n this.dataLength += chunk.length;\n }\n flush() {\n const {\n chunks,\n dataLength\n } = this;\n let result;\n if (!chunks.length) {\n return new Uint8Array(0);\n } else if (chunks.length === 1) {\n result = chunks[0];\n } else {\n result = concatUint8Arrays(chunks, dataLength);\n }\n this.reset();\n return result;\n }\n reset() {\n this.chunks.length = 0;\n this.dataLength = 0;\n }\n}\nfunction concatUint8Arrays(chunks, dataLength) {\n const result = new Uint8Array(dataLength);\n let offset = 0;\n for (let i = 0; i < chunks.length; i++) {\n const chunk = chunks[i];\n result.set(chunk, offset);\n offset += chunk.length;\n }\n return result;\n}\n\n// ensure the worker ends up in the bundle\n// If the worker should not be included this gets aliased to empty.js\nfunction hasUMDWorker() {\n return typeof __HLS_WORKER_BUNDLE__ === 'function';\n}\nfunction injectWorker() {\n const blob = new self.Blob([`var exports={};var module={exports:exports};function define(f){f()};define.amd=true;(${__HLS_WORKER_BUNDLE__.toString()})(true);`], {\n type: 'text/javascript'\n });\n const objectURL = self.URL.createObjectURL(blob);\n const worker = new self.Worker(objectURL);\n return {\n worker,\n objectURL\n };\n}\nfunction loadWorker(path) {\n const scriptURL = new self.URL(path, self.location.href).href;\n const worker = new self.Worker(scriptURL);\n return {\n worker,\n scriptURL\n };\n}\n\nfunction dummyTrack(type = '', inputTimeScale = 90000) {\n return {\n type,\n id: -1,\n pid: -1,\n inputTimeScale,\n sequenceNumber: -1,\n samples: [],\n dropped: 0\n };\n}\n\nclass BaseAudioDemuxer {\n constructor() {\n this._audioTrack = void 0;\n this._id3Track = void 0;\n this.frameIndex = 0;\n this.cachedData = null;\n this.basePTS = null;\n this.initPTS = null;\n this.lastPTS = null;\n }\n resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration) {\n this._id3Track = {\n type: 'id3',\n id: 3,\n pid: -1,\n inputTimeScale: 90000,\n sequenceNumber: 0,\n samples: [],\n dropped: 0\n };\n }\n resetTimeStamp(deaultTimestamp) {\n this.initPTS = deaultTimestamp;\n this.resetContiguity();\n }\n resetContiguity() {\n this.basePTS = null;\n this.lastPTS = null;\n this.frameIndex = 0;\n }\n canParse(data, offset) {\n return false;\n }\n appendFrame(track, data, offset) {}\n\n // feed incoming data to the front of the parsing pipeline\n demux(data, timeOffset) {\n if (this.cachedData) {\n data = appendUint8Array(this.cachedData, data);\n this.cachedData = null;\n }\n let id3Data = getID3Data(data, 0);\n let offset = id3Data ? id3Data.length : 0;\n let lastDataIndex;\n const track = this._audioTrack;\n const id3Track = this._id3Track;\n const timestamp = id3Data ? getTimeStamp(id3Data) : undefined;\n const length = data.length;\n if (this.basePTS === null || this.frameIndex === 0 && isFiniteNumber(timestamp)) {\n this.basePTS = initPTSFn(timestamp, timeOffset, this.initPTS);\n this.lastPTS = this.basePTS;\n }\n if (this.lastPTS === null) {\n this.lastPTS = this.basePTS;\n }\n\n // more expressive than alternative: id3Data?.length\n if (id3Data && id3Data.length > 0) {\n id3Track.samples.push({\n pts: this.lastPTS,\n dts: this.lastPTS,\n data: id3Data,\n type: MetadataSchema.audioId3,\n duration: Number.POSITIVE_INFINITY\n });\n }\n while (offset < length) {\n if (this.canParse(data, offset)) {\n const frame = this.appendFrame(track, data, offset);\n if (frame) {\n this.frameIndex++;\n this.lastPTS = frame.sample.pts;\n offset += frame.length;\n lastDataIndex = offset;\n } else {\n offset = length;\n }\n } else if (canParse$2(data, offset)) {\n // after a ID3.canParse, a call to ID3.getID3Data *should* always returns some data\n id3Data = getID3Data(data, offset);\n id3Track.samples.push({\n pts: this.lastPTS,\n dts: this.lastPTS,\n data: id3Data,\n type: MetadataSchema.audioId3,\n duration: Number.POSITIVE_INFINITY\n });\n offset += id3Data.length;\n lastDataIndex = offset;\n } else {\n offset++;\n }\n if (offset === length && lastDataIndex !== length) {\n const partialData = sliceUint8(data, lastDataIndex);\n if (this.cachedData) {\n this.cachedData = appendUint8Array(this.cachedData, partialData);\n } else {\n this.cachedData = partialData;\n }\n }\n }\n return {\n audioTrack: track,\n videoTrack: dummyTrack(),\n id3Track,\n textTrack: dummyTrack()\n };\n }\n demuxSampleAes(data, keyData, timeOffset) {\n return Promise.reject(new Error(`[${this}] This demuxer does not support Sample-AES decryption`));\n }\n flush(timeOffset) {\n // Parse cache in case of remaining frames.\n const cachedData = this.cachedData;\n if (cachedData) {\n this.cachedData = null;\n this.demux(cachedData, 0);\n }\n return {\n audioTrack: this._audioTrack,\n videoTrack: dummyTrack(),\n id3Track: this._id3Track,\n textTrack: dummyTrack()\n };\n }\n destroy() {}\n}\n\n/**\n * Initialize PTS\n * <p>\n * use timestamp unless it is undefined, NaN or Infinity\n * </p>\n */\nconst initPTSFn = (timestamp, timeOffset, initPTS) => {\n if (isFiniteNumber(timestamp)) {\n return timestamp * 90;\n }\n const init90kHz = initPTS ? initPTS.baseTime * 90000 / initPTS.timescale : 0;\n return timeOffset * 90000 + init90kHz;\n};\n\n/**\n * ADTS parser helper\n * @link https://wiki.multimedia.cx/index.php?title=ADTS\n */\nfunction getAudioConfig(observer, data, offset, audioCodec) {\n let adtsObjectType;\n let adtsExtensionSamplingIndex;\n let adtsChannelConfig;\n let config;\n const userAgent = navigator.userAgent.toLowerCase();\n const manifestCodec = audioCodec;\n const adtsSamplingRates = [96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, 8000, 7350];\n // byte 2\n adtsObjectType = ((data[offset + 2] & 0xc0) >>> 6) + 1;\n const adtsSamplingIndex = (data[offset + 2] & 0x3c) >>> 2;\n if (adtsSamplingIndex > adtsSamplingRates.length - 1) {\n const error = new Error(`invalid ADTS sampling index:${adtsSamplingIndex}`);\n observer.emit(Events.ERROR, Events.ERROR, {\n type: ErrorTypes.MEDIA_ERROR,\n details: ErrorDetails.FRAG_PARSING_ERROR,\n fatal: true,\n error,\n reason: error.message\n });\n return;\n }\n adtsChannelConfig = (data[offset + 2] & 0x01) << 2;\n // byte 3\n adtsChannelConfig |= (data[offset + 3] & 0xc0) >>> 6;\n logger.log(`manifest codec:${audioCodec}, ADTS type:${adtsObjectType}, samplingIndex:${adtsSamplingIndex}`);\n // firefox: freq less than 24kHz = AAC SBR (HE-AAC)\n if (/firefox/i.test(userAgent)) {\n if (adtsSamplingIndex >= 6) {\n adtsObjectType = 5;\n config = new Array(4);\n // HE-AAC uses SBR (Spectral Band Replication) , high frequencies are constructed from low frequencies\n // there is a factor 2 between frame sample rate and output sample rate\n // multiply frequency by 2 (see table below, equivalent to substract 3)\n adtsExtensionSamplingIndex = adtsSamplingIndex - 3;\n } else {\n adtsObjectType = 2;\n config = new Array(2);\n adtsExtensionSamplingIndex = adtsSamplingIndex;\n }\n // Android : always use AAC\n } else if (userAgent.indexOf('android') !== -1) {\n adtsObjectType = 2;\n config = new Array(2);\n adtsExtensionSamplingIndex = adtsSamplingIndex;\n } else {\n /* for other browsers (Chrome/Vivaldi/Opera ...)\n always force audio type to be HE-AAC SBR, as some browsers do not support audio codec switch properly (like Chrome ...)\n */\n adtsObjectType = 5;\n config = new Array(4);\n // if (manifest codec is HE-AAC or HE-AACv2) OR (manifest codec not specified AND frequency less than 24kHz)\n if (audioCodec && (audioCodec.indexOf('mp4a.40.29') !== -1 || audioCodec.indexOf('mp4a.40.5') !== -1) || !audioCodec && adtsSamplingIndex >= 6) {\n // HE-AAC uses SBR (Spectral Band Replication) , high frequencies are constructed from low frequencies\n // there is a factor 2 between frame sample rate and output sample rate\n // multiply frequency by 2 (see table below, equivalent to substract 3)\n adtsExtensionSamplingIndex = adtsSamplingIndex - 3;\n } else {\n // if (manifest codec is AAC) AND (frequency less than 24kHz AND nb channel is 1) OR (manifest codec not specified and mono audio)\n // Chrome fails to play back with low frequency AAC LC mono when initialized with HE-AAC. This is not a problem with stereo.\n if (audioCodec && audioCodec.indexOf('mp4a.40.2') !== -1 && (adtsSamplingIndex >= 6 && adtsChannelConfig === 1 || /vivaldi/i.test(userAgent)) || !audioCodec && adtsChannelConfig === 1) {\n adtsObjectType = 2;\n config = new Array(2);\n }\n adtsExtensionSamplingIndex = adtsSamplingIndex;\n }\n }\n /* refer to http://wiki.multimedia.cx/index.php?title=MPEG-4_Audio#Audio_Specific_Config\n ISO 14496-3 (AAC).pdf - Table 1.13 — Syntax of AudioSpecificConfig()\n Audio Profile / Audio Object Type\n 0: Null\n 1: AAC Main\n 2: AAC LC (Low Complexity)\n 3: AAC SSR (Scalable Sample Rate)\n 4: AAC LTP (Long Term Prediction)\n 5: SBR (Spectral Band Replication)\n 6: AAC Scalable\n sampling freq\n 0: 96000 Hz\n 1: 88200 Hz\n 2: 64000 Hz\n 3: 48000 Hz\n 4: 44100 Hz\n 5: 32000 Hz\n 6: 24000 Hz\n 7: 22050 Hz\n 8: 16000 Hz\n 9: 12000 Hz\n 10: 11025 Hz\n 11: 8000 Hz\n 12: 7350 Hz\n 13: Reserved\n 14: Reserved\n 15: frequency is written explictly\n Channel Configurations\n These are the channel configurations:\n 0: Defined in AOT Specifc Config\n 1: 1 channel: front-center\n 2: 2 channels: front-left, front-right\n */\n // audioObjectType = profile => profile, the MPEG-4 Audio Object Type minus 1\n config[0] = adtsObjectType << 3;\n // samplingFrequencyIndex\n config[0] |= (adtsSamplingIndex & 0x0e) >> 1;\n config[1] |= (adtsSamplingIndex & 0x01) << 7;\n // channelConfiguration\n config[1] |= adtsChannelConfig << 3;\n if (adtsObjectType === 5) {\n // adtsExtensionSamplingIndex\n config[1] |= (adtsExtensionSamplingIndex & 0x0e) >> 1;\n config[2] = (adtsExtensionSamplingIndex & 0x01) << 7;\n // adtsObjectType (force to 2, chrome is checking that object type is less than 5 ???\n // https://chromium.googlesource.com/chromium/src.git/+/master/media/formats/mp4/aac.cc\n config[2] |= 2 << 2;\n config[3] = 0;\n }\n return {\n config,\n samplerate: adtsSamplingRates[adtsSamplingIndex],\n channelCount: adtsChannelConfig,\n codec: 'mp4a.40.' + adtsObjectType,\n manifestCodec\n };\n}\nfunction isHeaderPattern$1(data, offset) {\n return data[offset] === 0xff && (data[offset + 1] & 0xf6) === 0xf0;\n}\nfunction getHeaderLength(data, offset) {\n return data[offset + 1] & 0x01 ? 7 : 9;\n}\nfunction getFullFrameLength(data, offset) {\n return (data[offset + 3] & 0x03) << 11 | data[offset + 4] << 3 | (data[offset + 5] & 0xe0) >>> 5;\n}\nfunction canGetFrameLength(data, offset) {\n return offset + 5 < data.length;\n}\nfunction isHeader$1(data, offset) {\n // Look for ADTS header | 1111 1111 | 1111 X00X | where X can be either 0 or 1\n // Layer bits (position 14 and 15) in header should be always 0 for ADTS\n // More info https://wiki.multimedia.cx/index.php?title=ADTS\n return offset + 1 < data.length && isHeaderPattern$1(data, offset);\n}\nfunction canParse$1(data, offset) {\n return canGetFrameLength(data, offset) && isHeaderPattern$1(data, offset) && getFullFrameLength(data, offset) <= data.length - offset;\n}\nfunction probe$1(data, offset) {\n // same as isHeader but we also check that ADTS frame follows last ADTS frame\n // or end of data is reached\n if (isHeader$1(data, offset)) {\n // ADTS header Length\n const headerLength = getHeaderLength(data, offset);\n if (offset + headerLength >= data.length) {\n return false;\n }\n // ADTS frame Length\n const frameLength = getFullFrameLength(data, offset);\n if (frameLength <= headerLength) {\n return false;\n }\n const newOffset = offset + frameLength;\n return newOffset === data.length || isHeader$1(data, newOffset);\n }\n return false;\n}\nfunction initTrackConfig(track, observer, data, offset, audioCodec) {\n if (!track.samplerate) {\n const config = getAudioConfig(observer, data, offset, audioCodec);\n if (!config) {\n return;\n }\n track.config = config.config;\n track.samplerate = config.samplerate;\n track.channelCount = config.channelCount;\n track.codec = config.codec;\n track.manifestCodec = config.manifestCodec;\n logger.log(`parsed codec:${track.codec}, rate:${config.samplerate}, channels:${config.channelCount}`);\n }\n}\nfunction getFrameDuration(samplerate) {\n return 1024 * 90000 / samplerate;\n}\nfunction parseFrameHeader(data, offset) {\n // The protection skip bit tells us if we have 2 bytes of CRC data at the end of the ADTS header\n const headerLength = getHeaderLength(data, offset);\n if (offset + headerLength <= data.length) {\n // retrieve frame size\n const frameLength = getFullFrameLength(data, offset) - headerLength;\n if (frameLength > 0) {\n // logger.log(`AAC frame, offset/length/total/pts:${offset+headerLength}/${frameLength}/${data.byteLength}`);\n return {\n headerLength,\n frameLength\n };\n }\n }\n}\nfunction appendFrame$2(track, data, offset, pts, frameIndex) {\n const frameDuration = getFrameDuration(track.samplerate);\n const stamp = pts + frameIndex * frameDuration;\n const header = parseFrameHeader(data, offset);\n let unit;\n if (header) {\n const {\n frameLength,\n headerLength\n } = header;\n const _length = headerLength + frameLength;\n const missing = Math.max(0, offset + _length - data.length);\n // logger.log(`AAC frame ${frameIndex}, pts:${stamp} length@offset/total: ${frameLength}@${offset+headerLength}/${data.byteLength} missing: ${missing}`);\n if (missing) {\n unit = new Uint8Array(_length - headerLength);\n unit.set(data.subarray(offset + headerLength, data.length), 0);\n } else {\n unit = data.subarray(offset + headerLength, offset + _length);\n }\n const _sample = {\n unit,\n pts: stamp\n };\n if (!missing) {\n track.samples.push(_sample);\n }\n return {\n sample: _sample,\n length: _length,\n missing\n };\n }\n // overflow incomplete header\n const length = data.length - offset;\n unit = new Uint8Array(length);\n unit.set(data.subarray(offset, data.length), 0);\n const sample = {\n unit,\n pts: stamp\n };\n return {\n sample,\n length,\n missing: -1\n };\n}\n\n/**\n * MPEG parser helper\n */\n\nlet chromeVersion$1 = null;\nconst BitratesMap = [32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160];\nconst SamplingRateMap = [44100, 48000, 32000, 22050, 24000, 16000, 11025, 12000, 8000];\nconst SamplesCoefficients = [\n// MPEG 2.5\n[0,\n// Reserved\n72,\n// Layer3\n144,\n// Layer2\n12 // Layer1\n],\n// Reserved\n[0,\n// Reserved\n0,\n// Layer3\n0,\n// Layer2\n0 // Layer1\n],\n// MPEG 2\n[0,\n// Reserved\n72,\n// Layer3\n144,\n// Layer2\n12 // Layer1\n],\n// MPEG 1\n[0,\n// Reserved\n144,\n// Layer3\n144,\n// Layer2\n12 // Layer1\n]];\nconst BytesInSlot = [0,\n// Reserved\n1,\n// Layer3\n1,\n// Layer2\n4 // Layer1\n];\nfunction appendFrame$1(track, data, offset, pts, frameIndex) {\n // Using http://www.datavoyage.com/mpgscript/mpeghdr.htm as a reference\n if (offset + 24 > data.length) {\n return;\n }\n const header = parseHeader(data, offset);\n if (header && offset + header.frameLength <= data.length) {\n const frameDuration = header.samplesPerFrame * 90000 / header.sampleRate;\n const stamp = pts + frameIndex * frameDuration;\n const sample = {\n unit: data.subarray(offset, offset + header.frameLength),\n pts: stamp,\n dts: stamp\n };\n track.config = [];\n track.channelCount = header.channelCount;\n track.samplerate = header.sampleRate;\n track.samples.push(sample);\n return {\n sample,\n length: header.frameLength,\n missing: 0\n };\n }\n}\nfunction parseHeader(data, offset) {\n const mpegVersion = data[offset + 1] >> 3 & 3;\n const mpegLayer = data[offset + 1] >> 1 & 3;\n const bitRateIndex = data[offset + 2] >> 4 & 15;\n const sampleRateIndex = data[offset + 2] >> 2 & 3;\n if (mpegVersion !== 1 && bitRateIndex !== 0 && bitRateIndex !== 15 && sampleRateIndex !== 3) {\n const paddingBit = data[offset + 2] >> 1 & 1;\n const channelMode = data[offset + 3] >> 6;\n const columnInBitrates = mpegVersion === 3 ? 3 - mpegLayer : mpegLayer === 3 ? 3 : 4;\n const bitRate = BitratesMap[columnInBitrates * 14 + bitRateIndex - 1] * 1000;\n const columnInSampleRates = mpegVersion === 3 ? 0 : mpegVersion === 2 ? 1 : 2;\n const sampleRate = SamplingRateMap[columnInSampleRates * 3 + sampleRateIndex];\n const channelCount = channelMode === 3 ? 1 : 2; // If bits of channel mode are `11` then it is a single channel (Mono)\n const sampleCoefficient = SamplesCoefficients[mpegVersion][mpegLayer];\n const bytesInSlot = BytesInSlot[mpegLayer];\n const samplesPerFrame = sampleCoefficient * 8 * bytesInSlot;\n const frameLength = Math.floor(sampleCoefficient * bitRate / sampleRate + paddingBit) * bytesInSlot;\n if (chromeVersion$1 === null) {\n const userAgent = navigator.userAgent || '';\n const result = userAgent.match(/Chrome\\/(\\d+)/i);\n chromeVersion$1 = result ? parseInt(result[1]) : 0;\n }\n const needChromeFix = !!chromeVersion$1 && chromeVersion$1 <= 87;\n if (needChromeFix && mpegLayer === 2 && bitRate >= 224000 && channelMode === 0) {\n // Work around bug in Chromium by setting channelMode to dual-channel (01) instead of stereo (00)\n data[offset + 3] = data[offset + 3] | 0x80;\n }\n return {\n sampleRate,\n channelCount,\n frameLength,\n samplesPerFrame\n };\n }\n}\nfunction isHeaderPattern(data, offset) {\n return data[offset] === 0xff && (data[offset + 1] & 0xe0) === 0xe0 && (data[offset + 1] & 0x06) !== 0x00;\n}\nfunction isHeader(data, offset) {\n // Look for MPEG header | 1111 1111 | 111X XYZX | where X can be either 0 or 1 and Y or Z should be 1\n // Layer bits (position 14 and 15) in header should be always different from 0 (Layer I or Layer II or Layer III)\n // More info http://www.mp3-tech.org/programmer/frame_header.html\n return offset + 1 < data.length && isHeaderPattern(data, offset);\n}\nfunction canParse(data, offset) {\n const headerSize = 4;\n return isHeaderPattern(data, offset) && headerSize <= data.length - offset;\n}\nfunction probe(data, offset) {\n // same as isHeader but we also check that MPEG frame follows last MPEG frame\n // or end of data is reached\n if (offset + 1 < data.length && isHeaderPattern(data, offset)) {\n // MPEG header Length\n const headerLength = 4;\n // MPEG frame Length\n const header = parseHeader(data, offset);\n let frameLength = headerLength;\n if (header != null && header.frameLength) {\n frameLength = header.frameLength;\n }\n const newOffset = offset + frameLength;\n return newOffset === data.length || isHeader(data, newOffset);\n }\n return false;\n}\n\n/**\n * AAC demuxer\n */\nclass AACDemuxer extends BaseAudioDemuxer {\n constructor(observer, config) {\n super();\n this.observer = void 0;\n this.config = void 0;\n this.observer = observer;\n this.config = config;\n }\n resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration) {\n super.resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration);\n this._audioTrack = {\n container: 'audio/adts',\n type: 'audio',\n id: 2,\n pid: -1,\n sequenceNumber: 0,\n segmentCodec: 'aac',\n samples: [],\n manifestCodec: audioCodec,\n duration: trackDuration,\n inputTimeScale: 90000,\n dropped: 0\n };\n }\n\n // Source for probe info - https://wiki.multimedia.cx/index.php?title=ADTS\n static probe(data) {\n if (!data) {\n return false;\n }\n\n // Check for the ADTS sync word\n // Look for ADTS header | 1111 1111 | 1111 X00X | where X can be either 0 or 1\n // Layer bits (position 14 and 15) in header should be always 0 for ADTS\n // More info https://wiki.multimedia.cx/index.php?title=ADTS\n const id3Data = getID3Data(data, 0);\n let offset = (id3Data == null ? void 0 : id3Data.length) || 0;\n if (probe(data, offset)) {\n return false;\n }\n for (let length = data.length; offset < length; offset++) {\n if (probe$1(data, offset)) {\n logger.log('ADTS sync word found !');\n return true;\n }\n }\n return false;\n }\n canParse(data, offset) {\n return canParse$1(data, offset);\n }\n appendFrame(track, data, offset) {\n initTrackConfig(track, this.observer, data, offset, track.manifestCodec);\n const frame = appendFrame$2(track, data, offset, this.basePTS, this.frameIndex);\n if (frame && frame.missing === 0) {\n return frame;\n }\n }\n}\n\nconst emsgSchemePattern = /\\/emsg[-/]ID3/i;\nclass MP4Demuxer {\n constructor(observer, config) {\n this.remainderData = null;\n this.timeOffset = 0;\n this.config = void 0;\n this.videoTrack = void 0;\n this.audioTrack = void 0;\n this.id3Track = void 0;\n this.txtTrack = void 0;\n this.config = config;\n }\n resetTimeStamp() {}\n resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration) {\n const videoTrack = this.videoTrack = dummyTrack('video', 1);\n const audioTrack = this.audioTrack = dummyTrack('audio', 1);\n const captionTrack = this.txtTrack = dummyTrack('text', 1);\n this.id3Track = dummyTrack('id3', 1);\n this.timeOffset = 0;\n if (!(initSegment != null && initSegment.byteLength)) {\n return;\n }\n const initData = parseInitSegment(initSegment);\n if (initData.video) {\n const {\n id,\n timescale,\n codec\n } = initData.video;\n videoTrack.id = id;\n videoTrack.timescale = captionTrack.timescale = timescale;\n videoTrack.codec = codec;\n }\n if (initData.audio) {\n const {\n id,\n timescale,\n codec\n } = initData.audio;\n audioTrack.id = id;\n audioTrack.timescale = timescale;\n audioTrack.codec = codec;\n }\n captionTrack.id = RemuxerTrackIdConfig.text;\n videoTrack.sampleDuration = 0;\n videoTrack.duration = audioTrack.duration = trackDuration;\n }\n resetContiguity() {\n this.remainderData = null;\n }\n static probe(data) {\n return hasMoofData(data);\n }\n demux(data, timeOffset) {\n this.timeOffset = timeOffset;\n // Load all data into the avc track. The CMAF remuxer will look for the data in the samples object; the rest of the fields do not matter\n let videoSamples = data;\n const videoTrack = this.videoTrack;\n const textTrack = this.txtTrack;\n if (this.config.progressive) {\n // Split the bytestream into two ranges: one encompassing all data up until the start of the last moof, and everything else.\n // This is done to guarantee that we're sending valid data to MSE - when demuxing progressively, we have no guarantee\n // that the fetch loader gives us flush moof+mdat pairs. If we push jagged data to MSE, it will throw an exception.\n if (this.remainderData) {\n videoSamples = appendUint8Array(this.remainderData, data);\n }\n const segmentedData = segmentValidRange(videoSamples);\n this.remainderData = segmentedData.remainder;\n videoTrack.samples = segmentedData.valid || new Uint8Array();\n } else {\n videoTrack.samples = videoSamples;\n }\n const id3Track = this.extractID3Track(videoTrack, timeOffset);\n textTrack.samples = parseSamples(timeOffset, videoTrack);\n return {\n videoTrack,\n audioTrack: this.audioTrack,\n id3Track,\n textTrack: this.txtTrack\n };\n }\n flush() {\n const timeOffset = this.timeOffset;\n const videoTrack = this.videoTrack;\n const textTrack = this.txtTrack;\n videoTrack.samples = this.remainderData || new Uint8Array();\n this.remainderData = null;\n const id3Track = this.extractID3Track(videoTrack, this.timeOffset);\n textTrack.samples = parseSamples(timeOffset, videoTrack);\n return {\n videoTrack,\n audioTrack: dummyTrack(),\n id3Track,\n textTrack: dummyTrack()\n };\n }\n extractID3Track(videoTrack, timeOffset) {\n const id3Track = this.id3Track;\n if (videoTrack.samples.length) {\n const emsgs = findBox(videoTrack.samples, ['emsg']);\n if (emsgs) {\n emsgs.forEach(data => {\n const emsgInfo = parseEmsg(data);\n if (emsgSchemePattern.test(emsgInfo.schemeIdUri)) {\n const pts = isFiniteNumber(emsgInfo.presentationTime) ? emsgInfo.presentationTime / emsgInfo.timeScale : timeOffset + emsgInfo.presentationTimeDelta / emsgInfo.timeScale;\n let duration = emsgInfo.eventDuration === 0xffffffff ? Number.POSITIVE_INFINITY : emsgInfo.eventDuration / emsgInfo.timeScale;\n // Safari takes anything <= 0.001 seconds and maps it to Infinity\n if (duration <= 0.001) {\n duration = Number.POSITIVE_INFINITY;\n }\n const payload = emsgInfo.payload;\n id3Track.samples.push({\n data: payload,\n len: payload.byteLength,\n dts: pts,\n pts: pts,\n type: MetadataSchema.emsg,\n duration: duration\n });\n }\n });\n }\n }\n return id3Track;\n }\n demuxSampleAes(data, keyData, timeOffset) {\n return Promise.reject(new Error('The MP4 demuxer does not support SAMPLE-AES decryption'));\n }\n destroy() {}\n}\n\nconst getAudioBSID = (data, offset) => {\n // check the bsid to confirm ac-3 | ec-3\n let bsid = 0;\n let numBits = 5;\n offset += numBits;\n const temp = new Uint32Array(1); // unsigned 32 bit for temporary storage\n const mask = new Uint32Array(1); // unsigned 32 bit mask value\n const byte = new Uint8Array(1); // unsigned 8 bit for temporary storage\n while (numBits > 0) {\n byte[0] = data[offset];\n // read remaining bits, upto 8 bits at a time\n const bits = Math.min(numBits, 8);\n const shift = 8 - bits;\n mask[0] = 0xff000000 >>> 24 + shift << shift;\n temp[0] = (byte[0] & mask[0]) >> shift;\n bsid = !bsid ? temp[0] : bsid << bits | temp[0];\n offset += 1;\n numBits -= bits;\n }\n return bsid;\n};\n\nclass AC3Demuxer extends BaseAudioDemuxer {\n constructor(observer) {\n super();\n this.observer = void 0;\n this.observer = observer;\n }\n resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration) {\n super.resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration);\n this._audioTrack = {\n container: 'audio/ac-3',\n type: 'audio',\n id: 2,\n pid: -1,\n sequenceNumber: 0,\n segmentCodec: 'ac3',\n samples: [],\n manifestCodec: audioCodec,\n duration: trackDuration,\n inputTimeScale: 90000,\n dropped: 0\n };\n }\n canParse(data, offset) {\n return offset + 64 < data.length;\n }\n appendFrame(track, data, offset) {\n const frameLength = appendFrame(track, data, offset, this.basePTS, this.frameIndex);\n if (frameLength !== -1) {\n const sample = track.samples[track.samples.length - 1];\n return {\n sample,\n length: frameLength,\n missing: 0\n };\n }\n }\n static probe(data) {\n if (!data) {\n return false;\n }\n const id3Data = getID3Data(data, 0);\n if (!id3Data) {\n return false;\n }\n\n // look for the ac-3 sync bytes\n const offset = id3Data.length;\n if (data[offset] === 0x0b && data[offset + 1] === 0x77 && getTimeStamp(id3Data) !== undefined &&\n // check the bsid to confirm ac-3\n getAudioBSID(data, offset) < 16) {\n return true;\n }\n return false;\n }\n}\nfunction appendFrame(track, data, start, pts, frameIndex) {\n if (start + 8 > data.length) {\n return -1; // not enough bytes left\n }\n if (data[start] !== 0x0b || data[start + 1] !== 0x77) {\n return -1; // invalid magic\n }\n\n // get sample rate\n const samplingRateCode = data[start + 4] >> 6;\n if (samplingRateCode >= 3) {\n return -1; // invalid sampling rate\n }\n const samplingRateMap = [48000, 44100, 32000];\n const sampleRate = samplingRateMap[samplingRateCode];\n\n // get frame size\n const frameSizeCode = data[start + 4] & 0x3f;\n const frameSizeMap = [64, 69, 96, 64, 70, 96, 80, 87, 120, 80, 88, 120, 96, 104, 144, 96, 105, 144, 112, 121, 168, 112, 122, 168, 128, 139, 192, 128, 140, 192, 160, 174, 240, 160, 175, 240, 192, 208, 288, 192, 209, 288, 224, 243, 336, 224, 244, 336, 256, 278, 384, 256, 279, 384, 320, 348, 480, 320, 349, 480, 384, 417, 576, 384, 418, 576, 448, 487, 672, 448, 488, 672, 512, 557, 768, 512, 558, 768, 640, 696, 960, 640, 697, 960, 768, 835, 1152, 768, 836, 1152, 896, 975, 1344, 896, 976, 1344, 1024, 1114, 1536, 1024, 1115, 1536, 1152, 1253, 1728, 1152, 1254, 1728, 1280, 1393, 1920, 1280, 1394, 1920];\n const frameLength = frameSizeMap[frameSizeCode * 3 + samplingRateCode] * 2;\n if (start + frameLength > data.length) {\n return -1;\n }\n\n // get channel count\n const channelMode = data[start + 6] >> 5;\n let skipCount = 0;\n if (channelMode === 2) {\n skipCount += 2;\n } else {\n if (channelMode & 1 && channelMode !== 1) {\n skipCount += 2;\n }\n if (channelMode & 4) {\n skipCount += 2;\n }\n }\n const lfeon = (data[start + 6] << 8 | data[start + 7]) >> 12 - skipCount & 1;\n const channelsMap = [2, 1, 2, 3, 3, 4, 4, 5];\n const channelCount = channelsMap[channelMode] + lfeon;\n\n // build dac3 box\n const bsid = data[start + 5] >> 3;\n const bsmod = data[start + 5] & 7;\n const config = new Uint8Array([samplingRateCode << 6 | bsid << 1 | bsmod >> 2, (bsmod & 3) << 6 | channelMode << 3 | lfeon << 2 | frameSizeCode >> 4, frameSizeCode << 4 & 0xe0]);\n const frameDuration = 1536 / sampleRate * 90000;\n const stamp = pts + frameIndex * frameDuration;\n const unit = data.subarray(start, start + frameLength);\n track.config = config;\n track.channelCount = channelCount;\n track.samplerate = sampleRate;\n track.samples.push({\n unit,\n pts: stamp\n });\n return frameLength;\n}\n\nclass BaseVideoParser {\n constructor() {\n this.VideoSample = null;\n }\n createVideoSample(key, pts, dts, debug) {\n return {\n key,\n frame: false,\n pts,\n dts,\n units: [],\n debug,\n length: 0\n };\n }\n getLastNalUnit(samples) {\n var _VideoSample;\n let VideoSample = this.VideoSample;\n let lastUnit;\n // try to fallback to previous sample if current one is empty\n if (!VideoSample || VideoSample.units.length === 0) {\n VideoSample = samples[samples.length - 1];\n }\n if ((_VideoSample = VideoSample) != null && _VideoSample.units) {\n const units = VideoSample.units;\n lastUnit = units[units.length - 1];\n }\n return lastUnit;\n }\n pushAccessUnit(VideoSample, videoTrack) {\n if (VideoSample.units.length && VideoSample.frame) {\n // if sample does not have PTS/DTS, patch with last sample PTS/DTS\n if (VideoSample.pts === undefined) {\n const samples = videoTrack.samples;\n const nbSamples = samples.length;\n if (nbSamples) {\n const lastSample = samples[nbSamples - 1];\n VideoSample.pts = lastSample.pts;\n VideoSample.dts = lastSample.dts;\n } else {\n // dropping samples, no timestamp found\n videoTrack.dropped++;\n return;\n }\n }\n videoTrack.samples.push(VideoSample);\n }\n if (VideoSample.debug.length) {\n logger.log(VideoSample.pts + '/' + VideoSample.dts + ':' + VideoSample.debug);\n }\n }\n}\n\n/**\n * Parser for exponential Golomb codes, a variable-bitwidth number encoding scheme used by h264.\n */\n\nclass ExpGolomb {\n constructor(data) {\n this.data = void 0;\n this.bytesAvailable = void 0;\n this.word = void 0;\n this.bitsAvailable = void 0;\n this.data = data;\n // the number of bytes left to examine in this.data\n this.bytesAvailable = data.byteLength;\n // the current word being examined\n this.word = 0; // :uint\n // the number of bits left to examine in the current word\n this.bitsAvailable = 0; // :uint\n }\n\n // ():void\n loadWord() {\n const data = this.data;\n const bytesAvailable = this.bytesAvailable;\n const position = data.byteLength - bytesAvailable;\n const workingBytes = new Uint8Array(4);\n const availableBytes = Math.min(4, bytesAvailable);\n if (availableBytes === 0) {\n throw new Error('no bytes available');\n }\n workingBytes.set(data.subarray(position, position + availableBytes));\n this.word = new DataView(workingBytes.buffer).getUint32(0);\n // track the amount of this.data that has been processed\n this.bitsAvailable = availableBytes * 8;\n this.bytesAvailable -= availableBytes;\n }\n\n // (count:int):void\n skipBits(count) {\n let skipBytes; // :int\n count = Math.min(count, this.bytesAvailable * 8 + this.bitsAvailable);\n if (this.bitsAvailable > count) {\n this.word <<= count;\n this.bitsAvailable -= count;\n } else {\n count -= this.bitsAvailable;\n skipBytes = count >> 3;\n count -= skipBytes << 3;\n this.bytesAvailable -= skipBytes;\n this.loadWord();\n this.word <<= count;\n this.bitsAvailable -= count;\n }\n }\n\n // (size:int):uint\n readBits(size) {\n let bits = Math.min(this.bitsAvailable, size); // :uint\n const valu = this.word >>> 32 - bits; // :uint\n if (size > 32) {\n logger.error('Cannot read more than 32 bits at a time');\n }\n this.bitsAvailable -= bits;\n if (this.bitsAvailable > 0) {\n this.word <<= bits;\n } else if (this.bytesAvailable > 0) {\n this.loadWord();\n } else {\n throw new Error('no bits available');\n }\n bits = size - bits;\n if (bits > 0 && this.bitsAvailable) {\n return valu << bits | this.readBits(bits);\n } else {\n return valu;\n }\n }\n\n // ():uint\n skipLZ() {\n let leadingZeroCount; // :uint\n for (leadingZeroCount = 0; leadingZeroCount < this.bitsAvailable; ++leadingZeroCount) {\n if ((this.word & 0x80000000 >>> leadingZeroCount) !== 0) {\n // the first bit of working word is 1\n this.word <<= leadingZeroCount;\n this.bitsAvailable -= leadingZeroCount;\n return leadingZeroCount;\n }\n }\n // we exhausted word and still have not found a 1\n this.loadWord();\n return leadingZeroCount + this.skipLZ();\n }\n\n // ():void\n skipUEG() {\n this.skipBits(1 + this.skipLZ());\n }\n\n // ():void\n skipEG() {\n this.skipBits(1 + this.skipLZ());\n }\n\n // ():uint\n readUEG() {\n const clz = this.skipLZ(); // :uint\n return this.readBits(clz + 1) - 1;\n }\n\n // ():int\n readEG() {\n const valu = this.readUEG(); // :int\n if (0x01 & valu) {\n // the number is odd if the low order bit is set\n return 1 + valu >>> 1; // add 1 to make it even, and divide by 2\n } else {\n return -1 * (valu >>> 1); // divide by two then make it negative\n }\n }\n\n // Some convenience functions\n // :Boolean\n readBoolean() {\n return this.readBits(1) === 1;\n }\n\n // ():int\n readUByte() {\n return this.readBits(8);\n }\n\n // ():int\n readUShort() {\n return this.readBits(16);\n }\n\n // ():int\n readUInt() {\n return this.readBits(32);\n }\n\n /**\n * Advance the ExpGolomb decoder past a scaling list. The scaling\n * list is optionally transmitted as part of a sequence parameter\n * set and is not relevant to transmuxing.\n * @param count the number of entries in this scaling list\n * @see Recommendation ITU-T H.264, Section 7.3.2.1.1.1\n */\n skipScalingList(count) {\n let lastScale = 8;\n let nextScale = 8;\n let deltaScale;\n for (let j = 0; j < count; j++) {\n if (nextScale !== 0) {\n deltaScale = this.readEG();\n nextScale = (lastScale + deltaScale + 256) % 256;\n }\n lastScale = nextScale === 0 ? lastScale : nextScale;\n }\n }\n\n /**\n * Read a sequence parameter set and return some interesting video\n * properties. A sequence parameter set is the H264 metadata that\n * describes the properties of upcoming video frames.\n * @returns an object with configuration parsed from the\n * sequence parameter set, including the dimensions of the\n * associated video frames.\n */\n readSPS() {\n let frameCropLeftOffset = 0;\n let frameCropRightOffset = 0;\n let frameCropTopOffset = 0;\n let frameCropBottomOffset = 0;\n let numRefFramesInPicOrderCntCycle;\n let scalingListCount;\n let i;\n const readUByte = this.readUByte.bind(this);\n const readBits = this.readBits.bind(this);\n const readUEG = this.readUEG.bind(this);\n const readBoolean = this.readBoolean.bind(this);\n const skipBits = this.skipBits.bind(this);\n const skipEG = this.skipEG.bind(this);\n const skipUEG = this.skipUEG.bind(this);\n const skipScalingList = this.skipScalingList.bind(this);\n readUByte();\n const profileIdc = readUByte(); // profile_idc\n readBits(5); // profileCompat constraint_set[0-4]_flag, u(5)\n skipBits(3); // reserved_zero_3bits u(3),\n readUByte(); // level_idc u(8)\n skipUEG(); // seq_parameter_set_id\n // some profiles have more optional data we don't need\n if (profileIdc === 100 || profileIdc === 110 || profileIdc === 122 || profileIdc === 244 || profileIdc === 44 || profileIdc === 83 || profileIdc === 86 || profileIdc === 118 || profileIdc === 128) {\n const chromaFormatIdc = readUEG();\n if (chromaFormatIdc === 3) {\n skipBits(1);\n } // separate_colour_plane_flag\n\n skipUEG(); // bit_depth_luma_minus8\n skipUEG(); // bit_depth_chroma_minus8\n skipBits(1); // qpprime_y_zero_transform_bypass_flag\n if (readBoolean()) {\n // seq_scaling_matrix_present_flag\n scalingListCount = chromaFormatIdc !== 3 ? 8 : 12;\n for (i = 0; i < scalingListCount; i++) {\n if (readBoolean()) {\n // seq_scaling_list_present_flag[ i ]\n if (i < 6) {\n skipScalingList(16);\n } else {\n skipScalingList(64);\n }\n }\n }\n }\n }\n skipUEG(); // log2_max_frame_num_minus4\n const picOrderCntType = readUEG();\n if (picOrderCntType === 0) {\n readUEG(); // log2_max_pic_order_cnt_lsb_minus4\n } else if (picOrderCntType === 1) {\n skipBits(1); // delta_pic_order_always_zero_flag\n skipEG(); // offset_for_non_ref_pic\n skipEG(); // offset_for_top_to_bottom_field\n numRefFramesInPicOrderCntCycle = readUEG();\n for (i = 0; i < numRefFramesInPicOrderCntCycle; i++) {\n skipEG();\n } // offset_for_ref_frame[ i ]\n }\n skipUEG(); // max_num_ref_frames\n skipBits(1); // gaps_in_frame_num_value_allowed_flag\n const picWidthInMbsMinus1 = readUEG();\n const picHeightInMapUnitsMinus1 = readUEG();\n const frameMbsOnlyFlag = readBits(1);\n if (frameMbsOnlyFlag === 0) {\n skipBits(1);\n } // mb_adaptive_frame_field_flag\n\n skipBits(1); // direct_8x8_inference_flag\n if (readBoolean()) {\n // frame_cropping_flag\n frameCropLeftOffset = readUEG();\n frameCropRightOffset = readUEG();\n frameCropTopOffset = readUEG();\n frameCropBottomOffset = readUEG();\n }\n let pixelRatio = [1, 1];\n if (readBoolean()) {\n // vui_parameters_present_flag\n if (readBoolean()) {\n // aspect_ratio_info_present_flag\n const aspectRatioIdc = readUByte();\n switch (aspectRatioIdc) {\n case 1:\n pixelRatio = [1, 1];\n break;\n case 2:\n pixelRatio = [12, 11];\n break;\n case 3:\n pixelRatio = [10, 11];\n break;\n case 4:\n pixelRatio = [16, 11];\n break;\n case 5:\n pixelRatio = [40, 33];\n break;\n case 6:\n pixelRatio = [24, 11];\n break;\n case 7:\n pixelRatio = [20, 11];\n break;\n case 8:\n pixelRatio = [32, 11];\n break;\n case 9:\n pixelRatio = [80, 33];\n break;\n case 10:\n pixelRatio = [18, 11];\n break;\n case 11:\n pixelRatio = [15, 11];\n break;\n case 12:\n pixelRatio = [64, 33];\n break;\n case 13:\n pixelRatio = [160, 99];\n break;\n case 14:\n pixelRatio = [4, 3];\n break;\n case 15:\n pixelRatio = [3, 2];\n break;\n case 16:\n pixelRatio = [2, 1];\n break;\n case 255:\n {\n pixelRatio = [readUByte() << 8 | readUByte(), readUByte() << 8 | readUByte()];\n break;\n }\n }\n }\n }\n return {\n width: Math.ceil((picWidthInMbsMinus1 + 1) * 16 - frameCropLeftOffset * 2 - frameCropRightOffset * 2),\n height: (2 - frameMbsOnlyFlag) * (picHeightInMapUnitsMinus1 + 1) * 16 - (frameMbsOnlyFlag ? 2 : 4) * (frameCropTopOffset + frameCropBottomOffset),\n pixelRatio: pixelRatio\n };\n }\n readSliceType() {\n // skip NALu type\n this.readUByte();\n // discard first_mb_in_slice\n this.readUEG();\n // return slice_type\n return this.readUEG();\n }\n}\n\nclass AvcVideoParser extends BaseVideoParser {\n parseAVCPES(track, textTrack, pes, last, duration) {\n const units = this.parseAVCNALu(track, pes.data);\n let VideoSample = this.VideoSample;\n let push;\n let spsfound = false;\n // free pes.data to save up some memory\n pes.data = null;\n\n // if new NAL units found and last sample still there, let's push ...\n // this helps parsing streams with missing AUD (only do this if AUD never found)\n if (VideoSample && units.length && !track.audFound) {\n this.pushAccessUnit(VideoSample, track);\n VideoSample = this.VideoSample = this.createVideoSample(false, pes.pts, pes.dts, '');\n }\n units.forEach(unit => {\n var _VideoSample2;\n switch (unit.type) {\n // NDR\n case 1:\n {\n let iskey = false;\n push = true;\n const data = unit.data;\n // only check slice type to detect KF in case SPS found in same packet (any keyframe is preceded by SPS ...)\n if (spsfound && data.length > 4) {\n // retrieve slice type by parsing beginning of NAL unit (follow H264 spec, slice_header definition) to detect keyframe embedded in NDR\n const sliceType = new ExpGolomb(data).readSliceType();\n // 2 : I slice, 4 : SI slice, 7 : I slice, 9: SI slice\n // SI slice : A slice that is coded using intra prediction only and using quantisation of the prediction samples.\n // An SI slice can be coded such that its decoded samples can be constructed identically to an SP slice.\n // I slice: A slice that is not an SI slice that is decoded using intra prediction only.\n // if (sliceType === 2 || sliceType === 7) {\n if (sliceType === 2 || sliceType === 4 || sliceType === 7 || sliceType === 9) {\n iskey = true;\n }\n }\n if (iskey) {\n var _VideoSample;\n // if we have non-keyframe data already, that cannot belong to the same frame as a keyframe, so force a push\n if ((_VideoSample = VideoSample) != null && _VideoSample.frame && !VideoSample.key) {\n this.pushAccessUnit(VideoSample, track);\n VideoSample = this.VideoSample = null;\n }\n }\n if (!VideoSample) {\n VideoSample = this.VideoSample = this.createVideoSample(true, pes.pts, pes.dts, '');\n }\n VideoSample.frame = true;\n VideoSample.key = iskey;\n break;\n // IDR\n }\n case 5:\n push = true;\n // handle PES not starting with AUD\n // if we have frame data already, that cannot belong to the same frame, so force a push\n if ((_VideoSample2 = VideoSample) != null && _VideoSample2.frame && !VideoSample.key) {\n this.pushAccessUnit(VideoSample, track);\n VideoSample = this.VideoSample = null;\n }\n if (!VideoSample) {\n VideoSample = this.VideoSample = this.createVideoSample(true, pes.pts, pes.dts, '');\n }\n VideoSample.key = true;\n VideoSample.frame = true;\n break;\n // SEI\n case 6:\n {\n push = true;\n parseSEIMessageFromNALu(unit.data, 1, pes.pts, textTrack.samples);\n break;\n // SPS\n }\n case 7:\n {\n var _track$pixelRatio, _track$pixelRatio2;\n push = true;\n spsfound = true;\n const sps = unit.data;\n const expGolombDecoder = new ExpGolomb(sps);\n const config = expGolombDecoder.readSPS();\n if (!track.sps || track.width !== config.width || track.height !== config.height || ((_track$pixelRatio = track.pixelRatio) == null ? void 0 : _track$pixelRatio[0]) !== config.pixelRatio[0] || ((_track$pixelRatio2 = track.pixelRatio) == null ? void 0 : _track$pixelRatio2[1]) !== config.pixelRatio[1]) {\n track.width = config.width;\n track.height = config.height;\n track.pixelRatio = config.pixelRatio;\n track.sps = [sps];\n track.duration = duration;\n const codecarray = sps.subarray(1, 4);\n let codecstring = 'avc1.';\n for (let i = 0; i < 3; i++) {\n let h = codecarray[i].toString(16);\n if (h.length < 2) {\n h = '0' + h;\n }\n codecstring += h;\n }\n track.codec = codecstring;\n }\n break;\n }\n // PPS\n case 8:\n push = true;\n track.pps = [unit.data];\n break;\n // AUD\n case 9:\n push = true;\n track.audFound = true;\n if (VideoSample) {\n this.pushAccessUnit(VideoSample, track);\n }\n VideoSample = this.VideoSample = this.createVideoSample(false, pes.pts, pes.dts, '');\n break;\n // Filler Data\n case 12:\n push = true;\n break;\n default:\n push = false;\n if (VideoSample) {\n VideoSample.debug += 'unknown NAL ' + unit.type + ' ';\n }\n break;\n }\n if (VideoSample && push) {\n const units = VideoSample.units;\n units.push(unit);\n }\n });\n // if last PES packet, push samples\n if (last && VideoSample) {\n this.pushAccessUnit(VideoSample, track);\n this.VideoSample = null;\n }\n }\n parseAVCNALu(track, array) {\n const len = array.byteLength;\n let state = track.naluState || 0;\n const lastState = state;\n const units = [];\n let i = 0;\n let value;\n let overflow;\n let unitType;\n let lastUnitStart = -1;\n let lastUnitType = 0;\n // logger.log('PES:' + Hex.hexDump(array));\n\n if (state === -1) {\n // special use case where we found 3 or 4-byte start codes exactly at the end of previous PES packet\n lastUnitStart = 0;\n // NALu type is value read from offset 0\n lastUnitType = array[0] & 0x1f;\n state = 0;\n i = 1;\n }\n while (i < len) {\n value = array[i++];\n // optimization. state 0 and 1 are the predominant case. let's handle them outside of the switch/case\n if (!state) {\n state = value ? 0 : 1;\n continue;\n }\n if (state === 1) {\n state = value ? 0 : 2;\n continue;\n }\n // here we have state either equal to 2 or 3\n if (!value) {\n state = 3;\n } else if (value === 1) {\n overflow = i - state - 1;\n if (lastUnitStart >= 0) {\n const unit = {\n data: array.subarray(lastUnitStart, overflow),\n type: lastUnitType\n };\n // logger.log('pushing NALU, type/size:' + unit.type + '/' + unit.data.byteLength);\n units.push(unit);\n } else {\n // lastUnitStart is undefined => this is the first start code found in this PES packet\n // first check if start code delimiter is overlapping between 2 PES packets,\n // ie it started in last packet (lastState not zero)\n // and ended at the beginning of this PES packet (i <= 4 - lastState)\n const lastUnit = this.getLastNalUnit(track.samples);\n if (lastUnit) {\n if (lastState && i <= 4 - lastState) {\n // start delimiter overlapping between PES packets\n // strip start delimiter bytes from the end of last NAL unit\n // check if lastUnit had a state different from zero\n if (lastUnit.state) {\n // strip last bytes\n lastUnit.data = lastUnit.data.subarray(0, lastUnit.data.byteLength - lastState);\n }\n }\n // If NAL units are not starting right at the beginning of the PES packet, push preceding data into previous NAL unit.\n\n if (overflow > 0) {\n // logger.log('first NALU found with overflow:' + overflow);\n lastUnit.data = appendUint8Array(lastUnit.data, array.subarray(0, overflow));\n lastUnit.state = 0;\n }\n }\n }\n // check if we can read unit type\n if (i < len) {\n unitType = array[i] & 0x1f;\n // logger.log('find NALU @ offset:' + i + ',type:' + unitType);\n lastUnitStart = i;\n lastUnitType = unitType;\n state = 0;\n } else {\n // not enough byte to read unit type. let's read it on next PES parsing\n state = -1;\n }\n } else {\n state = 0;\n }\n }\n if (lastUnitStart >= 0 && state >= 0) {\n const unit = {\n data: array.subarray(lastUnitStart, len),\n type: lastUnitType,\n state: state\n };\n units.push(unit);\n // logger.log('pushing NALU, type/size/state:' + unit.type + '/' + unit.data.byteLength + '/' + state);\n }\n // no NALu found\n if (units.length === 0) {\n // append pes.data to previous NAL unit\n const lastUnit = this.getLastNalUnit(track.samples);\n if (lastUnit) {\n lastUnit.data = appendUint8Array(lastUnit.data, array);\n }\n }\n track.naluState = state;\n return units;\n }\n}\n\n/**\n * SAMPLE-AES decrypter\n */\n\nclass SampleAesDecrypter {\n constructor(observer, config, keyData) {\n this.keyData = void 0;\n this.decrypter = void 0;\n this.keyData = keyData;\n this.decrypter = new Decrypter(config, {\n removePKCS7Padding: false\n });\n }\n decryptBuffer(encryptedData) {\n return this.decrypter.decrypt(encryptedData, this.keyData.key.buffer, this.keyData.iv.buffer);\n }\n\n // AAC - encrypt all full 16 bytes blocks starting from offset 16\n decryptAacSample(samples, sampleIndex, callback) {\n const curUnit = samples[sampleIndex].unit;\n if (curUnit.length <= 16) {\n // No encrypted portion in this sample (first 16 bytes is not\n // encrypted, see https://developer.apple.com/library/archive/documentation/AudioVideo/Conceptual/HLS_Sample_Encryption/Encryption/Encryption.html),\n return;\n }\n const encryptedData = curUnit.subarray(16, curUnit.length - curUnit.length % 16);\n const encryptedBuffer = encryptedData.buffer.slice(encryptedData.byteOffset, encryptedData.byteOffset + encryptedData.length);\n this.decryptBuffer(encryptedBuffer).then(decryptedBuffer => {\n const decryptedData = new Uint8Array(decryptedBuffer);\n curUnit.set(decryptedData, 16);\n if (!this.decrypter.isSync()) {\n this.decryptAacSamples(samples, sampleIndex + 1, callback);\n }\n });\n }\n decryptAacSamples(samples, sampleIndex, callback) {\n for (;; sampleIndex++) {\n if (sampleIndex >= samples.length) {\n callback();\n return;\n }\n if (samples[sampleIndex].unit.length < 32) {\n continue;\n }\n this.decryptAacSample(samples, sampleIndex, callback);\n if (!this.decrypter.isSync()) {\n return;\n }\n }\n }\n\n // AVC - encrypt one 16 bytes block out of ten, starting from offset 32\n getAvcEncryptedData(decodedData) {\n const encryptedDataLen = Math.floor((decodedData.length - 48) / 160) * 16 + 16;\n const encryptedData = new Int8Array(encryptedDataLen);\n let outputPos = 0;\n for (let inputPos = 32; inputPos < decodedData.length - 16; inputPos += 160, outputPos += 16) {\n encryptedData.set(decodedData.subarray(inputPos, inputPos + 16), outputPos);\n }\n return encryptedData;\n }\n getAvcDecryptedUnit(decodedData, decryptedData) {\n const uint8DecryptedData = new Uint8Array(decryptedData);\n let inputPos = 0;\n for (let outputPos = 32; outputPos < decodedData.length - 16; outputPos += 160, inputPos += 16) {\n decodedData.set(uint8DecryptedData.subarray(inputPos, inputPos + 16), outputPos);\n }\n return decodedData;\n }\n decryptAvcSample(samples, sampleIndex, unitIndex, callback, curUnit) {\n const decodedData = discardEPB(curUnit.data);\n const encryptedData = this.getAvcEncryptedData(decodedData);\n this.decryptBuffer(encryptedData.buffer).then(decryptedBuffer => {\n curUnit.data = this.getAvcDecryptedUnit(decodedData, decryptedBuffer);\n if (!this.decrypter.isSync()) {\n this.decryptAvcSamples(samples, sampleIndex, unitIndex + 1, callback);\n }\n });\n }\n decryptAvcSamples(samples, sampleIndex, unitIndex, callback) {\n if (samples instanceof Uint8Array) {\n throw new Error('Cannot decrypt samples of type Uint8Array');\n }\n for (;; sampleIndex++, unitIndex = 0) {\n if (sampleIndex >= samples.length) {\n callback();\n return;\n }\n const curUnits = samples[sampleIndex].units;\n for (;; unitIndex++) {\n if (unitIndex >= curUnits.length) {\n break;\n }\n const curUnit = curUnits[unitIndex];\n if (curUnit.data.length <= 48 || curUnit.type !== 1 && curUnit.type !== 5) {\n continue;\n }\n this.decryptAvcSample(samples, sampleIndex, unitIndex, callback, curUnit);\n if (!this.decrypter.isSync()) {\n return;\n }\n }\n }\n }\n}\n\nconst PACKET_LENGTH = 188;\nclass TSDemuxer {\n constructor(observer, config, typeSupported) {\n this.observer = void 0;\n this.config = void 0;\n this.typeSupported = void 0;\n this.sampleAes = null;\n this.pmtParsed = false;\n this.audioCodec = void 0;\n this.videoCodec = void 0;\n this._duration = 0;\n this._pmtId = -1;\n this._videoTrack = void 0;\n this._audioTrack = void 0;\n this._id3Track = void 0;\n this._txtTrack = void 0;\n this.aacOverFlow = null;\n this.remainderData = null;\n this.videoParser = void 0;\n this.observer = observer;\n this.config = config;\n this.typeSupported = typeSupported;\n this.videoParser = new AvcVideoParser();\n }\n static probe(data) {\n const syncOffset = TSDemuxer.syncOffset(data);\n if (syncOffset > 0) {\n logger.warn(`MPEG2-TS detected but first sync word found @ offset ${syncOffset}`);\n }\n return syncOffset !== -1;\n }\n static syncOffset(data) {\n const length = data.length;\n let scanwindow = Math.min(PACKET_LENGTH * 5, length - PACKET_LENGTH) + 1;\n let i = 0;\n while (i < scanwindow) {\n // a TS init segment should contain at least 2 TS packets: PAT and PMT, each starting with 0x47\n let foundPat = false;\n let packetStart = -1;\n let tsPackets = 0;\n for (let j = i; j < length; j += PACKET_LENGTH) {\n if (data[j] === 0x47 && (length - j === PACKET_LENGTH || data[j + PACKET_LENGTH] === 0x47)) {\n tsPackets++;\n if (packetStart === -1) {\n packetStart = j;\n // First sync word found at offset, increase scan length (#5251)\n if (packetStart !== 0) {\n scanwindow = Math.min(packetStart + PACKET_LENGTH * 99, data.length - PACKET_LENGTH) + 1;\n }\n }\n if (!foundPat) {\n foundPat = parsePID(data, j) === 0;\n }\n // Sync word found at 0 with 3 packets, or found at offset least 2 packets up to scanwindow (#5501)\n if (foundPat && tsPackets > 1 && (packetStart === 0 && tsPackets > 2 || j + PACKET_LENGTH > scanwindow)) {\n return packetStart;\n }\n } else if (tsPackets) {\n // Exit if sync word found, but does not contain contiguous packets\n return -1;\n } else {\n break;\n }\n }\n i++;\n }\n return -1;\n }\n\n /**\n * Creates a track model internal to demuxer used to drive remuxing input\n */\n static createTrack(type, duration) {\n return {\n container: type === 'video' || type === 'audio' ? 'video/mp2t' : undefined,\n type,\n id: RemuxerTrackIdConfig[type],\n pid: -1,\n inputTimeScale: 90000,\n sequenceNumber: 0,\n samples: [],\n dropped: 0,\n duration: type === 'audio' ? duration : undefined\n };\n }\n\n /**\n * Initializes a new init segment on the demuxer/remuxer interface. Needed for discontinuities/track-switches (or at stream start)\n * Resets all internal track instances of the demuxer.\n */\n resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration) {\n this.pmtParsed = false;\n this._pmtId = -1;\n this._videoTrack = TSDemuxer.createTrack('video');\n this._audioTrack = TSDemuxer.createTrack('audio', trackDuration);\n this._id3Track = TSDemuxer.createTrack('id3');\n this._txtTrack = TSDemuxer.createTrack('text');\n this._audioTrack.segmentCodec = 'aac';\n\n // flush any partial content\n this.aacOverFlow = null;\n this.remainderData = null;\n this.audioCodec = audioCodec;\n this.videoCodec = videoCodec;\n this._duration = trackDuration;\n }\n resetTimeStamp() {}\n resetContiguity() {\n const {\n _audioTrack,\n _videoTrack,\n _id3Track\n } = this;\n if (_audioTrack) {\n _audioTrack.pesData = null;\n }\n if (_videoTrack) {\n _videoTrack.pesData = null;\n }\n if (_id3Track) {\n _id3Track.pesData = null;\n }\n this.aacOverFlow = null;\n this.remainderData = null;\n }\n demux(data, timeOffset, isSampleAes = false, flush = false) {\n if (!isSampleAes) {\n this.sampleAes = null;\n }\n let pes;\n const videoTrack = this._videoTrack;\n const audioTrack = this._audioTrack;\n const id3Track = this._id3Track;\n const textTrack = this._txtTrack;\n let videoPid = videoTrack.pid;\n let videoData = videoTrack.pesData;\n let audioPid = audioTrack.pid;\n let id3Pid = id3Track.pid;\n let audioData = audioTrack.pesData;\n let id3Data = id3Track.pesData;\n let unknownPID = null;\n let pmtParsed = this.pmtParsed;\n let pmtId = this._pmtId;\n let len = data.length;\n if (this.remainderData) {\n data = appendUint8Array(this.remainderData, data);\n len = data.length;\n this.remainderData = null;\n }\n if (len < PACKET_LENGTH && !flush) {\n this.remainderData = data;\n return {\n audioTrack,\n videoTrack,\n id3Track,\n textTrack\n };\n }\n const syncOffset = Math.max(0, TSDemuxer.syncOffset(data));\n len -= (len - syncOffset) % PACKET_LENGTH;\n if (len < data.byteLength && !flush) {\n this.remainderData = new Uint8Array(data.buffer, len, data.buffer.byteLength - len);\n }\n\n // loop through TS packets\n let tsPacketErrors = 0;\n for (let start = syncOffset; start < len; start += PACKET_LENGTH) {\n if (data[start] === 0x47) {\n const stt = !!(data[start + 1] & 0x40);\n const pid = parsePID(data, start);\n const atf = (data[start + 3] & 0x30) >> 4;\n\n // if an adaption field is present, its length is specified by the fifth byte of the TS packet header.\n let offset;\n if (atf > 1) {\n offset = start + 5 + data[start + 4];\n // continue if there is only adaptation field\n if (offset === start + PACKET_LENGTH) {\n continue;\n }\n } else {\n offset = start + 4;\n }\n switch (pid) {\n case videoPid:\n if (stt) {\n if (videoData && (pes = parsePES(videoData))) {\n this.videoParser.parseAVCPES(videoTrack, textTrack, pes, false, this._duration);\n }\n videoData = {\n data: [],\n size: 0\n };\n }\n if (videoData) {\n videoData.data.push(data.subarray(offset, start + PACKET_LENGTH));\n videoData.size += start + PACKET_LENGTH - offset;\n }\n break;\n case audioPid:\n if (stt) {\n if (audioData && (pes = parsePES(audioData))) {\n switch (audioTrack.segmentCodec) {\n case 'aac':\n this.parseAACPES(audioTrack, pes);\n break;\n case 'mp3':\n this.parseMPEGPES(audioTrack, pes);\n break;\n case 'ac3':\n {\n this.parseAC3PES(audioTrack, pes);\n }\n break;\n }\n }\n audioData = {\n data: [],\n size: 0\n };\n }\n if (audioData) {\n audioData.data.push(data.subarray(offset, start + PACKET_LENGTH));\n audioData.size += start + PACKET_LENGTH - offset;\n }\n break;\n case id3Pid:\n if (stt) {\n if (id3Data && (pes = parsePES(id3Data))) {\n this.parseID3PES(id3Track, pes);\n }\n id3Data = {\n data: [],\n size: 0\n };\n }\n if (id3Data) {\n id3Data.data.push(data.subarray(offset, start + PACKET_LENGTH));\n id3Data.size += start + PACKET_LENGTH - offset;\n }\n break;\n case 0:\n if (stt) {\n offset += data[offset] + 1;\n }\n pmtId = this._pmtId = parsePAT(data, offset);\n // logger.log('PMT PID:' + this._pmtId);\n break;\n case pmtId:\n {\n if (stt) {\n offset += data[offset] + 1;\n }\n const parsedPIDs = parsePMT(data, offset, this.typeSupported, isSampleAes, this.observer);\n\n // only update track id if track PID found while parsing PMT\n // this is to avoid resetting the PID to -1 in case\n // track PID transiently disappears from the stream\n // this could happen in case of transient missing audio samples for example\n // NOTE this is only the PID of the track as found in TS,\n // but we are not using this for MP4 track IDs.\n videoPid = parsedPIDs.videoPid;\n if (videoPid > 0) {\n videoTrack.pid = videoPid;\n videoTrack.segmentCodec = parsedPIDs.segmentVideoCodec;\n }\n audioPid = parsedPIDs.audioPid;\n if (audioPid > 0) {\n audioTrack.pid = audioPid;\n audioTrack.segmentCodec = parsedPIDs.segmentAudioCodec;\n }\n id3Pid = parsedPIDs.id3Pid;\n if (id3Pid > 0) {\n id3Track.pid = id3Pid;\n }\n if (unknownPID !== null && !pmtParsed) {\n logger.warn(`MPEG-TS PMT found at ${start} after unknown PID '${unknownPID}'. Backtracking to sync byte @${syncOffset} to parse all TS packets.`);\n unknownPID = null;\n // we set it to -188, the += 188 in the for loop will reset start to 0\n start = syncOffset - 188;\n }\n pmtParsed = this.pmtParsed = true;\n break;\n }\n case 0x11:\n case 0x1fff:\n break;\n default:\n unknownPID = pid;\n break;\n }\n } else {\n tsPacketErrors++;\n }\n }\n if (tsPacketErrors > 0) {\n emitParsingError(this.observer, new Error(`Found ${tsPacketErrors} TS packet/s that do not start with 0x47`));\n }\n videoTrack.pesData = videoData;\n audioTrack.pesData = audioData;\n id3Track.pesData = id3Data;\n const demuxResult = {\n audioTrack,\n videoTrack,\n id3Track,\n textTrack\n };\n if (flush) {\n this.extractRemainingSamples(demuxResult);\n }\n return demuxResult;\n }\n flush() {\n const {\n remainderData\n } = this;\n this.remainderData = null;\n let result;\n if (remainderData) {\n result = this.demux(remainderData, -1, false, true);\n } else {\n result = {\n videoTrack: this._videoTrack,\n audioTrack: this._audioTrack,\n id3Track: this._id3Track,\n textTrack: this._txtTrack\n };\n }\n this.extractRemainingSamples(result);\n if (this.sampleAes) {\n return this.decrypt(result, this.sampleAes);\n }\n return result;\n }\n extractRemainingSamples(demuxResult) {\n const {\n audioTrack,\n videoTrack,\n id3Track,\n textTrack\n } = demuxResult;\n const videoData = videoTrack.pesData;\n const audioData = audioTrack.pesData;\n const id3Data = id3Track.pesData;\n // try to parse last PES packets\n let pes;\n if (videoData && (pes = parsePES(videoData))) {\n this.videoParser.parseAVCPES(videoTrack, textTrack, pes, true, this._duration);\n videoTrack.pesData = null;\n } else {\n // either avcData null or PES truncated, keep it for next frag parsing\n videoTrack.pesData = videoData;\n }\n if (audioData && (pes = parsePES(audioData))) {\n switch (audioTrack.segmentCodec) {\n case 'aac':\n this.parseAACPES(audioTrack, pes);\n break;\n case 'mp3':\n this.parseMPEGPES(audioTrack, pes);\n break;\n case 'ac3':\n {\n this.parseAC3PES(audioTrack, pes);\n }\n break;\n }\n audioTrack.pesData = null;\n } else {\n if (audioData != null && audioData.size) {\n logger.log('last AAC PES packet truncated,might overlap between fragments');\n }\n\n // either audioData null or PES truncated, keep it for next frag parsing\n audioTrack.pesData = audioData;\n }\n if (id3Data && (pes = parsePES(id3Data))) {\n this.parseID3PES(id3Track, pes);\n id3Track.pesData = null;\n } else {\n // either id3Data null or PES truncated, keep it for next frag parsing\n id3Track.pesData = id3Data;\n }\n }\n demuxSampleAes(data, keyData, timeOffset) {\n const demuxResult = this.demux(data, timeOffset, true, !this.config.progressive);\n const sampleAes = this.sampleAes = new SampleAesDecrypter(this.observer, this.config, keyData);\n return this.decrypt(demuxResult, sampleAes);\n }\n decrypt(demuxResult, sampleAes) {\n return new Promise(resolve => {\n const {\n audioTrack,\n videoTrack\n } = demuxResult;\n if (audioTrack.samples && audioTrack.segmentCodec === 'aac') {\n sampleAes.decryptAacSamples(audioTrack.samples, 0, () => {\n if (videoTrack.samples) {\n sampleAes.decryptAvcSamples(videoTrack.samples, 0, 0, () => {\n resolve(demuxResult);\n });\n } else {\n resolve(demuxResult);\n }\n });\n } else if (videoTrack.samples) {\n sampleAes.decryptAvcSamples(videoTrack.samples, 0, 0, () => {\n resolve(demuxResult);\n });\n }\n });\n }\n destroy() {\n this._duration = 0;\n }\n parseAACPES(track, pes) {\n let startOffset = 0;\n const aacOverFlow = this.aacOverFlow;\n let data = pes.data;\n if (aacOverFlow) {\n this.aacOverFlow = null;\n const frameMissingBytes = aacOverFlow.missing;\n const sampleLength = aacOverFlow.sample.unit.byteLength;\n // logger.log(`AAC: append overflowing ${sampleLength} bytes to beginning of new PES`);\n if (frameMissingBytes === -1) {\n data = appendUint8Array(aacOverFlow.sample.unit, data);\n } else {\n const frameOverflowBytes = sampleLength - frameMissingBytes;\n aacOverFlow.sample.unit.set(data.subarray(0, frameMissingBytes), frameOverflowBytes);\n track.samples.push(aacOverFlow.sample);\n startOffset = aacOverFlow.missing;\n }\n }\n // look for ADTS header (0xFFFx)\n let offset;\n let len;\n for (offset = startOffset, len = data.length; offset < len - 1; offset++) {\n if (isHeader$1(data, offset)) {\n break;\n }\n }\n // if ADTS header does not start straight from the beginning of the PES payload, raise an error\n if (offset !== startOffset) {\n let reason;\n const recoverable = offset < len - 1;\n if (recoverable) {\n reason = `AAC PES did not start with ADTS header,offset:${offset}`;\n } else {\n reason = 'No ADTS header found in AAC PES';\n }\n emitParsingError(this.observer, new Error(reason), recoverable);\n if (!recoverable) {\n return;\n }\n }\n initTrackConfig(track, this.observer, data, offset, this.audioCodec);\n let pts;\n if (pes.pts !== undefined) {\n pts = pes.pts;\n } else if (aacOverFlow) {\n // if last AAC frame is overflowing, we should ensure timestamps are contiguous:\n // first sample PTS should be equal to last sample PTS + frameDuration\n const frameDuration = getFrameDuration(track.samplerate);\n pts = aacOverFlow.sample.pts + frameDuration;\n } else {\n logger.warn('[tsdemuxer]: AAC PES unknown PTS');\n return;\n }\n\n // scan for aac samples\n let frameIndex = 0;\n let frame;\n while (offset < len) {\n frame = appendFrame$2(track, data, offset, pts, frameIndex);\n offset += frame.length;\n if (!frame.missing) {\n frameIndex++;\n for (; offset < len - 1; offset++) {\n if (isHeader$1(data, offset)) {\n break;\n }\n }\n } else {\n this.aacOverFlow = frame;\n break;\n }\n }\n }\n parseMPEGPES(track, pes) {\n const data = pes.data;\n const length = data.length;\n let frameIndex = 0;\n let offset = 0;\n const pts = pes.pts;\n if (pts === undefined) {\n logger.warn('[tsdemuxer]: MPEG PES unknown PTS');\n return;\n }\n while (offset < length) {\n if (isHeader(data, offset)) {\n const frame = appendFrame$1(track, data, offset, pts, frameIndex);\n if (frame) {\n offset += frame.length;\n frameIndex++;\n } else {\n // logger.log('Unable to parse Mpeg audio frame');\n break;\n }\n } else {\n // nothing found, keep looking\n offset++;\n }\n }\n }\n parseAC3PES(track, pes) {\n {\n const data = pes.data;\n const pts = pes.pts;\n if (pts === undefined) {\n logger.warn('[tsdemuxer]: AC3 PES unknown PTS');\n return;\n }\n const length = data.length;\n let frameIndex = 0;\n let offset = 0;\n let parsed;\n while (offset < length && (parsed = appendFrame(track, data, offset, pts, frameIndex++)) > 0) {\n offset += parsed;\n }\n }\n }\n parseID3PES(id3Track, pes) {\n if (pes.pts === undefined) {\n logger.warn('[tsdemuxer]: ID3 PES unknown PTS');\n return;\n }\n const id3Sample = _extends({}, pes, {\n type: this._videoTrack ? MetadataSchema.emsg : MetadataSchema.audioId3,\n duration: Number.POSITIVE_INFINITY\n });\n id3Track.samples.push(id3Sample);\n }\n}\nfunction parsePID(data, offset) {\n // pid is a 13-bit field starting at the last bit of TS[1]\n return ((data[offset + 1] & 0x1f) << 8) + data[offset + 2];\n}\nfunction parsePAT(data, offset) {\n // skip the PSI header and parse the first PMT entry\n return (data[offset + 10] & 0x1f) << 8 | data[offset + 11];\n}\nfunction parsePMT(data, offset, typeSupported, isSampleAes, observer) {\n const result = {\n audioPid: -1,\n videoPid: -1,\n id3Pid: -1,\n segmentVideoCodec: 'avc',\n segmentAudioCodec: 'aac'\n };\n const sectionLength = (data[offset + 1] & 0x0f) << 8 | data[offset + 2];\n const tableEnd = offset + 3 + sectionLength - 4;\n // to determine where the table is, we have to figure out how\n // long the program info descriptors are\n const programInfoLength = (data[offset + 10] & 0x0f) << 8 | data[offset + 11];\n // advance the offset to the first entry in the mapping table\n offset += 12 + programInfoLength;\n while (offset < tableEnd) {\n const pid = parsePID(data, offset);\n const esInfoLength = (data[offset + 3] & 0x0f) << 8 | data[offset + 4];\n switch (data[offset]) {\n case 0xcf:\n // SAMPLE-AES AAC\n if (!isSampleAes) {\n logEncryptedSamplesFoundInUnencryptedStream('ADTS AAC');\n break;\n }\n /* falls through */\n case 0x0f:\n // ISO/IEC 13818-7 ADTS AAC (MPEG-2 lower bit-rate audio)\n // logger.log('AAC PID:' + pid);\n if (result.audioPid === -1) {\n result.audioPid = pid;\n }\n break;\n\n // Packetized metadata (ID3)\n case 0x15:\n // logger.log('ID3 PID:' + pid);\n if (result.id3Pid === -1) {\n result.id3Pid = pid;\n }\n break;\n case 0xdb:\n // SAMPLE-AES AVC\n if (!isSampleAes) {\n logEncryptedSamplesFoundInUnencryptedStream('H.264');\n break;\n }\n /* falls through */\n case 0x1b:\n // ITU-T Rec. H.264 and ISO/IEC 14496-10 (lower bit-rate video)\n // logger.log('AVC PID:' + pid);\n if (result.videoPid === -1) {\n result.videoPid = pid;\n result.segmentVideoCodec = 'avc';\n }\n break;\n\n // ISO/IEC 11172-3 (MPEG-1 audio)\n // or ISO/IEC 13818-3 (MPEG-2 halved sample rate audio)\n case 0x03:\n case 0x04:\n // logger.log('MPEG PID:' + pid);\n if (!typeSupported.mpeg && !typeSupported.mp3) {\n logger.log('MPEG audio found, not supported in this browser');\n } else if (result.audioPid === -1) {\n result.audioPid = pid;\n result.segmentAudioCodec = 'mp3';\n }\n break;\n case 0xc1:\n // SAMPLE-AES AC3\n if (!isSampleAes) {\n logEncryptedSamplesFoundInUnencryptedStream('AC-3');\n break;\n }\n /* falls through */\n case 0x81:\n {\n if (!typeSupported.ac3) {\n logger.log('AC-3 audio found, not supported in this browser');\n } else if (result.audioPid === -1) {\n result.audioPid = pid;\n result.segmentAudioCodec = 'ac3';\n }\n }\n break;\n case 0x06:\n // stream_type 6 can mean a lot of different things in case of DVB.\n // We need to look at the descriptors. Right now, we're only interested\n // in AC-3 audio, so we do the descriptor parsing only when we don't have\n // an audio PID yet.\n if (result.audioPid === -1 && esInfoLength > 0) {\n let parsePos = offset + 5;\n let remaining = esInfoLength;\n while (remaining > 2) {\n const descriptorId = data[parsePos];\n switch (descriptorId) {\n case 0x6a:\n // DVB Descriptor for AC-3\n {\n if (typeSupported.ac3 !== true) {\n logger.log('AC-3 audio found, not supported in this browser for now');\n } else {\n result.audioPid = pid;\n result.segmentAudioCodec = 'ac3';\n }\n }\n break;\n }\n const descriptorLen = data[parsePos + 1] + 2;\n parsePos += descriptorLen;\n remaining -= descriptorLen;\n }\n }\n break;\n case 0xc2: // SAMPLE-AES EC3\n /* falls through */\n case 0x87:\n emitParsingError(observer, new Error('Unsupported EC-3 in M2TS found'));\n return result;\n case 0x24:\n emitParsingError(observer, new Error('Unsupported HEVC in M2TS found'));\n return result;\n }\n // move to the next table entry\n // skip past the elementary stream descriptors, if present\n offset += esInfoLength + 5;\n }\n return result;\n}\nfunction emitParsingError(observer, error, levelRetry) {\n logger.warn(`parsing error: ${error.message}`);\n observer.emit(Events.ERROR, Events.ERROR, {\n type: ErrorTypes.MEDIA_ERROR,\n details: ErrorDetails.FRAG_PARSING_ERROR,\n fatal: false,\n levelRetry,\n error,\n reason: error.message\n });\n}\nfunction logEncryptedSamplesFoundInUnencryptedStream(type) {\n logger.log(`${type} with AES-128-CBC encryption found in unencrypted stream`);\n}\nfunction parsePES(stream) {\n let i = 0;\n let frag;\n let pesLen;\n let pesHdrLen;\n let pesPts;\n let pesDts;\n const data = stream.data;\n // safety check\n if (!stream || stream.size === 0) {\n return null;\n }\n\n // we might need up to 19 bytes to read PES header\n // if first chunk of data is less than 19 bytes, let's merge it with following ones until we get 19 bytes\n // usually only one merge is needed (and this is rare ...)\n while (data[0].length < 19 && data.length > 1) {\n data[0] = appendUint8Array(data[0], data[1]);\n data.splice(1, 1);\n }\n // retrieve PTS/DTS from first fragment\n frag = data[0];\n const pesPrefix = (frag[0] << 16) + (frag[1] << 8) + frag[2];\n if (pesPrefix === 1) {\n pesLen = (frag[4] << 8) + frag[5];\n // if PES parsed length is not zero and greater than total received length, stop parsing. PES might be truncated\n // minus 6 : PES header size\n if (pesLen && pesLen > stream.size - 6) {\n return null;\n }\n const pesFlags = frag[7];\n if (pesFlags & 0xc0) {\n /* PES header described here : http://dvd.sourceforge.net/dvdinfo/pes-hdr.html\n as PTS / DTS is 33 bit we cannot use bitwise operator in JS,\n as Bitwise operators treat their operands as a sequence of 32 bits */\n pesPts = (frag[9] & 0x0e) * 536870912 +\n // 1 << 29\n (frag[10] & 0xff) * 4194304 +\n // 1 << 22\n (frag[11] & 0xfe) * 16384 +\n // 1 << 14\n (frag[12] & 0xff) * 128 +\n // 1 << 7\n (frag[13] & 0xfe) / 2;\n if (pesFlags & 0x40) {\n pesDts = (frag[14] & 0x0e) * 536870912 +\n // 1 << 29\n (frag[15] & 0xff) * 4194304 +\n // 1 << 22\n (frag[16] & 0xfe) * 16384 +\n // 1 << 14\n (frag[17] & 0xff) * 128 +\n // 1 << 7\n (frag[18] & 0xfe) / 2;\n if (pesPts - pesDts > 60 * 90000) {\n logger.warn(`${Math.round((pesPts - pesDts) / 90000)}s delta between PTS and DTS, align them`);\n pesPts = pesDts;\n }\n } else {\n pesDts = pesPts;\n }\n }\n pesHdrLen = frag[8];\n // 9 bytes : 6 bytes for PES header + 3 bytes for PES extension\n let payloadStartOffset = pesHdrLen + 9;\n if (stream.size <= payloadStartOffset) {\n return null;\n }\n stream.size -= payloadStartOffset;\n // reassemble PES packet\n const pesData = new Uint8Array(stream.size);\n for (let j = 0, dataLen = data.length; j < dataLen; j++) {\n frag = data[j];\n let len = frag.byteLength;\n if (payloadStartOffset) {\n if (payloadStartOffset > len) {\n // trim full frag if PES header bigger than frag\n payloadStartOffset -= len;\n continue;\n } else {\n // trim partial frag if PES header smaller than frag\n frag = frag.subarray(payloadStartOffset);\n len -= payloadStartOffset;\n payloadStartOffset = 0;\n }\n }\n pesData.set(frag, i);\n i += len;\n }\n if (pesLen) {\n // payload size : remove PES header + PES extension\n pesLen -= pesHdrLen + 3;\n }\n return {\n data: pesData,\n pts: pesPts,\n dts: pesDts,\n len: pesLen\n };\n }\n return null;\n}\n\n/**\n * MP3 demuxer\n */\nclass MP3Demuxer extends BaseAudioDemuxer {\n resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration) {\n super.resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration);\n this._audioTrack = {\n container: 'audio/mpeg',\n type: 'audio',\n id: 2,\n pid: -1,\n sequenceNumber: 0,\n segmentCodec: 'mp3',\n samples: [],\n manifestCodec: audioCodec,\n duration: trackDuration,\n inputTimeScale: 90000,\n dropped: 0\n };\n }\n static probe(data) {\n if (!data) {\n return false;\n }\n\n // check if data contains ID3 timestamp and MPEG sync word\n // Look for MPEG header | 1111 1111 | 111X XYZX | where X can be either 0 or 1 and Y or Z should be 1\n // Layer bits (position 14 and 15) in header should be always different from 0 (Layer I or Layer II or Layer III)\n // More info http://www.mp3-tech.org/programmer/frame_header.html\n const id3Data = getID3Data(data, 0);\n let offset = (id3Data == null ? void 0 : id3Data.length) || 0;\n\n // Check for ac-3|ec-3 sync bytes and return false if present\n if (id3Data && data[offset] === 0x0b && data[offset + 1] === 0x77 && getTimeStamp(id3Data) !== undefined &&\n // check the bsid to confirm ac-3 or ec-3 (not mp3)\n getAudioBSID(data, offset) <= 16) {\n return false;\n }\n for (let length = data.length; offset < length; offset++) {\n if (probe(data, offset)) {\n logger.log('MPEG Audio sync word found !');\n return true;\n }\n }\n return false;\n }\n canParse(data, offset) {\n return canParse(data, offset);\n }\n appendFrame(track, data, offset) {\n if (this.basePTS === null) {\n return;\n }\n return appendFrame$1(track, data, offset, this.basePTS, this.frameIndex);\n }\n}\n\n/**\n * AAC helper\n */\n\nclass AAC {\n static getSilentFrame(codec, channelCount) {\n switch (codec) {\n case 'mp4a.40.2':\n if (channelCount === 1) {\n return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x23, 0x80]);\n } else if (channelCount === 2) {\n return new Uint8Array([0x21, 0x00, 0x49, 0x90, 0x02, 0x19, 0x00, 0x23, 0x80]);\n } else if (channelCount === 3) {\n return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x8e]);\n } else if (channelCount === 4) {\n return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x80, 0x2c, 0x80, 0x08, 0x02, 0x38]);\n } else if (channelCount === 5) {\n return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x82, 0x30, 0x04, 0x99, 0x00, 0x21, 0x90, 0x02, 0x38]);\n } else if (channelCount === 6) {\n return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x82, 0x30, 0x04, 0x99, 0x00, 0x21, 0x90, 0x02, 0x00, 0xb2, 0x00, 0x20, 0x08, 0xe0]);\n }\n break;\n // handle HE-AAC below (mp4a.40.5 / mp4a.40.29)\n default:\n if (channelCount === 1) {\n // ffmpeg -y -f lavfi -i \"aevalsrc=0:d=0.05\" -c:a libfdk_aac -profile:a aac_he -b:a 4k output.aac && hexdump -v -e '16/1 \"0x%x,\" \"\\n\"' -v output.aac\n return new Uint8Array([0x1, 0x40, 0x22, 0x80, 0xa3, 0x4e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0, 0x0, 0x1c, 0x6, 0xf1, 0xc1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5e]);\n } else if (channelCount === 2) {\n // ffmpeg -y -f lavfi -i \"aevalsrc=0|0:d=0.05\" -c:a libfdk_aac -profile:a aac_he_v2 -b:a 4k output.aac && hexdump -v -e '16/1 \"0x%x,\" \"\\n\"' -v output.aac\n return new Uint8Array([0x1, 0x40, 0x22, 0x80, 0xa3, 0x5e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0, 0x0, 0x0, 0x95, 0x0, 0x6, 0xf1, 0xa1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5e]);\n } else if (channelCount === 3) {\n // ffmpeg -y -f lavfi -i \"aevalsrc=0|0|0:d=0.05\" -c:a libfdk_aac -profile:a aac_he_v2 -b:a 4k output.aac && hexdump -v -e '16/1 \"0x%x,\" \"\\n\"' -v output.aac\n return new Uint8Array([0x1, 0x40, 0x22, 0x80, 0xa3, 0x5e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0, 0x0, 0x0, 0x95, 0x0, 0x6, 0xf1, 0xa1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5e]);\n }\n break;\n }\n return undefined;\n }\n}\n\n/**\n * Generate MP4 Box\n */\n\nconst UINT32_MAX = Math.pow(2, 32) - 1;\nclass MP4 {\n static init() {\n MP4.types = {\n avc1: [],\n // codingname\n avcC: [],\n btrt: [],\n dinf: [],\n dref: [],\n esds: [],\n ftyp: [],\n hdlr: [],\n mdat: [],\n mdhd: [],\n mdia: [],\n mfhd: [],\n minf: [],\n moof: [],\n moov: [],\n mp4a: [],\n '.mp3': [],\n dac3: [],\n 'ac-3': [],\n mvex: [],\n mvhd: [],\n pasp: [],\n sdtp: [],\n stbl: [],\n stco: [],\n stsc: [],\n stsd: [],\n stsz: [],\n stts: [],\n tfdt: [],\n tfhd: [],\n traf: [],\n trak: [],\n trun: [],\n trex: [],\n tkhd: [],\n vmhd: [],\n smhd: []\n };\n let i;\n for (i in MP4.types) {\n if (MP4.types.hasOwnProperty(i)) {\n MP4.types[i] = [i.charCodeAt(0), i.charCodeAt(1), i.charCodeAt(2), i.charCodeAt(3)];\n }\n }\n const videoHdlr = new Uint8Array([0x00,\n // version 0\n 0x00, 0x00, 0x00,\n // flags\n 0x00, 0x00, 0x00, 0x00,\n // pre_defined\n 0x76, 0x69, 0x64, 0x65,\n // handler_type: 'vide'\n 0x00, 0x00, 0x00, 0x00,\n // reserved\n 0x00, 0x00, 0x00, 0x00,\n // reserved\n 0x00, 0x00, 0x00, 0x00,\n // reserved\n 0x56, 0x69, 0x64, 0x65, 0x6f, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x00 // name: 'VideoHandler'\n ]);\n const audioHdlr = new Uint8Array([0x00,\n // version 0\n 0x00, 0x00, 0x00,\n // flags\n 0x00, 0x00, 0x00, 0x00,\n // pre_defined\n 0x73, 0x6f, 0x75, 0x6e,\n // handler_type: 'soun'\n 0x00, 0x00, 0x00, 0x00,\n // reserved\n 0x00, 0x00, 0x00, 0x00,\n // reserved\n 0x00, 0x00, 0x00, 0x00,\n // reserved\n 0x53, 0x6f, 0x75, 0x6e, 0x64, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x00 // name: 'SoundHandler'\n ]);\n MP4.HDLR_TYPES = {\n video: videoHdlr,\n audio: audioHdlr\n };\n const dref = new Uint8Array([0x00,\n // version 0\n 0x00, 0x00, 0x00,\n // flags\n 0x00, 0x00, 0x00, 0x01,\n // entry_count\n 0x00, 0x00, 0x00, 0x0c,\n // entry_size\n 0x75, 0x72, 0x6c, 0x20,\n // 'url' type\n 0x00,\n // version 0\n 0x00, 0x00, 0x01 // entry_flags\n ]);\n const stco = new Uint8Array([0x00,\n // version\n 0x00, 0x00, 0x00,\n // flags\n 0x00, 0x00, 0x00, 0x00 // entry_count\n ]);\n MP4.STTS = MP4.STSC = MP4.STCO = stco;\n MP4.STSZ = new Uint8Array([0x00,\n // version\n 0x00, 0x00, 0x00,\n // flags\n 0x00, 0x00, 0x00, 0x00,\n // sample_size\n 0x00, 0x00, 0x00, 0x00 // sample_count\n ]);\n MP4.VMHD = new Uint8Array([0x00,\n // version\n 0x00, 0x00, 0x01,\n // flags\n 0x00, 0x00,\n // graphicsmode\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // opcolor\n ]);\n MP4.SMHD = new Uint8Array([0x00,\n // version\n 0x00, 0x00, 0x00,\n // flags\n 0x00, 0x00,\n // balance\n 0x00, 0x00 // reserved\n ]);\n MP4.STSD = new Uint8Array([0x00,\n // version 0\n 0x00, 0x00, 0x00,\n // flags\n 0x00, 0x00, 0x00, 0x01]); // entry_count\n\n const majorBrand = new Uint8Array([105, 115, 111, 109]); // isom\n const avc1Brand = new Uint8Array([97, 118, 99, 49]); // avc1\n const minorVersion = new Uint8Array([0, 0, 0, 1]);\n MP4.FTYP = MP4.box(MP4.types.ftyp, majorBrand, minorVersion, majorBrand, avc1Brand);\n MP4.DINF = MP4.box(MP4.types.dinf, MP4.box(MP4.types.dref, dref));\n }\n static box(type, ...payload) {\n let size = 8;\n let i = payload.length;\n const len = i;\n // calculate the total size we need to allocate\n while (i--) {\n size += payload[i].byteLength;\n }\n const result = new Uint8Array(size);\n result[0] = size >> 24 & 0xff;\n result[1] = size >> 16 & 0xff;\n result[2] = size >> 8 & 0xff;\n result[3] = size & 0xff;\n result.set(type, 4);\n // copy the payload into the result\n for (i = 0, size = 8; i < len; i++) {\n // copy payload[i] array @ offset size\n result.set(payload[i], size);\n size += payload[i].byteLength;\n }\n return result;\n }\n static hdlr(type) {\n return MP4.box(MP4.types.hdlr, MP4.HDLR_TYPES[type]);\n }\n static mdat(data) {\n return MP4.box(MP4.types.mdat, data);\n }\n static mdhd(timescale, duration) {\n duration *= timescale;\n const upperWordDuration = Math.floor(duration / (UINT32_MAX + 1));\n const lowerWordDuration = Math.floor(duration % (UINT32_MAX + 1));\n return MP4.box(MP4.types.mdhd, new Uint8Array([0x01,\n // version 1\n 0x00, 0x00, 0x00,\n // flags\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,\n // creation_time\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,\n // modification_time\n timescale >> 24 & 0xff, timescale >> 16 & 0xff, timescale >> 8 & 0xff, timescale & 0xff,\n // timescale\n upperWordDuration >> 24, upperWordDuration >> 16 & 0xff, upperWordDuration >> 8 & 0xff, upperWordDuration & 0xff, lowerWordDuration >> 24, lowerWordDuration >> 16 & 0xff, lowerWordDuration >> 8 & 0xff, lowerWordDuration & 0xff, 0x55, 0xc4,\n // 'und' language (undetermined)\n 0x00, 0x00]));\n }\n static mdia(track) {\n return MP4.box(MP4.types.mdia, MP4.mdhd(track.timescale, track.duration), MP4.hdlr(track.type), MP4.minf(track));\n }\n static mfhd(sequenceNumber) {\n return MP4.box(MP4.types.mfhd, new Uint8Array([0x00, 0x00, 0x00, 0x00,\n // flags\n sequenceNumber >> 24, sequenceNumber >> 16 & 0xff, sequenceNumber >> 8 & 0xff, sequenceNumber & 0xff // sequence_number\n ]));\n }\n static minf(track) {\n if (track.type === 'audio') {\n return MP4.box(MP4.types.minf, MP4.box(MP4.types.smhd, MP4.SMHD), MP4.DINF, MP4.stbl(track));\n } else {\n return MP4.box(MP4.types.minf, MP4.box(MP4.types.vmhd, MP4.VMHD), MP4.DINF, MP4.stbl(track));\n }\n }\n static moof(sn, baseMediaDecodeTime, track) {\n return MP4.box(MP4.types.moof, MP4.mfhd(sn), MP4.traf(track, baseMediaDecodeTime));\n }\n static moov(tracks) {\n let i = tracks.length;\n const boxes = [];\n while (i--) {\n boxes[i] = MP4.trak(tracks[i]);\n }\n return MP4.box.apply(null, [MP4.types.moov, MP4.mvhd(tracks[0].timescale, tracks[0].duration)].concat(boxes).concat(MP4.mvex(tracks)));\n }\n static mvex(tracks) {\n let i = tracks.length;\n const boxes = [];\n while (i--) {\n boxes[i] = MP4.trex(tracks[i]);\n }\n return MP4.box.apply(null, [MP4.types.mvex, ...boxes]);\n }\n static mvhd(timescale, duration) {\n duration *= timescale;\n const upperWordDuration = Math.floor(duration / (UINT32_MAX + 1));\n const lowerWordDuration = Math.floor(duration % (UINT32_MAX + 1));\n const bytes = new Uint8Array([0x01,\n // version 1\n 0x00, 0x00, 0x00,\n // flags\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,\n // creation_time\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,\n // modification_time\n timescale >> 24 & 0xff, timescale >> 16 & 0xff, timescale >> 8 & 0xff, timescale & 0xff,\n // timescale\n upperWordDuration >> 24, upperWordDuration >> 16 & 0xff, upperWordDuration >> 8 & 0xff, upperWordDuration & 0xff, lowerWordDuration >> 24, lowerWordDuration >> 16 & 0xff, lowerWordDuration >> 8 & 0xff, lowerWordDuration & 0xff, 0x00, 0x01, 0x00, 0x00,\n // 1.0 rate\n 0x01, 0x00,\n // 1.0 volume\n 0x00, 0x00,\n // reserved\n 0x00, 0x00, 0x00, 0x00,\n // reserved\n 0x00, 0x00, 0x00, 0x00,\n // reserved\n 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,\n // transformation: unity matrix\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n // pre_defined\n 0xff, 0xff, 0xff, 0xff // next_track_ID\n ]);\n return MP4.box(MP4.types.mvhd, bytes);\n }\n static sdtp(track) {\n const samples = track.samples || [];\n const bytes = new Uint8Array(4 + samples.length);\n let i;\n let flags;\n // leave the full box header (4 bytes) all zero\n // write the sample table\n for (i = 0; i < samples.length; i++) {\n flags = samples[i].flags;\n bytes[i + 4] = flags.dependsOn << 4 | flags.isDependedOn << 2 | flags.hasRedundancy;\n }\n return MP4.box(MP4.types.sdtp, bytes);\n }\n static stbl(track) {\n return MP4.box(MP4.types.stbl, MP4.stsd(track), MP4.box(MP4.types.stts, MP4.STTS), MP4.box(MP4.types.stsc, MP4.STSC), MP4.box(MP4.types.stsz, MP4.STSZ), MP4.box(MP4.types.stco, MP4.STCO));\n }\n static avc1(track) {\n let sps = [];\n let pps = [];\n let i;\n let data;\n let len;\n // assemble the SPSs\n\n for (i = 0; i < track.sps.length; i++) {\n data = track.sps[i];\n len = data.byteLength;\n sps.push(len >>> 8 & 0xff);\n sps.push(len & 0xff);\n\n // SPS\n sps = sps.concat(Array.prototype.slice.call(data));\n }\n\n // assemble the PPSs\n for (i = 0; i < track.pps.length; i++) {\n data = track.pps[i];\n len = data.byteLength;\n pps.push(len >>> 8 & 0xff);\n pps.push(len & 0xff);\n pps = pps.concat(Array.prototype.slice.call(data));\n }\n const avcc = MP4.box(MP4.types.avcC, new Uint8Array([0x01,\n // version\n sps[3],\n // profile\n sps[4],\n // profile compat\n sps[5],\n // level\n 0xfc | 3,\n // lengthSizeMinusOne, hard-coded to 4 bytes\n 0xe0 | track.sps.length // 3bit reserved (111) + numOfSequenceParameterSets\n ].concat(sps).concat([track.pps.length // numOfPictureParameterSets\n ]).concat(pps))); // \"PPS\"\n const width = track.width;\n const height = track.height;\n const hSpacing = track.pixelRatio[0];\n const vSpacing = track.pixelRatio[1];\n return MP4.box(MP4.types.avc1, new Uint8Array([0x00, 0x00, 0x00,\n // reserved\n 0x00, 0x00, 0x00,\n // reserved\n 0x00, 0x01,\n // data_reference_index\n 0x00, 0x00,\n // pre_defined\n 0x00, 0x00,\n // reserved\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n // pre_defined\n width >> 8 & 0xff, width & 0xff,\n // width\n height >> 8 & 0xff, height & 0xff,\n // height\n 0x00, 0x48, 0x00, 0x00,\n // horizresolution\n 0x00, 0x48, 0x00, 0x00,\n // vertresolution\n 0x00, 0x00, 0x00, 0x00,\n // reserved\n 0x00, 0x01,\n // frame_count\n 0x12, 0x64, 0x61, 0x69, 0x6c,\n // dailymotion/hls.js\n 0x79, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x68, 0x6c, 0x73, 0x2e, 0x6a, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n // compressorname\n 0x00, 0x18,\n // depth = 24\n 0x11, 0x11]),\n // pre_defined = -1\n avcc, MP4.box(MP4.types.btrt, new Uint8Array([0x00, 0x1c, 0x9c, 0x80,\n // bufferSizeDB\n 0x00, 0x2d, 0xc6, 0xc0,\n // maxBitrate\n 0x00, 0x2d, 0xc6, 0xc0])),\n // avgBitrate\n MP4.box(MP4.types.pasp, new Uint8Array([hSpacing >> 24,\n // hSpacing\n hSpacing >> 16 & 0xff, hSpacing >> 8 & 0xff, hSpacing & 0xff, vSpacing >> 24,\n // vSpacing\n vSpacing >> 16 & 0xff, vSpacing >> 8 & 0xff, vSpacing & 0xff])));\n }\n static esds(track) {\n const configlen = track.config.length;\n return new Uint8Array([0x00,\n // version 0\n 0x00, 0x00, 0x00,\n // flags\n\n 0x03,\n // descriptor_type\n 0x17 + configlen,\n // length\n 0x00, 0x01,\n // es_id\n 0x00,\n // stream_priority\n\n 0x04,\n // descriptor_type\n 0x0f + configlen,\n // length\n 0x40,\n // codec : mpeg4_audio\n 0x15,\n // stream_type\n 0x00, 0x00, 0x00,\n // buffer_size\n 0x00, 0x00, 0x00, 0x00,\n // maxBitrate\n 0x00, 0x00, 0x00, 0x00,\n // avgBitrate\n\n 0x05 // descriptor_type\n ].concat([configlen]).concat(track.config).concat([0x06, 0x01, 0x02])); // GASpecificConfig)); // length + audio config descriptor\n }\n static audioStsd(track) {\n const samplerate = track.samplerate;\n return new Uint8Array([0x00, 0x00, 0x00,\n // reserved\n 0x00, 0x00, 0x00,\n // reserved\n 0x00, 0x01,\n // data_reference_index\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n // reserved\n 0x00, track.channelCount,\n // channelcount\n 0x00, 0x10,\n // sampleSize:16bits\n 0x00, 0x00, 0x00, 0x00,\n // reserved2\n samplerate >> 8 & 0xff, samplerate & 0xff,\n //\n 0x00, 0x00]);\n }\n static mp4a(track) {\n return MP4.box(MP4.types.mp4a, MP4.audioStsd(track), MP4.box(MP4.types.esds, MP4.esds(track)));\n }\n static mp3(track) {\n return MP4.box(MP4.types['.mp3'], MP4.audioStsd(track));\n }\n static ac3(track) {\n return MP4.box(MP4.types['ac-3'], MP4.audioStsd(track), MP4.box(MP4.types.dac3, track.config));\n }\n static stsd(track) {\n if (track.type === 'audio') {\n if (track.segmentCodec === 'mp3' && track.codec === 'mp3') {\n return MP4.box(MP4.types.stsd, MP4.STSD, MP4.mp3(track));\n }\n if (track.segmentCodec === 'ac3') {\n return MP4.box(MP4.types.stsd, MP4.STSD, MP4.ac3(track));\n }\n return MP4.box(MP4.types.stsd, MP4.STSD, MP4.mp4a(track));\n } else {\n return MP4.box(MP4.types.stsd, MP4.STSD, MP4.avc1(track));\n }\n }\n static tkhd(track) {\n const id = track.id;\n const duration = track.duration * track.timescale;\n const width = track.width;\n const height = track.height;\n const upperWordDuration = Math.floor(duration / (UINT32_MAX + 1));\n const lowerWordDuration = Math.floor(duration % (UINT32_MAX + 1));\n return MP4.box(MP4.types.tkhd, new Uint8Array([0x01,\n // version 1\n 0x00, 0x00, 0x07,\n // flags\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,\n // creation_time\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,\n // modification_time\n id >> 24 & 0xff, id >> 16 & 0xff, id >> 8 & 0xff, id & 0xff,\n // track_ID\n 0x00, 0x00, 0x00, 0x00,\n // reserved\n upperWordDuration >> 24, upperWordDuration >> 16 & 0xff, upperWordDuration >> 8 & 0xff, upperWordDuration & 0xff, lowerWordDuration >> 24, lowerWordDuration >> 16 & 0xff, lowerWordDuration >> 8 & 0xff, lowerWordDuration & 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n // reserved\n 0x00, 0x00,\n // layer\n 0x00, 0x00,\n // alternate_group\n 0x00, 0x00,\n // non-audio track volume\n 0x00, 0x00,\n // reserved\n 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,\n // transformation: unity matrix\n width >> 8 & 0xff, width & 0xff, 0x00, 0x00,\n // width\n height >> 8 & 0xff, height & 0xff, 0x00, 0x00 // height\n ]));\n }\n static traf(track, baseMediaDecodeTime) {\n const sampleDependencyTable = MP4.sdtp(track);\n const id = track.id;\n const upperWordBaseMediaDecodeTime = Math.floor(baseMediaDecodeTime / (UINT32_MAX + 1));\n const lowerWordBaseMediaDecodeTime = Math.floor(baseMediaDecodeTime % (UINT32_MAX + 1));\n return MP4.box(MP4.types.traf, MP4.box(MP4.types.tfhd, new Uint8Array([0x00,\n // version 0\n 0x00, 0x00, 0x00,\n // flags\n id >> 24, id >> 16 & 0xff, id >> 8 & 0xff, id & 0xff // track_ID\n ])), MP4.box(MP4.types.tfdt, new Uint8Array([0x01,\n // version 1\n 0x00, 0x00, 0x00,\n // flags\n upperWordBaseMediaDecodeTime >> 24, upperWordBaseMediaDecodeTime >> 16 & 0xff, upperWordBaseMediaDecodeTime >> 8 & 0xff, upperWordBaseMediaDecodeTime & 0xff, lowerWordBaseMediaDecodeTime >> 24, lowerWordBaseMediaDecodeTime >> 16 & 0xff, lowerWordBaseMediaDecodeTime >> 8 & 0xff, lowerWordBaseMediaDecodeTime & 0xff])), MP4.trun(track, sampleDependencyTable.length + 16 +\n // tfhd\n 20 +\n // tfdt\n 8 +\n // traf header\n 16 +\n // mfhd\n 8 +\n // moof header\n 8),\n // mdat header\n sampleDependencyTable);\n }\n\n /**\n * Generate a track box.\n * @param track a track definition\n */\n static trak(track) {\n track.duration = track.duration || 0xffffffff;\n return MP4.box(MP4.types.trak, MP4.tkhd(track), MP4.mdia(track));\n }\n static trex(track) {\n const id = track.id;\n return MP4.box(MP4.types.trex, new Uint8Array([0x00,\n // version 0\n 0x00, 0x00, 0x00,\n // flags\n id >> 24, id >> 16 & 0xff, id >> 8 & 0xff, id & 0xff,\n // track_ID\n 0x00, 0x00, 0x00, 0x01,\n // default_sample_description_index\n 0x00, 0x00, 0x00, 0x00,\n // default_sample_duration\n 0x00, 0x00, 0x00, 0x00,\n // default_sample_size\n 0x00, 0x01, 0x00, 0x01 // default_sample_flags\n ]));\n }\n static trun(track, offset) {\n const samples = track.samples || [];\n const len = samples.length;\n const arraylen = 12 + 16 * len;\n const array = new Uint8Array(arraylen);\n let i;\n let sample;\n let duration;\n let size;\n let flags;\n let cts;\n offset += 8 + arraylen;\n array.set([track.type === 'video' ? 0x01 : 0x00,\n // version 1 for video with signed-int sample_composition_time_offset\n 0x00, 0x0f, 0x01,\n // flags\n len >>> 24 & 0xff, len >>> 16 & 0xff, len >>> 8 & 0xff, len & 0xff,\n // sample_count\n offset >>> 24 & 0xff, offset >>> 16 & 0xff, offset >>> 8 & 0xff, offset & 0xff // data_offset\n ], 0);\n for (i = 0; i < len; i++) {\n sample = samples[i];\n duration = sample.duration;\n size = sample.size;\n flags = sample.flags;\n cts = sample.cts;\n array.set([duration >>> 24 & 0xff, duration >>> 16 & 0xff, duration >>> 8 & 0xff, duration & 0xff,\n // sample_duration\n size >>> 24 & 0xff, size >>> 16 & 0xff, size >>> 8 & 0xff, size & 0xff,\n // sample_size\n flags.isLeading << 2 | flags.dependsOn, flags.isDependedOn << 6 | flags.hasRedundancy << 4 | flags.paddingValue << 1 | flags.isNonSync, flags.degradPrio & 0xf0 << 8, flags.degradPrio & 0x0f,\n // sample_flags\n cts >>> 24 & 0xff, cts >>> 16 & 0xff, cts >>> 8 & 0xff, cts & 0xff // sample_composition_time_offset\n ], 12 + 16 * i);\n }\n return MP4.box(MP4.types.trun, array);\n }\n static initSegment(tracks) {\n if (!MP4.types) {\n MP4.init();\n }\n const movie = MP4.moov(tracks);\n const result = appendUint8Array(MP4.FTYP, movie);\n return result;\n }\n}\nMP4.types = void 0;\nMP4.HDLR_TYPES = void 0;\nMP4.STTS = void 0;\nMP4.STSC = void 0;\nMP4.STCO = void 0;\nMP4.STSZ = void 0;\nMP4.VMHD = void 0;\nMP4.SMHD = void 0;\nMP4.STSD = void 0;\nMP4.FTYP = void 0;\nMP4.DINF = void 0;\n\nconst MPEG_TS_CLOCK_FREQ_HZ = 90000;\nfunction toTimescaleFromBase(baseTime, destScale, srcBase = 1, round = false) {\n const result = baseTime * destScale * srcBase; // equivalent to `(value * scale) / (1 / base)`\n return round ? Math.round(result) : result;\n}\nfunction toTimescaleFromScale(baseTime, destScale, srcScale = 1, round = false) {\n return toTimescaleFromBase(baseTime, destScale, 1 / srcScale, round);\n}\nfunction toMsFromMpegTsClock(baseTime, round = false) {\n return toTimescaleFromBase(baseTime, 1000, 1 / MPEG_TS_CLOCK_FREQ_HZ, round);\n}\nfunction toMpegTsClockFromTimescale(baseTime, srcScale = 1) {\n return toTimescaleFromBase(baseTime, MPEG_TS_CLOCK_FREQ_HZ, 1 / srcScale);\n}\n\nconst MAX_SILENT_FRAME_DURATION = 10 * 1000; // 10 seconds\nconst AAC_SAMPLES_PER_FRAME = 1024;\nconst MPEG_AUDIO_SAMPLE_PER_FRAME = 1152;\nconst AC3_SAMPLES_PER_FRAME = 1536;\nlet chromeVersion = null;\nlet safariWebkitVersion = null;\nclass MP4Remuxer {\n constructor(observer, config, typeSupported, vendor = '') {\n this.observer = void 0;\n this.config = void 0;\n this.typeSupported = void 0;\n this.ISGenerated = false;\n this._initPTS = null;\n this._initDTS = null;\n this.nextAvcDts = null;\n this.nextAudioPts = null;\n this.videoSampleDuration = null;\n this.isAudioContiguous = false;\n this.isVideoContiguous = false;\n this.videoTrackConfig = void 0;\n this.observer = observer;\n this.config = config;\n this.typeSupported = typeSupported;\n this.ISGenerated = false;\n if (chromeVersion === null) {\n const userAgent = navigator.userAgent || '';\n const result = userAgent.match(/Chrome\\/(\\d+)/i);\n chromeVersion = result ? parseInt(result[1]) : 0;\n }\n if (safariWebkitVersion === null) {\n const result = navigator.userAgent.match(/Safari\\/(\\d+)/i);\n safariWebkitVersion = result ? parseInt(result[1]) : 0;\n }\n }\n destroy() {\n // @ts-ignore\n this.config = this.videoTrackConfig = this._initPTS = this._initDTS = null;\n }\n resetTimeStamp(defaultTimeStamp) {\n logger.log('[mp4-remuxer]: initPTS & initDTS reset');\n this._initPTS = this._initDTS = defaultTimeStamp;\n }\n resetNextTimestamp() {\n logger.log('[mp4-remuxer]: reset next timestamp');\n this.isVideoContiguous = false;\n this.isAudioContiguous = false;\n }\n resetInitSegment() {\n logger.log('[mp4-remuxer]: ISGenerated flag reset');\n this.ISGenerated = false;\n this.videoTrackConfig = undefined;\n }\n getVideoStartPts(videoSamples) {\n // Get the minimum PTS value relative to the first sample's PTS, normalized for 33-bit wrapping\n let rolloverDetected = false;\n const firstPts = videoSamples[0].pts;\n const startPTS = videoSamples.reduce((minPTS, sample) => {\n let pts = sample.pts;\n let delta = pts - minPTS;\n if (delta < -4294967296) {\n // 2^32, see PTSNormalize for reasoning, but we're hitting a rollover here, and we don't want that to impact the timeOffset calculation\n rolloverDetected = true;\n pts = normalizePts(pts, firstPts);\n delta = pts - minPTS;\n }\n if (delta > 0) {\n return minPTS;\n }\n return pts;\n }, firstPts);\n if (rolloverDetected) {\n logger.debug('PTS rollover detected');\n }\n return startPTS;\n }\n remux(audioTrack, videoTrack, id3Track, textTrack, timeOffset, accurateTimeOffset, flush, playlistType) {\n let video;\n let audio;\n let initSegment;\n let text;\n let id3;\n let independent;\n let audioTimeOffset = timeOffset;\n let videoTimeOffset = timeOffset;\n\n // If we're remuxing audio and video progressively, wait until we've received enough samples for each track before proceeding.\n // This is done to synchronize the audio and video streams. We know if the current segment will have samples if the \"pid\"\n // parameter is greater than -1. The pid is set when the PMT is parsed, which contains the tracks list.\n // However, if the initSegment has already been generated, or we've reached the end of a segment (flush),\n // then we can remux one track without waiting for the other.\n const hasAudio = audioTrack.pid > -1;\n const hasVideo = videoTrack.pid > -1;\n const length = videoTrack.samples.length;\n const enoughAudioSamples = audioTrack.samples.length > 0;\n const enoughVideoSamples = flush && length > 0 || length > 1;\n const canRemuxAvc = (!hasAudio || enoughAudioSamples) && (!hasVideo || enoughVideoSamples) || this.ISGenerated || flush;\n if (canRemuxAvc) {\n if (this.ISGenerated) {\n var _videoTrack$pixelRati, _config$pixelRatio, _videoTrack$pixelRati2, _config$pixelRatio2;\n const config = this.videoTrackConfig;\n if (config && (videoTrack.width !== config.width || videoTrack.height !== config.height || ((_videoTrack$pixelRati = videoTrack.pixelRatio) == null ? void 0 : _videoTrack$pixelRati[0]) !== ((_config$pixelRatio = config.pixelRatio) == null ? void 0 : _config$pixelRatio[0]) || ((_videoTrack$pixelRati2 = videoTrack.pixelRatio) == null ? void 0 : _videoTrack$pixelRati2[1]) !== ((_config$pixelRatio2 = config.pixelRatio) == null ? void 0 : _config$pixelRatio2[1]))) {\n this.resetInitSegment();\n }\n } else {\n initSegment = this.generateIS(audioTrack, videoTrack, timeOffset, accurateTimeOffset);\n }\n const isVideoContiguous = this.isVideoContiguous;\n let firstKeyFrameIndex = -1;\n let firstKeyFramePTS;\n if (enoughVideoSamples) {\n firstKeyFrameIndex = findKeyframeIndex(videoTrack.samples);\n if (!isVideoContiguous && this.config.forceKeyFrameOnDiscontinuity) {\n independent = true;\n if (firstKeyFrameIndex > 0) {\n logger.warn(`[mp4-remuxer]: Dropped ${firstKeyFrameIndex} out of ${length} video samples due to a missing keyframe`);\n const startPTS = this.getVideoStartPts(videoTrack.samples);\n videoTrack.samples = videoTrack.samples.slice(firstKeyFrameIndex);\n videoTrack.dropped += firstKeyFrameIndex;\n videoTimeOffset += (videoTrack.samples[0].pts - startPTS) / videoTrack.inputTimeScale;\n firstKeyFramePTS = videoTimeOffset;\n } else if (firstKeyFrameIndex === -1) {\n logger.warn(`[mp4-remuxer]: No keyframe found out of ${length} video samples`);\n independent = false;\n }\n }\n }\n if (this.ISGenerated) {\n if (enoughAudioSamples && enoughVideoSamples) {\n // timeOffset is expected to be the offset of the first timestamp of this fragment (first DTS)\n // if first audio DTS is not aligned with first video DTS then we need to take that into account\n // when providing timeOffset to remuxAudio / remuxVideo. if we don't do that, there might be a permanent / small\n // drift between audio and video streams\n const startPTS = this.getVideoStartPts(videoTrack.samples);\n const tsDelta = normalizePts(audioTrack.samples[0].pts, startPTS) - startPTS;\n const audiovideoTimestampDelta = tsDelta / videoTrack.inputTimeScale;\n audioTimeOffset += Math.max(0, audiovideoTimestampDelta);\n videoTimeOffset += Math.max(0, -audiovideoTimestampDelta);\n }\n\n // Purposefully remuxing audio before video, so that remuxVideo can use nextAudioPts, which is calculated in remuxAudio.\n if (enoughAudioSamples) {\n // if initSegment was generated without audio samples, regenerate it again\n if (!audioTrack.samplerate) {\n logger.warn('[mp4-remuxer]: regenerate InitSegment as audio detected');\n initSegment = this.generateIS(audioTrack, videoTrack, timeOffset, accurateTimeOffset);\n }\n audio = this.remuxAudio(audioTrack, audioTimeOffset, this.isAudioContiguous, accurateTimeOffset, hasVideo || enoughVideoSamples || playlistType === PlaylistLevelType.AUDIO ? videoTimeOffset : undefined);\n if (enoughVideoSamples) {\n const audioTrackLength = audio ? audio.endPTS - audio.startPTS : 0;\n // if initSegment was generated without video samples, regenerate it again\n if (!videoTrack.inputTimeScale) {\n logger.warn('[mp4-remuxer]: regenerate InitSegment as video detected');\n initSegment = this.generateIS(audioTrack, videoTrack, timeOffset, accurateTimeOffset);\n }\n video = this.remuxVideo(videoTrack, videoTimeOffset, isVideoContiguous, audioTrackLength);\n }\n } else if (enoughVideoSamples) {\n video = this.remuxVideo(videoTrack, videoTimeOffset, isVideoContiguous, 0);\n }\n if (video) {\n video.firstKeyFrame = firstKeyFrameIndex;\n video.independent = firstKeyFrameIndex !== -1;\n video.firstKeyFramePTS = firstKeyFramePTS;\n }\n }\n }\n\n // Allow ID3 and text to remux, even if more audio/video samples are required\n if (this.ISGenerated && this._initPTS && this._initDTS) {\n if (id3Track.samples.length) {\n id3 = flushTextTrackMetadataCueSamples(id3Track, timeOffset, this._initPTS, this._initDTS);\n }\n if (textTrack.samples.length) {\n text = flushTextTrackUserdataCueSamples(textTrack, timeOffset, this._initPTS);\n }\n }\n return {\n audio,\n video,\n initSegment,\n independent,\n text,\n id3\n };\n }\n generateIS(audioTrack, videoTrack, timeOffset, accurateTimeOffset) {\n const audioSamples = audioTrack.samples;\n const videoSamples = videoTrack.samples;\n const typeSupported = this.typeSupported;\n const tracks = {};\n const _initPTS = this._initPTS;\n let computePTSDTS = !_initPTS || accurateTimeOffset;\n let container = 'audio/mp4';\n let initPTS;\n let initDTS;\n let timescale;\n if (computePTSDTS) {\n initPTS = initDTS = Infinity;\n }\n if (audioTrack.config && audioSamples.length) {\n // let's use audio sampling rate as MP4 time scale.\n // rationale is that there is a integer nb of audio frames per audio sample (1024 for AAC)\n // using audio sampling rate here helps having an integer MP4 frame duration\n // this avoids potential rounding issue and AV sync issue\n audioTrack.timescale = audioTrack.samplerate;\n switch (audioTrack.segmentCodec) {\n case 'mp3':\n if (typeSupported.mpeg) {\n // Chrome and Safari\n container = 'audio/mpeg';\n audioTrack.codec = '';\n } else if (typeSupported.mp3) {\n // Firefox\n audioTrack.codec = 'mp3';\n }\n break;\n case 'ac3':\n audioTrack.codec = 'ac-3';\n break;\n }\n tracks.audio = {\n id: 'audio',\n container: container,\n codec: audioTrack.codec,\n initSegment: audioTrack.segmentCodec === 'mp3' && typeSupported.mpeg ? new Uint8Array(0) : MP4.initSegment([audioTrack]),\n metadata: {\n channelCount: audioTrack.channelCount\n }\n };\n if (computePTSDTS) {\n timescale = audioTrack.inputTimeScale;\n if (!_initPTS || timescale !== _initPTS.timescale) {\n // remember first PTS of this demuxing context. for audio, PTS = DTS\n initPTS = initDTS = audioSamples[0].pts - Math.round(timescale * timeOffset);\n } else {\n computePTSDTS = false;\n }\n }\n }\n if (videoTrack.sps && videoTrack.pps && videoSamples.length) {\n // let's use input time scale as MP4 video timescale\n // we use input time scale straight away to avoid rounding issues on frame duration / cts computation\n videoTrack.timescale = videoTrack.inputTimeScale;\n tracks.video = {\n id: 'main',\n container: 'video/mp4',\n codec: videoTrack.codec,\n initSegment: MP4.initSegment([videoTrack]),\n metadata: {\n width: videoTrack.width,\n height: videoTrack.height\n }\n };\n if (computePTSDTS) {\n timescale = videoTrack.inputTimeScale;\n if (!_initPTS || timescale !== _initPTS.timescale) {\n const startPTS = this.getVideoStartPts(videoSamples);\n const startOffset = Math.round(timescale * timeOffset);\n initDTS = Math.min(initDTS, normalizePts(videoSamples[0].dts, startPTS) - startOffset);\n initPTS = Math.min(initPTS, startPTS - startOffset);\n } else {\n computePTSDTS = false;\n }\n }\n this.videoTrackConfig = {\n width: videoTrack.width,\n height: videoTrack.height,\n pixelRatio: videoTrack.pixelRatio\n };\n }\n if (Object.keys(tracks).length) {\n this.ISGenerated = true;\n if (computePTSDTS) {\n this._initPTS = {\n baseTime: initPTS,\n timescale: timescale\n };\n this._initDTS = {\n baseTime: initDTS,\n timescale: timescale\n };\n } else {\n initPTS = timescale = undefined;\n }\n return {\n tracks,\n initPTS,\n timescale\n };\n }\n }\n remuxVideo(track, timeOffset, contiguous, audioTrackLength) {\n const timeScale = track.inputTimeScale;\n const inputSamples = track.samples;\n const outputSamples = [];\n const nbSamples = inputSamples.length;\n const initPTS = this._initPTS;\n let nextAvcDts = this.nextAvcDts;\n let offset = 8;\n let mp4SampleDuration = this.videoSampleDuration;\n let firstDTS;\n let lastDTS;\n let minPTS = Number.POSITIVE_INFINITY;\n let maxPTS = Number.NEGATIVE_INFINITY;\n let sortSamples = false;\n\n // if parsed fragment is contiguous with last one, let's use last DTS value as reference\n if (!contiguous || nextAvcDts === null) {\n const pts = timeOffset * timeScale;\n const cts = inputSamples[0].pts - normalizePts(inputSamples[0].dts, inputSamples[0].pts);\n if (chromeVersion && nextAvcDts !== null && Math.abs(pts - cts - nextAvcDts) < 15000) {\n // treat as contigous to adjust samples that would otherwise produce video buffer gaps in Chrome\n contiguous = true;\n } else {\n // if not contiguous, let's use target timeOffset\n nextAvcDts = pts - cts;\n }\n }\n\n // PTS is coded on 33bits, and can loop from -2^32 to 2^32\n // PTSNormalize will make PTS/DTS value monotonic, we use last known DTS value as reference value\n const initTime = initPTS.baseTime * timeScale / initPTS.timescale;\n for (let i = 0; i < nbSamples; i++) {\n const sample = inputSamples[i];\n sample.pts = normalizePts(sample.pts - initTime, nextAvcDts);\n sample.dts = normalizePts(sample.dts - initTime, nextAvcDts);\n if (sample.dts < inputSamples[i > 0 ? i - 1 : i].dts) {\n sortSamples = true;\n }\n }\n\n // sort video samples by DTS then PTS then demux id order\n if (sortSamples) {\n inputSamples.sort(function (a, b) {\n const deltadts = a.dts - b.dts;\n const deltapts = a.pts - b.pts;\n return deltadts || deltapts;\n });\n }\n\n // Get first/last DTS\n firstDTS = inputSamples[0].dts;\n lastDTS = inputSamples[inputSamples.length - 1].dts;\n\n // Sample duration (as expected by trun MP4 boxes), should be the delta between sample DTS\n // set this constant duration as being the avg delta between consecutive DTS.\n const inputDuration = lastDTS - firstDTS;\n const averageSampleDuration = inputDuration ? Math.round(inputDuration / (nbSamples - 1)) : mp4SampleDuration || track.inputTimeScale / 30;\n\n // if fragment are contiguous, detect hole/overlapping between fragments\n if (contiguous) {\n // check timestamp continuity across consecutive fragments (this is to remove inter-fragment gap/hole)\n const delta = firstDTS - nextAvcDts;\n const foundHole = delta > averageSampleDuration;\n const foundOverlap = delta < -1;\n if (foundHole || foundOverlap) {\n if (foundHole) {\n logger.warn(`AVC: ${toMsFromMpegTsClock(delta, true)} ms (${delta}dts) hole between fragments detected at ${timeOffset.toFixed(3)}`);\n } else {\n logger.warn(`AVC: ${toMsFromMpegTsClock(-delta, true)} ms (${delta}dts) overlapping between fragments detected at ${timeOffset.toFixed(3)}`);\n }\n if (!foundOverlap || nextAvcDts >= inputSamples[0].pts || chromeVersion) {\n firstDTS = nextAvcDts;\n const firstPTS = inputSamples[0].pts - delta;\n if (foundHole) {\n inputSamples[0].dts = firstDTS;\n inputSamples[0].pts = firstPTS;\n } else {\n for (let i = 0; i < inputSamples.length; i++) {\n if (inputSamples[i].dts > firstPTS) {\n break;\n }\n inputSamples[i].dts -= delta;\n inputSamples[i].pts -= delta;\n }\n }\n logger.log(`Video: Initial PTS/DTS adjusted: ${toMsFromMpegTsClock(firstPTS, true)}/${toMsFromMpegTsClock(firstDTS, true)}, delta: ${toMsFromMpegTsClock(delta, true)} ms`);\n }\n }\n }\n firstDTS = Math.max(0, firstDTS);\n let nbNalu = 0;\n let naluLen = 0;\n let dtsStep = firstDTS;\n for (let i = 0; i < nbSamples; i++) {\n // compute total/avc sample length and nb of NAL units\n const sample = inputSamples[i];\n const units = sample.units;\n const nbUnits = units.length;\n let sampleLen = 0;\n for (let j = 0; j < nbUnits; j++) {\n sampleLen += units[j].data.length;\n }\n naluLen += sampleLen;\n nbNalu += nbUnits;\n sample.length = sampleLen;\n\n // ensure sample monotonic DTS\n if (sample.dts < dtsStep) {\n sample.dts = dtsStep;\n dtsStep += averageSampleDuration / 4 | 0 || 1;\n } else {\n dtsStep = sample.dts;\n }\n minPTS = Math.min(sample.pts, minPTS);\n maxPTS = Math.max(sample.pts, maxPTS);\n }\n lastDTS = inputSamples[nbSamples - 1].dts;\n\n /* concatenate the video data and construct the mdat in place\n (need 8 more bytes to fill length and mpdat type) */\n const mdatSize = naluLen + 4 * nbNalu + 8;\n let mdat;\n try {\n mdat = new Uint8Array(mdatSize);\n } catch (err) {\n this.observer.emit(Events.ERROR, Events.ERROR, {\n type: ErrorTypes.MUX_ERROR,\n details: ErrorDetails.REMUX_ALLOC_ERROR,\n fatal: false,\n error: err,\n bytes: mdatSize,\n reason: `fail allocating video mdat ${mdatSize}`\n });\n return;\n }\n const view = new DataView(mdat.buffer);\n view.setUint32(0, mdatSize);\n mdat.set(MP4.types.mdat, 4);\n let stretchedLastFrame = false;\n let minDtsDelta = Number.POSITIVE_INFINITY;\n let minPtsDelta = Number.POSITIVE_INFINITY;\n let maxDtsDelta = Number.NEGATIVE_INFINITY;\n let maxPtsDelta = Number.NEGATIVE_INFINITY;\n for (let i = 0; i < nbSamples; i++) {\n const VideoSample = inputSamples[i];\n const VideoSampleUnits = VideoSample.units;\n let mp4SampleLength = 0;\n // convert NALU bitstream to MP4 format (prepend NALU with size field)\n for (let j = 0, nbUnits = VideoSampleUnits.length; j < nbUnits; j++) {\n const unit = VideoSampleUnits[j];\n const unitData = unit.data;\n const unitDataLen = unit.data.byteLength;\n view.setUint32(offset, unitDataLen);\n offset += 4;\n mdat.set(unitData, offset);\n offset += unitDataLen;\n mp4SampleLength += 4 + unitDataLen;\n }\n\n // expected sample duration is the Decoding Timestamp diff of consecutive samples\n let ptsDelta;\n if (i < nbSamples - 1) {\n mp4SampleDuration = inputSamples[i + 1].dts - VideoSample.dts;\n ptsDelta = inputSamples[i + 1].pts - VideoSample.pts;\n } else {\n const config = this.config;\n const lastFrameDuration = i > 0 ? VideoSample.dts - inputSamples[i - 1].dts : averageSampleDuration;\n ptsDelta = i > 0 ? VideoSample.pts - inputSamples[i - 1].pts : averageSampleDuration;\n if (config.stretchShortVideoTrack && this.nextAudioPts !== null) {\n // In some cases, a segment's audio track duration may exceed the video track duration.\n // Since we've already remuxed audio, and we know how long the audio track is, we look to\n // see if the delta to the next segment is longer than maxBufferHole.\n // If so, playback would potentially get stuck, so we artificially inflate\n // the duration of the last frame to minimize any potential gap between segments.\n const gapTolerance = Math.floor(config.maxBufferHole * timeScale);\n const deltaToFrameEnd = (audioTrackLength ? minPTS + audioTrackLength * timeScale : this.nextAudioPts) - VideoSample.pts;\n if (deltaToFrameEnd > gapTolerance) {\n // We subtract lastFrameDuration from deltaToFrameEnd to try to prevent any video\n // frame overlap. maxBufferHole should be >> lastFrameDuration anyway.\n mp4SampleDuration = deltaToFrameEnd - lastFrameDuration;\n if (mp4SampleDuration < 0) {\n mp4SampleDuration = lastFrameDuration;\n } else {\n stretchedLastFrame = true;\n }\n logger.log(`[mp4-remuxer]: It is approximately ${deltaToFrameEnd / 90} ms to the next segment; using duration ${mp4SampleDuration / 90} ms for the last video frame.`);\n } else {\n mp4SampleDuration = lastFrameDuration;\n }\n } else {\n mp4SampleDuration = lastFrameDuration;\n }\n }\n const compositionTimeOffset = Math.round(VideoSample.pts - VideoSample.dts);\n minDtsDelta = Math.min(minDtsDelta, mp4SampleDuration);\n maxDtsDelta = Math.max(maxDtsDelta, mp4SampleDuration);\n minPtsDelta = Math.min(minPtsDelta, ptsDelta);\n maxPtsDelta = Math.max(maxPtsDelta, ptsDelta);\n outputSamples.push(new Mp4Sample(VideoSample.key, mp4SampleDuration, mp4SampleLength, compositionTimeOffset));\n }\n if (outputSamples.length) {\n if (chromeVersion) {\n if (chromeVersion < 70) {\n // Chrome workaround, mark first sample as being a Random Access Point (keyframe) to avoid sourcebuffer append issue\n // https://code.google.com/p/chromium/issues/detail?id=229412\n const flags = outputSamples[0].flags;\n flags.dependsOn = 2;\n flags.isNonSync = 0;\n }\n } else if (safariWebkitVersion) {\n // Fix for \"CNN special report, with CC\" in test-streams (Safari browser only)\n // Ignore DTS when frame durations are irregular. Safari MSE does not handle this leading to gaps.\n if (maxPtsDelta - minPtsDelta < maxDtsDelta - minDtsDelta && averageSampleDuration / maxDtsDelta < 0.025 && outputSamples[0].cts === 0) {\n logger.warn('Found irregular gaps in sample duration. Using PTS instead of DTS to determine MP4 sample duration.');\n let dts = firstDTS;\n for (let i = 0, len = outputSamples.length; i < len; i++) {\n const nextDts = dts + outputSamples[i].duration;\n const pts = dts + outputSamples[i].cts;\n if (i < len - 1) {\n const nextPts = nextDts + outputSamples[i + 1].cts;\n outputSamples[i].duration = nextPts - pts;\n } else {\n outputSamples[i].duration = i ? outputSamples[i - 1].duration : averageSampleDuration;\n }\n outputSamples[i].cts = 0;\n dts = nextDts;\n }\n }\n }\n }\n // next AVC sample DTS should be equal to last sample DTS + last sample duration (in PES timescale)\n mp4SampleDuration = stretchedLastFrame || !mp4SampleDuration ? averageSampleDuration : mp4SampleDuration;\n this.nextAvcDts = nextAvcDts = lastDTS + mp4SampleDuration;\n this.videoSampleDuration = mp4SampleDuration;\n this.isVideoContiguous = true;\n const moof = MP4.moof(track.sequenceNumber++, firstDTS, _extends({}, track, {\n samples: outputSamples\n }));\n const type = 'video';\n const data = {\n data1: moof,\n data2: mdat,\n startPTS: minPTS / timeScale,\n endPTS: (maxPTS + mp4SampleDuration) / timeScale,\n startDTS: firstDTS / timeScale,\n endDTS: nextAvcDts / timeScale,\n type,\n hasAudio: false,\n hasVideo: true,\n nb: outputSamples.length,\n dropped: track.dropped\n };\n track.samples = [];\n track.dropped = 0;\n return data;\n }\n getSamplesPerFrame(track) {\n switch (track.segmentCodec) {\n case 'mp3':\n return MPEG_AUDIO_SAMPLE_PER_FRAME;\n case 'ac3':\n return AC3_SAMPLES_PER_FRAME;\n default:\n return AAC_SAMPLES_PER_FRAME;\n }\n }\n remuxAudio(track, timeOffset, contiguous, accurateTimeOffset, videoTimeOffset) {\n const inputTimeScale = track.inputTimeScale;\n const mp4timeScale = track.samplerate ? track.samplerate : inputTimeScale;\n const scaleFactor = inputTimeScale / mp4timeScale;\n const mp4SampleDuration = this.getSamplesPerFrame(track);\n const inputSampleDuration = mp4SampleDuration * scaleFactor;\n const initPTS = this._initPTS;\n const rawMPEG = track.segmentCodec === 'mp3' && this.typeSupported.mpeg;\n const outputSamples = [];\n const alignedWithVideo = videoTimeOffset !== undefined;\n let inputSamples = track.samples;\n let offset = rawMPEG ? 0 : 8;\n let nextAudioPts = this.nextAudioPts || -1;\n\n // window.audioSamples ? window.audioSamples.push(inputSamples.map(s => s.pts)) : (window.audioSamples = [inputSamples.map(s => s.pts)]);\n\n // for audio samples, also consider consecutive fragments as being contiguous (even if a level switch occurs),\n // for sake of clarity:\n // consecutive fragments are frags with\n // - less than 100ms gaps between new time offset (if accurate) and next expected PTS OR\n // - less than 20 audio frames distance\n // contiguous fragments are consecutive fragments from same quality level (same level, new SN = old SN + 1)\n // this helps ensuring audio continuity\n // and this also avoids audio glitches/cut when switching quality, or reporting wrong duration on first audio frame\n const timeOffsetMpegTS = timeOffset * inputTimeScale;\n const initTime = initPTS.baseTime * inputTimeScale / initPTS.timescale;\n this.isAudioContiguous = contiguous = contiguous || inputSamples.length && nextAudioPts > 0 && (accurateTimeOffset && Math.abs(timeOffsetMpegTS - nextAudioPts) < 9000 || Math.abs(normalizePts(inputSamples[0].pts - initTime, timeOffsetMpegTS) - nextAudioPts) < 20 * inputSampleDuration);\n\n // compute normalized PTS\n inputSamples.forEach(function (sample) {\n sample.pts = normalizePts(sample.pts - initTime, timeOffsetMpegTS);\n });\n if (!contiguous || nextAudioPts < 0) {\n // filter out sample with negative PTS that are not playable anyway\n // if we don't remove these negative samples, they will shift all audio samples forward.\n // leading to audio overlap between current / next fragment\n inputSamples = inputSamples.filter(sample => sample.pts >= 0);\n\n // in case all samples have negative PTS, and have been filtered out, return now\n if (!inputSamples.length) {\n return;\n }\n if (videoTimeOffset === 0) {\n // Set the start to 0 to match video so that start gaps larger than inputSampleDuration are filled with silence\n nextAudioPts = 0;\n } else if (accurateTimeOffset && !alignedWithVideo) {\n // When not seeking, not live, and LevelDetails.PTSKnown, use fragment start as predicted next audio PTS\n nextAudioPts = Math.max(0, timeOffsetMpegTS);\n } else {\n // if frags are not contiguous and if we cant trust time offset, let's use first sample PTS as next audio PTS\n nextAudioPts = inputSamples[0].pts;\n }\n }\n\n // If the audio track is missing samples, the frames seem to get \"left-shifted\" within the\n // resulting mp4 segment, causing sync issues and leaving gaps at the end of the audio segment.\n // In an effort to prevent this from happening, we inject frames here where there are gaps.\n // When possible, we inject a silent frame; when that's not possible, we duplicate the last\n // frame.\n\n if (track.segmentCodec === 'aac') {\n const maxAudioFramesDrift = this.config.maxAudioFramesDrift;\n for (let i = 0, nextPts = nextAudioPts; i < inputSamples.length; i++) {\n // First, let's see how far off this frame is from where we expect it to be\n const sample = inputSamples[i];\n const pts = sample.pts;\n const delta = pts - nextPts;\n const duration = Math.abs(1000 * delta / inputTimeScale);\n\n // When remuxing with video, if we're overlapping by more than a duration, drop this sample to stay in sync\n if (delta <= -maxAudioFramesDrift * inputSampleDuration && alignedWithVideo) {\n if (i === 0) {\n logger.warn(`Audio frame @ ${(pts / inputTimeScale).toFixed(3)}s overlaps nextAudioPts by ${Math.round(1000 * delta / inputTimeScale)} ms.`);\n this.nextAudioPts = nextAudioPts = nextPts = pts;\n }\n } // eslint-disable-line brace-style\n\n // Insert missing frames if:\n // 1: We're more than maxAudioFramesDrift frame away\n // 2: Not more than MAX_SILENT_FRAME_DURATION away\n // 3: currentTime (aka nextPtsNorm) is not 0\n // 4: remuxing with video (videoTimeOffset !== undefined)\n else if (delta >= maxAudioFramesDrift * inputSampleDuration && duration < MAX_SILENT_FRAME_DURATION && alignedWithVideo) {\n let missing = Math.round(delta / inputSampleDuration);\n // Adjust nextPts so that silent samples are aligned with media pts. This will prevent media samples from\n // later being shifted if nextPts is based on timeOffset and delta is not a multiple of inputSampleDuration.\n nextPts = pts - missing * inputSampleDuration;\n if (nextPts < 0) {\n missing--;\n nextPts += inputSampleDuration;\n }\n if (i === 0) {\n this.nextAudioPts = nextAudioPts = nextPts;\n }\n logger.warn(`[mp4-remuxer]: Injecting ${missing} audio frame @ ${(nextPts / inputTimeScale).toFixed(3)}s due to ${Math.round(1000 * delta / inputTimeScale)} ms gap.`);\n for (let j = 0; j < missing; j++) {\n const newStamp = Math.max(nextPts, 0);\n let fillFrame = AAC.getSilentFrame(track.manifestCodec || track.codec, track.channelCount);\n if (!fillFrame) {\n logger.log('[mp4-remuxer]: Unable to get silent frame for given audio codec; duplicating last frame instead.');\n fillFrame = sample.unit.subarray();\n }\n inputSamples.splice(i, 0, {\n unit: fillFrame,\n pts: newStamp\n });\n nextPts += inputSampleDuration;\n i++;\n }\n }\n sample.pts = nextPts;\n nextPts += inputSampleDuration;\n }\n }\n let firstPTS = null;\n let lastPTS = null;\n let mdat;\n let mdatSize = 0;\n let sampleLength = inputSamples.length;\n while (sampleLength--) {\n mdatSize += inputSamples[sampleLength].unit.byteLength;\n }\n for (let j = 0, _nbSamples = inputSamples.length; j < _nbSamples; j++) {\n const audioSample = inputSamples[j];\n const unit = audioSample.unit;\n let pts = audioSample.pts;\n if (lastPTS !== null) {\n // If we have more than one sample, set the duration of the sample to the \"real\" duration; the PTS diff with\n // the previous sample\n const prevSample = outputSamples[j - 1];\n prevSample.duration = Math.round((pts - lastPTS) / scaleFactor);\n } else {\n if (contiguous && track.segmentCodec === 'aac') {\n // set PTS/DTS to expected PTS/DTS\n pts = nextAudioPts;\n }\n // remember first PTS of our audioSamples\n firstPTS = pts;\n if (mdatSize > 0) {\n /* concatenate the audio data and construct the mdat in place\n (need 8 more bytes to fill length and mdat type) */\n mdatSize += offset;\n try {\n mdat = new Uint8Array(mdatSize);\n } catch (err) {\n this.observer.emit(Events.ERROR, Events.ERROR, {\n type: ErrorTypes.MUX_ERROR,\n details: ErrorDetails.REMUX_ALLOC_ERROR,\n fatal: false,\n error: err,\n bytes: mdatSize,\n reason: `fail allocating audio mdat ${mdatSize}`\n });\n return;\n }\n if (!rawMPEG) {\n const view = new DataView(mdat.buffer);\n view.setUint32(0, mdatSize);\n mdat.set(MP4.types.mdat, 4);\n }\n } else {\n // no audio samples\n return;\n }\n }\n mdat.set(unit, offset);\n const unitLen = unit.byteLength;\n offset += unitLen;\n // Default the sample's duration to the computed mp4SampleDuration, which will either be 1024 for AAC or 1152 for MPEG\n // In the case that we have 1 sample, this will be the duration. If we have more than one sample, the duration\n // becomes the PTS diff with the previous sample\n outputSamples.push(new Mp4Sample(true, mp4SampleDuration, unitLen, 0));\n lastPTS = pts;\n }\n\n // We could end up with no audio samples if all input samples were overlapping with the previously remuxed ones\n const nbSamples = outputSamples.length;\n if (!nbSamples) {\n return;\n }\n\n // The next audio sample PTS should be equal to last sample PTS + duration\n const lastSample = outputSamples[outputSamples.length - 1];\n this.nextAudioPts = nextAudioPts = lastPTS + scaleFactor * lastSample.duration;\n\n // Set the track samples from inputSamples to outputSamples before remuxing\n const moof = rawMPEG ? new Uint8Array(0) : MP4.moof(track.sequenceNumber++, firstPTS / scaleFactor, _extends({}, track, {\n samples: outputSamples\n }));\n\n // Clear the track samples. This also clears the samples array in the demuxer, since the reference is shared\n track.samples = [];\n const start = firstPTS / inputTimeScale;\n const end = nextAudioPts / inputTimeScale;\n const type = 'audio';\n const audioData = {\n data1: moof,\n data2: mdat,\n startPTS: start,\n endPTS: end,\n startDTS: start,\n endDTS: end,\n type,\n hasAudio: true,\n hasVideo: false,\n nb: nbSamples\n };\n this.isAudioContiguous = true;\n return audioData;\n }\n remuxEmptyAudio(track, timeOffset, contiguous, videoData) {\n const inputTimeScale = track.inputTimeScale;\n const mp4timeScale = track.samplerate ? track.samplerate : inputTimeScale;\n const scaleFactor = inputTimeScale / mp4timeScale;\n const nextAudioPts = this.nextAudioPts;\n // sync with video's timestamp\n const initDTS = this._initDTS;\n const init90kHz = initDTS.baseTime * 90000 / initDTS.timescale;\n const startDTS = (nextAudioPts !== null ? nextAudioPts : videoData.startDTS * inputTimeScale) + init90kHz;\n const endDTS = videoData.endDTS * inputTimeScale + init90kHz;\n // one sample's duration value\n const frameDuration = scaleFactor * AAC_SAMPLES_PER_FRAME;\n // samples count of this segment's duration\n const nbSamples = Math.ceil((endDTS - startDTS) / frameDuration);\n // silent frame\n const silentFrame = AAC.getSilentFrame(track.manifestCodec || track.codec, track.channelCount);\n logger.warn('[mp4-remuxer]: remux empty Audio');\n // Can't remux if we can't generate a silent frame...\n if (!silentFrame) {\n logger.trace('[mp4-remuxer]: Unable to remuxEmptyAudio since we were unable to get a silent frame for given audio codec');\n return;\n }\n const samples = [];\n for (let i = 0; i < nbSamples; i++) {\n const stamp = startDTS + i * frameDuration;\n samples.push({\n unit: silentFrame,\n pts: stamp,\n dts: stamp\n });\n }\n track.samples = samples;\n return this.remuxAudio(track, timeOffset, contiguous, false);\n }\n}\nfunction normalizePts(value, reference) {\n let offset;\n if (reference === null) {\n return value;\n }\n if (reference < value) {\n // - 2^33\n offset = -8589934592;\n } else {\n // + 2^33\n offset = 8589934592;\n }\n /* PTS is 33bit (from 0 to 2^33 -1)\n if diff between value and reference is bigger than half of the amplitude (2^32) then it means that\n PTS looping occured. fill the gap */\n while (Math.abs(value - reference) > 4294967296) {\n value += offset;\n }\n return value;\n}\nfunction findKeyframeIndex(samples) {\n for (let i = 0; i < samples.length; i++) {\n if (samples[i].key) {\n return i;\n }\n }\n return -1;\n}\nfunction flushTextTrackMetadataCueSamples(track, timeOffset, initPTS, initDTS) {\n const length = track.samples.length;\n if (!length) {\n return;\n }\n const inputTimeScale = track.inputTimeScale;\n for (let index = 0; index < length; index++) {\n const sample = track.samples[index];\n // setting id3 pts, dts to relative time\n // using this._initPTS and this._initDTS to calculate relative time\n sample.pts = normalizePts(sample.pts - initPTS.baseTime * inputTimeScale / initPTS.timescale, timeOffset * inputTimeScale) / inputTimeScale;\n sample.dts = normalizePts(sample.dts - initDTS.baseTime * inputTimeScale / initDTS.timescale, timeOffset * inputTimeScale) / inputTimeScale;\n }\n const samples = track.samples;\n track.samples = [];\n return {\n samples\n };\n}\nfunction flushTextTrackUserdataCueSamples(track, timeOffset, initPTS) {\n const length = track.samples.length;\n if (!length) {\n return;\n }\n const inputTimeScale = track.inputTimeScale;\n for (let index = 0; index < length; index++) {\n const sample = track.samples[index];\n // setting text pts, dts to relative time\n // using this._initPTS and this._initDTS to calculate relative time\n sample.pts = normalizePts(sample.pts - initPTS.baseTime * inputTimeScale / initPTS.timescale, timeOffset * inputTimeScale) / inputTimeScale;\n }\n track.samples.sort((a, b) => a.pts - b.pts);\n const samples = track.samples;\n track.samples = [];\n return {\n samples\n };\n}\nclass Mp4Sample {\n constructor(isKeyframe, duration, size, cts) {\n this.size = void 0;\n this.duration = void 0;\n this.cts = void 0;\n this.flags = void 0;\n this.duration = duration;\n this.size = size;\n this.cts = cts;\n this.flags = {\n isLeading: 0,\n isDependedOn: 0,\n hasRedundancy: 0,\n degradPrio: 0,\n dependsOn: isKeyframe ? 2 : 1,\n isNonSync: isKeyframe ? 0 : 1\n };\n }\n}\n\nclass PassThroughRemuxer {\n constructor() {\n this.emitInitSegment = false;\n this.audioCodec = void 0;\n this.videoCodec = void 0;\n this.initData = void 0;\n this.initPTS = null;\n this.initTracks = void 0;\n this.lastEndTime = null;\n }\n destroy() {}\n resetTimeStamp(defaultInitPTS) {\n this.initPTS = defaultInitPTS;\n this.lastEndTime = null;\n }\n resetNextTimestamp() {\n this.lastEndTime = null;\n }\n resetInitSegment(initSegment, audioCodec, videoCodec, decryptdata) {\n this.audioCodec = audioCodec;\n this.videoCodec = videoCodec;\n this.generateInitSegment(patchEncyptionData(initSegment, decryptdata));\n this.emitInitSegment = true;\n }\n generateInitSegment(initSegment) {\n let {\n audioCodec,\n videoCodec\n } = this;\n if (!(initSegment != null && initSegment.byteLength)) {\n this.initTracks = undefined;\n this.initData = undefined;\n return;\n }\n const initData = this.initData = parseInitSegment(initSegment);\n\n // Get codec from initSegment or fallback to default\n if (initData.audio) {\n audioCodec = getParsedTrackCodec(initData.audio, ElementaryStreamTypes.AUDIO);\n }\n if (initData.video) {\n videoCodec = getParsedTrackCodec(initData.video, ElementaryStreamTypes.VIDEO);\n }\n const tracks = {};\n if (initData.audio && initData.video) {\n tracks.audiovideo = {\n container: 'video/mp4',\n codec: audioCodec + ',' + videoCodec,\n initSegment,\n id: 'main'\n };\n } else if (initData.audio) {\n tracks.audio = {\n container: 'audio/mp4',\n codec: audioCodec,\n initSegment,\n id: 'audio'\n };\n } else if (initData.video) {\n tracks.video = {\n container: 'video/mp4',\n codec: videoCodec,\n initSegment,\n id: 'main'\n };\n } else {\n logger.warn('[passthrough-remuxer.ts]: initSegment does not contain moov or trak boxes.');\n }\n this.initTracks = tracks;\n }\n remux(audioTrack, videoTrack, id3Track, textTrack, timeOffset, accurateTimeOffset) {\n var _initData, _initData2;\n let {\n initPTS,\n lastEndTime\n } = this;\n const result = {\n audio: undefined,\n video: undefined,\n text: textTrack,\n id3: id3Track,\n initSegment: undefined\n };\n\n // If we haven't yet set a lastEndDTS, or it was reset, set it to the provided timeOffset. We want to use the\n // lastEndDTS over timeOffset whenever possible; during progressive playback, the media source will not update\n // the media duration (which is what timeOffset is provided as) before we need to process the next chunk.\n if (!isFiniteNumber(lastEndTime)) {\n lastEndTime = this.lastEndTime = timeOffset || 0;\n }\n\n // The binary segment data is added to the videoTrack in the mp4demuxer. We don't check to see if the data is only\n // audio or video (or both); adding it to video was an arbitrary choice.\n const data = videoTrack.samples;\n if (!(data != null && data.length)) {\n return result;\n }\n const initSegment = {\n initPTS: undefined,\n timescale: 1\n };\n let initData = this.initData;\n if (!((_initData = initData) != null && _initData.length)) {\n this.generateInitSegment(data);\n initData = this.initData;\n }\n if (!((_initData2 = initData) != null && _initData2.length)) {\n // We can't remux if the initSegment could not be generated\n logger.warn('[passthrough-remuxer.ts]: Failed to generate initSegment.');\n return result;\n }\n if (this.emitInitSegment) {\n initSegment.tracks = this.initTracks;\n this.emitInitSegment = false;\n }\n const duration = getDuration(data, initData);\n const startDTS = getStartDTS(initData, data);\n const decodeTime = startDTS === null ? timeOffset : startDTS;\n if (isInvalidInitPts(initPTS, decodeTime, timeOffset, duration) || initSegment.timescale !== initPTS.timescale && accurateTimeOffset) {\n initSegment.initPTS = decodeTime - timeOffset;\n if (initPTS && initPTS.timescale === 1) {\n logger.warn(`Adjusting initPTS by ${initSegment.initPTS - initPTS.baseTime}`);\n }\n this.initPTS = initPTS = {\n baseTime: initSegment.initPTS,\n timescale: 1\n };\n }\n const startTime = audioTrack ? decodeTime - initPTS.baseTime / initPTS.timescale : lastEndTime;\n const endTime = startTime + duration;\n offsetStartDTS(initData, data, initPTS.baseTime / initPTS.timescale);\n if (duration > 0) {\n this.lastEndTime = endTime;\n } else {\n logger.warn('Duration parsed from mp4 should be greater than zero');\n this.resetNextTimestamp();\n }\n const hasAudio = !!initData.audio;\n const hasVideo = !!initData.video;\n let type = '';\n if (hasAudio) {\n type += 'audio';\n }\n if (hasVideo) {\n type += 'video';\n }\n const track = {\n data1: data,\n startPTS: startTime,\n startDTS: startTime,\n endPTS: endTime,\n endDTS: endTime,\n type,\n hasAudio,\n hasVideo,\n nb: 1,\n dropped: 0\n };\n result.audio = track.type === 'audio' ? track : undefined;\n result.video = track.type !== 'audio' ? track : undefined;\n result.initSegment = initSegment;\n result.id3 = flushTextTrackMetadataCueSamples(id3Track, timeOffset, initPTS, initPTS);\n if (textTrack.samples.length) {\n result.text = flushTextTrackUserdataCueSamples(textTrack, timeOffset, initPTS);\n }\n return result;\n }\n}\nfunction isInvalidInitPts(initPTS, startDTS, timeOffset, duration) {\n if (initPTS === null) {\n return true;\n }\n // InitPTS is invalid when distance from program would be more than segment duration or a minimum of one second\n const minDuration = Math.max(duration, 1);\n const startTime = startDTS - initPTS.baseTime / initPTS.timescale;\n return Math.abs(startTime - timeOffset) > minDuration;\n}\nfunction getParsedTrackCodec(track, type) {\n const parsedCodec = track == null ? void 0 : track.codec;\n if (parsedCodec && parsedCodec.length > 4) {\n return parsedCodec;\n }\n if (type === ElementaryStreamTypes.AUDIO) {\n if (parsedCodec === 'ec-3' || parsedCodec === 'ac-3' || parsedCodec === 'alac') {\n return parsedCodec;\n }\n if (parsedCodec === 'fLaC' || parsedCodec === 'Opus') {\n // Opting not to get `preferManagedMediaSource` from player config for isSupported() check for simplicity\n const preferManagedMediaSource = false;\n return getCodecCompatibleName(parsedCodec, preferManagedMediaSource);\n }\n const result = 'mp4a.40.5';\n logger.info(`Parsed audio codec \"${parsedCodec}\" or audio object type not handled. Using \"${result}\"`);\n return result;\n }\n // Provide defaults based on codec type\n // This allows for some playback of some fmp4 playlists without CODECS defined in manifest\n logger.warn(`Unhandled video codec \"${parsedCodec}\"`);\n if (parsedCodec === 'hvc1' || parsedCodec === 'hev1') {\n return 'hvc1.1.6.L120.90';\n }\n if (parsedCodec === 'av01') {\n return 'av01.0.04M.08';\n }\n return 'avc1.42e01e';\n}\n\nlet now;\n// performance.now() not available on WebWorker, at least on Safari Desktop\ntry {\n now = self.performance.now.bind(self.performance);\n} catch (err) {\n logger.debug('Unable to use Performance API on this environment');\n now = optionalSelf == null ? void 0 : optionalSelf.Date.now;\n}\nconst muxConfig = [{\n demux: MP4Demuxer,\n remux: PassThroughRemuxer\n}, {\n demux: TSDemuxer,\n remux: MP4Remuxer\n}, {\n demux: AACDemuxer,\n remux: MP4Remuxer\n}, {\n demux: MP3Demuxer,\n remux: MP4Remuxer\n}];\n{\n muxConfig.splice(2, 0, {\n demux: AC3Demuxer,\n remux: MP4Remuxer\n });\n}\nclass Transmuxer {\n constructor(observer, typeSupported, config, vendor, id) {\n this.async = false;\n this.observer = void 0;\n this.typeSupported = void 0;\n this.config = void 0;\n this.vendor = void 0;\n this.id = void 0;\n this.demuxer = void 0;\n this.remuxer = void 0;\n this.decrypter = void 0;\n this.probe = void 0;\n this.decryptionPromise = null;\n this.transmuxConfig = void 0;\n this.currentTransmuxState = void 0;\n this.observer = observer;\n this.typeSupported = typeSupported;\n this.config = config;\n this.vendor = vendor;\n this.id = id;\n }\n configure(transmuxConfig) {\n this.transmuxConfig = transmuxConfig;\n if (this.decrypter) {\n this.decrypter.reset();\n }\n }\n push(data, decryptdata, chunkMeta, state) {\n const stats = chunkMeta.transmuxing;\n stats.executeStart = now();\n let uintData = new Uint8Array(data);\n const {\n currentTransmuxState,\n transmuxConfig\n } = this;\n if (state) {\n this.currentTransmuxState = state;\n }\n const {\n contiguous,\n discontinuity,\n trackSwitch,\n accurateTimeOffset,\n timeOffset,\n initSegmentChange\n } = state || currentTransmuxState;\n const {\n audioCodec,\n videoCodec,\n defaultInitPts,\n duration,\n initSegmentData\n } = transmuxConfig;\n const keyData = getEncryptionType(uintData, decryptdata);\n if (keyData && keyData.method === 'AES-128') {\n const decrypter = this.getDecrypter();\n // Software decryption is synchronous; webCrypto is not\n if (decrypter.isSync()) {\n // Software decryption is progressive. Progressive decryption may not return a result on each call. Any cached\n // data is handled in the flush() call\n let decryptedData = decrypter.softwareDecrypt(uintData, keyData.key.buffer, keyData.iv.buffer);\n // For Low-Latency HLS Parts, decrypt in place, since part parsing is expected on push progress\n const loadingParts = chunkMeta.part > -1;\n if (loadingParts) {\n decryptedData = decrypter.flush();\n }\n if (!decryptedData) {\n stats.executeEnd = now();\n return emptyResult(chunkMeta);\n }\n uintData = new Uint8Array(decryptedData);\n } else {\n this.decryptionPromise = decrypter.webCryptoDecrypt(uintData, keyData.key.buffer, keyData.iv.buffer).then(decryptedData => {\n // Calling push here is important; if flush() is called while this is still resolving, this ensures that\n // the decrypted data has been transmuxed\n const result = this.push(decryptedData, null, chunkMeta);\n this.decryptionPromise = null;\n return result;\n });\n return this.decryptionPromise;\n }\n }\n const resetMuxers = this.needsProbing(discontinuity, trackSwitch);\n if (resetMuxers) {\n const error = this.configureTransmuxer(uintData);\n if (error) {\n logger.warn(`[transmuxer] ${error.message}`);\n this.observer.emit(Events.ERROR, Events.ERROR, {\n type: ErrorTypes.MEDIA_ERROR,\n details: ErrorDetails.FRAG_PARSING_ERROR,\n fatal: false,\n error,\n reason: error.message\n });\n stats.executeEnd = now();\n return emptyResult(chunkMeta);\n }\n }\n if (discontinuity || trackSwitch || initSegmentChange || resetMuxers) {\n this.resetInitSegment(initSegmentData, audioCodec, videoCodec, duration, decryptdata);\n }\n if (discontinuity || initSegmentChange || resetMuxers) {\n this.resetInitialTimestamp(defaultInitPts);\n }\n if (!contiguous) {\n this.resetContiguity();\n }\n const result = this.transmux(uintData, keyData, timeOffset, accurateTimeOffset, chunkMeta);\n const currentState = this.currentTransmuxState;\n currentState.contiguous = true;\n currentState.discontinuity = false;\n currentState.trackSwitch = false;\n stats.executeEnd = now();\n return result;\n }\n\n // Due to data caching, flush calls can produce more than one TransmuxerResult (hence the Array type)\n flush(chunkMeta) {\n const stats = chunkMeta.transmuxing;\n stats.executeStart = now();\n const {\n decrypter,\n currentTransmuxState,\n decryptionPromise\n } = this;\n if (decryptionPromise) {\n // Upon resolution, the decryption promise calls push() and returns its TransmuxerResult up the stack. Therefore\n // only flushing is required for async decryption\n return decryptionPromise.then(() => {\n return this.flush(chunkMeta);\n });\n }\n const transmuxResults = [];\n const {\n timeOffset\n } = currentTransmuxState;\n if (decrypter) {\n // The decrypter may have data cached, which needs to be demuxed. In this case we'll have two TransmuxResults\n // This happens in the case that we receive only 1 push call for a segment (either for non-progressive downloads,\n // or for progressive downloads with small segments)\n const decryptedData = decrypter.flush();\n if (decryptedData) {\n // Push always returns a TransmuxerResult if decryptdata is null\n transmuxResults.push(this.push(decryptedData, null, chunkMeta));\n }\n }\n const {\n demuxer,\n remuxer\n } = this;\n if (!demuxer || !remuxer) {\n // If probing failed, then Hls.js has been given content its not able to handle\n stats.executeEnd = now();\n return [emptyResult(chunkMeta)];\n }\n const demuxResultOrPromise = demuxer.flush(timeOffset);\n if (isPromise(demuxResultOrPromise)) {\n // Decrypt final SAMPLE-AES samples\n return demuxResultOrPromise.then(demuxResult => {\n this.flushRemux(transmuxResults, demuxResult, chunkMeta);\n return transmuxResults;\n });\n }\n this.flushRemux(transmuxResults, demuxResultOrPromise, chunkMeta);\n return transmuxResults;\n }\n flushRemux(transmuxResults, demuxResult, chunkMeta) {\n const {\n audioTrack,\n videoTrack,\n id3Track,\n textTrack\n } = demuxResult;\n const {\n accurateTimeOffset,\n timeOffset\n } = this.currentTransmuxState;\n logger.log(`[transmuxer.ts]: Flushed fragment ${chunkMeta.sn}${chunkMeta.part > -1 ? ' p: ' + chunkMeta.part : ''} of level ${chunkMeta.level}`);\n const remuxResult = this.remuxer.remux(audioTrack, videoTrack, id3Track, textTrack, timeOffset, accurateTimeOffset, true, this.id);\n transmuxResults.push({\n remuxResult,\n chunkMeta\n });\n chunkMeta.transmuxing.executeEnd = now();\n }\n resetInitialTimestamp(defaultInitPts) {\n const {\n demuxer,\n remuxer\n } = this;\n if (!demuxer || !remuxer) {\n return;\n }\n demuxer.resetTimeStamp(defaultInitPts);\n remuxer.resetTimeStamp(defaultInitPts);\n }\n resetContiguity() {\n const {\n demuxer,\n remuxer\n } = this;\n if (!demuxer || !remuxer) {\n return;\n }\n demuxer.resetContiguity();\n remuxer.resetNextTimestamp();\n }\n resetInitSegment(initSegmentData, audioCodec, videoCodec, trackDuration, decryptdata) {\n const {\n demuxer,\n remuxer\n } = this;\n if (!demuxer || !remuxer) {\n return;\n }\n demuxer.resetInitSegment(initSegmentData, audioCodec, videoCodec, trackDuration);\n remuxer.resetInitSegment(initSegmentData, audioCodec, videoCodec, decryptdata);\n }\n destroy() {\n if (this.demuxer) {\n this.demuxer.destroy();\n this.demuxer = undefined;\n }\n if (this.remuxer) {\n this.remuxer.destroy();\n this.remuxer = undefined;\n }\n }\n transmux(data, keyData, timeOffset, accurateTimeOffset, chunkMeta) {\n let result;\n if (keyData && keyData.method === 'SAMPLE-AES') {\n result = this.transmuxSampleAes(data, keyData, timeOffset, accurateTimeOffset, chunkMeta);\n } else {\n result = this.transmuxUnencrypted(data, timeOffset, accurateTimeOffset, chunkMeta);\n }\n return result;\n }\n transmuxUnencrypted(data, timeOffset, accurateTimeOffset, chunkMeta) {\n const {\n audioTrack,\n videoTrack,\n id3Track,\n textTrack\n } = this.demuxer.demux(data, timeOffset, false, !this.config.progressive);\n const remuxResult = this.remuxer.remux(audioTrack, videoTrack, id3Track, textTrack, timeOffset, accurateTimeOffset, false, this.id);\n return {\n remuxResult,\n chunkMeta\n };\n }\n transmuxSampleAes(data, decryptData, timeOffset, accurateTimeOffset, chunkMeta) {\n return this.demuxer.demuxSampleAes(data, decryptData, timeOffset).then(demuxResult => {\n const remuxResult = this.remuxer.remux(demuxResult.audioTrack, demuxResult.videoTrack, demuxResult.id3Track, demuxResult.textTrack, timeOffset, accurateTimeOffset, false, this.id);\n return {\n remuxResult,\n chunkMeta\n };\n });\n }\n configureTransmuxer(data) {\n const {\n config,\n observer,\n typeSupported,\n vendor\n } = this;\n // probe for content type\n let mux;\n for (let i = 0, len = muxConfig.length; i < len; i++) {\n var _muxConfig$i$demux;\n if ((_muxConfig$i$demux = muxConfig[i].demux) != null && _muxConfig$i$demux.probe(data)) {\n mux = muxConfig[i];\n break;\n }\n }\n if (!mux) {\n return new Error('Failed to find demuxer by probing fragment data');\n }\n // so let's check that current remuxer and demuxer are still valid\n const demuxer = this.demuxer;\n const remuxer = this.remuxer;\n const Remuxer = mux.remux;\n const Demuxer = mux.demux;\n if (!remuxer || !(remuxer instanceof Remuxer)) {\n this.remuxer = new Remuxer(observer, config, typeSupported, vendor);\n }\n if (!demuxer || !(demuxer instanceof Demuxer)) {\n this.demuxer = new Demuxer(observer, config, typeSupported);\n this.probe = Demuxer.probe;\n }\n }\n needsProbing(discontinuity, trackSwitch) {\n // in case of continuity change, or track switch\n // we might switch from content type (AAC container to TS container, or TS to fmp4 for example)\n return !this.demuxer || !this.remuxer || discontinuity || trackSwitch;\n }\n getDecrypter() {\n let decrypter = this.decrypter;\n if (!decrypter) {\n decrypter = this.decrypter = new Decrypter(this.config);\n }\n return decrypter;\n }\n}\nfunction getEncryptionType(data, decryptData) {\n let encryptionType = null;\n if (data.byteLength > 0 && (decryptData == null ? void 0 : decryptData.key) != null && decryptData.iv !== null && decryptData.method != null) {\n encryptionType = decryptData;\n }\n return encryptionType;\n}\nconst emptyResult = chunkMeta => ({\n remuxResult: {},\n chunkMeta\n});\nfunction isPromise(p) {\n return 'then' in p && p.then instanceof Function;\n}\nclass TransmuxConfig {\n constructor(audioCodec, videoCodec, initSegmentData, duration, defaultInitPts) {\n this.audioCodec = void 0;\n this.videoCodec = void 0;\n this.initSegmentData = void 0;\n this.duration = void 0;\n this.defaultInitPts = void 0;\n this.audioCodec = audioCodec;\n this.videoCodec = videoCodec;\n this.initSegmentData = initSegmentData;\n this.duration = duration;\n this.defaultInitPts = defaultInitPts || null;\n }\n}\nclass TransmuxState {\n constructor(discontinuity, contiguous, accurateTimeOffset, trackSwitch, timeOffset, initSegmentChange) {\n this.discontinuity = void 0;\n this.contiguous = void 0;\n this.accurateTimeOffset = void 0;\n this.trackSwitch = void 0;\n this.timeOffset = void 0;\n this.initSegmentChange = void 0;\n this.discontinuity = discontinuity;\n this.contiguous = contiguous;\n this.accurateTimeOffset = accurateTimeOffset;\n this.trackSwitch = trackSwitch;\n this.timeOffset = timeOffset;\n this.initSegmentChange = initSegmentChange;\n }\n}\n\nvar eventemitter3 = {exports: {}};\n\n(function (module) {\n\n\tvar has = Object.prototype.hasOwnProperty\n\t , prefix = '~';\n\n\t/**\n\t * Constructor to create a storage for our `EE` objects.\n\t * An `Events` instance is a plain object whose properties are event names.\n\t *\n\t * @constructor\n\t * @private\n\t */\n\tfunction Events() {}\n\n\t//\n\t// We try to not inherit from `Object.prototype`. In some engines creating an\n\t// instance in this way is faster than calling `Object.create(null)` directly.\n\t// If `Object.create(null)` is not supported we prefix the event names with a\n\t// character to make sure that the built-in object properties are not\n\t// overridden or used as an attack vector.\n\t//\n\tif (Object.create) {\n\t Events.prototype = Object.create(null);\n\n\t //\n\t // This hack is needed because the `__proto__` property is still inherited in\n\t // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n\t //\n\t if (!new Events().__proto__) prefix = false;\n\t}\n\n\t/**\n\t * Representation of a single event listener.\n\t *\n\t * @param {Function} fn The listener function.\n\t * @param {*} context The context to invoke the listener with.\n\t * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n\t * @constructor\n\t * @private\n\t */\n\tfunction EE(fn, context, once) {\n\t this.fn = fn;\n\t this.context = context;\n\t this.once = once || false;\n\t}\n\n\t/**\n\t * Add a listener for a given event.\n\t *\n\t * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n\t * @param {(String|Symbol)} event The event name.\n\t * @param {Function} fn The listener function.\n\t * @param {*} context The context to invoke the listener with.\n\t * @param {Boolean} once Specify if the listener is a one-time listener.\n\t * @returns {EventEmitter}\n\t * @private\n\t */\n\tfunction addListener(emitter, event, fn, context, once) {\n\t if (typeof fn !== 'function') {\n\t throw new TypeError('The listener must be a function');\n\t }\n\n\t var listener = new EE(fn, context || emitter, once)\n\t , evt = prefix ? prefix + event : event;\n\n\t if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n\t else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n\t else emitter._events[evt] = [emitter._events[evt], listener];\n\n\t return emitter;\n\t}\n\n\t/**\n\t * Clear event by name.\n\t *\n\t * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n\t * @param {(String|Symbol)} evt The Event name.\n\t * @private\n\t */\n\tfunction clearEvent(emitter, evt) {\n\t if (--emitter._eventsCount === 0) emitter._events = new Events();\n\t else delete emitter._events[evt];\n\t}\n\n\t/**\n\t * Minimal `EventEmitter` interface that is molded against the Node.js\n\t * `EventEmitter` interface.\n\t *\n\t * @constructor\n\t * @public\n\t */\n\tfunction EventEmitter() {\n\t this._events = new Events();\n\t this._eventsCount = 0;\n\t}\n\n\t/**\n\t * Return an array listing the events for which the emitter has registered\n\t * listeners.\n\t *\n\t * @returns {Array}\n\t * @public\n\t */\n\tEventEmitter.prototype.eventNames = function eventNames() {\n\t var names = []\n\t , events\n\t , name;\n\n\t if (this._eventsCount === 0) return names;\n\n\t for (name in (events = this._events)) {\n\t if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n\t }\n\n\t if (Object.getOwnPropertySymbols) {\n\t return names.concat(Object.getOwnPropertySymbols(events));\n\t }\n\n\t return names;\n\t};\n\n\t/**\n\t * Return the listeners registered for a given event.\n\t *\n\t * @param {(String|Symbol)} event The event name.\n\t * @returns {Array} The registered listeners.\n\t * @public\n\t */\n\tEventEmitter.prototype.listeners = function listeners(event) {\n\t var evt = prefix ? prefix + event : event\n\t , handlers = this._events[evt];\n\n\t if (!handlers) return [];\n\t if (handlers.fn) return [handlers.fn];\n\n\t for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n\t ee[i] = handlers[i].fn;\n\t }\n\n\t return ee;\n\t};\n\n\t/**\n\t * Return the number of listeners listening to a given event.\n\t *\n\t * @param {(String|Symbol)} event The event name.\n\t * @returns {Number} The number of listeners.\n\t * @public\n\t */\n\tEventEmitter.prototype.listenerCount = function listenerCount(event) {\n\t var evt = prefix ? prefix + event : event\n\t , listeners = this._events[evt];\n\n\t if (!listeners) return 0;\n\t if (listeners.fn) return 1;\n\t return listeners.length;\n\t};\n\n\t/**\n\t * Calls each of the listeners registered for a given event.\n\t *\n\t * @param {(String|Symbol)} event The event name.\n\t * @returns {Boolean} `true` if the event had listeners, else `false`.\n\t * @public\n\t */\n\tEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n\t var evt = prefix ? prefix + event : event;\n\n\t if (!this._events[evt]) return false;\n\n\t var listeners = this._events[evt]\n\t , len = arguments.length\n\t , args\n\t , i;\n\n\t if (listeners.fn) {\n\t if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n\t switch (len) {\n\t case 1: return listeners.fn.call(listeners.context), true;\n\t case 2: return listeners.fn.call(listeners.context, a1), true;\n\t case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n\t case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n\t case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n\t case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n\t }\n\n\t for (i = 1, args = new Array(len -1); i < len; i++) {\n\t args[i - 1] = arguments[i];\n\t }\n\n\t listeners.fn.apply(listeners.context, args);\n\t } else {\n\t var length = listeners.length\n\t , j;\n\n\t for (i = 0; i < length; i++) {\n\t if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n\t switch (len) {\n\t case 1: listeners[i].fn.call(listeners[i].context); break;\n\t case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n\t case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n\t case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n\t default:\n\t if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n\t args[j - 1] = arguments[j];\n\t }\n\n\t listeners[i].fn.apply(listeners[i].context, args);\n\t }\n\t }\n\t }\n\n\t return true;\n\t};\n\n\t/**\n\t * Add a listener for a given event.\n\t *\n\t * @param {(String|Symbol)} event The event name.\n\t * @param {Function} fn The listener function.\n\t * @param {*} [context=this] The context to invoke the listener with.\n\t * @returns {EventEmitter} `this`.\n\t * @public\n\t */\n\tEventEmitter.prototype.on = function on(event, fn, context) {\n\t return addListener(this, event, fn, context, false);\n\t};\n\n\t/**\n\t * Add a one-time listener for a given event.\n\t *\n\t * @param {(String|Symbol)} event The event name.\n\t * @param {Function} fn The listener function.\n\t * @param {*} [context=this] The context to invoke the listener with.\n\t * @returns {EventEmitter} `this`.\n\t * @public\n\t */\n\tEventEmitter.prototype.once = function once(event, fn, context) {\n\t return addListener(this, event, fn, context, true);\n\t};\n\n\t/**\n\t * Remove the listeners of a given event.\n\t *\n\t * @param {(String|Symbol)} event The event name.\n\t * @param {Function} fn Only remove the listeners that match this function.\n\t * @param {*} context Only remove the listeners that have this context.\n\t * @param {Boolean} once Only remove one-time listeners.\n\t * @returns {EventEmitter} `this`.\n\t * @public\n\t */\n\tEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n\t var evt = prefix ? prefix + event : event;\n\n\t if (!this._events[evt]) return this;\n\t if (!fn) {\n\t clearEvent(this, evt);\n\t return this;\n\t }\n\n\t var listeners = this._events[evt];\n\n\t if (listeners.fn) {\n\t if (\n\t listeners.fn === fn &&\n\t (!once || listeners.once) &&\n\t (!context || listeners.context === context)\n\t ) {\n\t clearEvent(this, evt);\n\t }\n\t } else {\n\t for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n\t if (\n\t listeners[i].fn !== fn ||\n\t (once && !listeners[i].once) ||\n\t (context && listeners[i].context !== context)\n\t ) {\n\t events.push(listeners[i]);\n\t }\n\t }\n\n\t //\n\t // Reset the array, or remove it completely if we have no more listeners.\n\t //\n\t if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n\t else clearEvent(this, evt);\n\t }\n\n\t return this;\n\t};\n\n\t/**\n\t * Remove all listeners, or those of the specified event.\n\t *\n\t * @param {(String|Symbol)} [event] The event name.\n\t * @returns {EventEmitter} `this`.\n\t * @public\n\t */\n\tEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n\t var evt;\n\n\t if (event) {\n\t evt = prefix ? prefix + event : event;\n\t if (this._events[evt]) clearEvent(this, evt);\n\t } else {\n\t this._events = new Events();\n\t this._eventsCount = 0;\n\t }\n\n\t return this;\n\t};\n\n\t//\n\t// Alias methods names because people roll like that.\n\t//\n\tEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\tEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n\t//\n\t// Expose the prefix.\n\t//\n\tEventEmitter.prefixed = prefix;\n\n\t//\n\t// Allow `EventEmitter` to be imported as module namespace.\n\t//\n\tEventEmitter.EventEmitter = EventEmitter;\n\n\t//\n\t// Expose the module.\n\t//\n\t{\n\t module.exports = EventEmitter;\n\t} \n} (eventemitter3));\n\nvar eventemitter3Exports = eventemitter3.exports;\nvar EventEmitter = /*@__PURE__*/getDefaultExportFromCjs(eventemitter3Exports);\n\nclass TransmuxerInterface {\n constructor(hls, id, onTransmuxComplete, onFlush) {\n this.error = null;\n this.hls = void 0;\n this.id = void 0;\n this.observer = void 0;\n this.frag = null;\n this.part = null;\n this.useWorker = void 0;\n this.workerContext = null;\n this.onwmsg = void 0;\n this.transmuxer = null;\n this.onTransmuxComplete = void 0;\n this.onFlush = void 0;\n const config = hls.config;\n this.hls = hls;\n this.id = id;\n this.useWorker = !!config.enableWorker;\n this.onTransmuxComplete = onTransmuxComplete;\n this.onFlush = onFlush;\n const forwardMessage = (ev, data) => {\n data = data || {};\n data.frag = this.frag;\n data.id = this.id;\n if (ev === Events.ERROR) {\n this.error = data.error;\n }\n this.hls.trigger(ev, data);\n };\n\n // forward events to main thread\n this.observer = new EventEmitter();\n this.observer.on(Events.FRAG_DECRYPTED, forwardMessage);\n this.observer.on(Events.ERROR, forwardMessage);\n const MediaSource = getMediaSource(config.preferManagedMediaSource) || {\n isTypeSupported: () => false\n };\n const m2tsTypeSupported = {\n mpeg: MediaSource.isTypeSupported('audio/mpeg'),\n mp3: MediaSource.isTypeSupported('audio/mp4; codecs=\"mp3\"'),\n ac3: MediaSource.isTypeSupported('audio/mp4; codecs=\"ac-3\"') \n };\n if (this.useWorker && typeof Worker !== 'undefined') {\n const canCreateWorker = config.workerPath || hasUMDWorker();\n if (canCreateWorker) {\n try {\n if (config.workerPath) {\n logger.log(`loading Web Worker ${config.workerPath} for \"${id}\"`);\n this.workerContext = loadWorker(config.workerPath);\n } else {\n logger.log(`injecting Web Worker for \"${id}\"`);\n this.workerContext = injectWorker();\n }\n this.onwmsg = event => this.onWorkerMessage(event);\n const {\n worker\n } = this.workerContext;\n worker.addEventListener('message', this.onwmsg);\n worker.onerror = event => {\n const error = new Error(`${event.message} (${event.filename}:${event.lineno})`);\n config.enableWorker = false;\n logger.warn(`Error in \"${id}\" Web Worker, fallback to inline`);\n this.hls.trigger(Events.ERROR, {\n type: ErrorTypes.OTHER_ERROR,\n details: ErrorDetails.INTERNAL_EXCEPTION,\n fatal: false,\n event: 'demuxerWorker',\n error\n });\n };\n worker.postMessage({\n cmd: 'init',\n typeSupported: m2tsTypeSupported,\n vendor: '',\n id: id,\n config: JSON.stringify(config)\n });\n } catch (err) {\n logger.warn(`Error setting up \"${id}\" Web Worker, fallback to inline`, err);\n this.resetWorker();\n this.error = null;\n this.transmuxer = new Transmuxer(this.observer, m2tsTypeSupported, config, '', id);\n }\n return;\n }\n }\n this.transmuxer = new Transmuxer(this.observer, m2tsTypeSupported, config, '', id);\n }\n resetWorker() {\n if (this.workerContext) {\n const {\n worker,\n objectURL\n } = this.workerContext;\n if (objectURL) {\n // revoke the Object URL that was used to create transmuxer worker, so as not to leak it\n self.URL.revokeObjectURL(objectURL);\n }\n worker.removeEventListener('message', this.onwmsg);\n worker.onerror = null;\n worker.terminate();\n this.workerContext = null;\n }\n }\n destroy() {\n if (this.workerContext) {\n this.resetWorker();\n this.onwmsg = undefined;\n } else {\n const transmuxer = this.transmuxer;\n if (transmuxer) {\n transmuxer.destroy();\n this.transmuxer = null;\n }\n }\n const observer = this.observer;\n if (observer) {\n observer.removeAllListeners();\n }\n this.frag = null;\n // @ts-ignore\n this.observer = null;\n // @ts-ignore\n this.hls = null;\n }\n push(data, initSegmentData, audioCodec, videoCodec, frag, part, duration, accurateTimeOffset, chunkMeta, defaultInitPTS) {\n var _frag$initSegment, _lastFrag$initSegment;\n chunkMeta.transmuxing.start = self.performance.now();\n const {\n transmuxer\n } = this;\n const timeOffset = part ? part.start : frag.start;\n // TODO: push \"clear-lead\" decrypt data for unencrypted fragments in streams with encrypted ones\n const decryptdata = frag.decryptdata;\n const lastFrag = this.frag;\n const discontinuity = !(lastFrag && frag.cc === lastFrag.cc);\n const trackSwitch = !(lastFrag && chunkMeta.level === lastFrag.level);\n const snDiff = lastFrag ? chunkMeta.sn - lastFrag.sn : -1;\n const partDiff = this.part ? chunkMeta.part - this.part.index : -1;\n const progressive = snDiff === 0 && chunkMeta.id > 1 && chunkMeta.id === (lastFrag == null ? void 0 : lastFrag.stats.chunkCount);\n const contiguous = !trackSwitch && (snDiff === 1 || snDiff === 0 && (partDiff === 1 || progressive && partDiff <= 0));\n const now = self.performance.now();\n if (trackSwitch || snDiff || frag.stats.parsing.start === 0) {\n frag.stats.parsing.start = now;\n }\n if (part && (partDiff || !contiguous)) {\n part.stats.parsing.start = now;\n }\n const initSegmentChange = !(lastFrag && ((_frag$initSegment = frag.initSegment) == null ? void 0 : _frag$initSegment.url) === ((_lastFrag$initSegment = lastFrag.initSegment) == null ? void 0 : _lastFrag$initSegment.url));\n const state = new TransmuxState(discontinuity, contiguous, accurateTimeOffset, trackSwitch, timeOffset, initSegmentChange);\n if (!contiguous || discontinuity || initSegmentChange) {\n logger.log(`[transmuxer-interface, ${frag.type}]: Starting new transmux session for sn: ${chunkMeta.sn} p: ${chunkMeta.part} level: ${chunkMeta.level} id: ${chunkMeta.id}\n discontinuity: ${discontinuity}\n trackSwitch: ${trackSwitch}\n contiguous: ${contiguous}\n accurateTimeOffset: ${accurateTimeOffset}\n timeOffset: ${timeOffset}\n initSegmentChange: ${initSegmentChange}`);\n const config = new TransmuxConfig(audioCodec, videoCodec, initSegmentData, duration, defaultInitPTS);\n this.configureTransmuxer(config);\n }\n this.frag = frag;\n this.part = part;\n\n // Frags with sn of 'initSegment' are not transmuxed\n if (this.workerContext) {\n // post fragment payload as transferable objects for ArrayBuffer (no copy)\n this.workerContext.worker.postMessage({\n cmd: 'demux',\n data,\n decryptdata,\n chunkMeta,\n state\n }, data instanceof ArrayBuffer ? [data] : []);\n } else if (transmuxer) {\n const transmuxResult = transmuxer.push(data, decryptdata, chunkMeta, state);\n if (isPromise(transmuxResult)) {\n transmuxer.async = true;\n transmuxResult.then(data => {\n this.handleTransmuxComplete(data);\n }).catch(error => {\n this.transmuxerError(error, chunkMeta, 'transmuxer-interface push error');\n });\n } else {\n transmuxer.async = false;\n this.handleTransmuxComplete(transmuxResult);\n }\n }\n }\n flush(chunkMeta) {\n chunkMeta.transmuxing.start = self.performance.now();\n const {\n transmuxer\n } = this;\n if (this.workerContext) {\n this.workerContext.worker.postMessage({\n cmd: 'flush',\n chunkMeta\n });\n } else if (transmuxer) {\n let transmuxResult = transmuxer.flush(chunkMeta);\n const asyncFlush = isPromise(transmuxResult);\n if (asyncFlush || transmuxer.async) {\n if (!isPromise(transmuxResult)) {\n transmuxResult = Promise.resolve(transmuxResult);\n }\n transmuxResult.then(data => {\n this.handleFlushResult(data, chunkMeta);\n }).catch(error => {\n this.transmuxerError(error, chunkMeta, 'transmuxer-interface flush error');\n });\n } else {\n this.handleFlushResult(transmuxResult, chunkMeta);\n }\n }\n }\n transmuxerError(error, chunkMeta, reason) {\n if (!this.hls) {\n return;\n }\n this.error = error;\n this.hls.trigger(Events.ERROR, {\n type: ErrorTypes.MEDIA_ERROR,\n details: ErrorDetails.FRAG_PARSING_ERROR,\n chunkMeta,\n frag: this.frag || undefined,\n fatal: false,\n error,\n err: error,\n reason\n });\n }\n handleFlushResult(results, chunkMeta) {\n results.forEach(result => {\n this.handleTransmuxComplete(result);\n });\n this.onFlush(chunkMeta);\n }\n onWorkerMessage(event) {\n const data = event.data;\n if (!(data != null && data.event)) {\n logger.warn(`worker message received with no ${data ? 'event name' : 'data'}`);\n return;\n }\n const hls = this.hls;\n if (!this.hls) {\n return;\n }\n switch (data.event) {\n case 'init':\n {\n var _this$workerContext;\n const objectURL = (_this$workerContext = this.workerContext) == null ? void 0 : _this$workerContext.objectURL;\n if (objectURL) {\n // revoke the Object URL that was used to create transmuxer worker, so as not to leak it\n self.URL.revokeObjectURL(objectURL);\n }\n break;\n }\n case 'transmuxComplete':\n {\n this.handleTransmuxComplete(data.data);\n break;\n }\n case 'flush':\n {\n this.onFlush(data.data);\n break;\n }\n\n // pass logs from the worker thread to the main logger\n case 'workerLog':\n if (logger[data.data.logType]) {\n logger[data.data.logType](data.data.message);\n }\n break;\n default:\n {\n data.data = data.data || {};\n data.data.frag = this.frag;\n data.data.id = this.id;\n hls.trigger(data.event, data.data);\n break;\n }\n }\n }\n configureTransmuxer(config) {\n const {\n transmuxer\n } = this;\n if (this.workerContext) {\n this.workerContext.worker.postMessage({\n cmd: 'configure',\n config\n });\n } else if (transmuxer) {\n transmuxer.configure(config);\n }\n }\n handleTransmuxComplete(result) {\n result.chunkMeta.transmuxing.end = self.performance.now();\n this.onTransmuxComplete(result);\n }\n}\n\nfunction subtitleOptionsIdentical(trackList1, trackList2) {\n if (trackList1.length !== trackList2.length) {\n return false;\n }\n for (let i = 0; i < trackList1.length; i++) {\n if (!mediaAttributesIdentical(trackList1[i].attrs, trackList2[i].attrs)) {\n return false;\n }\n }\n return true;\n}\nfunction mediaAttributesIdentical(attrs1, attrs2, customAttributes) {\n // Media options with the same rendition ID must be bit identical\n const stableRenditionId = attrs1['STABLE-RENDITION-ID'];\n if (stableRenditionId && !customAttributes) {\n return stableRenditionId === attrs2['STABLE-RENDITION-ID'];\n }\n // When rendition ID is not present, compare attributes\n return !(customAttributes || ['LANGUAGE', 'NAME', 'CHARACTERISTICS', 'AUTOSELECT', 'DEFAULT', 'FORCED', 'ASSOC-LANGUAGE']).some(subtitleAttribute => attrs1[subtitleAttribute] !== attrs2[subtitleAttribute]);\n}\nfunction subtitleTrackMatchesTextTrack(subtitleTrack, textTrack) {\n return textTrack.label.toLowerCase() === subtitleTrack.name.toLowerCase() && (!textTrack.language || textTrack.language.toLowerCase() === (subtitleTrack.lang || '').toLowerCase());\n}\n\nconst TICK_INTERVAL$2 = 100; // how often to tick in ms\n\nclass AudioStreamController extends BaseStreamController {\n constructor(hls, fragmentTracker, keyLoader) {\n super(hls, fragmentTracker, keyLoader, '[audio-stream-controller]', PlaylistLevelType.AUDIO);\n this.videoBuffer = null;\n this.videoTrackCC = -1;\n this.waitingVideoCC = -1;\n this.bufferedTrack = null;\n this.switchingTrack = null;\n this.trackId = -1;\n this.waitingData = null;\n this.mainDetails = null;\n this.flushing = false;\n this.bufferFlushed = false;\n this.cachedTrackLoadedData = null;\n this._registerListeners();\n }\n onHandlerDestroying() {\n this._unregisterListeners();\n super.onHandlerDestroying();\n this.mainDetails = null;\n this.bufferedTrack = null;\n this.switchingTrack = null;\n }\n _registerListeners() {\n const {\n hls\n } = this;\n hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n hls.on(Events.AUDIO_TRACKS_UPDATED, this.onAudioTracksUpdated, this);\n hls.on(Events.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this);\n hls.on(Events.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this);\n hls.on(Events.ERROR, this.onError, this);\n hls.on(Events.BUFFER_RESET, this.onBufferReset, this);\n hls.on(Events.BUFFER_CREATED, this.onBufferCreated, this);\n hls.on(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n hls.on(Events.BUFFER_FLUSHED, this.onBufferFlushed, this);\n hls.on(Events.INIT_PTS_FOUND, this.onInitPtsFound, this);\n hls.on(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n }\n _unregisterListeners() {\n const {\n hls\n } = this;\n hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n hls.off(Events.AUDIO_TRACKS_UPDATED, this.onAudioTracksUpdated, this);\n hls.off(Events.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this);\n hls.off(Events.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this);\n hls.off(Events.ERROR, this.onError, this);\n hls.off(Events.BUFFER_RESET, this.onBufferReset, this);\n hls.off(Events.BUFFER_CREATED, this.onBufferCreated, this);\n hls.off(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n hls.off(Events.BUFFER_FLUSHED, this.onBufferFlushed, this);\n hls.off(Events.INIT_PTS_FOUND, this.onInitPtsFound, this);\n hls.off(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n }\n\n // INIT_PTS_FOUND is triggered when the video track parsed in the stream-controller has a new PTS value\n onInitPtsFound(event, {\n frag,\n id,\n initPTS,\n timescale\n }) {\n // Always update the new INIT PTS\n // Can change due level switch\n if (id === 'main') {\n const cc = frag.cc;\n this.initPTS[frag.cc] = {\n baseTime: initPTS,\n timescale\n };\n this.log(`InitPTS for cc: ${cc} found from main: ${initPTS}`);\n this.videoTrackCC = cc;\n // If we are waiting, tick immediately to unblock audio fragment transmuxing\n if (this.state === State.WAITING_INIT_PTS) {\n this.tick();\n }\n }\n }\n startLoad(startPosition) {\n if (!this.levels) {\n this.startPosition = startPosition;\n this.state = State.STOPPED;\n return;\n }\n const lastCurrentTime = this.lastCurrentTime;\n this.stopLoad();\n this.setInterval(TICK_INTERVAL$2);\n if (lastCurrentTime > 0 && startPosition === -1) {\n this.log(`Override startPosition with lastCurrentTime @${lastCurrentTime.toFixed(3)}`);\n startPosition = lastCurrentTime;\n this.state = State.IDLE;\n } else {\n this.loadedmetadata = false;\n this.state = State.WAITING_TRACK;\n }\n this.nextLoadPosition = this.startPosition = this.lastCurrentTime = startPosition;\n this.tick();\n }\n doTick() {\n switch (this.state) {\n case State.IDLE:\n this.doTickIdle();\n break;\n case State.WAITING_TRACK:\n {\n var _levels$trackId;\n const {\n levels,\n trackId\n } = this;\n const details = levels == null ? void 0 : (_levels$trackId = levels[trackId]) == null ? void 0 : _levels$trackId.details;\n if (details) {\n if (this.waitForCdnTuneIn(details)) {\n break;\n }\n this.state = State.WAITING_INIT_PTS;\n }\n break;\n }\n case State.FRAG_LOADING_WAITING_RETRY:\n {\n var _this$media;\n const now = performance.now();\n const retryDate = this.retryDate;\n // if current time is gt than retryDate, or if media seeking let's switch to IDLE state to retry loading\n if (!retryDate || now >= retryDate || (_this$media = this.media) != null && _this$media.seeking) {\n const {\n levels,\n trackId\n } = this;\n this.log('RetryDate reached, switch back to IDLE state');\n this.resetStartWhenNotLoaded((levels == null ? void 0 : levels[trackId]) || null);\n this.state = State.IDLE;\n }\n break;\n }\n case State.WAITING_INIT_PTS:\n {\n // Ensure we don't get stuck in the WAITING_INIT_PTS state if the waiting frag CC doesn't match any initPTS\n const waitingData = this.waitingData;\n if (waitingData) {\n const {\n frag,\n part,\n cache,\n complete\n } = waitingData;\n if (this.initPTS[frag.cc] !== undefined) {\n this.waitingData = null;\n this.waitingVideoCC = -1;\n this.state = State.FRAG_LOADING;\n const payload = cache.flush();\n const data = {\n frag,\n part,\n payload,\n networkDetails: null\n };\n this._handleFragmentLoadProgress(data);\n if (complete) {\n super._handleFragmentLoadComplete(data);\n }\n } else if (this.videoTrackCC !== this.waitingVideoCC) {\n // Drop waiting fragment if videoTrackCC has changed since waitingFragment was set and initPTS was not found\n this.log(`Waiting fragment cc (${frag.cc}) cancelled because video is at cc ${this.videoTrackCC}`);\n this.clearWaitingFragment();\n } else {\n // Drop waiting fragment if an earlier fragment is needed\n const pos = this.getLoadPosition();\n const bufferInfo = BufferHelper.bufferInfo(this.mediaBuffer, pos, this.config.maxBufferHole);\n const waitingFragmentAtPosition = fragmentWithinToleranceTest(bufferInfo.end, this.config.maxFragLookUpTolerance, frag);\n if (waitingFragmentAtPosition < 0) {\n this.log(`Waiting fragment cc (${frag.cc}) @ ${frag.start} cancelled because another fragment at ${bufferInfo.end} is needed`);\n this.clearWaitingFragment();\n }\n }\n } else {\n this.state = State.IDLE;\n }\n }\n }\n this.onTickEnd();\n }\n clearWaitingFragment() {\n const waitingData = this.waitingData;\n if (waitingData) {\n this.fragmentTracker.removeFragment(waitingData.frag);\n this.waitingData = null;\n this.waitingVideoCC = -1;\n this.state = State.IDLE;\n }\n }\n resetLoadingState() {\n this.clearWaitingFragment();\n super.resetLoadingState();\n }\n onTickEnd() {\n const {\n media\n } = this;\n if (!(media != null && media.readyState)) {\n // Exit early if we don't have media or if the media hasn't buffered anything yet (readyState 0)\n return;\n }\n this.lastCurrentTime = media.currentTime;\n }\n doTickIdle() {\n const {\n hls,\n levels,\n media,\n trackId\n } = this;\n const config = hls.config;\n\n // 1. if buffering is suspended\n // 2. if video not attached AND\n // start fragment already requested OR start frag prefetch not enabled\n // 3. if tracks or track not loaded and selected\n // then exit loop\n // => if media not attached but start frag prefetch is enabled and start frag not requested yet, we will not exit loop\n if (!this.buffering || !media && (this.startFragRequested || !config.startFragPrefetch) || !(levels != null && levels[trackId])) {\n return;\n }\n const levelInfo = levels[trackId];\n const trackDetails = levelInfo.details;\n if (!trackDetails || trackDetails.live && this.levelLastLoaded !== levelInfo || this.waitForCdnTuneIn(trackDetails)) {\n this.state = State.WAITING_TRACK;\n return;\n }\n const bufferable = this.mediaBuffer ? this.mediaBuffer : this.media;\n if (this.bufferFlushed && bufferable) {\n this.bufferFlushed = false;\n this.afterBufferFlushed(bufferable, ElementaryStreamTypes.AUDIO, PlaylistLevelType.AUDIO);\n }\n const bufferInfo = this.getFwdBufferInfo(bufferable, PlaylistLevelType.AUDIO);\n if (bufferInfo === null) {\n return;\n }\n const {\n bufferedTrack,\n switchingTrack\n } = this;\n if (!switchingTrack && this._streamEnded(bufferInfo, trackDetails)) {\n hls.trigger(Events.BUFFER_EOS, {\n type: 'audio'\n });\n this.state = State.ENDED;\n return;\n }\n const mainBufferInfo = this.getFwdBufferInfo(this.videoBuffer ? this.videoBuffer : this.media, PlaylistLevelType.MAIN);\n const bufferLen = bufferInfo.len;\n const maxBufLen = this.getMaxBufferLength(mainBufferInfo == null ? void 0 : mainBufferInfo.len);\n const fragments = trackDetails.fragments;\n const start = fragments[0].start;\n let targetBufferTime = this.flushing ? this.getLoadPosition() : bufferInfo.end;\n if (switchingTrack && media) {\n const pos = this.getLoadPosition();\n // STABLE\n if (bufferedTrack && !mediaAttributesIdentical(switchingTrack.attrs, bufferedTrack.attrs)) {\n targetBufferTime = pos;\n }\n // if currentTime (pos) is less than alt audio playlist start time, it means that alt audio is ahead of currentTime\n if (trackDetails.PTSKnown && pos < start) {\n // if everything is buffered from pos to start or if audio buffer upfront, let's seek to start\n if (bufferInfo.end > start || bufferInfo.nextStart) {\n this.log('Alt audio track ahead of main track, seek to start of alt audio track');\n media.currentTime = start + 0.05;\n }\n }\n }\n\n // if buffer length is less than maxBufLen, or near the end, find a fragment to load\n if (bufferLen >= maxBufLen && !switchingTrack && targetBufferTime < fragments[fragments.length - 1].start) {\n return;\n }\n let frag = this.getNextFragment(targetBufferTime, trackDetails);\n let atGap = false;\n // Avoid loop loading by using nextLoadPosition set for backtracking and skipping consecutive GAP tags\n if (frag && this.isLoopLoading(frag, targetBufferTime)) {\n atGap = !!frag.gap;\n frag = this.getNextFragmentLoopLoading(frag, trackDetails, bufferInfo, PlaylistLevelType.MAIN, maxBufLen);\n }\n if (!frag) {\n this.bufferFlushed = true;\n return;\n }\n\n // Buffer audio up to one target duration ahead of main buffer\n const atBufferSyncLimit = mainBufferInfo && frag.start > mainBufferInfo.end + trackDetails.targetduration;\n if (atBufferSyncLimit ||\n // Or wait for main buffer after buffing some audio\n !(mainBufferInfo != null && mainBufferInfo.len) && bufferInfo.len) {\n // Check fragment-tracker for main fragments since GAP segments do not show up in bufferInfo\n const mainFrag = this.getAppendedFrag(frag.start, PlaylistLevelType.MAIN);\n if (mainFrag === null) {\n return;\n }\n // Bridge gaps in main buffer\n atGap || (atGap = !!mainFrag.gap || !!atBufferSyncLimit && mainBufferInfo.len === 0);\n if (atBufferSyncLimit && !atGap || atGap && bufferInfo.nextStart && bufferInfo.nextStart < mainFrag.end) {\n return;\n }\n }\n this.loadFragment(frag, levelInfo, targetBufferTime);\n }\n getMaxBufferLength(mainBufferLength) {\n const maxConfigBuffer = super.getMaxBufferLength();\n if (!mainBufferLength) {\n return maxConfigBuffer;\n }\n return Math.min(Math.max(maxConfigBuffer, mainBufferLength), this.config.maxMaxBufferLength);\n }\n onMediaDetaching() {\n this.videoBuffer = null;\n this.bufferFlushed = this.flushing = false;\n super.onMediaDetaching();\n }\n onAudioTracksUpdated(event, {\n audioTracks\n }) {\n // Reset tranxmuxer is essential for large context switches (Content Steering)\n this.resetTransmuxer();\n this.levels = audioTracks.map(mediaPlaylist => new Level(mediaPlaylist));\n }\n onAudioTrackSwitching(event, data) {\n // if any URL found on new audio track, it is an alternate audio track\n const altAudio = !!data.url;\n this.trackId = data.id;\n const {\n fragCurrent\n } = this;\n if (fragCurrent) {\n fragCurrent.abortRequests();\n this.removeUnbufferedFrags(fragCurrent.start);\n }\n this.resetLoadingState();\n // destroy useless transmuxer when switching audio to main\n if (!altAudio) {\n this.resetTransmuxer();\n } else {\n // switching to audio track, start timer if not already started\n this.setInterval(TICK_INTERVAL$2);\n }\n\n // should we switch tracks ?\n if (altAudio) {\n this.switchingTrack = data;\n // main audio track are handled by stream-controller, just do something if switching to alt audio track\n this.state = State.IDLE;\n this.flushAudioIfNeeded(data);\n } else {\n this.switchingTrack = null;\n this.bufferedTrack = data;\n this.state = State.STOPPED;\n }\n this.tick();\n }\n onManifestLoading() {\n this.fragmentTracker.removeAllFragments();\n this.startPosition = this.lastCurrentTime = 0;\n this.bufferFlushed = this.flushing = false;\n this.levels = this.mainDetails = this.waitingData = this.bufferedTrack = this.cachedTrackLoadedData = this.switchingTrack = null;\n this.startFragRequested = false;\n this.trackId = this.videoTrackCC = this.waitingVideoCC = -1;\n }\n onLevelLoaded(event, data) {\n this.mainDetails = data.details;\n if (this.cachedTrackLoadedData !== null) {\n this.hls.trigger(Events.AUDIO_TRACK_LOADED, this.cachedTrackLoadedData);\n this.cachedTrackLoadedData = null;\n }\n }\n onAudioTrackLoaded(event, data) {\n var _track$details;\n if (this.mainDetails == null) {\n this.cachedTrackLoadedData = data;\n return;\n }\n const {\n levels\n } = this;\n const {\n details: newDetails,\n id: trackId\n } = data;\n if (!levels) {\n this.warn(`Audio tracks were reset while loading level ${trackId}`);\n return;\n }\n this.log(`Audio track ${trackId} loaded [${newDetails.startSN},${newDetails.endSN}]${newDetails.lastPartSn ? `[part-${newDetails.lastPartSn}-${newDetails.lastPartIndex}]` : ''},duration:${newDetails.totalduration}`);\n const track = levels[trackId];\n let sliding = 0;\n if (newDetails.live || (_track$details = track.details) != null && _track$details.live) {\n this.checkLiveUpdate(newDetails);\n const mainDetails = this.mainDetails;\n if (newDetails.deltaUpdateFailed || !mainDetails) {\n return;\n }\n if (!track.details && newDetails.hasProgramDateTime && mainDetails.hasProgramDateTime) {\n // Make sure our audio rendition is aligned with the \"main\" rendition, using\n // pdt as our reference times.\n alignMediaPlaylistByPDT(newDetails, mainDetails);\n sliding = newDetails.fragments[0].start;\n } else {\n var _this$levelLastLoaded;\n sliding = this.alignPlaylists(newDetails, track.details, (_this$levelLastLoaded = this.levelLastLoaded) == null ? void 0 : _this$levelLastLoaded.details);\n }\n }\n track.details = newDetails;\n this.levelLastLoaded = track;\n\n // compute start position if we are aligned with the main playlist\n if (!this.startFragRequested && (this.mainDetails || !newDetails.live)) {\n this.setStartPosition(this.mainDetails || newDetails, sliding);\n }\n // only switch back to IDLE state if we were waiting for track to start downloading a new fragment\n if (this.state === State.WAITING_TRACK && !this.waitForCdnTuneIn(newDetails)) {\n this.state = State.IDLE;\n }\n\n // trigger handler right now\n this.tick();\n }\n _handleFragmentLoadProgress(data) {\n var _frag$initSegment;\n const {\n frag,\n part,\n payload\n } = data;\n const {\n config,\n trackId,\n levels\n } = this;\n if (!levels) {\n this.warn(`Audio tracks were reset while fragment load was in progress. Fragment ${frag.sn} of level ${frag.level} will not be buffered`);\n return;\n }\n const track = levels[trackId];\n if (!track) {\n this.warn('Audio track is undefined on fragment load progress');\n return;\n }\n const details = track.details;\n if (!details) {\n this.warn('Audio track details undefined on fragment load progress');\n this.removeUnbufferedFrags(frag.start);\n return;\n }\n const audioCodec = config.defaultAudioCodec || track.audioCodec || 'mp4a.40.2';\n let transmuxer = this.transmuxer;\n if (!transmuxer) {\n transmuxer = this.transmuxer = new TransmuxerInterface(this.hls, PlaylistLevelType.AUDIO, this._handleTransmuxComplete.bind(this), this._handleTransmuxerFlush.bind(this));\n }\n\n // Check if we have video initPTS\n // If not we need to wait for it\n const initPTS = this.initPTS[frag.cc];\n const initSegmentData = (_frag$initSegment = frag.initSegment) == null ? void 0 : _frag$initSegment.data;\n if (initPTS !== undefined) {\n // this.log(`Transmuxing ${sn} of [${details.startSN} ,${details.endSN}],track ${trackId}`);\n // time Offset is accurate if level PTS is known, or if playlist is not sliding (not live)\n const accurateTimeOffset = false; // details.PTSKnown || !details.live;\n const partIndex = part ? part.index : -1;\n const partial = partIndex !== -1;\n const chunkMeta = new ChunkMetadata(frag.level, frag.sn, frag.stats.chunkCount, payload.byteLength, partIndex, partial);\n transmuxer.push(payload, initSegmentData, audioCodec, '', frag, part, details.totalduration, accurateTimeOffset, chunkMeta, initPTS);\n } else {\n this.log(`Unknown video PTS for cc ${frag.cc}, waiting for video PTS before demuxing audio frag ${frag.sn} of [${details.startSN} ,${details.endSN}],track ${trackId}`);\n const {\n cache\n } = this.waitingData = this.waitingData || {\n frag,\n part,\n cache: new ChunkCache(),\n complete: false\n };\n cache.push(new Uint8Array(payload));\n this.waitingVideoCC = this.videoTrackCC;\n this.state = State.WAITING_INIT_PTS;\n }\n }\n _handleFragmentLoadComplete(fragLoadedData) {\n if (this.waitingData) {\n this.waitingData.complete = true;\n return;\n }\n super._handleFragmentLoadComplete(fragLoadedData);\n }\n onBufferReset( /* event: Events.BUFFER_RESET */\n ) {\n // reset reference to sourcebuffers\n this.mediaBuffer = this.videoBuffer = null;\n this.loadedmetadata = false;\n }\n onBufferCreated(event, data) {\n const audioTrack = data.tracks.audio;\n if (audioTrack) {\n this.mediaBuffer = audioTrack.buffer || null;\n }\n if (data.tracks.video) {\n this.videoBuffer = data.tracks.video.buffer || null;\n }\n }\n onFragBuffered(event, data) {\n const {\n frag,\n part\n } = data;\n if (frag.type !== PlaylistLevelType.AUDIO) {\n if (!this.loadedmetadata && frag.type === PlaylistLevelType.MAIN) {\n const bufferable = this.videoBuffer || this.media;\n if (bufferable) {\n const bufferedTimeRanges = BufferHelper.getBuffered(bufferable);\n if (bufferedTimeRanges.length) {\n this.loadedmetadata = true;\n }\n }\n }\n return;\n }\n if (this.fragContextChanged(frag)) {\n // If a level switch was requested while a fragment was buffering, it will emit the FRAG_BUFFERED event upon completion\n // Avoid setting state back to IDLE or concluding the audio switch; otherwise, the switched-to track will not buffer\n this.warn(`Fragment ${frag.sn}${part ? ' p: ' + part.index : ''} of level ${frag.level} finished buffering, but was aborted. state: ${this.state}, audioSwitch: ${this.switchingTrack ? this.switchingTrack.name : 'false'}`);\n return;\n }\n if (frag.sn !== 'initSegment') {\n this.fragPrevious = frag;\n const track = this.switchingTrack;\n if (track) {\n this.bufferedTrack = track;\n this.switchingTrack = null;\n this.hls.trigger(Events.AUDIO_TRACK_SWITCHED, _objectSpread2({}, track));\n }\n }\n this.fragBufferedComplete(frag, part);\n }\n onError(event, data) {\n var _data$context;\n if (data.fatal) {\n this.state = State.ERROR;\n return;\n }\n switch (data.details) {\n case ErrorDetails.FRAG_GAP:\n case ErrorDetails.FRAG_PARSING_ERROR:\n case ErrorDetails.FRAG_DECRYPT_ERROR:\n case ErrorDetails.FRAG_LOAD_ERROR:\n case ErrorDetails.FRAG_LOAD_TIMEOUT:\n case ErrorDetails.KEY_LOAD_ERROR:\n case ErrorDetails.KEY_LOAD_TIMEOUT:\n this.onFragmentOrKeyLoadError(PlaylistLevelType.AUDIO, data);\n break;\n case ErrorDetails.AUDIO_TRACK_LOAD_ERROR:\n case ErrorDetails.AUDIO_TRACK_LOAD_TIMEOUT:\n case ErrorDetails.LEVEL_PARSING_ERROR:\n // in case of non fatal error while loading track, if not retrying to load track, switch back to IDLE\n if (!data.levelRetry && this.state === State.WAITING_TRACK && ((_data$context = data.context) == null ? void 0 : _data$context.type) === PlaylistContextType.AUDIO_TRACK) {\n this.state = State.IDLE;\n }\n break;\n case ErrorDetails.BUFFER_APPEND_ERROR:\n case ErrorDetails.BUFFER_FULL_ERROR:\n if (!data.parent || data.parent !== 'audio') {\n return;\n }\n if (data.details === ErrorDetails.BUFFER_APPEND_ERROR) {\n this.resetLoadingState();\n return;\n }\n if (this.reduceLengthAndFlushBuffer(data)) {\n this.bufferedTrack = null;\n super.flushMainBuffer(0, Number.POSITIVE_INFINITY, 'audio');\n }\n break;\n case ErrorDetails.INTERNAL_EXCEPTION:\n this.recoverWorkerError(data);\n break;\n }\n }\n onBufferFlushing(event, {\n type\n }) {\n if (type !== ElementaryStreamTypes.VIDEO) {\n this.flushing = true;\n }\n }\n onBufferFlushed(event, {\n type\n }) {\n if (type !== ElementaryStreamTypes.VIDEO) {\n this.flushing = false;\n this.bufferFlushed = true;\n if (this.state === State.ENDED) {\n this.state = State.IDLE;\n }\n const mediaBuffer = this.mediaBuffer || this.media;\n if (mediaBuffer) {\n this.afterBufferFlushed(mediaBuffer, type, PlaylistLevelType.AUDIO);\n this.tick();\n }\n }\n }\n _handleTransmuxComplete(transmuxResult) {\n var _id3$samples;\n const id = 'audio';\n const {\n hls\n } = this;\n const {\n remuxResult,\n chunkMeta\n } = transmuxResult;\n const context = this.getCurrentContext(chunkMeta);\n if (!context) {\n this.resetWhenMissingContext(chunkMeta);\n return;\n }\n const {\n frag,\n part,\n level\n } = context;\n const {\n details\n } = level;\n const {\n audio,\n text,\n id3,\n initSegment\n } = remuxResult;\n\n // Check if the current fragment has been aborted. We check this by first seeing if we're still playing the current level.\n // If we are, subsequently check if the currently loading fragment (fragCurrent) has changed.\n if (this.fragContextChanged(frag) || !details) {\n this.fragmentTracker.removeFragment(frag);\n return;\n }\n this.state = State.PARSING;\n if (this.switchingTrack && audio) {\n this.completeAudioSwitch(this.switchingTrack);\n }\n if (initSegment != null && initSegment.tracks) {\n const mapFragment = frag.initSegment || frag;\n this._bufferInitSegment(level, initSegment.tracks, mapFragment, chunkMeta);\n hls.trigger(Events.FRAG_PARSING_INIT_SEGMENT, {\n frag: mapFragment,\n id,\n tracks: initSegment.tracks\n });\n // Only flush audio from old audio tracks when PTS is known on new audio track\n }\n if (audio) {\n const {\n startPTS,\n endPTS,\n startDTS,\n endDTS\n } = audio;\n if (part) {\n part.elementaryStreams[ElementaryStreamTypes.AUDIO] = {\n startPTS,\n endPTS,\n startDTS,\n endDTS\n };\n }\n frag.setElementaryStreamInfo(ElementaryStreamTypes.AUDIO, startPTS, endPTS, startDTS, endDTS);\n this.bufferFragmentData(audio, frag, part, chunkMeta);\n }\n if (id3 != null && (_id3$samples = id3.samples) != null && _id3$samples.length) {\n const emittedID3 = _extends({\n id,\n frag,\n details\n }, id3);\n hls.trigger(Events.FRAG_PARSING_METADATA, emittedID3);\n }\n if (text) {\n const emittedText = _extends({\n id,\n frag,\n details\n }, text);\n hls.trigger(Events.FRAG_PARSING_USERDATA, emittedText);\n }\n }\n _bufferInitSegment(currentLevel, tracks, frag, chunkMeta) {\n if (this.state !== State.PARSING) {\n return;\n }\n // delete any video track found on audio transmuxer\n if (tracks.video) {\n delete tracks.video;\n }\n\n // include levelCodec in audio and video tracks\n const track = tracks.audio;\n if (!track) {\n return;\n }\n track.id = 'audio';\n const variantAudioCodecs = currentLevel.audioCodec;\n this.log(`Init audio buffer, container:${track.container}, codecs[level/parsed]=[${variantAudioCodecs}/${track.codec}]`);\n // SourceBuffer will use track.levelCodec if defined\n if (variantAudioCodecs && variantAudioCodecs.split(',').length === 1) {\n track.levelCodec = variantAudioCodecs;\n }\n this.hls.trigger(Events.BUFFER_CODECS, tracks);\n const initSegment = track.initSegment;\n if (initSegment != null && initSegment.byteLength) {\n const segment = {\n type: 'audio',\n frag,\n part: null,\n chunkMeta,\n parent: frag.type,\n data: initSegment\n };\n this.hls.trigger(Events.BUFFER_APPENDING, segment);\n }\n // trigger handler right now\n this.tickImmediate();\n }\n loadFragment(frag, track, targetBufferTime) {\n // only load if fragment is not loaded or if in audio switch\n const fragState = this.fragmentTracker.getState(frag);\n this.fragCurrent = frag;\n\n // we force a frag loading in audio switch as fragment tracker might not have evicted previous frags in case of quick audio switch\n if (this.switchingTrack || fragState === FragmentState.NOT_LOADED || fragState === FragmentState.PARTIAL) {\n var _track$details2;\n if (frag.sn === 'initSegment') {\n this._loadInitSegment(frag, track);\n } else if ((_track$details2 = track.details) != null && _track$details2.live && !this.initPTS[frag.cc]) {\n this.log(`Waiting for video PTS in continuity counter ${frag.cc} of live stream before loading audio fragment ${frag.sn} of level ${this.trackId}`);\n this.state = State.WAITING_INIT_PTS;\n const mainDetails = this.mainDetails;\n if (mainDetails && mainDetails.fragments[0].start !== track.details.fragments[0].start) {\n alignMediaPlaylistByPDT(track.details, mainDetails);\n }\n } else {\n this.startFragRequested = true;\n super.loadFragment(frag, track, targetBufferTime);\n }\n } else {\n this.clearTrackerIfNeeded(frag);\n }\n }\n flushAudioIfNeeded(switchingTrack) {\n const {\n media,\n bufferedTrack\n } = this;\n const bufferedAttributes = bufferedTrack == null ? void 0 : bufferedTrack.attrs;\n const switchAttributes = switchingTrack.attrs;\n if (media && bufferedAttributes && (bufferedAttributes.CHANNELS !== switchAttributes.CHANNELS || bufferedTrack.name !== switchingTrack.name || bufferedTrack.lang !== switchingTrack.lang)) {\n this.log('Switching audio track : flushing all audio');\n super.flushMainBuffer(0, Number.POSITIVE_INFINITY, 'audio');\n this.bufferedTrack = null;\n }\n }\n completeAudioSwitch(switchingTrack) {\n const {\n hls\n } = this;\n this.flushAudioIfNeeded(switchingTrack);\n this.bufferedTrack = switchingTrack;\n this.switchingTrack = null;\n hls.trigger(Events.AUDIO_TRACK_SWITCHED, _objectSpread2({}, switchingTrack));\n }\n}\n\nclass AudioTrackController extends BasePlaylistController {\n constructor(hls) {\n super(hls, '[audio-track-controller]');\n this.tracks = [];\n this.groupIds = null;\n this.tracksInGroup = [];\n this.trackId = -1;\n this.currentTrack = null;\n this.selectDefaultTrack = true;\n this.registerListeners();\n }\n registerListeners() {\n const {\n hls\n } = this;\n hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n hls.on(Events.LEVEL_LOADING, this.onLevelLoading, this);\n hls.on(Events.LEVEL_SWITCHING, this.onLevelSwitching, this);\n hls.on(Events.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this);\n hls.on(Events.ERROR, this.onError, this);\n }\n unregisterListeners() {\n const {\n hls\n } = this;\n hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n hls.off(Events.LEVEL_LOADING, this.onLevelLoading, this);\n hls.off(Events.LEVEL_SWITCHING, this.onLevelSwitching, this);\n hls.off(Events.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this);\n hls.off(Events.ERROR, this.onError, this);\n }\n destroy() {\n this.unregisterListeners();\n this.tracks.length = 0;\n this.tracksInGroup.length = 0;\n this.currentTrack = null;\n super.destroy();\n }\n onManifestLoading() {\n this.tracks = [];\n this.tracksInGroup = [];\n this.groupIds = null;\n this.currentTrack = null;\n this.trackId = -1;\n this.selectDefaultTrack = true;\n }\n onManifestParsed(event, data) {\n this.tracks = data.audioTracks || [];\n }\n onAudioTrackLoaded(event, data) {\n const {\n id,\n groupId,\n details\n } = data;\n const trackInActiveGroup = this.tracksInGroup[id];\n if (!trackInActiveGroup || trackInActiveGroup.groupId !== groupId) {\n this.warn(`Audio track with id:${id} and group:${groupId} not found in active group ${trackInActiveGroup == null ? void 0 : trackInActiveGroup.groupId}`);\n return;\n }\n const curDetails = trackInActiveGroup.details;\n trackInActiveGroup.details = data.details;\n this.log(`Audio track ${id} \"${trackInActiveGroup.name}\" lang:${trackInActiveGroup.lang} group:${groupId} loaded [${details.startSN}-${details.endSN}]`);\n if (id === this.trackId) {\n this.playlistLoaded(id, data, curDetails);\n }\n }\n onLevelLoading(event, data) {\n this.switchLevel(data.level);\n }\n onLevelSwitching(event, data) {\n this.switchLevel(data.level);\n }\n switchLevel(levelIndex) {\n const levelInfo = this.hls.levels[levelIndex];\n if (!levelInfo) {\n return;\n }\n const audioGroups = levelInfo.audioGroups || null;\n const currentGroups = this.groupIds;\n let currentTrack = this.currentTrack;\n if (!audioGroups || (currentGroups == null ? void 0 : currentGroups.length) !== (audioGroups == null ? void 0 : audioGroups.length) || audioGroups != null && audioGroups.some(groupId => (currentGroups == null ? void 0 : currentGroups.indexOf(groupId)) === -1)) {\n this.groupIds = audioGroups;\n this.trackId = -1;\n this.currentTrack = null;\n const audioTracks = this.tracks.filter(track => !audioGroups || audioGroups.indexOf(track.groupId) !== -1);\n if (audioTracks.length) {\n // Disable selectDefaultTrack if there are no default tracks\n if (this.selectDefaultTrack && !audioTracks.some(track => track.default)) {\n this.selectDefaultTrack = false;\n }\n // track.id should match hls.audioTracks index\n audioTracks.forEach((track, i) => {\n track.id = i;\n });\n } else if (!currentTrack && !this.tracksInGroup.length) {\n // Do not dispatch AUDIO_TRACKS_UPDATED when there were and are no tracks\n return;\n }\n this.tracksInGroup = audioTracks;\n\n // Find preferred track\n const audioPreference = this.hls.config.audioPreference;\n if (!currentTrack && audioPreference) {\n const groupIndex = findMatchingOption(audioPreference, audioTracks, audioMatchPredicate);\n if (groupIndex > -1) {\n currentTrack = audioTracks[groupIndex];\n } else {\n const allIndex = findMatchingOption(audioPreference, this.tracks);\n currentTrack = this.tracks[allIndex];\n }\n }\n\n // Select initial track\n let trackId = this.findTrackId(currentTrack);\n if (trackId === -1 && currentTrack) {\n trackId = this.findTrackId(null);\n }\n\n // Dispatch events and load track if needed\n const audioTracksUpdated = {\n audioTracks\n };\n this.log(`Updating audio tracks, ${audioTracks.length} track(s) found in group(s): ${audioGroups == null ? void 0 : audioGroups.join(',')}`);\n this.hls.trigger(Events.AUDIO_TRACKS_UPDATED, audioTracksUpdated);\n const selectedTrackId = this.trackId;\n if (trackId !== -1 && selectedTrackId === -1) {\n this.setAudioTrack(trackId);\n } else if (audioTracks.length && selectedTrackId === -1) {\n var _this$groupIds;\n const error = new Error(`No audio track selected for current audio group-ID(s): ${(_this$groupIds = this.groupIds) == null ? void 0 : _this$groupIds.join(',')} track count: ${audioTracks.length}`);\n this.warn(error.message);\n this.hls.trigger(Events.ERROR, {\n type: ErrorTypes.MEDIA_ERROR,\n details: ErrorDetails.AUDIO_TRACK_LOAD_ERROR,\n fatal: true,\n error\n });\n }\n } else if (this.shouldReloadPlaylist(currentTrack)) {\n // Retry playlist loading if no playlist is or has been loaded yet\n this.setAudioTrack(this.trackId);\n }\n }\n onError(event, data) {\n if (data.fatal || !data.context) {\n return;\n }\n if (data.context.type === PlaylistContextType.AUDIO_TRACK && data.context.id === this.trackId && (!this.groupIds || this.groupIds.indexOf(data.context.groupId) !== -1)) {\n this.requestScheduled = -1;\n this.checkRetry(data);\n }\n }\n get allAudioTracks() {\n return this.tracks;\n }\n get audioTracks() {\n return this.tracksInGroup;\n }\n get audioTrack() {\n return this.trackId;\n }\n set audioTrack(newId) {\n // If audio track is selected from API then don't choose from the manifest default track\n this.selectDefaultTrack = false;\n this.setAudioTrack(newId);\n }\n setAudioOption(audioOption) {\n const hls = this.hls;\n hls.config.audioPreference = audioOption;\n if (audioOption) {\n const allAudioTracks = this.allAudioTracks;\n this.selectDefaultTrack = false;\n if (allAudioTracks.length) {\n // First see if current option matches (no switch op)\n const currentTrack = this.currentTrack;\n if (currentTrack && matchesOption(audioOption, currentTrack, audioMatchPredicate)) {\n return currentTrack;\n }\n // Find option in available tracks (tracksInGroup)\n const groupIndex = findMatchingOption(audioOption, this.tracksInGroup, audioMatchPredicate);\n if (groupIndex > -1) {\n const track = this.tracksInGroup[groupIndex];\n this.setAudioTrack(groupIndex);\n return track;\n } else if (currentTrack) {\n // Find option in nearest level audio group\n let searchIndex = hls.loadLevel;\n if (searchIndex === -1) {\n searchIndex = hls.firstAutoLevel;\n }\n const switchIndex = findClosestLevelWithAudioGroup(audioOption, hls.levels, allAudioTracks, searchIndex, audioMatchPredicate);\n if (switchIndex === -1) {\n // could not find matching variant\n return null;\n }\n // and switch level to acheive the audio group switch\n hls.nextLoadLevel = switchIndex;\n }\n if (audioOption.channels || audioOption.audioCodec) {\n // Could not find a match with codec / channels predicate\n // Find a match without channels or codec\n const withoutCodecAndChannelsMatch = findMatchingOption(audioOption, allAudioTracks);\n if (withoutCodecAndChannelsMatch > -1) {\n return allAudioTracks[withoutCodecAndChannelsMatch];\n }\n }\n }\n }\n return null;\n }\n setAudioTrack(newId) {\n const tracks = this.tracksInGroup;\n\n // check if level idx is valid\n if (newId < 0 || newId >= tracks.length) {\n this.warn(`Invalid audio track id: ${newId}`);\n return;\n }\n\n // stopping live reloading timer if any\n this.clearTimer();\n this.selectDefaultTrack = false;\n const lastTrack = this.currentTrack;\n const track = tracks[newId];\n const trackLoaded = track.details && !track.details.live;\n if (newId === this.trackId && track === lastTrack && trackLoaded) {\n return;\n }\n this.log(`Switching to audio-track ${newId} \"${track.name}\" lang:${track.lang} group:${track.groupId} channels:${track.channels}`);\n this.trackId = newId;\n this.currentTrack = track;\n this.hls.trigger(Events.AUDIO_TRACK_SWITCHING, _objectSpread2({}, track));\n // Do not reload track unless live\n if (trackLoaded) {\n return;\n }\n const hlsUrlParameters = this.switchParams(track.url, lastTrack == null ? void 0 : lastTrack.details, track.details);\n this.loadPlaylist(hlsUrlParameters);\n }\n findTrackId(currentTrack) {\n const audioTracks = this.tracksInGroup;\n for (let i = 0; i < audioTracks.length; i++) {\n const track = audioTracks[i];\n if (this.selectDefaultTrack && !track.default) {\n continue;\n }\n if (!currentTrack || matchesOption(currentTrack, track, audioMatchPredicate)) {\n return i;\n }\n }\n if (currentTrack) {\n const {\n name,\n lang,\n assocLang,\n characteristics,\n audioCodec,\n channels\n } = currentTrack;\n for (let i = 0; i < audioTracks.length; i++) {\n const track = audioTracks[i];\n if (matchesOption({\n name,\n lang,\n assocLang,\n characteristics,\n audioCodec,\n channels\n }, track, audioMatchPredicate)) {\n return i;\n }\n }\n for (let i = 0; i < audioTracks.length; i++) {\n const track = audioTracks[i];\n if (mediaAttributesIdentical(currentTrack.attrs, track.attrs, ['LANGUAGE', 'ASSOC-LANGUAGE', 'CHARACTERISTICS'])) {\n return i;\n }\n }\n for (let i = 0; i < audioTracks.length; i++) {\n const track = audioTracks[i];\n if (mediaAttributesIdentical(currentTrack.attrs, track.attrs, ['LANGUAGE'])) {\n return i;\n }\n }\n }\n return -1;\n }\n loadPlaylist(hlsUrlParameters) {\n const audioTrack = this.currentTrack;\n if (this.shouldLoadPlaylist(audioTrack) && audioTrack) {\n super.loadPlaylist();\n const id = audioTrack.id;\n const groupId = audioTrack.groupId;\n let url = audioTrack.url;\n if (hlsUrlParameters) {\n try {\n url = hlsUrlParameters.addDirectives(url);\n } catch (error) {\n this.warn(`Could not construct new URL with HLS Delivery Directives: ${error}`);\n }\n }\n // track not retrieved yet, or live playlist we need to (re)load it\n this.log(`loading audio-track playlist ${id} \"${audioTrack.name}\" lang:${audioTrack.lang} group:${groupId}`);\n this.clearTimer();\n this.hls.trigger(Events.AUDIO_TRACK_LOADING, {\n url,\n id,\n groupId,\n deliveryDirectives: hlsUrlParameters || null\n });\n }\n }\n}\n\nconst TICK_INTERVAL$1 = 500; // how often to tick in ms\n\nclass SubtitleStreamController extends BaseStreamController {\n constructor(hls, fragmentTracker, keyLoader) {\n super(hls, fragmentTracker, keyLoader, '[subtitle-stream-controller]', PlaylistLevelType.SUBTITLE);\n this.currentTrackId = -1;\n this.tracksBuffered = [];\n this.mainDetails = null;\n this._registerListeners();\n }\n onHandlerDestroying() {\n this._unregisterListeners();\n super.onHandlerDestroying();\n this.mainDetails = null;\n }\n _registerListeners() {\n const {\n hls\n } = this;\n hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n hls.on(Events.ERROR, this.onError, this);\n hls.on(Events.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this);\n hls.on(Events.SUBTITLE_TRACK_SWITCH, this.onSubtitleTrackSwitch, this);\n hls.on(Events.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this);\n hls.on(Events.SUBTITLE_FRAG_PROCESSED, this.onSubtitleFragProcessed, this);\n hls.on(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n hls.on(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n }\n _unregisterListeners() {\n const {\n hls\n } = this;\n hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n hls.off(Events.ERROR, this.onError, this);\n hls.off(Events.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this);\n hls.off(Events.SUBTITLE_TRACK_SWITCH, this.onSubtitleTrackSwitch, this);\n hls.off(Events.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this);\n hls.off(Events.SUBTITLE_FRAG_PROCESSED, this.onSubtitleFragProcessed, this);\n hls.off(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n hls.off(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n }\n startLoad(startPosition) {\n this.stopLoad();\n this.state = State.IDLE;\n this.setInterval(TICK_INTERVAL$1);\n this.nextLoadPosition = this.startPosition = this.lastCurrentTime = startPosition;\n this.tick();\n }\n onManifestLoading() {\n this.mainDetails = null;\n this.fragmentTracker.removeAllFragments();\n }\n onMediaDetaching() {\n this.tracksBuffered = [];\n super.onMediaDetaching();\n }\n onLevelLoaded(event, data) {\n this.mainDetails = data.details;\n }\n onSubtitleFragProcessed(event, data) {\n const {\n frag,\n success\n } = data;\n this.fragPrevious = frag;\n this.state = State.IDLE;\n if (!success) {\n return;\n }\n const buffered = this.tracksBuffered[this.currentTrackId];\n if (!buffered) {\n return;\n }\n\n // Create/update a buffered array matching the interface used by BufferHelper.bufferedInfo\n // so we can re-use the logic used to detect how much has been buffered\n let timeRange;\n const fragStart = frag.start;\n for (let i = 0; i < buffered.length; i++) {\n if (fragStart >= buffered[i].start && fragStart <= buffered[i].end) {\n timeRange = buffered[i];\n break;\n }\n }\n const fragEnd = frag.start + frag.duration;\n if (timeRange) {\n timeRange.end = fragEnd;\n } else {\n timeRange = {\n start: fragStart,\n end: fragEnd\n };\n buffered.push(timeRange);\n }\n this.fragmentTracker.fragBuffered(frag);\n this.fragBufferedComplete(frag, null);\n }\n onBufferFlushing(event, data) {\n const {\n startOffset,\n endOffset\n } = data;\n if (startOffset === 0 && endOffset !== Number.POSITIVE_INFINITY) {\n const endOffsetSubtitles = endOffset - 1;\n if (endOffsetSubtitles <= 0) {\n return;\n }\n data.endOffsetSubtitles = Math.max(0, endOffsetSubtitles);\n this.tracksBuffered.forEach(buffered => {\n for (let i = 0; i < buffered.length;) {\n if (buffered[i].end <= endOffsetSubtitles) {\n buffered.shift();\n continue;\n } else if (buffered[i].start < endOffsetSubtitles) {\n buffered[i].start = endOffsetSubtitles;\n } else {\n break;\n }\n i++;\n }\n });\n this.fragmentTracker.removeFragmentsInRange(startOffset, endOffsetSubtitles, PlaylistLevelType.SUBTITLE);\n }\n }\n onFragBuffered(event, data) {\n if (!this.loadedmetadata && data.frag.type === PlaylistLevelType.MAIN) {\n var _this$media;\n if ((_this$media = this.media) != null && _this$media.buffered.length) {\n this.loadedmetadata = true;\n }\n }\n }\n\n // If something goes wrong, proceed to next frag, if we were processing one.\n onError(event, data) {\n const frag = data.frag;\n if ((frag == null ? void 0 : frag.type) === PlaylistLevelType.SUBTITLE) {\n if (data.details === ErrorDetails.FRAG_GAP) {\n this.fragmentTracker.fragBuffered(frag, true);\n }\n if (this.fragCurrent) {\n this.fragCurrent.abortRequests();\n }\n if (this.state !== State.STOPPED) {\n this.state = State.IDLE;\n }\n }\n }\n\n // Got all new subtitle levels.\n onSubtitleTracksUpdated(event, {\n subtitleTracks\n }) {\n if (this.levels && subtitleOptionsIdentical(this.levels, subtitleTracks)) {\n this.levels = subtitleTracks.map(mediaPlaylist => new Level(mediaPlaylist));\n return;\n }\n this.tracksBuffered = [];\n this.levels = subtitleTracks.map(mediaPlaylist => {\n const level = new Level(mediaPlaylist);\n this.tracksBuffered[level.id] = [];\n return level;\n });\n this.fragmentTracker.removeFragmentsInRange(0, Number.POSITIVE_INFINITY, PlaylistLevelType.SUBTITLE);\n this.fragPrevious = null;\n this.mediaBuffer = null;\n }\n onSubtitleTrackSwitch(event, data) {\n var _this$levels;\n this.currentTrackId = data.id;\n if (!((_this$levels = this.levels) != null && _this$levels.length) || this.currentTrackId === -1) {\n this.clearInterval();\n return;\n }\n\n // Check if track has the necessary details to load fragments\n const currentTrack = this.levels[this.currentTrackId];\n if (currentTrack != null && currentTrack.details) {\n this.mediaBuffer = this.mediaBufferTimeRanges;\n } else {\n this.mediaBuffer = null;\n }\n if (currentTrack) {\n this.setInterval(TICK_INTERVAL$1);\n }\n }\n\n // Got a new set of subtitle fragments.\n onSubtitleTrackLoaded(event, data) {\n var _track$details;\n const {\n currentTrackId,\n levels\n } = this;\n const {\n details: newDetails,\n id: trackId\n } = data;\n if (!levels) {\n this.warn(`Subtitle tracks were reset while loading level ${trackId}`);\n return;\n }\n const track = levels[trackId];\n if (trackId >= levels.length || !track) {\n return;\n }\n this.log(`Subtitle track ${trackId} loaded [${newDetails.startSN},${newDetails.endSN}]${newDetails.lastPartSn ? `[part-${newDetails.lastPartSn}-${newDetails.lastPartIndex}]` : ''},duration:${newDetails.totalduration}`);\n this.mediaBuffer = this.mediaBufferTimeRanges;\n let sliding = 0;\n if (newDetails.live || (_track$details = track.details) != null && _track$details.live) {\n const mainDetails = this.mainDetails;\n if (newDetails.deltaUpdateFailed || !mainDetails) {\n return;\n }\n const mainSlidingStartFragment = mainDetails.fragments[0];\n if (!track.details) {\n if (newDetails.hasProgramDateTime && mainDetails.hasProgramDateTime) {\n alignMediaPlaylistByPDT(newDetails, mainDetails);\n sliding = newDetails.fragments[0].start;\n } else if (mainSlidingStartFragment) {\n // line up live playlist with main so that fragments in range are loaded\n sliding = mainSlidingStartFragment.start;\n addSliding(newDetails, sliding);\n }\n } else {\n var _this$levelLastLoaded;\n sliding = this.alignPlaylists(newDetails, track.details, (_this$levelLastLoaded = this.levelLastLoaded) == null ? void 0 : _this$levelLastLoaded.details);\n if (sliding === 0 && mainSlidingStartFragment) {\n // realign with main when there is no overlap with last refresh\n sliding = mainSlidingStartFragment.start;\n addSliding(newDetails, sliding);\n }\n }\n }\n track.details = newDetails;\n this.levelLastLoaded = track;\n if (trackId !== currentTrackId) {\n return;\n }\n if (!this.startFragRequested && (this.mainDetails || !newDetails.live)) {\n this.setStartPosition(this.mainDetails || newDetails, sliding);\n }\n\n // trigger handler right now\n this.tick();\n\n // If playlist is misaligned because of bad PDT or drift, delete details to resync with main on reload\n if (newDetails.live && !this.fragCurrent && this.media && this.state === State.IDLE) {\n const foundFrag = findFragmentByPTS(null, newDetails.fragments, this.media.currentTime, 0);\n if (!foundFrag) {\n this.warn('Subtitle playlist not aligned with playback');\n track.details = undefined;\n }\n }\n }\n _handleFragmentLoadComplete(fragLoadedData) {\n const {\n frag,\n payload\n } = fragLoadedData;\n const decryptData = frag.decryptdata;\n const hls = this.hls;\n if (this.fragContextChanged(frag)) {\n return;\n }\n // check to see if the payload needs to be decrypted\n if (payload && payload.byteLength > 0 && decryptData != null && decryptData.key && decryptData.iv && decryptData.method === 'AES-128') {\n const startTime = performance.now();\n // decrypt the subtitles\n this.decrypter.decrypt(new Uint8Array(payload), decryptData.key.buffer, decryptData.iv.buffer).catch(err => {\n hls.trigger(Events.ERROR, {\n type: ErrorTypes.MEDIA_ERROR,\n details: ErrorDetails.FRAG_DECRYPT_ERROR,\n fatal: false,\n error: err,\n reason: err.message,\n frag\n });\n throw err;\n }).then(decryptedData => {\n const endTime = performance.now();\n hls.trigger(Events.FRAG_DECRYPTED, {\n frag,\n payload: decryptedData,\n stats: {\n tstart: startTime,\n tdecrypt: endTime\n }\n });\n }).catch(err => {\n this.warn(`${err.name}: ${err.message}`);\n this.state = State.IDLE;\n });\n }\n }\n doTick() {\n if (!this.media) {\n this.state = State.IDLE;\n return;\n }\n if (this.state === State.IDLE) {\n const {\n currentTrackId,\n levels\n } = this;\n const track = levels == null ? void 0 : levels[currentTrackId];\n if (!track || !levels.length || !track.details) {\n return;\n }\n const {\n config\n } = this;\n const currentTime = this.getLoadPosition();\n const bufferedInfo = BufferHelper.bufferedInfo(this.tracksBuffered[this.currentTrackId] || [], currentTime, config.maxBufferHole);\n const {\n end: targetBufferTime,\n len: bufferLen\n } = bufferedInfo;\n const mainBufferInfo = this.getFwdBufferInfo(this.media, PlaylistLevelType.MAIN);\n const trackDetails = track.details;\n const maxBufLen = this.getMaxBufferLength(mainBufferInfo == null ? void 0 : mainBufferInfo.len) + trackDetails.levelTargetDuration;\n if (bufferLen > maxBufLen) {\n return;\n }\n const fragments = trackDetails.fragments;\n const fragLen = fragments.length;\n const end = trackDetails.edge;\n let foundFrag = null;\n const fragPrevious = this.fragPrevious;\n if (targetBufferTime < end) {\n const tolerance = config.maxFragLookUpTolerance;\n const lookupTolerance = targetBufferTime > end - tolerance ? 0 : tolerance;\n foundFrag = findFragmentByPTS(fragPrevious, fragments, Math.max(fragments[0].start, targetBufferTime), lookupTolerance);\n if (!foundFrag && fragPrevious && fragPrevious.start < fragments[0].start) {\n foundFrag = fragments[0];\n }\n } else {\n foundFrag = fragments[fragLen - 1];\n }\n if (!foundFrag) {\n return;\n }\n foundFrag = this.mapToInitFragWhenRequired(foundFrag);\n if (foundFrag.sn !== 'initSegment') {\n // Load earlier fragment in same discontinuity to make up for misaligned playlists and cues that extend beyond end of segment\n const curSNIdx = foundFrag.sn - trackDetails.startSN;\n const prevFrag = fragments[curSNIdx - 1];\n if (prevFrag && prevFrag.cc === foundFrag.cc && this.fragmentTracker.getState(prevFrag) === FragmentState.NOT_LOADED) {\n foundFrag = prevFrag;\n }\n }\n if (this.fragmentTracker.getState(foundFrag) === FragmentState.NOT_LOADED) {\n // only load if fragment is not loaded\n this.loadFragment(foundFrag, track, targetBufferTime);\n }\n }\n }\n getMaxBufferLength(mainBufferLength) {\n const maxConfigBuffer = super.getMaxBufferLength();\n if (!mainBufferLength) {\n return maxConfigBuffer;\n }\n return Math.max(maxConfigBuffer, mainBufferLength);\n }\n loadFragment(frag, level, targetBufferTime) {\n this.fragCurrent = frag;\n if (frag.sn === 'initSegment') {\n this._loadInitSegment(frag, level);\n } else {\n this.startFragRequested = true;\n super.loadFragment(frag, level, targetBufferTime);\n }\n }\n get mediaBufferTimeRanges() {\n return new BufferableInstance(this.tracksBuffered[this.currentTrackId] || []);\n }\n}\nclass BufferableInstance {\n constructor(timeranges) {\n this.buffered = void 0;\n const getRange = (name, index, length) => {\n index = index >>> 0;\n if (index > length - 1) {\n throw new DOMException(`Failed to execute '${name}' on 'TimeRanges': The index provided (${index}) is greater than the maximum bound (${length})`);\n }\n return timeranges[index][name];\n };\n this.buffered = {\n get length() {\n return timeranges.length;\n },\n end(index) {\n return getRange('end', index, timeranges.length);\n },\n start(index) {\n return getRange('start', index, timeranges.length);\n }\n };\n }\n}\n\nclass SubtitleTrackController extends BasePlaylistController {\n constructor(hls) {\n super(hls, '[subtitle-track-controller]');\n this.media = null;\n this.tracks = [];\n this.groupIds = null;\n this.tracksInGroup = [];\n this.trackId = -1;\n this.currentTrack = null;\n this.selectDefaultTrack = true;\n this.queuedDefaultTrack = -1;\n this.asyncPollTrackChange = () => this.pollTrackChange(0);\n this.useTextTrackPolling = false;\n this.subtitlePollingInterval = -1;\n this._subtitleDisplay = true;\n this.onTextTracksChanged = () => {\n if (!this.useTextTrackPolling) {\n self.clearInterval(this.subtitlePollingInterval);\n }\n // Media is undefined when switching streams via loadSource()\n if (!this.media || !this.hls.config.renderTextTracksNatively) {\n return;\n }\n let textTrack = null;\n const tracks = filterSubtitleTracks(this.media.textTracks);\n for (let i = 0; i < tracks.length; i++) {\n if (tracks[i].mode === 'hidden') {\n // Do not break in case there is a following track with showing.\n textTrack = tracks[i];\n } else if (tracks[i].mode === 'showing') {\n textTrack = tracks[i];\n break;\n }\n }\n\n // Find internal track index for TextTrack\n const trackId = this.findTrackForTextTrack(textTrack);\n if (this.subtitleTrack !== trackId) {\n this.setSubtitleTrack(trackId);\n }\n };\n this.registerListeners();\n }\n destroy() {\n this.unregisterListeners();\n this.tracks.length = 0;\n this.tracksInGroup.length = 0;\n this.currentTrack = null;\n this.onTextTracksChanged = this.asyncPollTrackChange = null;\n super.destroy();\n }\n get subtitleDisplay() {\n return this._subtitleDisplay;\n }\n set subtitleDisplay(value) {\n this._subtitleDisplay = value;\n if (this.trackId > -1) {\n this.toggleTrackModes();\n }\n }\n registerListeners() {\n const {\n hls\n } = this;\n hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n hls.on(Events.LEVEL_LOADING, this.onLevelLoading, this);\n hls.on(Events.LEVEL_SWITCHING, this.onLevelSwitching, this);\n hls.on(Events.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this);\n hls.on(Events.ERROR, this.onError, this);\n }\n unregisterListeners() {\n const {\n hls\n } = this;\n hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n hls.off(Events.LEVEL_LOADING, this.onLevelLoading, this);\n hls.off(Events.LEVEL_SWITCHING, this.onLevelSwitching, this);\n hls.off(Events.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this);\n hls.off(Events.ERROR, this.onError, this);\n }\n\n // Listen for subtitle track change, then extract the current track ID.\n onMediaAttached(event, data) {\n this.media = data.media;\n if (!this.media) {\n return;\n }\n if (this.queuedDefaultTrack > -1) {\n this.subtitleTrack = this.queuedDefaultTrack;\n this.queuedDefaultTrack = -1;\n }\n this.useTextTrackPolling = !(this.media.textTracks && 'onchange' in this.media.textTracks);\n if (this.useTextTrackPolling) {\n this.pollTrackChange(500);\n } else {\n this.media.textTracks.addEventListener('change', this.asyncPollTrackChange);\n }\n }\n pollTrackChange(timeout) {\n self.clearInterval(this.subtitlePollingInterval);\n this.subtitlePollingInterval = self.setInterval(this.onTextTracksChanged, timeout);\n }\n onMediaDetaching() {\n if (!this.media) {\n return;\n }\n self.clearInterval(this.subtitlePollingInterval);\n if (!this.useTextTrackPolling) {\n this.media.textTracks.removeEventListener('change', this.asyncPollTrackChange);\n }\n if (this.trackId > -1) {\n this.queuedDefaultTrack = this.trackId;\n }\n const textTracks = filterSubtitleTracks(this.media.textTracks);\n // Clear loaded cues on media detachment from tracks\n textTracks.forEach(track => {\n clearCurrentCues(track);\n });\n // Disable all subtitle tracks before detachment so when reattached only tracks in that content are enabled.\n this.subtitleTrack = -1;\n this.media = null;\n }\n onManifestLoading() {\n this.tracks = [];\n this.groupIds = null;\n this.tracksInGroup = [];\n this.trackId = -1;\n this.currentTrack = null;\n this.selectDefaultTrack = true;\n }\n\n // Fired whenever a new manifest is loaded.\n onManifestParsed(event, data) {\n this.tracks = data.subtitleTracks;\n }\n onSubtitleTrackLoaded(event, data) {\n const {\n id,\n groupId,\n details\n } = data;\n const trackInActiveGroup = this.tracksInGroup[id];\n if (!trackInActiveGroup || trackInActiveGroup.groupId !== groupId) {\n this.warn(`Subtitle track with id:${id} and group:${groupId} not found in active group ${trackInActiveGroup == null ? void 0 : trackInActiveGroup.groupId}`);\n return;\n }\n const curDetails = trackInActiveGroup.details;\n trackInActiveGroup.details = data.details;\n this.log(`Subtitle track ${id} \"${trackInActiveGroup.name}\" lang:${trackInActiveGroup.lang} group:${groupId} loaded [${details.startSN}-${details.endSN}]`);\n if (id === this.trackId) {\n this.playlistLoaded(id, data, curDetails);\n }\n }\n onLevelLoading(event, data) {\n this.switchLevel(data.level);\n }\n onLevelSwitching(event, data) {\n this.switchLevel(data.level);\n }\n switchLevel(levelIndex) {\n const levelInfo = this.hls.levels[levelIndex];\n if (!levelInfo) {\n return;\n }\n const subtitleGroups = levelInfo.subtitleGroups || null;\n const currentGroups = this.groupIds;\n let currentTrack = this.currentTrack;\n if (!subtitleGroups || (currentGroups == null ? void 0 : currentGroups.length) !== (subtitleGroups == null ? void 0 : subtitleGroups.length) || subtitleGroups != null && subtitleGroups.some(groupId => (currentGroups == null ? void 0 : currentGroups.indexOf(groupId)) === -1)) {\n this.groupIds = subtitleGroups;\n this.trackId = -1;\n this.currentTrack = null;\n const subtitleTracks = this.tracks.filter(track => !subtitleGroups || subtitleGroups.indexOf(track.groupId) !== -1);\n if (subtitleTracks.length) {\n // Disable selectDefaultTrack if there are no default tracks\n if (this.selectDefaultTrack && !subtitleTracks.some(track => track.default)) {\n this.selectDefaultTrack = false;\n }\n // track.id should match hls.audioTracks index\n subtitleTracks.forEach((track, i) => {\n track.id = i;\n });\n } else if (!currentTrack && !this.tracksInGroup.length) {\n // Do not dispatch SUBTITLE_TRACKS_UPDATED when there were and are no tracks\n return;\n }\n this.tracksInGroup = subtitleTracks;\n\n // Find preferred track\n const subtitlePreference = this.hls.config.subtitlePreference;\n if (!currentTrack && subtitlePreference) {\n this.selectDefaultTrack = false;\n const groupIndex = findMatchingOption(subtitlePreference, subtitleTracks);\n if (groupIndex > -1) {\n currentTrack = subtitleTracks[groupIndex];\n } else {\n const allIndex = findMatchingOption(subtitlePreference, this.tracks);\n currentTrack = this.tracks[allIndex];\n }\n }\n\n // Select initial track\n let trackId = this.findTrackId(currentTrack);\n if (trackId === -1 && currentTrack) {\n trackId = this.findTrackId(null);\n }\n\n // Dispatch events and load track if needed\n const subtitleTracksUpdated = {\n subtitleTracks\n };\n this.log(`Updating subtitle tracks, ${subtitleTracks.length} track(s) found in \"${subtitleGroups == null ? void 0 : subtitleGroups.join(',')}\" group-id`);\n this.hls.trigger(Events.SUBTITLE_TRACKS_UPDATED, subtitleTracksUpdated);\n if (trackId !== -1 && this.trackId === -1) {\n this.setSubtitleTrack(trackId);\n }\n } else if (this.shouldReloadPlaylist(currentTrack)) {\n // Retry playlist loading if no playlist is or has been loaded yet\n this.setSubtitleTrack(this.trackId);\n }\n }\n findTrackId(currentTrack) {\n const tracks = this.tracksInGroup;\n const selectDefault = this.selectDefaultTrack;\n for (let i = 0; i < tracks.length; i++) {\n const track = tracks[i];\n if (selectDefault && !track.default || !selectDefault && !currentTrack) {\n continue;\n }\n if (!currentTrack || matchesOption(track, currentTrack)) {\n return i;\n }\n }\n if (currentTrack) {\n for (let i = 0; i < tracks.length; i++) {\n const track = tracks[i];\n if (mediaAttributesIdentical(currentTrack.attrs, track.attrs, ['LANGUAGE', 'ASSOC-LANGUAGE', 'CHARACTERISTICS'])) {\n return i;\n }\n }\n for (let i = 0; i < tracks.length; i++) {\n const track = tracks[i];\n if (mediaAttributesIdentical(currentTrack.attrs, track.attrs, ['LANGUAGE'])) {\n return i;\n }\n }\n }\n return -1;\n }\n findTrackForTextTrack(textTrack) {\n if (textTrack) {\n const tracks = this.tracksInGroup;\n for (let i = 0; i < tracks.length; i++) {\n const track = tracks[i];\n if (subtitleTrackMatchesTextTrack(track, textTrack)) {\n return i;\n }\n }\n }\n return -1;\n }\n onError(event, data) {\n if (data.fatal || !data.context) {\n return;\n }\n if (data.context.type === PlaylistContextType.SUBTITLE_TRACK && data.context.id === this.trackId && (!this.groupIds || this.groupIds.indexOf(data.context.groupId) !== -1)) {\n this.checkRetry(data);\n }\n }\n get allSubtitleTracks() {\n return this.tracks;\n }\n\n /** get alternate subtitle tracks list from playlist **/\n get subtitleTracks() {\n return this.tracksInGroup;\n }\n\n /** get/set index of the selected subtitle track (based on index in subtitle track lists) **/\n get subtitleTrack() {\n return this.trackId;\n }\n set subtitleTrack(newId) {\n this.selectDefaultTrack = false;\n this.setSubtitleTrack(newId);\n }\n setSubtitleOption(subtitleOption) {\n this.hls.config.subtitlePreference = subtitleOption;\n if (subtitleOption) {\n const allSubtitleTracks = this.allSubtitleTracks;\n this.selectDefaultTrack = false;\n if (allSubtitleTracks.length) {\n // First see if current option matches (no switch op)\n const currentTrack = this.currentTrack;\n if (currentTrack && matchesOption(subtitleOption, currentTrack)) {\n return currentTrack;\n }\n // Find option in current group\n const groupIndex = findMatchingOption(subtitleOption, this.tracksInGroup);\n if (groupIndex > -1) {\n const track = this.tracksInGroup[groupIndex];\n this.setSubtitleTrack(groupIndex);\n return track;\n } else if (currentTrack) {\n // If this is not the initial selection return null\n // option should have matched one in active group\n return null;\n } else {\n // Find the option in all tracks for initial selection\n const allIndex = findMatchingOption(subtitleOption, allSubtitleTracks);\n if (allIndex > -1) {\n return allSubtitleTracks[allIndex];\n }\n }\n }\n }\n return null;\n }\n loadPlaylist(hlsUrlParameters) {\n super.loadPlaylist();\n const currentTrack = this.currentTrack;\n if (this.shouldLoadPlaylist(currentTrack) && currentTrack) {\n const id = currentTrack.id;\n const groupId = currentTrack.groupId;\n let url = currentTrack.url;\n if (hlsUrlParameters) {\n try {\n url = hlsUrlParameters.addDirectives(url);\n } catch (error) {\n this.warn(`Could not construct new URL with HLS Delivery Directives: ${error}`);\n }\n }\n this.log(`Loading subtitle playlist for id ${id}`);\n this.hls.trigger(Events.SUBTITLE_TRACK_LOADING, {\n url,\n id,\n groupId,\n deliveryDirectives: hlsUrlParameters || null\n });\n }\n }\n\n /**\n * Disables the old subtitleTrack and sets current mode on the next subtitleTrack.\n * This operates on the DOM textTracks.\n * A value of -1 will disable all subtitle tracks.\n */\n toggleTrackModes() {\n const {\n media\n } = this;\n if (!media) {\n return;\n }\n const textTracks = filterSubtitleTracks(media.textTracks);\n const currentTrack = this.currentTrack;\n let nextTrack;\n if (currentTrack) {\n nextTrack = textTracks.filter(textTrack => subtitleTrackMatchesTextTrack(currentTrack, textTrack))[0];\n if (!nextTrack) {\n this.warn(`Unable to find subtitle TextTrack with name \"${currentTrack.name}\" and language \"${currentTrack.lang}\"`);\n }\n }\n [].slice.call(textTracks).forEach(track => {\n if (track.mode !== 'disabled' && track !== nextTrack) {\n track.mode = 'disabled';\n }\n });\n if (nextTrack) {\n const mode = this.subtitleDisplay ? 'showing' : 'hidden';\n if (nextTrack.mode !== mode) {\n nextTrack.mode = mode;\n }\n }\n }\n\n /**\n * This method is responsible for validating the subtitle index and periodically reloading if live.\n * Dispatches the SUBTITLE_TRACK_SWITCH event, which instructs the subtitle-stream-controller to load the selected track.\n */\n setSubtitleTrack(newId) {\n const tracks = this.tracksInGroup;\n\n // setting this.subtitleTrack will trigger internal logic\n // if media has not been attached yet, it will fail\n // we keep a reference to the default track id\n // and we'll set subtitleTrack when onMediaAttached is triggered\n if (!this.media) {\n this.queuedDefaultTrack = newId;\n return;\n }\n\n // exit if track id as already set or invalid\n if (newId < -1 || newId >= tracks.length || !isFiniteNumber(newId)) {\n this.warn(`Invalid subtitle track id: ${newId}`);\n return;\n }\n\n // stopping live reloading timer if any\n this.clearTimer();\n this.selectDefaultTrack = false;\n const lastTrack = this.currentTrack;\n const track = tracks[newId] || null;\n this.trackId = newId;\n this.currentTrack = track;\n this.toggleTrackModes();\n if (!track) {\n // switch to -1\n this.hls.trigger(Events.SUBTITLE_TRACK_SWITCH, {\n id: newId\n });\n return;\n }\n const trackLoaded = !!track.details && !track.details.live;\n if (newId === this.trackId && track === lastTrack && trackLoaded) {\n return;\n }\n this.log(`Switching to subtitle-track ${newId}` + (track ? ` \"${track.name}\" lang:${track.lang} group:${track.groupId}` : ''));\n const {\n id,\n groupId = '',\n name,\n type,\n url\n } = track;\n this.hls.trigger(Events.SUBTITLE_TRACK_SWITCH, {\n id,\n groupId,\n name,\n type,\n url\n });\n const hlsUrlParameters = this.switchParams(track.url, lastTrack == null ? void 0 : lastTrack.details, track.details);\n this.loadPlaylist(hlsUrlParameters);\n }\n}\n\nclass BufferOperationQueue {\n constructor(sourceBufferReference) {\n this.buffers = void 0;\n this.queues = {\n video: [],\n audio: [],\n audiovideo: []\n };\n this.buffers = sourceBufferReference;\n }\n append(operation, type, pending) {\n const queue = this.queues[type];\n queue.push(operation);\n if (queue.length === 1 && !pending) {\n this.executeNext(type);\n }\n }\n insertAbort(operation, type) {\n const queue = this.queues[type];\n queue.unshift(operation);\n this.executeNext(type);\n }\n appendBlocker(type) {\n let execute;\n const promise = new Promise(resolve => {\n execute = resolve;\n });\n const operation = {\n execute,\n onStart: () => {},\n onComplete: () => {},\n onError: () => {}\n };\n this.append(operation, type);\n return promise;\n }\n executeNext(type) {\n const queue = this.queues[type];\n if (queue.length) {\n const operation = queue[0];\n try {\n // Operations are expected to result in an 'updateend' event being fired. If not, the queue will lock. Operations\n // which do not end with this event must call _onSBUpdateEnd manually\n operation.execute();\n } catch (error) {\n logger.warn(`[buffer-operation-queue]: Exception executing \"${type}\" SourceBuffer operation: ${error}`);\n operation.onError(error);\n\n // Only shift the current operation off, otherwise the updateend handler will do this for us\n const sb = this.buffers[type];\n if (!(sb != null && sb.updating)) {\n this.shiftAndExecuteNext(type);\n }\n }\n }\n }\n shiftAndExecuteNext(type) {\n this.queues[type].shift();\n this.executeNext(type);\n }\n current(type) {\n return this.queues[type][0];\n }\n}\n\nconst VIDEO_CODEC_PROFILE_REPLACE = /(avc[1234]|hvc1|hev1|dvh[1e]|vp09|av01)(?:\\.[^.,]+)+/;\nclass BufferController {\n constructor(hls) {\n // The level details used to determine duration, target-duration and live\n this.details = null;\n // cache the self generated object url to detect hijack of video tag\n this._objectUrl = null;\n // A queue of buffer operations which require the SourceBuffer to not be updating upon execution\n this.operationQueue = void 0;\n // References to event listeners for each SourceBuffer, so that they can be referenced for event removal\n this.listeners = void 0;\n this.hls = void 0;\n // The number of BUFFER_CODEC events received before any sourceBuffers are created\n this.bufferCodecEventsExpected = 0;\n // The total number of BUFFER_CODEC events received\n this._bufferCodecEventsTotal = 0;\n // A reference to the attached media element\n this.media = null;\n // A reference to the active media source\n this.mediaSource = null;\n // Last MP3 audio chunk appended\n this.lastMpegAudioChunk = null;\n this.appendSource = void 0;\n // counters\n this.appendErrors = {\n audio: 0,\n video: 0,\n audiovideo: 0\n };\n this.tracks = {};\n this.pendingTracks = {};\n this.sourceBuffer = void 0;\n this.log = void 0;\n this.warn = void 0;\n this.error = void 0;\n this._onEndStreaming = event => {\n if (!this.hls) {\n return;\n }\n this.hls.pauseBuffering();\n };\n this._onStartStreaming = event => {\n if (!this.hls) {\n return;\n }\n this.hls.resumeBuffering();\n };\n // Keep as arrow functions so that we can directly reference these functions directly as event listeners\n this._onMediaSourceOpen = () => {\n const {\n media,\n mediaSource\n } = this;\n this.log('Media source opened');\n if (media) {\n media.removeEventListener('emptied', this._onMediaEmptied);\n this.updateMediaElementDuration();\n this.hls.trigger(Events.MEDIA_ATTACHED, {\n media,\n mediaSource: mediaSource\n });\n }\n if (mediaSource) {\n // once received, don't listen anymore to sourceopen event\n mediaSource.removeEventListener('sourceopen', this._onMediaSourceOpen);\n }\n this.checkPendingTracks();\n };\n this._onMediaSourceClose = () => {\n this.log('Media source closed');\n };\n this._onMediaSourceEnded = () => {\n this.log('Media source ended');\n };\n this._onMediaEmptied = () => {\n const {\n mediaSrc,\n _objectUrl\n } = this;\n if (mediaSrc !== _objectUrl) {\n logger.error(`Media element src was set while attaching MediaSource (${_objectUrl} > ${mediaSrc})`);\n }\n };\n this.hls = hls;\n const logPrefix = '[buffer-controller]';\n this.appendSource = isManagedMediaSource(getMediaSource(hls.config.preferManagedMediaSource));\n this.log = logger.log.bind(logger, logPrefix);\n this.warn = logger.warn.bind(logger, logPrefix);\n this.error = logger.error.bind(logger, logPrefix);\n this._initSourceBuffer();\n this.registerListeners();\n }\n hasSourceTypes() {\n return this.getSourceBufferTypes().length > 0 || Object.keys(this.pendingTracks).length > 0;\n }\n destroy() {\n this.unregisterListeners();\n this.details = null;\n this.lastMpegAudioChunk = null;\n // @ts-ignore\n this.hls = null;\n }\n registerListeners() {\n const {\n hls\n } = this;\n hls.on(Events.MEDIA_ATTACHING, this.onMediaAttaching, this);\n hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n hls.on(Events.BUFFER_RESET, this.onBufferReset, this);\n hls.on(Events.BUFFER_APPENDING, this.onBufferAppending, this);\n hls.on(Events.BUFFER_CODECS, this.onBufferCodecs, this);\n hls.on(Events.BUFFER_EOS, this.onBufferEos, this);\n hls.on(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n hls.on(Events.LEVEL_UPDATED, this.onLevelUpdated, this);\n hls.on(Events.FRAG_PARSED, this.onFragParsed, this);\n hls.on(Events.FRAG_CHANGED, this.onFragChanged, this);\n }\n unregisterListeners() {\n const {\n hls\n } = this;\n hls.off(Events.MEDIA_ATTACHING, this.onMediaAttaching, this);\n hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n hls.off(Events.BUFFER_RESET, this.onBufferReset, this);\n hls.off(Events.BUFFER_APPENDING, this.onBufferAppending, this);\n hls.off(Events.BUFFER_CODECS, this.onBufferCodecs, this);\n hls.off(Events.BUFFER_EOS, this.onBufferEos, this);\n hls.off(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n hls.off(Events.LEVEL_UPDATED, this.onLevelUpdated, this);\n hls.off(Events.FRAG_PARSED, this.onFragParsed, this);\n hls.off(Events.FRAG_CHANGED, this.onFragChanged, this);\n }\n _initSourceBuffer() {\n this.sourceBuffer = {};\n this.operationQueue = new BufferOperationQueue(this.sourceBuffer);\n this.listeners = {\n audio: [],\n video: [],\n audiovideo: []\n };\n this.appendErrors = {\n audio: 0,\n video: 0,\n audiovideo: 0\n };\n this.lastMpegAudioChunk = null;\n }\n onManifestLoading() {\n this.bufferCodecEventsExpected = this._bufferCodecEventsTotal = 0;\n this.details = null;\n }\n onManifestParsed(event, data) {\n // in case of alt audio 2 BUFFER_CODECS events will be triggered, one per stream controller\n // sourcebuffers will be created all at once when the expected nb of tracks will be reached\n // in case alt audio is not used, only one BUFFER_CODEC event will be fired from main stream controller\n // it will contain the expected nb of source buffers, no need to compute it\n let codecEvents = 2;\n if (data.audio && !data.video || !data.altAudio || !true) {\n codecEvents = 1;\n }\n this.bufferCodecEventsExpected = this._bufferCodecEventsTotal = codecEvents;\n this.log(`${this.bufferCodecEventsExpected} bufferCodec event(s) expected`);\n }\n onMediaAttaching(event, data) {\n const media = this.media = data.media;\n const MediaSource = getMediaSource(this.appendSource);\n if (media && MediaSource) {\n var _ms$constructor;\n const ms = this.mediaSource = new MediaSource();\n this.log(`created media source: ${(_ms$constructor = ms.constructor) == null ? void 0 : _ms$constructor.name}`);\n // MediaSource listeners are arrow functions with a lexical scope, and do not need to be bound\n ms.addEventListener('sourceopen', this._onMediaSourceOpen);\n ms.addEventListener('sourceended', this._onMediaSourceEnded);\n ms.addEventListener('sourceclose', this._onMediaSourceClose);\n if (this.appendSource) {\n ms.addEventListener('startstreaming', this._onStartStreaming);\n ms.addEventListener('endstreaming', this._onEndStreaming);\n }\n\n // cache the locally generated object url\n const objectUrl = this._objectUrl = self.URL.createObjectURL(ms);\n // link video and media Source\n if (this.appendSource) {\n try {\n media.removeAttribute('src');\n // ManagedMediaSource will not open without disableRemotePlayback set to false or source alternatives\n const MMS = self.ManagedMediaSource;\n media.disableRemotePlayback = media.disableRemotePlayback || MMS && ms instanceof MMS;\n removeSourceChildren(media);\n addSource(media, objectUrl);\n media.load();\n } catch (error) {\n media.src = objectUrl;\n }\n } else {\n media.src = objectUrl;\n }\n media.addEventListener('emptied', this._onMediaEmptied);\n }\n }\n onMediaDetaching() {\n const {\n media,\n mediaSource,\n _objectUrl\n } = this;\n if (mediaSource) {\n this.log('media source detaching');\n if (mediaSource.readyState === 'open') {\n try {\n // endOfStream could trigger exception if any sourcebuffer is in updating state\n // we don't really care about checking sourcebuffer state here,\n // as we are anyway detaching the MediaSource\n // let's just avoid this exception to propagate\n mediaSource.endOfStream();\n } catch (err) {\n this.warn(`onMediaDetaching: ${err.message} while calling endOfStream`);\n }\n }\n // Clean up the SourceBuffers by invoking onBufferReset\n this.onBufferReset();\n mediaSource.removeEventListener('sourceopen', this._onMediaSourceOpen);\n mediaSource.removeEventListener('sourceended', this._onMediaSourceEnded);\n mediaSource.removeEventListener('sourceclose', this._onMediaSourceClose);\n if (this.appendSource) {\n mediaSource.removeEventListener('startstreaming', this._onStartStreaming);\n mediaSource.removeEventListener('endstreaming', this._onEndStreaming);\n }\n\n // Detach properly the MediaSource from the HTMLMediaElement as\n // suggested in https://github.com/w3c/media-source/issues/53.\n if (media) {\n media.removeEventListener('emptied', this._onMediaEmptied);\n if (_objectUrl) {\n self.URL.revokeObjectURL(_objectUrl);\n }\n\n // clean up video tag src only if it's our own url. some external libraries might\n // hijack the video tag and change its 'src' without destroying the Hls instance first\n if (this.mediaSrc === _objectUrl) {\n media.removeAttribute('src');\n if (this.appendSource) {\n removeSourceChildren(media);\n }\n media.load();\n } else {\n this.warn('media|source.src was changed by a third party - skip cleanup');\n }\n }\n this.mediaSource = null;\n this.media = null;\n this._objectUrl = null;\n this.bufferCodecEventsExpected = this._bufferCodecEventsTotal;\n this.pendingTracks = {};\n this.tracks = {};\n }\n this.hls.trigger(Events.MEDIA_DETACHED, undefined);\n }\n onBufferReset() {\n this.getSourceBufferTypes().forEach(type => {\n this.resetBuffer(type);\n });\n this._initSourceBuffer();\n this.hls.resumeBuffering();\n }\n resetBuffer(type) {\n const sb = this.sourceBuffer[type];\n try {\n if (sb) {\n var _this$mediaSource;\n this.removeBufferListeners(type);\n // Synchronously remove the SB from the map before the next call in order to prevent an async function from\n // accessing it\n this.sourceBuffer[type] = undefined;\n if ((_this$mediaSource = this.mediaSource) != null && _this$mediaSource.sourceBuffers.length) {\n this.mediaSource.removeSourceBuffer(sb);\n }\n }\n } catch (err) {\n this.warn(`onBufferReset ${type}`, err);\n }\n }\n onBufferCodecs(event, data) {\n const sourceBufferCount = this.getSourceBufferTypes().length;\n const trackNames = Object.keys(data);\n trackNames.forEach(trackName => {\n if (sourceBufferCount) {\n // check if SourceBuffer codec needs to change\n const track = this.tracks[trackName];\n if (track && typeof track.buffer.changeType === 'function') {\n var _trackCodec;\n const {\n id,\n codec,\n levelCodec,\n container,\n metadata\n } = data[trackName];\n const currentCodecFull = pickMostCompleteCodecName(track.codec, track.levelCodec);\n const currentCodec = currentCodecFull == null ? void 0 : currentCodecFull.replace(VIDEO_CODEC_PROFILE_REPLACE, '$1');\n let trackCodec = pickMostCompleteCodecName(codec, levelCodec);\n const nextCodec = (_trackCodec = trackCodec) == null ? void 0 : _trackCodec.replace(VIDEO_CODEC_PROFILE_REPLACE, '$1');\n if (trackCodec && currentCodec !== nextCodec) {\n if (trackName.slice(0, 5) === 'audio') {\n trackCodec = getCodecCompatibleName(trackCodec, this.appendSource);\n }\n const mimeType = `${container};codecs=${trackCodec}`;\n this.appendChangeType(trackName, mimeType);\n this.log(`switching codec ${currentCodecFull} to ${trackCodec}`);\n this.tracks[trackName] = {\n buffer: track.buffer,\n codec,\n container,\n levelCodec,\n metadata,\n id\n };\n }\n }\n } else {\n // if source buffer(s) not created yet, appended buffer tracks in this.pendingTracks\n this.pendingTracks[trackName] = data[trackName];\n }\n });\n\n // if sourcebuffers already created, do nothing ...\n if (sourceBufferCount) {\n return;\n }\n const bufferCodecEventsExpected = Math.max(this.bufferCodecEventsExpected - 1, 0);\n if (this.bufferCodecEventsExpected !== bufferCodecEventsExpected) {\n this.log(`${bufferCodecEventsExpected} bufferCodec event(s) expected ${trackNames.join(',')}`);\n this.bufferCodecEventsExpected = bufferCodecEventsExpected;\n }\n if (this.mediaSource && this.mediaSource.readyState === 'open') {\n this.checkPendingTracks();\n }\n }\n appendChangeType(type, mimeType) {\n const {\n operationQueue\n } = this;\n const operation = {\n execute: () => {\n const sb = this.sourceBuffer[type];\n if (sb) {\n this.log(`changing ${type} sourceBuffer type to ${mimeType}`);\n sb.changeType(mimeType);\n }\n operationQueue.shiftAndExecuteNext(type);\n },\n onStart: () => {},\n onComplete: () => {},\n onError: error => {\n this.warn(`Failed to change ${type} SourceBuffer type`, error);\n }\n };\n operationQueue.append(operation, type, !!this.pendingTracks[type]);\n }\n onBufferAppending(event, eventData) {\n const {\n hls,\n operationQueue,\n tracks\n } = this;\n const {\n data,\n type,\n frag,\n part,\n chunkMeta\n } = eventData;\n const chunkStats = chunkMeta.buffering[type];\n const bufferAppendingStart = self.performance.now();\n chunkStats.start = bufferAppendingStart;\n const fragBuffering = frag.stats.buffering;\n const partBuffering = part ? part.stats.buffering : null;\n if (fragBuffering.start === 0) {\n fragBuffering.start = bufferAppendingStart;\n }\n if (partBuffering && partBuffering.start === 0) {\n partBuffering.start = bufferAppendingStart;\n }\n\n // TODO: Only update timestampOffset when audio/mpeg fragment or part is not contiguous with previously appended\n // Adjusting `SourceBuffer.timestampOffset` (desired point in the timeline where the next frames should be appended)\n // in Chrome browser when we detect MPEG audio container and time delta between level PTS and `SourceBuffer.timestampOffset`\n // is greater than 100ms (this is enough to handle seek for VOD or level change for LIVE videos).\n // More info here: https://github.com/video-dev/hls.js/issues/332#issuecomment-257986486\n const audioTrack = tracks.audio;\n let checkTimestampOffset = false;\n if (type === 'audio' && (audioTrack == null ? void 0 : audioTrack.container) === 'audio/mpeg') {\n checkTimestampOffset = !this.lastMpegAudioChunk || chunkMeta.id === 1 || this.lastMpegAudioChunk.sn !== chunkMeta.sn;\n this.lastMpegAudioChunk = chunkMeta;\n }\n const fragStart = frag.start;\n const operation = {\n execute: () => {\n chunkStats.executeStart = self.performance.now();\n if (checkTimestampOffset) {\n const sb = this.sourceBuffer[type];\n if (sb) {\n const delta = fragStart - sb.timestampOffset;\n if (Math.abs(delta) >= 0.1) {\n this.log(`Updating audio SourceBuffer timestampOffset to ${fragStart} (delta: ${delta}) sn: ${frag.sn})`);\n sb.timestampOffset = fragStart;\n }\n }\n }\n this.appendExecutor(data, type);\n },\n onStart: () => {\n // logger.debug(`[buffer-controller]: ${type} SourceBuffer updatestart`);\n },\n onComplete: () => {\n // logger.debug(`[buffer-controller]: ${type} SourceBuffer updateend`);\n const end = self.performance.now();\n chunkStats.executeEnd = chunkStats.end = end;\n if (fragBuffering.first === 0) {\n fragBuffering.first = end;\n }\n if (partBuffering && partBuffering.first === 0) {\n partBuffering.first = end;\n }\n const {\n sourceBuffer\n } = this;\n const timeRanges = {};\n for (const type in sourceBuffer) {\n timeRanges[type] = BufferHelper.getBuffered(sourceBuffer[type]);\n }\n this.appendErrors[type] = 0;\n if (type === 'audio' || type === 'video') {\n this.appendErrors.audiovideo = 0;\n } else {\n this.appendErrors.audio = 0;\n this.appendErrors.video = 0;\n }\n this.hls.trigger(Events.BUFFER_APPENDED, {\n type,\n frag,\n part,\n chunkMeta,\n parent: frag.type,\n timeRanges\n });\n },\n onError: error => {\n // in case any error occured while appending, put back segment in segments table\n const event = {\n type: ErrorTypes.MEDIA_ERROR,\n parent: frag.type,\n details: ErrorDetails.BUFFER_APPEND_ERROR,\n sourceBufferName: type,\n frag,\n part,\n chunkMeta,\n error,\n err: error,\n fatal: false\n };\n if (error.code === DOMException.QUOTA_EXCEEDED_ERR) {\n // QuotaExceededError: http://www.w3.org/TR/html5/infrastructure.html#quotaexceedederror\n // let's stop appending any segments, and report BUFFER_FULL_ERROR error\n event.details = ErrorDetails.BUFFER_FULL_ERROR;\n } else {\n const appendErrorCount = ++this.appendErrors[type];\n event.details = ErrorDetails.BUFFER_APPEND_ERROR;\n /* with UHD content, we could get loop of quota exceeded error until\n browser is able to evict some data from sourcebuffer. Retrying can help recover.\n */\n this.warn(`Failed ${appendErrorCount}/${hls.config.appendErrorMaxRetry} times to append segment in \"${type}\" sourceBuffer`);\n if (appendErrorCount >= hls.config.appendErrorMaxRetry) {\n event.fatal = true;\n }\n }\n hls.trigger(Events.ERROR, event);\n }\n };\n operationQueue.append(operation, type, !!this.pendingTracks[type]);\n }\n onBufferFlushing(event, data) {\n const {\n operationQueue\n } = this;\n const flushOperation = type => ({\n execute: this.removeExecutor.bind(this, type, data.startOffset, data.endOffset),\n onStart: () => {\n // logger.debug(`[buffer-controller]: Started flushing ${data.startOffset} -> ${data.endOffset} for ${type} Source Buffer`);\n },\n onComplete: () => {\n // logger.debug(`[buffer-controller]: Finished flushing ${data.startOffset} -> ${data.endOffset} for ${type} Source Buffer`);\n this.hls.trigger(Events.BUFFER_FLUSHED, {\n type\n });\n },\n onError: error => {\n this.warn(`Failed to remove from ${type} SourceBuffer`, error);\n }\n });\n if (data.type) {\n operationQueue.append(flushOperation(data.type), data.type);\n } else {\n this.getSourceBufferTypes().forEach(type => {\n operationQueue.append(flushOperation(type), type);\n });\n }\n }\n onFragParsed(event, data) {\n const {\n frag,\n part\n } = data;\n const buffersAppendedTo = [];\n const elementaryStreams = part ? part.elementaryStreams : frag.elementaryStreams;\n if (elementaryStreams[ElementaryStreamTypes.AUDIOVIDEO]) {\n buffersAppendedTo.push('audiovideo');\n } else {\n if (elementaryStreams[ElementaryStreamTypes.AUDIO]) {\n buffersAppendedTo.push('audio');\n }\n if (elementaryStreams[ElementaryStreamTypes.VIDEO]) {\n buffersAppendedTo.push('video');\n }\n }\n const onUnblocked = () => {\n const now = self.performance.now();\n frag.stats.buffering.end = now;\n if (part) {\n part.stats.buffering.end = now;\n }\n const stats = part ? part.stats : frag.stats;\n this.hls.trigger(Events.FRAG_BUFFERED, {\n frag,\n part,\n stats,\n id: frag.type\n });\n };\n if (buffersAppendedTo.length === 0) {\n this.warn(`Fragments must have at least one ElementaryStreamType set. type: ${frag.type} level: ${frag.level} sn: ${frag.sn}`);\n }\n this.blockBuffers(onUnblocked, buffersAppendedTo);\n }\n onFragChanged(event, data) {\n this.trimBuffers();\n }\n\n // on BUFFER_EOS mark matching sourcebuffer(s) as ended and trigger checkEos()\n // an undefined data.type will mark all buffers as EOS.\n onBufferEos(event, data) {\n const ended = this.getSourceBufferTypes().reduce((acc, type) => {\n const sb = this.sourceBuffer[type];\n if (sb && (!data.type || data.type === type)) {\n sb.ending = true;\n if (!sb.ended) {\n sb.ended = true;\n this.log(`${type} sourceBuffer now EOS`);\n }\n }\n return acc && !!(!sb || sb.ended);\n }, true);\n if (ended) {\n this.log(`Queueing mediaSource.endOfStream()`);\n this.blockBuffers(() => {\n this.getSourceBufferTypes().forEach(type => {\n const sb = this.sourceBuffer[type];\n if (sb) {\n sb.ending = false;\n }\n });\n const {\n mediaSource\n } = this;\n if (!mediaSource || mediaSource.readyState !== 'open') {\n if (mediaSource) {\n this.log(`Could not call mediaSource.endOfStream(). mediaSource.readyState: ${mediaSource.readyState}`);\n }\n return;\n }\n this.log(`Calling mediaSource.endOfStream()`);\n // Allow this to throw and be caught by the enqueueing function\n mediaSource.endOfStream();\n });\n }\n }\n onLevelUpdated(event, {\n details\n }) {\n if (!details.fragments.length) {\n return;\n }\n this.details = details;\n if (this.getSourceBufferTypes().length) {\n this.blockBuffers(this.updateMediaElementDuration.bind(this));\n } else {\n this.updateMediaElementDuration();\n }\n }\n trimBuffers() {\n const {\n hls,\n details,\n media\n } = this;\n if (!media || details === null) {\n return;\n }\n const sourceBufferTypes = this.getSourceBufferTypes();\n if (!sourceBufferTypes.length) {\n return;\n }\n const config = hls.config;\n const currentTime = media.currentTime;\n const targetDuration = details.levelTargetDuration;\n\n // Support for deprecated liveBackBufferLength\n const backBufferLength = details.live && config.liveBackBufferLength !== null ? config.liveBackBufferLength : config.backBufferLength;\n if (isFiniteNumber(backBufferLength) && backBufferLength > 0) {\n const maxBackBufferLength = Math.max(backBufferLength, targetDuration);\n const targetBackBufferPosition = Math.floor(currentTime / targetDuration) * targetDuration - maxBackBufferLength;\n this.flushBackBuffer(currentTime, targetDuration, targetBackBufferPosition);\n }\n if (isFiniteNumber(config.frontBufferFlushThreshold) && config.frontBufferFlushThreshold > 0) {\n const frontBufferLength = Math.max(config.maxBufferLength, config.frontBufferFlushThreshold);\n const maxFrontBufferLength = Math.max(frontBufferLength, targetDuration);\n const targetFrontBufferPosition = Math.floor(currentTime / targetDuration) * targetDuration + maxFrontBufferLength;\n this.flushFrontBuffer(currentTime, targetDuration, targetFrontBufferPosition);\n }\n }\n flushBackBuffer(currentTime, targetDuration, targetBackBufferPosition) {\n const {\n details,\n sourceBuffer\n } = this;\n const sourceBufferTypes = this.getSourceBufferTypes();\n sourceBufferTypes.forEach(type => {\n const sb = sourceBuffer[type];\n if (sb) {\n const buffered = BufferHelper.getBuffered(sb);\n // when target buffer start exceeds actual buffer start\n if (buffered.length > 0 && targetBackBufferPosition > buffered.start(0)) {\n this.hls.trigger(Events.BACK_BUFFER_REACHED, {\n bufferEnd: targetBackBufferPosition\n });\n\n // Support for deprecated event:\n if (details != null && details.live) {\n this.hls.trigger(Events.LIVE_BACK_BUFFER_REACHED, {\n bufferEnd: targetBackBufferPosition\n });\n } else if (sb.ended && buffered.end(buffered.length - 1) - currentTime < targetDuration * 2) {\n this.log(`Cannot flush ${type} back buffer while SourceBuffer is in ended state`);\n return;\n }\n this.hls.trigger(Events.BUFFER_FLUSHING, {\n startOffset: 0,\n endOffset: targetBackBufferPosition,\n type\n });\n }\n }\n });\n }\n flushFrontBuffer(currentTime, targetDuration, targetFrontBufferPosition) {\n const {\n sourceBuffer\n } = this;\n const sourceBufferTypes = this.getSourceBufferTypes();\n sourceBufferTypes.forEach(type => {\n const sb = sourceBuffer[type];\n if (sb) {\n const buffered = BufferHelper.getBuffered(sb);\n const numBufferedRanges = buffered.length;\n // The buffer is either empty or contiguous\n if (numBufferedRanges < 2) {\n return;\n }\n const bufferStart = buffered.start(numBufferedRanges - 1);\n const bufferEnd = buffered.end(numBufferedRanges - 1);\n // No flush if we can tolerate the current buffer length or the current buffer range we would flush is contiguous with current position\n if (targetFrontBufferPosition > bufferStart || currentTime >= bufferStart && currentTime <= bufferEnd) {\n return;\n } else if (sb.ended && currentTime - bufferEnd < 2 * targetDuration) {\n this.log(`Cannot flush ${type} front buffer while SourceBuffer is in ended state`);\n return;\n }\n this.hls.trigger(Events.BUFFER_FLUSHING, {\n startOffset: bufferStart,\n endOffset: Infinity,\n type\n });\n }\n });\n }\n\n /**\n * Update Media Source duration to current level duration or override to Infinity if configuration parameter\n * 'liveDurationInfinity` is set to `true`\n * More details: https://github.com/video-dev/hls.js/issues/355\n */\n updateMediaElementDuration() {\n if (!this.details || !this.media || !this.mediaSource || this.mediaSource.readyState !== 'open') {\n return;\n }\n const {\n details,\n hls,\n media,\n mediaSource\n } = this;\n const levelDuration = details.fragments[0].start + details.totalduration;\n const mediaDuration = media.duration;\n const msDuration = isFiniteNumber(mediaSource.duration) ? mediaSource.duration : 0;\n if (details.live && hls.config.liveDurationInfinity) {\n // Override duration to Infinity\n mediaSource.duration = Infinity;\n this.updateSeekableRange(details);\n } else if (levelDuration > msDuration && levelDuration > mediaDuration || !isFiniteNumber(mediaDuration)) {\n // levelDuration was the last value we set.\n // not using mediaSource.duration as the browser may tweak this value\n // only update Media Source duration if its value increase, this is to avoid\n // flushing already buffered portion when switching between quality level\n this.log(`Updating Media Source duration to ${levelDuration.toFixed(3)}`);\n mediaSource.duration = levelDuration;\n }\n }\n updateSeekableRange(levelDetails) {\n const mediaSource = this.mediaSource;\n const fragments = levelDetails.fragments;\n const len = fragments.length;\n if (len && levelDetails.live && mediaSource != null && mediaSource.setLiveSeekableRange) {\n const start = Math.max(0, fragments[0].start);\n const end = Math.max(start, start + levelDetails.totalduration);\n this.log(`Media Source duration is set to ${mediaSource.duration}. Setting seekable range to ${start}-${end}.`);\n mediaSource.setLiveSeekableRange(start, end);\n }\n }\n checkPendingTracks() {\n const {\n bufferCodecEventsExpected,\n operationQueue,\n pendingTracks\n } = this;\n\n // Check if we've received all of the expected bufferCodec events. When none remain, create all the sourceBuffers at once.\n // This is important because the MSE spec allows implementations to throw QuotaExceededErrors if creating new sourceBuffers after\n // data has been appended to existing ones.\n // 2 tracks is the max (one for audio, one for video). If we've reach this max go ahead and create the buffers.\n const pendingTracksCount = Object.keys(pendingTracks).length;\n if (pendingTracksCount && (!bufferCodecEventsExpected || pendingTracksCount === 2 || 'audiovideo' in pendingTracks)) {\n // ok, let's create them now !\n this.createSourceBuffers(pendingTracks);\n this.pendingTracks = {};\n // append any pending segments now !\n const buffers = this.getSourceBufferTypes();\n if (buffers.length) {\n this.hls.trigger(Events.BUFFER_CREATED, {\n tracks: this.tracks\n });\n buffers.forEach(type => {\n operationQueue.executeNext(type);\n });\n } else {\n const error = new Error('could not create source buffer for media codec(s)');\n this.hls.trigger(Events.ERROR, {\n type: ErrorTypes.MEDIA_ERROR,\n details: ErrorDetails.BUFFER_INCOMPATIBLE_CODECS_ERROR,\n fatal: true,\n error,\n reason: error.message\n });\n }\n }\n }\n createSourceBuffers(tracks) {\n const {\n sourceBuffer,\n mediaSource\n } = this;\n if (!mediaSource) {\n throw Error('createSourceBuffers called when mediaSource was null');\n }\n for (const trackName in tracks) {\n if (!sourceBuffer[trackName]) {\n var _track$levelCodec;\n const track = tracks[trackName];\n if (!track) {\n throw Error(`source buffer exists for track ${trackName}, however track does not`);\n }\n // use levelCodec as first priority unless it contains multiple comma-separated codec values\n let codec = ((_track$levelCodec = track.levelCodec) == null ? void 0 : _track$levelCodec.indexOf(',')) === -1 ? track.levelCodec : track.codec;\n if (codec) {\n if (trackName.slice(0, 5) === 'audio') {\n codec = getCodecCompatibleName(codec, this.appendSource);\n }\n }\n const mimeType = `${track.container};codecs=${codec}`;\n this.log(`creating sourceBuffer(${mimeType})`);\n try {\n const sb = sourceBuffer[trackName] = mediaSource.addSourceBuffer(mimeType);\n const sbName = trackName;\n this.addBufferListener(sbName, 'updatestart', this._onSBUpdateStart);\n this.addBufferListener(sbName, 'updateend', this._onSBUpdateEnd);\n this.addBufferListener(sbName, 'error', this._onSBUpdateError);\n // ManagedSourceBuffer bufferedchange event\n if (this.appendSource) {\n this.addBufferListener(sbName, 'bufferedchange', (type, event) => {\n // If media was ejected check for a change. Added ranges are redundant with changes on 'updateend' event.\n const removedRanges = event.removedRanges;\n if (removedRanges != null && removedRanges.length) {\n this.hls.trigger(Events.BUFFER_FLUSHED, {\n type: trackName\n });\n }\n });\n }\n this.tracks[trackName] = {\n buffer: sb,\n codec: codec,\n container: track.container,\n levelCodec: track.levelCodec,\n metadata: track.metadata,\n id: track.id\n };\n } catch (err) {\n this.error(`error while trying to add sourceBuffer: ${err.message}`);\n this.hls.trigger(Events.ERROR, {\n type: ErrorTypes.MEDIA_ERROR,\n details: ErrorDetails.BUFFER_ADD_CODEC_ERROR,\n fatal: false,\n error: err,\n sourceBufferName: trackName,\n mimeType: mimeType\n });\n }\n }\n }\n }\n get mediaSrc() {\n var _this$media, _this$media$querySele;\n const media = ((_this$media = this.media) == null ? void 0 : (_this$media$querySele = _this$media.querySelector) == null ? void 0 : _this$media$querySele.call(_this$media, 'source')) || this.media;\n return media == null ? void 0 : media.src;\n }\n _onSBUpdateStart(type) {\n const {\n operationQueue\n } = this;\n const operation = operationQueue.current(type);\n operation.onStart();\n }\n _onSBUpdateEnd(type) {\n var _this$mediaSource2;\n if (((_this$mediaSource2 = this.mediaSource) == null ? void 0 : _this$mediaSource2.readyState) === 'closed') {\n this.resetBuffer(type);\n return;\n }\n const {\n operationQueue\n } = this;\n const operation = operationQueue.current(type);\n operation.onComplete();\n operationQueue.shiftAndExecuteNext(type);\n }\n _onSBUpdateError(type, event) {\n var _this$mediaSource3;\n const error = new Error(`${type} SourceBuffer error. MediaSource readyState: ${(_this$mediaSource3 = this.mediaSource) == null ? void 0 : _this$mediaSource3.readyState}`);\n this.error(`${error}`, event);\n // according to http://www.w3.org/TR/media-source/#sourcebuffer-append-error\n // SourceBuffer errors are not necessarily fatal; if so, the HTMLMediaElement will fire an error event\n this.hls.trigger(Events.ERROR, {\n type: ErrorTypes.MEDIA_ERROR,\n details: ErrorDetails.BUFFER_APPENDING_ERROR,\n sourceBufferName: type,\n error,\n fatal: false\n });\n // updateend is always fired after error, so we'll allow that to shift the current operation off of the queue\n const operation = this.operationQueue.current(type);\n if (operation) {\n operation.onError(error);\n }\n }\n\n // This method must result in an updateend event; if remove is not called, _onSBUpdateEnd must be called manually\n removeExecutor(type, startOffset, endOffset) {\n const {\n media,\n mediaSource,\n operationQueue,\n sourceBuffer\n } = this;\n const sb = sourceBuffer[type];\n if (!media || !mediaSource || !sb) {\n this.warn(`Attempting to remove from the ${type} SourceBuffer, but it does not exist`);\n operationQueue.shiftAndExecuteNext(type);\n return;\n }\n const mediaDuration = isFiniteNumber(media.duration) ? media.duration : Infinity;\n const msDuration = isFiniteNumber(mediaSource.duration) ? mediaSource.duration : Infinity;\n const removeStart = Math.max(0, startOffset);\n const removeEnd = Math.min(endOffset, mediaDuration, msDuration);\n if (removeEnd > removeStart && (!sb.ending || sb.ended)) {\n sb.ended = false;\n this.log(`Removing [${removeStart},${removeEnd}] from the ${type} SourceBuffer`);\n sb.remove(removeStart, removeEnd);\n } else {\n // Cycle the queue\n operationQueue.shiftAndExecuteNext(type);\n }\n }\n\n // This method must result in an updateend event; if append is not called, _onSBUpdateEnd must be called manually\n appendExecutor(data, type) {\n const sb = this.sourceBuffer[type];\n if (!sb) {\n if (!this.pendingTracks[type]) {\n throw new Error(`Attempting to append to the ${type} SourceBuffer, but it does not exist`);\n }\n return;\n }\n sb.ended = false;\n sb.appendBuffer(data);\n }\n\n // Enqueues an operation to each SourceBuffer queue which, upon execution, resolves a promise. When all promises\n // resolve, the onUnblocked function is executed. Functions calling this method do not need to unblock the queue\n // upon completion, since we already do it here\n blockBuffers(onUnblocked, buffers = this.getSourceBufferTypes()) {\n if (!buffers.length) {\n this.log('Blocking operation requested, but no SourceBuffers exist');\n Promise.resolve().then(onUnblocked);\n return;\n }\n const {\n operationQueue\n } = this;\n\n // logger.debug(`[buffer-controller]: Blocking ${buffers} SourceBuffer`);\n const blockingOperations = buffers.map(type => operationQueue.appendBlocker(type));\n Promise.all(blockingOperations).then(() => {\n // logger.debug(`[buffer-controller]: Blocking operation resolved; unblocking ${buffers} SourceBuffer`);\n onUnblocked();\n buffers.forEach(type => {\n const sb = this.sourceBuffer[type];\n // Only cycle the queue if the SB is not updating. There's a bug in Chrome which sets the SB updating flag to\n // true when changing the MediaSource duration (https://bugs.chromium.org/p/chromium/issues/detail?id=959359&can=2&q=mediasource%20duration)\n // While this is a workaround, it's probably useful to have around\n if (!(sb != null && sb.updating)) {\n operationQueue.shiftAndExecuteNext(type);\n }\n });\n });\n }\n getSourceBufferTypes() {\n return Object.keys(this.sourceBuffer);\n }\n addBufferListener(type, event, fn) {\n const buffer = this.sourceBuffer[type];\n if (!buffer) {\n return;\n }\n const listener = fn.bind(this, type);\n this.listeners[type].push({\n event,\n listener\n });\n buffer.addEventListener(event, listener);\n }\n removeBufferListeners(type) {\n const buffer = this.sourceBuffer[type];\n if (!buffer) {\n return;\n }\n this.listeners[type].forEach(l => {\n buffer.removeEventListener(l.event, l.listener);\n });\n }\n}\nfunction removeSourceChildren(node) {\n const sourceChildren = node.querySelectorAll('source');\n [].slice.call(sourceChildren).forEach(source => {\n node.removeChild(source);\n });\n}\nfunction addSource(media, url) {\n const source = self.document.createElement('source');\n source.type = 'video/mp4';\n source.src = url;\n media.appendChild(source);\n}\n\n/**\n *\n * This code was ported from the dash.js project at:\n * https://github.com/Dash-Industry-Forum/dash.js/blob/development/externals/cea608-parser.js\n * https://github.com/Dash-Industry-Forum/dash.js/commit/8269b26a761e0853bb21d78780ed945144ecdd4d#diff-71bc295a2d6b6b7093a1d3290d53a4b2\n *\n * The original copyright appears below:\n *\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2015-2016, DASH Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation and/or\n * other materials provided with the distribution.\n * 2. Neither the name of Dash Industry Forum nor the names of its\n * contributors may be used to endorse or promote products derived from this software\n * without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n * Exceptions from regular ASCII. CodePoints are mapped to UTF-16 codes\n */\n\nconst specialCea608CharsCodes = {\n 0x2a: 0xe1,\n // lowercase a, acute accent\n 0x5c: 0xe9,\n // lowercase e, acute accent\n 0x5e: 0xed,\n // lowercase i, acute accent\n 0x5f: 0xf3,\n // lowercase o, acute accent\n 0x60: 0xfa,\n // lowercase u, acute accent\n 0x7b: 0xe7,\n // lowercase c with cedilla\n 0x7c: 0xf7,\n // division symbol\n 0x7d: 0xd1,\n // uppercase N tilde\n 0x7e: 0xf1,\n // lowercase n tilde\n 0x7f: 0x2588,\n // Full block\n // THIS BLOCK INCLUDES THE 16 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS\n // THAT COME FROM HI BYTE=0x11 AND LOW BETWEEN 0x30 AND 0x3F\n // THIS MEANS THAT \\x50 MUST BE ADDED TO THE VALUES\n 0x80: 0xae,\n // Registered symbol (R)\n 0x81: 0xb0,\n // degree sign\n 0x82: 0xbd,\n // 1/2 symbol\n 0x83: 0xbf,\n // Inverted (open) question mark\n 0x84: 0x2122,\n // Trademark symbol (TM)\n 0x85: 0xa2,\n // Cents symbol\n 0x86: 0xa3,\n // Pounds sterling\n 0x87: 0x266a,\n // Music 8'th note\n 0x88: 0xe0,\n // lowercase a, grave accent\n 0x89: 0x20,\n // transparent space (regular)\n 0x8a: 0xe8,\n // lowercase e, grave accent\n 0x8b: 0xe2,\n // lowercase a, circumflex accent\n 0x8c: 0xea,\n // lowercase e, circumflex accent\n 0x8d: 0xee,\n // lowercase i, circumflex accent\n 0x8e: 0xf4,\n // lowercase o, circumflex accent\n 0x8f: 0xfb,\n // lowercase u, circumflex accent\n // THIS BLOCK INCLUDES THE 32 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS\n // THAT COME FROM HI BYTE=0x12 AND LOW BETWEEN 0x20 AND 0x3F\n 0x90: 0xc1,\n // capital letter A with acute\n 0x91: 0xc9,\n // capital letter E with acute\n 0x92: 0xd3,\n // capital letter O with acute\n 0x93: 0xda,\n // capital letter U with acute\n 0x94: 0xdc,\n // capital letter U with diaresis\n 0x95: 0xfc,\n // lowercase letter U with diaeresis\n 0x96: 0x2018,\n // opening single quote\n 0x97: 0xa1,\n // inverted exclamation mark\n 0x98: 0x2a,\n // asterisk\n 0x99: 0x2019,\n // closing single quote\n 0x9a: 0x2501,\n // box drawings heavy horizontal\n 0x9b: 0xa9,\n // copyright sign\n 0x9c: 0x2120,\n // Service mark\n 0x9d: 0x2022,\n // (round) bullet\n 0x9e: 0x201c,\n // Left double quotation mark\n 0x9f: 0x201d,\n // Right double quotation mark\n 0xa0: 0xc0,\n // uppercase A, grave accent\n 0xa1: 0xc2,\n // uppercase A, circumflex\n 0xa2: 0xc7,\n // uppercase C with cedilla\n 0xa3: 0xc8,\n // uppercase E, grave accent\n 0xa4: 0xca,\n // uppercase E, circumflex\n 0xa5: 0xcb,\n // capital letter E with diaresis\n 0xa6: 0xeb,\n // lowercase letter e with diaresis\n 0xa7: 0xce,\n // uppercase I, circumflex\n 0xa8: 0xcf,\n // uppercase I, with diaresis\n 0xa9: 0xef,\n // lowercase i, with diaresis\n 0xaa: 0xd4,\n // uppercase O, circumflex\n 0xab: 0xd9,\n // uppercase U, grave accent\n 0xac: 0xf9,\n // lowercase u, grave accent\n 0xad: 0xdb,\n // uppercase U, circumflex\n 0xae: 0xab,\n // left-pointing double angle quotation mark\n 0xaf: 0xbb,\n // right-pointing double angle quotation mark\n // THIS BLOCK INCLUDES THE 32 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS\n // THAT COME FROM HI BYTE=0x13 AND LOW BETWEEN 0x20 AND 0x3F\n 0xb0: 0xc3,\n // Uppercase A, tilde\n 0xb1: 0xe3,\n // Lowercase a, tilde\n 0xb2: 0xcd,\n // Uppercase I, acute accent\n 0xb3: 0xcc,\n // Uppercase I, grave accent\n 0xb4: 0xec,\n // Lowercase i, grave accent\n 0xb5: 0xd2,\n // Uppercase O, grave accent\n 0xb6: 0xf2,\n // Lowercase o, grave accent\n 0xb7: 0xd5,\n // Uppercase O, tilde\n 0xb8: 0xf5,\n // Lowercase o, tilde\n 0xb9: 0x7b,\n // Open curly brace\n 0xba: 0x7d,\n // Closing curly brace\n 0xbb: 0x5c,\n // Backslash\n 0xbc: 0x5e,\n // Caret\n 0xbd: 0x5f,\n // Underscore\n 0xbe: 0x7c,\n // Pipe (vertical line)\n 0xbf: 0x223c,\n // Tilde operator\n 0xc0: 0xc4,\n // Uppercase A, umlaut\n 0xc1: 0xe4,\n // Lowercase A, umlaut\n 0xc2: 0xd6,\n // Uppercase O, umlaut\n 0xc3: 0xf6,\n // Lowercase o, umlaut\n 0xc4: 0xdf,\n // Esszett (sharp S)\n 0xc5: 0xa5,\n // Yen symbol\n 0xc6: 0xa4,\n // Generic currency sign\n 0xc7: 0x2503,\n // Box drawings heavy vertical\n 0xc8: 0xc5,\n // Uppercase A, ring\n 0xc9: 0xe5,\n // Lowercase A, ring\n 0xca: 0xd8,\n // Uppercase O, stroke\n 0xcb: 0xf8,\n // Lowercase o, strok\n 0xcc: 0x250f,\n // Box drawings heavy down and right\n 0xcd: 0x2513,\n // Box drawings heavy down and left\n 0xce: 0x2517,\n // Box drawings heavy up and right\n 0xcf: 0x251b // Box drawings heavy up and left\n};\n\n/**\n * Utils\n */\nconst getCharForByte = byte => String.fromCharCode(specialCea608CharsCodes[byte] || byte);\nconst NR_ROWS = 15;\nconst NR_COLS = 100;\n// Tables to look up row from PAC data\nconst rowsLowCh1 = {\n 0x11: 1,\n 0x12: 3,\n 0x15: 5,\n 0x16: 7,\n 0x17: 9,\n 0x10: 11,\n 0x13: 12,\n 0x14: 14\n};\nconst rowsHighCh1 = {\n 0x11: 2,\n 0x12: 4,\n 0x15: 6,\n 0x16: 8,\n 0x17: 10,\n 0x13: 13,\n 0x14: 15\n};\nconst rowsLowCh2 = {\n 0x19: 1,\n 0x1a: 3,\n 0x1d: 5,\n 0x1e: 7,\n 0x1f: 9,\n 0x18: 11,\n 0x1b: 12,\n 0x1c: 14\n};\nconst rowsHighCh2 = {\n 0x19: 2,\n 0x1a: 4,\n 0x1d: 6,\n 0x1e: 8,\n 0x1f: 10,\n 0x1b: 13,\n 0x1c: 15\n};\nconst backgroundColors = ['white', 'green', 'blue', 'cyan', 'red', 'yellow', 'magenta', 'black', 'transparent'];\nclass CaptionsLogger {\n constructor() {\n this.time = null;\n this.verboseLevel = 0;\n }\n log(severity, msg) {\n if (this.verboseLevel >= severity) {\n const m = typeof msg === 'function' ? msg() : msg;\n logger.log(`${this.time} [${severity}] ${m}`);\n }\n }\n}\nconst numArrayToHexArray = function numArrayToHexArray(numArray) {\n const hexArray = [];\n for (let j = 0; j < numArray.length; j++) {\n hexArray.push(numArray[j].toString(16));\n }\n return hexArray;\n};\nclass PenState {\n constructor() {\n this.foreground = 'white';\n this.underline = false;\n this.italics = false;\n this.background = 'black';\n this.flash = false;\n }\n reset() {\n this.foreground = 'white';\n this.underline = false;\n this.italics = false;\n this.background = 'black';\n this.flash = false;\n }\n setStyles(styles) {\n const attribs = ['foreground', 'underline', 'italics', 'background', 'flash'];\n for (let i = 0; i < attribs.length; i++) {\n const style = attribs[i];\n if (styles.hasOwnProperty(style)) {\n this[style] = styles[style];\n }\n }\n }\n isDefault() {\n return this.foreground === 'white' && !this.underline && !this.italics && this.background === 'black' && !this.flash;\n }\n equals(other) {\n return this.foreground === other.foreground && this.underline === other.underline && this.italics === other.italics && this.background === other.background && this.flash === other.flash;\n }\n copy(newPenState) {\n this.foreground = newPenState.foreground;\n this.underline = newPenState.underline;\n this.italics = newPenState.italics;\n this.background = newPenState.background;\n this.flash = newPenState.flash;\n }\n toString() {\n return 'color=' + this.foreground + ', underline=' + this.underline + ', italics=' + this.italics + ', background=' + this.background + ', flash=' + this.flash;\n }\n}\n\n/**\n * Unicode character with styling and background.\n * @constructor\n */\nclass StyledUnicodeChar {\n constructor() {\n this.uchar = ' ';\n this.penState = new PenState();\n }\n reset() {\n this.uchar = ' ';\n this.penState.reset();\n }\n setChar(uchar, newPenState) {\n this.uchar = uchar;\n this.penState.copy(newPenState);\n }\n setPenState(newPenState) {\n this.penState.copy(newPenState);\n }\n equals(other) {\n return this.uchar === other.uchar && this.penState.equals(other.penState);\n }\n copy(newChar) {\n this.uchar = newChar.uchar;\n this.penState.copy(newChar.penState);\n }\n isEmpty() {\n return this.uchar === ' ' && this.penState.isDefault();\n }\n}\n\n/**\n * CEA-608 row consisting of NR_COLS instances of StyledUnicodeChar.\n * @constructor\n */\nclass Row {\n constructor(logger) {\n this.chars = [];\n this.pos = 0;\n this.currPenState = new PenState();\n this.cueStartTime = null;\n this.logger = void 0;\n for (let i = 0; i < NR_COLS; i++) {\n this.chars.push(new StyledUnicodeChar());\n }\n this.logger = logger;\n }\n equals(other) {\n for (let i = 0; i < NR_COLS; i++) {\n if (!this.chars[i].equals(other.chars[i])) {\n return false;\n }\n }\n return true;\n }\n copy(other) {\n for (let i = 0; i < NR_COLS; i++) {\n this.chars[i].copy(other.chars[i]);\n }\n }\n isEmpty() {\n let empty = true;\n for (let i = 0; i < NR_COLS; i++) {\n if (!this.chars[i].isEmpty()) {\n empty = false;\n break;\n }\n }\n return empty;\n }\n\n /**\n * Set the cursor to a valid column.\n */\n setCursor(absPos) {\n if (this.pos !== absPos) {\n this.pos = absPos;\n }\n if (this.pos < 0) {\n this.logger.log(3, 'Negative cursor position ' + this.pos);\n this.pos = 0;\n } else if (this.pos > NR_COLS) {\n this.logger.log(3, 'Too large cursor position ' + this.pos);\n this.pos = NR_COLS;\n }\n }\n\n /**\n * Move the cursor relative to current position.\n */\n moveCursor(relPos) {\n const newPos = this.pos + relPos;\n if (relPos > 1) {\n for (let i = this.pos + 1; i < newPos + 1; i++) {\n this.chars[i].setPenState(this.currPenState);\n }\n }\n this.setCursor(newPos);\n }\n\n /**\n * Backspace, move one step back and clear character.\n */\n backSpace() {\n this.moveCursor(-1);\n this.chars[this.pos].setChar(' ', this.currPenState);\n }\n insertChar(byte) {\n if (byte >= 0x90) {\n // Extended char\n this.backSpace();\n }\n const char = getCharForByte(byte);\n if (this.pos >= NR_COLS) {\n this.logger.log(0, () => 'Cannot insert ' + byte.toString(16) + ' (' + char + ') at position ' + this.pos + '. Skipping it!');\n return;\n }\n this.chars[this.pos].setChar(char, this.currPenState);\n this.moveCursor(1);\n }\n clearFromPos(startPos) {\n let i;\n for (i = startPos; i < NR_COLS; i++) {\n this.chars[i].reset();\n }\n }\n clear() {\n this.clearFromPos(0);\n this.pos = 0;\n this.currPenState.reset();\n }\n clearToEndOfRow() {\n this.clearFromPos(this.pos);\n }\n getTextString() {\n const chars = [];\n let empty = true;\n for (let i = 0; i < NR_COLS; i++) {\n const char = this.chars[i].uchar;\n if (char !== ' ') {\n empty = false;\n }\n chars.push(char);\n }\n if (empty) {\n return '';\n } else {\n return chars.join('');\n }\n }\n setPenStyles(styles) {\n this.currPenState.setStyles(styles);\n const currChar = this.chars[this.pos];\n currChar.setPenState(this.currPenState);\n }\n}\n\n/**\n * Keep a CEA-608 screen of 32x15 styled characters\n * @constructor\n */\nclass CaptionScreen {\n constructor(logger) {\n this.rows = [];\n this.currRow = NR_ROWS - 1;\n this.nrRollUpRows = null;\n this.lastOutputScreen = null;\n this.logger = void 0;\n for (let i = 0; i < NR_ROWS; i++) {\n this.rows.push(new Row(logger));\n }\n this.logger = logger;\n }\n reset() {\n for (let i = 0; i < NR_ROWS; i++) {\n this.rows[i].clear();\n }\n this.currRow = NR_ROWS - 1;\n }\n equals(other) {\n let equal = true;\n for (let i = 0; i < NR_ROWS; i++) {\n if (!this.rows[i].equals(other.rows[i])) {\n equal = false;\n break;\n }\n }\n return equal;\n }\n copy(other) {\n for (let i = 0; i < NR_ROWS; i++) {\n this.rows[i].copy(other.rows[i]);\n }\n }\n isEmpty() {\n let empty = true;\n for (let i = 0; i < NR_ROWS; i++) {\n if (!this.rows[i].isEmpty()) {\n empty = false;\n break;\n }\n }\n return empty;\n }\n backSpace() {\n const row = this.rows[this.currRow];\n row.backSpace();\n }\n clearToEndOfRow() {\n const row = this.rows[this.currRow];\n row.clearToEndOfRow();\n }\n\n /**\n * Insert a character (without styling) in the current row.\n */\n insertChar(char) {\n const row = this.rows[this.currRow];\n row.insertChar(char);\n }\n setPen(styles) {\n const row = this.rows[this.currRow];\n row.setPenStyles(styles);\n }\n moveCursor(relPos) {\n const row = this.rows[this.currRow];\n row.moveCursor(relPos);\n }\n setCursor(absPos) {\n this.logger.log(2, 'setCursor: ' + absPos);\n const row = this.rows[this.currRow];\n row.setCursor(absPos);\n }\n setPAC(pacData) {\n this.logger.log(2, () => 'pacData = ' + JSON.stringify(pacData));\n let newRow = pacData.row - 1;\n if (this.nrRollUpRows && newRow < this.nrRollUpRows - 1) {\n newRow = this.nrRollUpRows - 1;\n }\n\n // Make sure this only affects Roll-up Captions by checking this.nrRollUpRows\n if (this.nrRollUpRows && this.currRow !== newRow) {\n // clear all rows first\n for (let i = 0; i < NR_ROWS; i++) {\n this.rows[i].clear();\n }\n\n // Copy this.nrRollUpRows rows from lastOutputScreen and place it in the newRow location\n // topRowIndex - the start of rows to copy (inclusive index)\n const topRowIndex = this.currRow + 1 - this.nrRollUpRows;\n // We only copy if the last position was already shown.\n // We use the cueStartTime value to check this.\n const lastOutputScreen = this.lastOutputScreen;\n if (lastOutputScreen) {\n const prevLineTime = lastOutputScreen.rows[topRowIndex].cueStartTime;\n const time = this.logger.time;\n if (prevLineTime !== null && time !== null && prevLineTime < time) {\n for (let i = 0; i < this.nrRollUpRows; i++) {\n this.rows[newRow - this.nrRollUpRows + i + 1].copy(lastOutputScreen.rows[topRowIndex + i]);\n }\n }\n }\n }\n this.currRow = newRow;\n const row = this.rows[this.currRow];\n if (pacData.indent !== null) {\n const indent = pacData.indent;\n const prevPos = Math.max(indent - 1, 0);\n row.setCursor(pacData.indent);\n pacData.color = row.chars[prevPos].penState.foreground;\n }\n const styles = {\n foreground: pacData.color,\n underline: pacData.underline,\n italics: pacData.italics,\n background: 'black',\n flash: false\n };\n this.setPen(styles);\n }\n\n /**\n * Set background/extra foreground, but first do back_space, and then insert space (backwards compatibility).\n */\n setBkgData(bkgData) {\n this.logger.log(2, () => 'bkgData = ' + JSON.stringify(bkgData));\n this.backSpace();\n this.setPen(bkgData);\n this.insertChar(0x20); // Space\n }\n setRollUpRows(nrRows) {\n this.nrRollUpRows = nrRows;\n }\n rollUp() {\n if (this.nrRollUpRows === null) {\n this.logger.log(3, 'roll_up but nrRollUpRows not set yet');\n return; // Not properly setup\n }\n this.logger.log(1, () => this.getDisplayText());\n const topRowIndex = this.currRow + 1 - this.nrRollUpRows;\n const topRow = this.rows.splice(topRowIndex, 1)[0];\n topRow.clear();\n this.rows.splice(this.currRow, 0, topRow);\n this.logger.log(2, 'Rolling up');\n // this.logger.log(VerboseLevel.TEXT, this.get_display_text())\n }\n\n /**\n * Get all non-empty rows with as unicode text.\n */\n getDisplayText(asOneRow) {\n asOneRow = asOneRow || false;\n const displayText = [];\n let text = '';\n let rowNr = -1;\n for (let i = 0; i < NR_ROWS; i++) {\n const rowText = this.rows[i].getTextString();\n if (rowText) {\n rowNr = i + 1;\n if (asOneRow) {\n displayText.push('Row ' + rowNr + \": '\" + rowText + \"'\");\n } else {\n displayText.push(rowText.trim());\n }\n }\n }\n if (displayText.length > 0) {\n if (asOneRow) {\n text = '[' + displayText.join(' | ') + ']';\n } else {\n text = displayText.join('\\n');\n }\n }\n return text;\n }\n getTextAndFormat() {\n return this.rows;\n }\n}\n\n// var modes = ['MODE_ROLL-UP', 'MODE_POP-ON', 'MODE_PAINT-ON', 'MODE_TEXT'];\n\nclass Cea608Channel {\n constructor(channelNumber, outputFilter, logger) {\n this.chNr = void 0;\n this.outputFilter = void 0;\n this.mode = void 0;\n this.verbose = void 0;\n this.displayedMemory = void 0;\n this.nonDisplayedMemory = void 0;\n this.lastOutputScreen = void 0;\n this.currRollUpRow = void 0;\n this.writeScreen = void 0;\n this.cueStartTime = void 0;\n this.logger = void 0;\n this.chNr = channelNumber;\n this.outputFilter = outputFilter;\n this.mode = null;\n this.verbose = 0;\n this.displayedMemory = new CaptionScreen(logger);\n this.nonDisplayedMemory = new CaptionScreen(logger);\n this.lastOutputScreen = new CaptionScreen(logger);\n this.currRollUpRow = this.displayedMemory.rows[NR_ROWS - 1];\n this.writeScreen = this.displayedMemory;\n this.mode = null;\n this.cueStartTime = null; // Keeps track of where a cue started.\n this.logger = logger;\n }\n reset() {\n this.mode = null;\n this.displayedMemory.reset();\n this.nonDisplayedMemory.reset();\n this.lastOutputScreen.reset();\n this.outputFilter.reset();\n this.currRollUpRow = this.displayedMemory.rows[NR_ROWS - 1];\n this.writeScreen = this.displayedMemory;\n this.mode = null;\n this.cueStartTime = null;\n }\n getHandler() {\n return this.outputFilter;\n }\n setHandler(newHandler) {\n this.outputFilter = newHandler;\n }\n setPAC(pacData) {\n this.writeScreen.setPAC(pacData);\n }\n setBkgData(bkgData) {\n this.writeScreen.setBkgData(bkgData);\n }\n setMode(newMode) {\n if (newMode === this.mode) {\n return;\n }\n this.mode = newMode;\n this.logger.log(2, () => 'MODE=' + newMode);\n if (this.mode === 'MODE_POP-ON') {\n this.writeScreen = this.nonDisplayedMemory;\n } else {\n this.writeScreen = this.displayedMemory;\n this.writeScreen.reset();\n }\n if (this.mode !== 'MODE_ROLL-UP') {\n this.displayedMemory.nrRollUpRows = null;\n this.nonDisplayedMemory.nrRollUpRows = null;\n }\n this.mode = newMode;\n }\n insertChars(chars) {\n for (let i = 0; i < chars.length; i++) {\n this.writeScreen.insertChar(chars[i]);\n }\n const screen = this.writeScreen === this.displayedMemory ? 'DISP' : 'NON_DISP';\n this.logger.log(2, () => screen + ': ' + this.writeScreen.getDisplayText(true));\n if (this.mode === 'MODE_PAINT-ON' || this.mode === 'MODE_ROLL-UP') {\n this.logger.log(1, () => 'DISPLAYED: ' + this.displayedMemory.getDisplayText(true));\n this.outputDataUpdate();\n }\n }\n ccRCL() {\n // Resume Caption Loading (switch mode to Pop On)\n this.logger.log(2, 'RCL - Resume Caption Loading');\n this.setMode('MODE_POP-ON');\n }\n ccBS() {\n // BackSpace\n this.logger.log(2, 'BS - BackSpace');\n if (this.mode === 'MODE_TEXT') {\n return;\n }\n this.writeScreen.backSpace();\n if (this.writeScreen === this.displayedMemory) {\n this.outputDataUpdate();\n }\n }\n ccAOF() {\n // Reserved (formerly Alarm Off)\n }\n ccAON() {\n // Reserved (formerly Alarm On)\n }\n ccDER() {\n // Delete to End of Row\n this.logger.log(2, 'DER- Delete to End of Row');\n this.writeScreen.clearToEndOfRow();\n this.outputDataUpdate();\n }\n ccRU(nrRows) {\n // Roll-Up Captions-2,3,or 4 Rows\n this.logger.log(2, 'RU(' + nrRows + ') - Roll Up');\n this.writeScreen = this.displayedMemory;\n this.setMode('MODE_ROLL-UP');\n this.writeScreen.setRollUpRows(nrRows);\n }\n ccFON() {\n // Flash On\n this.logger.log(2, 'FON - Flash On');\n this.writeScreen.setPen({\n flash: true\n });\n }\n ccRDC() {\n // Resume Direct Captioning (switch mode to PaintOn)\n this.logger.log(2, 'RDC - Resume Direct Captioning');\n this.setMode('MODE_PAINT-ON');\n }\n ccTR() {\n // Text Restart in text mode (not supported, however)\n this.logger.log(2, 'TR');\n this.setMode('MODE_TEXT');\n }\n ccRTD() {\n // Resume Text Display in Text mode (not supported, however)\n this.logger.log(2, 'RTD');\n this.setMode('MODE_TEXT');\n }\n ccEDM() {\n // Erase Displayed Memory\n this.logger.log(2, 'EDM - Erase Displayed Memory');\n this.displayedMemory.reset();\n this.outputDataUpdate(true);\n }\n ccCR() {\n // Carriage Return\n this.logger.log(2, 'CR - Carriage Return');\n this.writeScreen.rollUp();\n this.outputDataUpdate(true);\n }\n ccENM() {\n // Erase Non-Displayed Memory\n this.logger.log(2, 'ENM - Erase Non-displayed Memory');\n this.nonDisplayedMemory.reset();\n }\n ccEOC() {\n // End of Caption (Flip Memories)\n this.logger.log(2, 'EOC - End Of Caption');\n if (this.mode === 'MODE_POP-ON') {\n const tmp = this.displayedMemory;\n this.displayedMemory = this.nonDisplayedMemory;\n this.nonDisplayedMemory = tmp;\n this.writeScreen = this.nonDisplayedMemory;\n this.logger.log(1, () => 'DISP: ' + this.displayedMemory.getDisplayText());\n }\n this.outputDataUpdate(true);\n }\n ccTO(nrCols) {\n // Tab Offset 1,2, or 3 columns\n this.logger.log(2, 'TO(' + nrCols + ') - Tab Offset');\n this.writeScreen.moveCursor(nrCols);\n }\n ccMIDROW(secondByte) {\n // Parse MIDROW command\n const styles = {\n flash: false\n };\n styles.underline = secondByte % 2 === 1;\n styles.italics = secondByte >= 0x2e;\n if (!styles.italics) {\n const colorIndex = Math.floor(secondByte / 2) - 0x10;\n const colors = ['white', 'green', 'blue', 'cyan', 'red', 'yellow', 'magenta'];\n styles.foreground = colors[colorIndex];\n } else {\n styles.foreground = 'white';\n }\n this.logger.log(2, 'MIDROW: ' + JSON.stringify(styles));\n this.writeScreen.setPen(styles);\n }\n outputDataUpdate(dispatch = false) {\n const time = this.logger.time;\n if (time === null) {\n return;\n }\n if (this.outputFilter) {\n if (this.cueStartTime === null && !this.displayedMemory.isEmpty()) {\n // Start of a new cue\n this.cueStartTime = time;\n } else {\n if (!this.displayedMemory.equals(this.lastOutputScreen)) {\n this.outputFilter.newCue(this.cueStartTime, time, this.lastOutputScreen);\n if (dispatch && this.outputFilter.dispatchCue) {\n this.outputFilter.dispatchCue();\n }\n this.cueStartTime = this.displayedMemory.isEmpty() ? null : time;\n }\n }\n this.lastOutputScreen.copy(this.displayedMemory);\n }\n }\n cueSplitAtTime(t) {\n if (this.outputFilter) {\n if (!this.displayedMemory.isEmpty()) {\n if (this.outputFilter.newCue) {\n this.outputFilter.newCue(this.cueStartTime, t, this.displayedMemory);\n }\n this.cueStartTime = t;\n }\n }\n }\n}\n\n// Will be 1 or 2 when parsing captions\n\nclass Cea608Parser {\n constructor(field, out1, out2) {\n this.channels = void 0;\n this.currentChannel = 0;\n this.cmdHistory = createCmdHistory();\n this.logger = void 0;\n const logger = this.logger = new CaptionsLogger();\n this.channels = [null, new Cea608Channel(field, out1, logger), new Cea608Channel(field + 1, out2, logger)];\n }\n getHandler(channel) {\n return this.channels[channel].getHandler();\n }\n setHandler(channel, newHandler) {\n this.channels[channel].setHandler(newHandler);\n }\n\n /**\n * Add data for time t in forms of list of bytes (unsigned ints). The bytes are treated as pairs.\n */\n addData(time, byteList) {\n this.logger.time = time;\n for (let i = 0; i < byteList.length; i += 2) {\n const a = byteList[i] & 0x7f;\n const b = byteList[i + 1] & 0x7f;\n let cmdFound = false;\n let charsFound = null;\n if (a === 0 && b === 0) {\n continue;\n } else {\n this.logger.log(3, () => '[' + numArrayToHexArray([byteList[i], byteList[i + 1]]) + '] -> (' + numArrayToHexArray([a, b]) + ')');\n }\n const cmdHistory = this.cmdHistory;\n const isControlCode = a >= 0x10 && a <= 0x1f;\n if (isControlCode) {\n // Skip redundant control codes\n if (hasCmdRepeated(a, b, cmdHistory)) {\n setLastCmd(null, null, cmdHistory);\n this.logger.log(3, () => 'Repeated command (' + numArrayToHexArray([a, b]) + ') is dropped');\n continue;\n }\n setLastCmd(a, b, this.cmdHistory);\n cmdFound = this.parseCmd(a, b);\n if (!cmdFound) {\n cmdFound = this.parseMidrow(a, b);\n }\n if (!cmdFound) {\n cmdFound = this.parsePAC(a, b);\n }\n if (!cmdFound) {\n cmdFound = this.parseBackgroundAttributes(a, b);\n }\n } else {\n setLastCmd(null, null, cmdHistory);\n }\n if (!cmdFound) {\n charsFound = this.parseChars(a, b);\n if (charsFound) {\n const currChNr = this.currentChannel;\n if (currChNr && currChNr > 0) {\n const channel = this.channels[currChNr];\n channel.insertChars(charsFound);\n } else {\n this.logger.log(2, 'No channel found yet. TEXT-MODE?');\n }\n }\n }\n if (!cmdFound && !charsFound) {\n this.logger.log(2, () => \"Couldn't parse cleaned data \" + numArrayToHexArray([a, b]) + ' orig: ' + numArrayToHexArray([byteList[i], byteList[i + 1]]));\n }\n }\n }\n\n /**\n * Parse Command.\n * @returns True if a command was found\n */\n parseCmd(a, b) {\n const cond1 = (a === 0x14 || a === 0x1c || a === 0x15 || a === 0x1d) && b >= 0x20 && b <= 0x2f;\n const cond2 = (a === 0x17 || a === 0x1f) && b >= 0x21 && b <= 0x23;\n if (!(cond1 || cond2)) {\n return false;\n }\n const chNr = a === 0x14 || a === 0x15 || a === 0x17 ? 1 : 2;\n const channel = this.channels[chNr];\n if (a === 0x14 || a === 0x15 || a === 0x1c || a === 0x1d) {\n if (b === 0x20) {\n channel.ccRCL();\n } else if (b === 0x21) {\n channel.ccBS();\n } else if (b === 0x22) {\n channel.ccAOF();\n } else if (b === 0x23) {\n channel.ccAON();\n } else if (b === 0x24) {\n channel.ccDER();\n } else if (b === 0x25) {\n channel.ccRU(2);\n } else if (b === 0x26) {\n channel.ccRU(3);\n } else if (b === 0x27) {\n channel.ccRU(4);\n } else if (b === 0x28) {\n channel.ccFON();\n } else if (b === 0x29) {\n channel.ccRDC();\n } else if (b === 0x2a) {\n channel.ccTR();\n } else if (b === 0x2b) {\n channel.ccRTD();\n } else if (b === 0x2c) {\n channel.ccEDM();\n } else if (b === 0x2d) {\n channel.ccCR();\n } else if (b === 0x2e) {\n channel.ccENM();\n } else if (b === 0x2f) {\n channel.ccEOC();\n }\n } else {\n // a == 0x17 || a == 0x1F\n channel.ccTO(b - 0x20);\n }\n this.currentChannel = chNr;\n return true;\n }\n\n /**\n * Parse midrow styling command\n */\n parseMidrow(a, b) {\n let chNr = 0;\n if ((a === 0x11 || a === 0x19) && b >= 0x20 && b <= 0x2f) {\n if (a === 0x11) {\n chNr = 1;\n } else {\n chNr = 2;\n }\n if (chNr !== this.currentChannel) {\n this.logger.log(0, 'Mismatch channel in midrow parsing');\n return false;\n }\n const channel = this.channels[chNr];\n if (!channel) {\n return false;\n }\n channel.ccMIDROW(b);\n this.logger.log(3, () => 'MIDROW (' + numArrayToHexArray([a, b]) + ')');\n return true;\n }\n return false;\n }\n\n /**\n * Parse Preable Access Codes (Table 53).\n * @returns {Boolean} Tells if PAC found\n */\n parsePAC(a, b) {\n let row;\n const case1 = (a >= 0x11 && a <= 0x17 || a >= 0x19 && a <= 0x1f) && b >= 0x40 && b <= 0x7f;\n const case2 = (a === 0x10 || a === 0x18) && b >= 0x40 && b <= 0x5f;\n if (!(case1 || case2)) {\n return false;\n }\n const chNr = a <= 0x17 ? 1 : 2;\n if (b >= 0x40 && b <= 0x5f) {\n row = chNr === 1 ? rowsLowCh1[a] : rowsLowCh2[a];\n } else {\n // 0x60 <= b <= 0x7F\n row = chNr === 1 ? rowsHighCh1[a] : rowsHighCh2[a];\n }\n const channel = this.channels[chNr];\n if (!channel) {\n return false;\n }\n channel.setPAC(this.interpretPAC(row, b));\n this.currentChannel = chNr;\n return true;\n }\n\n /**\n * Interpret the second byte of the pac, and return the information.\n * @returns pacData with style parameters\n */\n interpretPAC(row, byte) {\n let pacIndex;\n const pacData = {\n color: null,\n italics: false,\n indent: null,\n underline: false,\n row: row\n };\n if (byte > 0x5f) {\n pacIndex = byte - 0x60;\n } else {\n pacIndex = byte - 0x40;\n }\n pacData.underline = (pacIndex & 1) === 1;\n if (pacIndex <= 0xd) {\n pacData.color = ['white', 'green', 'blue', 'cyan', 'red', 'yellow', 'magenta', 'white'][Math.floor(pacIndex / 2)];\n } else if (pacIndex <= 0xf) {\n pacData.italics = true;\n pacData.color = 'white';\n } else {\n pacData.indent = Math.floor((pacIndex - 0x10) / 2) * 4;\n }\n return pacData; // Note that row has zero offset. The spec uses 1.\n }\n\n /**\n * Parse characters.\n * @returns An array with 1 to 2 codes corresponding to chars, if found. null otherwise.\n */\n parseChars(a, b) {\n let channelNr;\n let charCodes = null;\n let charCode1 = null;\n if (a >= 0x19) {\n channelNr = 2;\n charCode1 = a - 8;\n } else {\n channelNr = 1;\n charCode1 = a;\n }\n if (charCode1 >= 0x11 && charCode1 <= 0x13) {\n // Special character\n let oneCode;\n if (charCode1 === 0x11) {\n oneCode = b + 0x50;\n } else if (charCode1 === 0x12) {\n oneCode = b + 0x70;\n } else {\n oneCode = b + 0x90;\n }\n this.logger.log(2, () => \"Special char '\" + getCharForByte(oneCode) + \"' in channel \" + channelNr);\n charCodes = [oneCode];\n } else if (a >= 0x20 && a <= 0x7f) {\n charCodes = b === 0 ? [a] : [a, b];\n }\n if (charCodes) {\n this.logger.log(3, () => 'Char codes = ' + numArrayToHexArray(charCodes).join(','));\n }\n return charCodes;\n }\n\n /**\n * Parse extended background attributes as well as new foreground color black.\n * @returns True if background attributes are found\n */\n parseBackgroundAttributes(a, b) {\n const case1 = (a === 0x10 || a === 0x18) && b >= 0x20 && b <= 0x2f;\n const case2 = (a === 0x17 || a === 0x1f) && b >= 0x2d && b <= 0x2f;\n if (!(case1 || case2)) {\n return false;\n }\n let index;\n const bkgData = {};\n if (a === 0x10 || a === 0x18) {\n index = Math.floor((b - 0x20) / 2);\n bkgData.background = backgroundColors[index];\n if (b % 2 === 1) {\n bkgData.background = bkgData.background + '_semi';\n }\n } else if (b === 0x2d) {\n bkgData.background = 'transparent';\n } else {\n bkgData.foreground = 'black';\n if (b === 0x2f) {\n bkgData.underline = true;\n }\n }\n const chNr = a <= 0x17 ? 1 : 2;\n const channel = this.channels[chNr];\n channel.setBkgData(bkgData);\n return true;\n }\n\n /**\n * Reset state of parser and its channels.\n */\n reset() {\n for (let i = 0; i < Object.keys(this.channels).length; i++) {\n const channel = this.channels[i];\n if (channel) {\n channel.reset();\n }\n }\n setLastCmd(null, null, this.cmdHistory);\n }\n\n /**\n * Trigger the generation of a cue, and the start of a new one if displayScreens are not empty.\n */\n cueSplitAtTime(t) {\n for (let i = 0; i < this.channels.length; i++) {\n const channel = this.channels[i];\n if (channel) {\n channel.cueSplitAtTime(t);\n }\n }\n }\n}\nfunction setLastCmd(a, b, cmdHistory) {\n cmdHistory.a = a;\n cmdHistory.b = b;\n}\nfunction hasCmdRepeated(a, b, cmdHistory) {\n return cmdHistory.a === a && cmdHistory.b === b;\n}\nfunction createCmdHistory() {\n return {\n a: null,\n b: null\n };\n}\n\nclass OutputFilter {\n constructor(timelineController, trackName) {\n this.timelineController = void 0;\n this.cueRanges = [];\n this.trackName = void 0;\n this.startTime = null;\n this.endTime = null;\n this.screen = null;\n this.timelineController = timelineController;\n this.trackName = trackName;\n }\n dispatchCue() {\n if (this.startTime === null) {\n return;\n }\n this.timelineController.addCues(this.trackName, this.startTime, this.endTime, this.screen, this.cueRanges);\n this.startTime = null;\n }\n newCue(startTime, endTime, screen) {\n if (this.startTime === null || this.startTime > startTime) {\n this.startTime = startTime;\n }\n this.endTime = endTime;\n this.screen = screen;\n this.timelineController.createCaptionsTrack(this.trackName);\n }\n reset() {\n this.cueRanges = [];\n this.startTime = null;\n }\n}\n\n/**\n * Copyright 2013 vtt.js Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar VTTCue = (function () {\n if (optionalSelf != null && optionalSelf.VTTCue) {\n return self.VTTCue;\n }\n const AllowedDirections = ['', 'lr', 'rl'];\n const AllowedAlignments = ['start', 'middle', 'end', 'left', 'right'];\n function isAllowedValue(allowed, value) {\n if (typeof value !== 'string') {\n return false;\n }\n // necessary for assuring the generic conforms to the Array interface\n if (!Array.isArray(allowed)) {\n return false;\n }\n // reset the type so that the next narrowing works well\n const lcValue = value.toLowerCase();\n // use the allow list to narrow the type to a specific subset of strings\n if (~allowed.indexOf(lcValue)) {\n return lcValue;\n }\n return false;\n }\n function findDirectionSetting(value) {\n return isAllowedValue(AllowedDirections, value);\n }\n function findAlignSetting(value) {\n return isAllowedValue(AllowedAlignments, value);\n }\n function extend(obj, ...rest) {\n let i = 1;\n for (; i < arguments.length; i++) {\n const cobj = arguments[i];\n for (const p in cobj) {\n obj[p] = cobj[p];\n }\n }\n return obj;\n }\n function VTTCue(startTime, endTime, text) {\n const cue = this;\n const baseObj = {\n enumerable: true\n };\n /**\n * Shim implementation specific properties. These properties are not in\n * the spec.\n */\n\n // Lets us know when the VTTCue's data has changed in such a way that we need\n // to recompute its display state. This lets us compute its display state\n // lazily.\n cue.hasBeenReset = false;\n\n /**\n * VTTCue and TextTrackCue properties\n * http://dev.w3.org/html5/webvtt/#vttcue-interface\n */\n\n let _id = '';\n let _pauseOnExit = false;\n let _startTime = startTime;\n let _endTime = endTime;\n let _text = text;\n let _region = null;\n let _vertical = '';\n let _snapToLines = true;\n let _line = 'auto';\n let _lineAlign = 'start';\n let _position = 50;\n let _positionAlign = 'middle';\n let _size = 50;\n let _align = 'middle';\n Object.defineProperty(cue, 'id', extend({}, baseObj, {\n get: function () {\n return _id;\n },\n set: function (value) {\n _id = '' + value;\n }\n }));\n Object.defineProperty(cue, 'pauseOnExit', extend({}, baseObj, {\n get: function () {\n return _pauseOnExit;\n },\n set: function (value) {\n _pauseOnExit = !!value;\n }\n }));\n Object.defineProperty(cue, 'startTime', extend({}, baseObj, {\n get: function () {\n return _startTime;\n },\n set: function (value) {\n if (typeof value !== 'number') {\n throw new TypeError('Start time must be set to a number.');\n }\n _startTime = value;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'endTime', extend({}, baseObj, {\n get: function () {\n return _endTime;\n },\n set: function (value) {\n if (typeof value !== 'number') {\n throw new TypeError('End time must be set to a number.');\n }\n _endTime = value;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'text', extend({}, baseObj, {\n get: function () {\n return _text;\n },\n set: function (value) {\n _text = '' + value;\n this.hasBeenReset = true;\n }\n }));\n\n // todo: implement VTTRegion polyfill?\n Object.defineProperty(cue, 'region', extend({}, baseObj, {\n get: function () {\n return _region;\n },\n set: function (value) {\n _region = value;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'vertical', extend({}, baseObj, {\n get: function () {\n return _vertical;\n },\n set: function (value) {\n const setting = findDirectionSetting(value);\n // Have to check for false because the setting an be an empty string.\n if (setting === false) {\n throw new SyntaxError('An invalid or illegal string was specified.');\n }\n _vertical = setting;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'snapToLines', extend({}, baseObj, {\n get: function () {\n return _snapToLines;\n },\n set: function (value) {\n _snapToLines = !!value;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'line', extend({}, baseObj, {\n get: function () {\n return _line;\n },\n set: function (value) {\n if (typeof value !== 'number' && value !== 'auto') {\n throw new SyntaxError('An invalid number or illegal string was specified.');\n }\n _line = value;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'lineAlign', extend({}, baseObj, {\n get: function () {\n return _lineAlign;\n },\n set: function (value) {\n const setting = findAlignSetting(value);\n if (!setting) {\n throw new SyntaxError('An invalid or illegal string was specified.');\n }\n _lineAlign = setting;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'position', extend({}, baseObj, {\n get: function () {\n return _position;\n },\n set: function (value) {\n if (value < 0 || value > 100) {\n throw new Error('Position must be between 0 and 100.');\n }\n _position = value;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'positionAlign', extend({}, baseObj, {\n get: function () {\n return _positionAlign;\n },\n set: function (value) {\n const setting = findAlignSetting(value);\n if (!setting) {\n throw new SyntaxError('An invalid or illegal string was specified.');\n }\n _positionAlign = setting;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'size', extend({}, baseObj, {\n get: function () {\n return _size;\n },\n set: function (value) {\n if (value < 0 || value > 100) {\n throw new Error('Size must be between 0 and 100.');\n }\n _size = value;\n this.hasBeenReset = true;\n }\n }));\n Object.defineProperty(cue, 'align', extend({}, baseObj, {\n get: function () {\n return _align;\n },\n set: function (value) {\n const setting = findAlignSetting(value);\n if (!setting) {\n throw new SyntaxError('An invalid or illegal string was specified.');\n }\n _align = setting;\n this.hasBeenReset = true;\n }\n }));\n\n /**\n * Other <track> spec defined properties\n */\n\n // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#text-track-cue-display-state\n cue.displayState = undefined;\n }\n\n /**\n * VTTCue methods\n */\n\n VTTCue.prototype.getCueAsHTML = function () {\n // Assume WebVTT.convertCueToDOMTree is on the global.\n const WebVTT = self.WebVTT;\n return WebVTT.convertCueToDOMTree(self, this.text);\n };\n // this is a polyfill hack\n return VTTCue;\n})();\n\n/*\n * Source: https://github.com/mozilla/vtt.js/blob/master/dist/vtt.js\n */\n\nclass StringDecoder {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n decode(data, options) {\n if (!data) {\n return '';\n }\n if (typeof data !== 'string') {\n throw new Error('Error - expected string data.');\n }\n return decodeURIComponent(encodeURIComponent(data));\n }\n}\n\n// Try to parse input as a time stamp.\nfunction parseTimeStamp(input) {\n function computeSeconds(h, m, s, f) {\n return (h | 0) * 3600 + (m | 0) * 60 + (s | 0) + parseFloat(f || 0);\n }\n const m = input.match(/^(?:(\\d+):)?(\\d{2}):(\\d{2})(\\.\\d+)?/);\n if (!m) {\n return null;\n }\n if (parseFloat(m[2]) > 59) {\n // Timestamp takes the form of [hours]:[minutes].[milliseconds]\n // First position is hours as it's over 59.\n return computeSeconds(m[2], m[3], 0, m[4]);\n }\n // Timestamp takes the form of [hours (optional)]:[minutes]:[seconds].[milliseconds]\n return computeSeconds(m[1], m[2], m[3], m[4]);\n}\n\n// A settings object holds key/value pairs and will ignore anything but the first\n// assignment to a specific key.\nclass Settings {\n constructor() {\n this.values = Object.create(null);\n }\n // Only accept the first assignment to any key.\n set(k, v) {\n if (!this.get(k) && v !== '') {\n this.values[k] = v;\n }\n }\n // Return the value for a key, or a default value.\n // If 'defaultKey' is passed then 'dflt' is assumed to be an object with\n // a number of possible default values as properties where 'defaultKey' is\n // the key of the property that will be chosen; otherwise it's assumed to be\n // a single value.\n get(k, dflt, defaultKey) {\n if (defaultKey) {\n return this.has(k) ? this.values[k] : dflt[defaultKey];\n }\n return this.has(k) ? this.values[k] : dflt;\n }\n // Check whether we have a value for a key.\n has(k) {\n return k in this.values;\n }\n // Accept a setting if its one of the given alternatives.\n alt(k, v, a) {\n for (let n = 0; n < a.length; ++n) {\n if (v === a[n]) {\n this.set(k, v);\n break;\n }\n }\n }\n // Accept a setting if its a valid (signed) integer.\n integer(k, v) {\n if (/^-?\\d+$/.test(v)) {\n // integer\n this.set(k, parseInt(v, 10));\n }\n }\n // Accept a setting if its a valid percentage.\n percent(k, v) {\n if (/^([\\d]{1,3})(\\.[\\d]*)?%$/.test(v)) {\n const percent = parseFloat(v);\n if (percent >= 0 && percent <= 100) {\n this.set(k, percent);\n return true;\n }\n }\n return false;\n }\n}\n\n// Helper function to parse input into groups separated by 'groupDelim', and\n// interpret each group as a key/value pair separated by 'keyValueDelim'.\nfunction parseOptions(input, callback, keyValueDelim, groupDelim) {\n const groups = groupDelim ? input.split(groupDelim) : [input];\n for (const i in groups) {\n if (typeof groups[i] !== 'string') {\n continue;\n }\n const kv = groups[i].split(keyValueDelim);\n if (kv.length !== 2) {\n continue;\n }\n const k = kv[0];\n const v = kv[1];\n callback(k, v);\n }\n}\nconst defaults = new VTTCue(0, 0, '');\n// 'middle' was changed to 'center' in the spec: https://github.com/w3c/webvtt/pull/244\n// Safari doesn't yet support this change, but FF and Chrome do.\nconst center = defaults.align === 'middle' ? 'middle' : 'center';\nfunction parseCue(input, cue, regionList) {\n // Remember the original input if we need to throw an error.\n const oInput = input;\n // 4.1 WebVTT timestamp\n function consumeTimeStamp() {\n const ts = parseTimeStamp(input);\n if (ts === null) {\n throw new Error('Malformed timestamp: ' + oInput);\n }\n\n // Remove time stamp from input.\n input = input.replace(/^[^\\sa-zA-Z-]+/, '');\n return ts;\n }\n\n // 4.4.2 WebVTT cue settings\n function consumeCueSettings(input, cue) {\n const settings = new Settings();\n parseOptions(input, function (k, v) {\n let vals;\n switch (k) {\n case 'region':\n // Find the last region we parsed with the same region id.\n for (let i = regionList.length - 1; i >= 0; i--) {\n if (regionList[i].id === v) {\n settings.set(k, regionList[i].region);\n break;\n }\n }\n break;\n case 'vertical':\n settings.alt(k, v, ['rl', 'lr']);\n break;\n case 'line':\n vals = v.split(',');\n settings.integer(k, vals[0]);\n if (settings.percent(k, vals[0])) {\n settings.set('snapToLines', false);\n }\n settings.alt(k, vals[0], ['auto']);\n if (vals.length === 2) {\n settings.alt('lineAlign', vals[1], ['start', center, 'end']);\n }\n break;\n case 'position':\n vals = v.split(',');\n settings.percent(k, vals[0]);\n if (vals.length === 2) {\n settings.alt('positionAlign', vals[1], ['start', center, 'end', 'line-left', 'line-right', 'auto']);\n }\n break;\n case 'size':\n settings.percent(k, v);\n break;\n case 'align':\n settings.alt(k, v, ['start', center, 'end', 'left', 'right']);\n break;\n }\n }, /:/, /\\s/);\n\n // Apply default values for any missing fields.\n cue.region = settings.get('region', null);\n cue.vertical = settings.get('vertical', '');\n let line = settings.get('line', 'auto');\n if (line === 'auto' && defaults.line === -1) {\n // set numeric line number for Safari\n line = -1;\n }\n cue.line = line;\n cue.lineAlign = settings.get('lineAlign', 'start');\n cue.snapToLines = settings.get('snapToLines', true);\n cue.size = settings.get('size', 100);\n cue.align = settings.get('align', center);\n let position = settings.get('position', 'auto');\n if (position === 'auto' && defaults.position === 50) {\n // set numeric position for Safari\n position = cue.align === 'start' || cue.align === 'left' ? 0 : cue.align === 'end' || cue.align === 'right' ? 100 : 50;\n }\n cue.position = position;\n }\n function skipWhitespace() {\n input = input.replace(/^\\s+/, '');\n }\n\n // 4.1 WebVTT cue timings.\n skipWhitespace();\n cue.startTime = consumeTimeStamp(); // (1) collect cue start time\n skipWhitespace();\n if (input.slice(0, 3) !== '-->') {\n // (3) next characters must match '-->'\n throw new Error(\"Malformed time stamp (time stamps must be separated by '-->'): \" + oInput);\n }\n input = input.slice(3);\n skipWhitespace();\n cue.endTime = consumeTimeStamp(); // (5) collect cue end time\n\n // 4.1 WebVTT cue settings list.\n skipWhitespace();\n consumeCueSettings(input, cue);\n}\nfunction fixLineBreaks(input) {\n return input.replace(/<br(?: \\/)?>/gi, '\\n');\n}\nclass VTTParser {\n constructor() {\n this.state = 'INITIAL';\n this.buffer = '';\n this.decoder = new StringDecoder();\n this.regionList = [];\n this.cue = null;\n this.oncue = void 0;\n this.onparsingerror = void 0;\n this.onflush = void 0;\n }\n parse(data) {\n const _this = this;\n\n // If there is no data then we won't decode it, but will just try to parse\n // whatever is in buffer already. This may occur in circumstances, for\n // example when flush() is called.\n if (data) {\n // Try to decode the data that we received.\n _this.buffer += _this.decoder.decode(data, {\n stream: true\n });\n }\n function collectNextLine() {\n let buffer = _this.buffer;\n let pos = 0;\n buffer = fixLineBreaks(buffer);\n while (pos < buffer.length && buffer[pos] !== '\\r' && buffer[pos] !== '\\n') {\n ++pos;\n }\n const line = buffer.slice(0, pos);\n // Advance the buffer early in case we fail below.\n if (buffer[pos] === '\\r') {\n ++pos;\n }\n if (buffer[pos] === '\\n') {\n ++pos;\n }\n _this.buffer = buffer.slice(pos);\n return line;\n }\n\n // 3.2 WebVTT metadata header syntax\n function parseHeader(input) {\n parseOptions(input, function (k, v) {\n // switch (k) {\n // case 'region':\n // 3.3 WebVTT region metadata header syntax\n // console.log('parse region', v);\n // parseRegion(v);\n // break;\n // }\n }, /:/);\n }\n\n // 5.1 WebVTT file parsing.\n try {\n let line = '';\n if (_this.state === 'INITIAL') {\n // We can't start parsing until we have the first line.\n if (!/\\r\\n|\\n/.test(_this.buffer)) {\n return this;\n }\n line = collectNextLine();\n // strip of UTF-8 BOM if any\n // https://en.wikipedia.org/wiki/Byte_order_mark#UTF-8\n const m = line.match(/^()?WEBVTT([ \\t].*)?$/);\n if (!(m != null && m[0])) {\n throw new Error('Malformed WebVTT signature.');\n }\n _this.state = 'HEADER';\n }\n let alreadyCollectedLine = false;\n while (_this.buffer) {\n // We can't parse a line until we have the full line.\n if (!/\\r\\n|\\n/.test(_this.buffer)) {\n return this;\n }\n if (!alreadyCollectedLine) {\n line = collectNextLine();\n } else {\n alreadyCollectedLine = false;\n }\n switch (_this.state) {\n case 'HEADER':\n // 13-18 - Allow a header (metadata) under the WEBVTT line.\n if (/:/.test(line)) {\n parseHeader(line);\n } else if (!line) {\n // An empty line terminates the header and starts the body (cues).\n _this.state = 'ID';\n }\n continue;\n case 'NOTE':\n // Ignore NOTE blocks.\n if (!line) {\n _this.state = 'ID';\n }\n continue;\n case 'ID':\n // Check for the start of NOTE blocks.\n if (/^NOTE($|[ \\t])/.test(line)) {\n _this.state = 'NOTE';\n break;\n }\n // 19-29 - Allow any number of line terminators, then initialize new cue values.\n if (!line) {\n continue;\n }\n _this.cue = new VTTCue(0, 0, '');\n _this.state = 'CUE';\n // 30-39 - Check if self line contains an optional identifier or timing data.\n if (line.indexOf('-->') === -1) {\n _this.cue.id = line;\n continue;\n }\n // Process line as start of a cue.\n /* falls through */\n case 'CUE':\n // 40 - Collect cue timings and settings.\n if (!_this.cue) {\n _this.state = 'BADCUE';\n continue;\n }\n try {\n parseCue(line, _this.cue, _this.regionList);\n } catch (e) {\n // In case of an error ignore rest of the cue.\n _this.cue = null;\n _this.state = 'BADCUE';\n continue;\n }\n _this.state = 'CUETEXT';\n continue;\n case 'CUETEXT':\n {\n const hasSubstring = line.indexOf('-->') !== -1;\n // 34 - If we have an empty line then report the cue.\n // 35 - If we have the special substring '-->' then report the cue,\n // but do not collect the line as we need to process the current\n // one as a new cue.\n if (!line || hasSubstring && (alreadyCollectedLine = true)) {\n // We are done parsing self cue.\n if (_this.oncue && _this.cue) {\n _this.oncue(_this.cue);\n }\n _this.cue = null;\n _this.state = 'ID';\n continue;\n }\n if (_this.cue === null) {\n continue;\n }\n if (_this.cue.text) {\n _this.cue.text += '\\n';\n }\n _this.cue.text += line;\n }\n continue;\n case 'BADCUE':\n // 54-62 - Collect and discard the remaining cue.\n if (!line) {\n _this.state = 'ID';\n }\n }\n }\n } catch (e) {\n // If we are currently parsing a cue, report what we have.\n if (_this.state === 'CUETEXT' && _this.cue && _this.oncue) {\n _this.oncue(_this.cue);\n }\n _this.cue = null;\n // Enter BADWEBVTT state if header was not parsed correctly otherwise\n // another exception occurred so enter BADCUE state.\n _this.state = _this.state === 'INITIAL' ? 'BADWEBVTT' : 'BADCUE';\n }\n return this;\n }\n flush() {\n const _this = this;\n try {\n // Finish decoding the stream.\n // _this.buffer += _this.decoder.decode();\n // Synthesize the end of the current cue or region.\n if (_this.cue || _this.state === 'HEADER') {\n _this.buffer += '\\n\\n';\n _this.parse();\n }\n // If we've flushed, parsed, and we're still on the INITIAL state then\n // that means we don't have enough of the stream to parse the first\n // line.\n if (_this.state === 'INITIAL' || _this.state === 'BADWEBVTT') {\n throw new Error('Malformed WebVTT signature.');\n }\n } catch (e) {\n if (_this.onparsingerror) {\n _this.onparsingerror(e);\n }\n }\n if (_this.onflush) {\n _this.onflush();\n }\n return this;\n }\n}\n\nconst LINEBREAKS = /\\r\\n|\\n\\r|\\n|\\r/g;\n\n// String.prototype.startsWith is not supported in IE11\nconst startsWith = function startsWith(inputString, searchString, position = 0) {\n return inputString.slice(position, position + searchString.length) === searchString;\n};\nconst cueString2millis = function cueString2millis(timeString) {\n let ts = parseInt(timeString.slice(-3));\n const secs = parseInt(timeString.slice(-6, -4));\n const mins = parseInt(timeString.slice(-9, -7));\n const hours = timeString.length > 9 ? parseInt(timeString.substring(0, timeString.indexOf(':'))) : 0;\n if (!isFiniteNumber(ts) || !isFiniteNumber(secs) || !isFiniteNumber(mins) || !isFiniteNumber(hours)) {\n throw Error(`Malformed X-TIMESTAMP-MAP: Local:${timeString}`);\n }\n ts += 1000 * secs;\n ts += 60 * 1000 * mins;\n ts += 60 * 60 * 1000 * hours;\n return ts;\n};\n\n// From https://github.com/darkskyapp/string-hash\nconst hash = function hash(text) {\n let _hash = 5381;\n let i = text.length;\n while (i) {\n _hash = _hash * 33 ^ text.charCodeAt(--i);\n }\n return (_hash >>> 0).toString();\n};\n\n// Create a unique hash id for a cue based on start/end times and text.\n// This helps timeline-controller to avoid showing repeated captions.\nfunction generateCueId(startTime, endTime, text) {\n return hash(startTime.toString()) + hash(endTime.toString()) + hash(text);\n}\nconst calculateOffset = function calculateOffset(vttCCs, cc, presentationTime) {\n let currCC = vttCCs[cc];\n let prevCC = vttCCs[currCC.prevCC];\n\n // This is the first discontinuity or cues have been processed since the last discontinuity\n // Offset = current discontinuity time\n if (!prevCC || !prevCC.new && currCC.new) {\n vttCCs.ccOffset = vttCCs.presentationOffset = currCC.start;\n currCC.new = false;\n return;\n }\n\n // There have been discontinuities since cues were last parsed.\n // Offset = time elapsed\n while ((_prevCC = prevCC) != null && _prevCC.new) {\n var _prevCC;\n vttCCs.ccOffset += currCC.start - prevCC.start;\n currCC.new = false;\n currCC = prevCC;\n prevCC = vttCCs[currCC.prevCC];\n }\n vttCCs.presentationOffset = presentationTime;\n};\nfunction parseWebVTT(vttByteArray, initPTS, vttCCs, cc, timeOffset, callBack, errorCallBack) {\n const parser = new VTTParser();\n // Convert byteArray into string, replacing any somewhat exotic linefeeds with \"\\n\", then split on that character.\n // Uint8Array.prototype.reduce is not implemented in IE11\n const vttLines = utf8ArrayToStr(new Uint8Array(vttByteArray)).trim().replace(LINEBREAKS, '\\n').split('\\n');\n const cues = [];\n const init90kHz = initPTS ? toMpegTsClockFromTimescale(initPTS.baseTime, initPTS.timescale) : 0;\n let cueTime = '00:00.000';\n let timestampMapMPEGTS = 0;\n let timestampMapLOCAL = 0;\n let parsingError;\n let inHeader = true;\n parser.oncue = function (cue) {\n // Adjust cue timing; clamp cues to start no earlier than - and drop cues that don't end after - 0 on timeline.\n const currCC = vttCCs[cc];\n let cueOffset = vttCCs.ccOffset;\n\n // Calculate subtitle PTS offset\n const webVttMpegTsMapOffset = (timestampMapMPEGTS - init90kHz) / 90000;\n\n // Update offsets for new discontinuities\n if (currCC != null && currCC.new) {\n if (timestampMapLOCAL !== undefined) {\n // When local time is provided, offset = discontinuity start time - local time\n cueOffset = vttCCs.ccOffset = currCC.start;\n } else {\n calculateOffset(vttCCs, cc, webVttMpegTsMapOffset);\n }\n }\n if (webVttMpegTsMapOffset) {\n if (!initPTS) {\n parsingError = new Error('Missing initPTS for VTT MPEGTS');\n return;\n }\n // If we have MPEGTS, offset = presentation time + discontinuity offset\n cueOffset = webVttMpegTsMapOffset - vttCCs.presentationOffset;\n }\n const duration = cue.endTime - cue.startTime;\n const startTime = normalizePts((cue.startTime + cueOffset - timestampMapLOCAL) * 90000, timeOffset * 90000) / 90000;\n cue.startTime = Math.max(startTime, 0);\n cue.endTime = Math.max(startTime + duration, 0);\n\n //trim trailing webvtt block whitespaces\n const text = cue.text.trim();\n\n // Fix encoding of special characters\n cue.text = decodeURIComponent(encodeURIComponent(text));\n\n // If the cue was not assigned an id from the VTT file (line above the content), create one.\n if (!cue.id) {\n cue.id = generateCueId(cue.startTime, cue.endTime, text);\n }\n if (cue.endTime > 0) {\n cues.push(cue);\n }\n };\n parser.onparsingerror = function (error) {\n parsingError = error;\n };\n parser.onflush = function () {\n if (parsingError) {\n errorCallBack(parsingError);\n return;\n }\n callBack(cues);\n };\n\n // Go through contents line by line.\n vttLines.forEach(line => {\n if (inHeader) {\n // Look for X-TIMESTAMP-MAP in header.\n if (startsWith(line, 'X-TIMESTAMP-MAP=')) {\n // Once found, no more are allowed anyway, so stop searching.\n inHeader = false;\n // Extract LOCAL and MPEGTS.\n line.slice(16).split(',').forEach(timestamp => {\n if (startsWith(timestamp, 'LOCAL:')) {\n cueTime = timestamp.slice(6);\n } else if (startsWith(timestamp, 'MPEGTS:')) {\n timestampMapMPEGTS = parseInt(timestamp.slice(7));\n }\n });\n try {\n // Convert cue time to seconds\n timestampMapLOCAL = cueString2millis(cueTime) / 1000;\n } catch (error) {\n parsingError = error;\n }\n // Return without parsing X-TIMESTAMP-MAP line.\n return;\n } else if (line === '') {\n inHeader = false;\n }\n }\n // Parse line by default.\n parser.parse(line + '\\n');\n });\n parser.flush();\n}\n\nconst IMSC1_CODEC = 'stpp.ttml.im1t';\n\n// Time format: h:m:s:frames(.subframes)\nconst HMSF_REGEX = /^(\\d{2,}):(\\d{2}):(\\d{2}):(\\d{2})\\.?(\\d+)?$/;\n\n// Time format: hours, minutes, seconds, milliseconds, frames, ticks\nconst TIME_UNIT_REGEX = /^(\\d*(?:\\.\\d*)?)(h|m|s|ms|f|t)$/;\nconst textAlignToLineAlign = {\n left: 'start',\n center: 'center',\n right: 'end',\n start: 'start',\n end: 'end'\n};\nfunction parseIMSC1(payload, initPTS, callBack, errorCallBack) {\n const results = findBox(new Uint8Array(payload), ['mdat']);\n if (results.length === 0) {\n errorCallBack(new Error('Could not parse IMSC1 mdat'));\n return;\n }\n const ttmlList = results.map(mdat => utf8ArrayToStr(mdat));\n const syncTime = toTimescaleFromScale(initPTS.baseTime, 1, initPTS.timescale);\n try {\n ttmlList.forEach(ttml => callBack(parseTTML(ttml, syncTime)));\n } catch (error) {\n errorCallBack(error);\n }\n}\nfunction parseTTML(ttml, syncTime) {\n const parser = new DOMParser();\n const xmlDoc = parser.parseFromString(ttml, 'text/xml');\n const tt = xmlDoc.getElementsByTagName('tt')[0];\n if (!tt) {\n throw new Error('Invalid ttml');\n }\n const defaultRateInfo = {\n frameRate: 30,\n subFrameRate: 1,\n frameRateMultiplier: 0,\n tickRate: 0\n };\n const rateInfo = Object.keys(defaultRateInfo).reduce((result, key) => {\n result[key] = tt.getAttribute(`ttp:${key}`) || defaultRateInfo[key];\n return result;\n }, {});\n const trim = tt.getAttribute('xml:space') !== 'preserve';\n const styleElements = collectionToDictionary(getElementCollection(tt, 'styling', 'style'));\n const regionElements = collectionToDictionary(getElementCollection(tt, 'layout', 'region'));\n const cueElements = getElementCollection(tt, 'body', '[begin]');\n return [].map.call(cueElements, cueElement => {\n const cueText = getTextContent(cueElement, trim);\n if (!cueText || !cueElement.hasAttribute('begin')) {\n return null;\n }\n const startTime = parseTtmlTime(cueElement.getAttribute('begin'), rateInfo);\n const duration = parseTtmlTime(cueElement.getAttribute('dur'), rateInfo);\n let endTime = parseTtmlTime(cueElement.getAttribute('end'), rateInfo);\n if (startTime === null) {\n throw timestampParsingError(cueElement);\n }\n if (endTime === null) {\n if (duration === null) {\n throw timestampParsingError(cueElement);\n }\n endTime = startTime + duration;\n }\n const cue = new VTTCue(startTime - syncTime, endTime - syncTime, cueText);\n cue.id = generateCueId(cue.startTime, cue.endTime, cue.text);\n const region = regionElements[cueElement.getAttribute('region')];\n const style = styleElements[cueElement.getAttribute('style')];\n\n // Apply styles to cue\n const styles = getTtmlStyles(region, style, styleElements);\n const {\n textAlign\n } = styles;\n if (textAlign) {\n // cue.positionAlign not settable in FF~2016\n const lineAlign = textAlignToLineAlign[textAlign];\n if (lineAlign) {\n cue.lineAlign = lineAlign;\n }\n cue.align = textAlign;\n }\n _extends(cue, styles);\n return cue;\n }).filter(cue => cue !== null);\n}\nfunction getElementCollection(fromElement, parentName, childName) {\n const parent = fromElement.getElementsByTagName(parentName)[0];\n if (parent) {\n return [].slice.call(parent.querySelectorAll(childName));\n }\n return [];\n}\nfunction collectionToDictionary(elementsWithId) {\n return elementsWithId.reduce((dict, element) => {\n const id = element.getAttribute('xml:id');\n if (id) {\n dict[id] = element;\n }\n return dict;\n }, {});\n}\nfunction getTextContent(element, trim) {\n return [].slice.call(element.childNodes).reduce((str, node, i) => {\n var _node$childNodes;\n if (node.nodeName === 'br' && i) {\n return str + '\\n';\n }\n if ((_node$childNodes = node.childNodes) != null && _node$childNodes.length) {\n return getTextContent(node, trim);\n } else if (trim) {\n return str + node.textContent.trim().replace(/\\s+/g, ' ');\n }\n return str + node.textContent;\n }, '');\n}\nfunction getTtmlStyles(region, style, styleElements) {\n const ttsNs = 'http://www.w3.org/ns/ttml#styling';\n let regionStyle = null;\n const styleAttributes = ['displayAlign', 'textAlign', 'color', 'backgroundColor', 'fontSize', 'fontFamily'\n // 'fontWeight',\n // 'lineHeight',\n // 'wrapOption',\n // 'fontStyle',\n // 'direction',\n // 'writingMode'\n ];\n const regionStyleName = region != null && region.hasAttribute('style') ? region.getAttribute('style') : null;\n if (regionStyleName && styleElements.hasOwnProperty(regionStyleName)) {\n regionStyle = styleElements[regionStyleName];\n }\n return styleAttributes.reduce((styles, name) => {\n const value = getAttributeNS(style, ttsNs, name) || getAttributeNS(region, ttsNs, name) || getAttributeNS(regionStyle, ttsNs, name);\n if (value) {\n styles[name] = value;\n }\n return styles;\n }, {});\n}\nfunction getAttributeNS(element, ns, name) {\n if (!element) {\n return null;\n }\n return element.hasAttributeNS(ns, name) ? element.getAttributeNS(ns, name) : null;\n}\nfunction timestampParsingError(node) {\n return new Error(`Could not parse ttml timestamp ${node}`);\n}\nfunction parseTtmlTime(timeAttributeValue, rateInfo) {\n if (!timeAttributeValue) {\n return null;\n }\n let seconds = parseTimeStamp(timeAttributeValue);\n if (seconds === null) {\n if (HMSF_REGEX.test(timeAttributeValue)) {\n seconds = parseHoursMinutesSecondsFrames(timeAttributeValue, rateInfo);\n } else if (TIME_UNIT_REGEX.test(timeAttributeValue)) {\n seconds = parseTimeUnits(timeAttributeValue, rateInfo);\n }\n }\n return seconds;\n}\nfunction parseHoursMinutesSecondsFrames(timeAttributeValue, rateInfo) {\n const m = HMSF_REGEX.exec(timeAttributeValue);\n const frames = (m[4] | 0) + (m[5] | 0) / rateInfo.subFrameRate;\n return (m[1] | 0) * 3600 + (m[2] | 0) * 60 + (m[3] | 0) + frames / rateInfo.frameRate;\n}\nfunction parseTimeUnits(timeAttributeValue, rateInfo) {\n const m = TIME_UNIT_REGEX.exec(timeAttributeValue);\n const value = Number(m[1]);\n const unit = m[2];\n switch (unit) {\n case 'h':\n return value * 3600;\n case 'm':\n return value * 60;\n case 'ms':\n return value * 1000;\n case 'f':\n return value / rateInfo.frameRate;\n case 't':\n return value / rateInfo.tickRate;\n }\n return value;\n}\n\nclass TimelineController {\n constructor(hls) {\n this.hls = void 0;\n this.media = null;\n this.config = void 0;\n this.enabled = true;\n this.Cues = void 0;\n this.textTracks = [];\n this.tracks = [];\n this.initPTS = [];\n this.unparsedVttFrags = [];\n this.captionsTracks = {};\n this.nonNativeCaptionsTracks = {};\n this.cea608Parser1 = void 0;\n this.cea608Parser2 = void 0;\n this.lastCc = -1;\n // Last video (CEA-608) fragment CC\n this.lastSn = -1;\n // Last video (CEA-608) fragment MSN\n this.lastPartIndex = -1;\n // Last video (CEA-608) fragment Part Index\n this.prevCC = -1;\n // Last subtitle fragment CC\n this.vttCCs = newVTTCCs();\n this.captionsProperties = void 0;\n this.hls = hls;\n this.config = hls.config;\n this.Cues = hls.config.cueHandler;\n this.captionsProperties = {\n textTrack1: {\n label: this.config.captionsTextTrack1Label,\n languageCode: this.config.captionsTextTrack1LanguageCode\n },\n textTrack2: {\n label: this.config.captionsTextTrack2Label,\n languageCode: this.config.captionsTextTrack2LanguageCode\n },\n textTrack3: {\n label: this.config.captionsTextTrack3Label,\n languageCode: this.config.captionsTextTrack3LanguageCode\n },\n textTrack4: {\n label: this.config.captionsTextTrack4Label,\n languageCode: this.config.captionsTextTrack4LanguageCode\n }\n };\n hls.on(Events.MEDIA_ATTACHING, this.onMediaAttaching, this);\n hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n hls.on(Events.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this);\n hls.on(Events.FRAG_LOADING, this.onFragLoading, this);\n hls.on(Events.FRAG_LOADED, this.onFragLoaded, this);\n hls.on(Events.FRAG_PARSING_USERDATA, this.onFragParsingUserdata, this);\n hls.on(Events.FRAG_DECRYPTED, this.onFragDecrypted, this);\n hls.on(Events.INIT_PTS_FOUND, this.onInitPtsFound, this);\n hls.on(Events.SUBTITLE_TRACKS_CLEARED, this.onSubtitleTracksCleared, this);\n hls.on(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n }\n destroy() {\n const {\n hls\n } = this;\n hls.off(Events.MEDIA_ATTACHING, this.onMediaAttaching, this);\n hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n hls.off(Events.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this);\n hls.off(Events.FRAG_LOADING, this.onFragLoading, this);\n hls.off(Events.FRAG_LOADED, this.onFragLoaded, this);\n hls.off(Events.FRAG_PARSING_USERDATA, this.onFragParsingUserdata, this);\n hls.off(Events.FRAG_DECRYPTED, this.onFragDecrypted, this);\n hls.off(Events.INIT_PTS_FOUND, this.onInitPtsFound, this);\n hls.off(Events.SUBTITLE_TRACKS_CLEARED, this.onSubtitleTracksCleared, this);\n hls.off(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n // @ts-ignore\n this.hls = this.config = null;\n this.cea608Parser1 = this.cea608Parser2 = undefined;\n }\n initCea608Parsers() {\n if (this.config.enableCEA708Captions && (!this.cea608Parser1 || !this.cea608Parser2)) {\n const channel1 = new OutputFilter(this, 'textTrack1');\n const channel2 = new OutputFilter(this, 'textTrack2');\n const channel3 = new OutputFilter(this, 'textTrack3');\n const channel4 = new OutputFilter(this, 'textTrack4');\n this.cea608Parser1 = new Cea608Parser(1, channel1, channel2);\n this.cea608Parser2 = new Cea608Parser(3, channel3, channel4);\n }\n }\n addCues(trackName, startTime, endTime, screen, cueRanges) {\n // skip cues which overlap more than 50% with previously parsed time ranges\n let merged = false;\n for (let i = cueRanges.length; i--;) {\n const cueRange = cueRanges[i];\n const overlap = intersection(cueRange[0], cueRange[1], startTime, endTime);\n if (overlap >= 0) {\n cueRange[0] = Math.min(cueRange[0], startTime);\n cueRange[1] = Math.max(cueRange[1], endTime);\n merged = true;\n if (overlap / (endTime - startTime) > 0.5) {\n return;\n }\n }\n }\n if (!merged) {\n cueRanges.push([startTime, endTime]);\n }\n if (this.config.renderTextTracksNatively) {\n const track = this.captionsTracks[trackName];\n this.Cues.newCue(track, startTime, endTime, screen);\n } else {\n const cues = this.Cues.newCue(null, startTime, endTime, screen);\n this.hls.trigger(Events.CUES_PARSED, {\n type: 'captions',\n cues,\n track: trackName\n });\n }\n }\n\n // Triggered when an initial PTS is found; used for synchronisation of WebVTT.\n onInitPtsFound(event, {\n frag,\n id,\n initPTS,\n timescale\n }) {\n const {\n unparsedVttFrags\n } = this;\n if (id === 'main') {\n this.initPTS[frag.cc] = {\n baseTime: initPTS,\n timescale\n };\n }\n\n // Due to asynchronous processing, initial PTS may arrive later than the first VTT fragments are loaded.\n // Parse any unparsed fragments upon receiving the initial PTS.\n if (unparsedVttFrags.length) {\n this.unparsedVttFrags = [];\n unparsedVttFrags.forEach(frag => {\n this.onFragLoaded(Events.FRAG_LOADED, frag);\n });\n }\n }\n getExistingTrack(label, language) {\n const {\n media\n } = this;\n if (media) {\n for (let i = 0; i < media.textTracks.length; i++) {\n const textTrack = media.textTracks[i];\n if (canReuseVttTextTrack(textTrack, {\n name: label,\n lang: language,\n attrs: {}\n })) {\n return textTrack;\n }\n }\n }\n return null;\n }\n createCaptionsTrack(trackName) {\n if (this.config.renderTextTracksNatively) {\n this.createNativeTrack(trackName);\n } else {\n this.createNonNativeTrack(trackName);\n }\n }\n createNativeTrack(trackName) {\n if (this.captionsTracks[trackName]) {\n return;\n }\n const {\n captionsProperties,\n captionsTracks,\n media\n } = this;\n const {\n label,\n languageCode\n } = captionsProperties[trackName];\n // Enable reuse of existing text track.\n const existingTrack = this.getExistingTrack(label, languageCode);\n if (!existingTrack) {\n const textTrack = this.createTextTrack('captions', label, languageCode);\n if (textTrack) {\n // Set a special property on the track so we know it's managed by Hls.js\n textTrack[trackName] = true;\n captionsTracks[trackName] = textTrack;\n }\n } else {\n captionsTracks[trackName] = existingTrack;\n clearCurrentCues(captionsTracks[trackName]);\n sendAddTrackEvent(captionsTracks[trackName], media);\n }\n }\n createNonNativeTrack(trackName) {\n if (this.nonNativeCaptionsTracks[trackName]) {\n return;\n }\n // Create a list of a single track for the provider to consume\n const trackProperties = this.captionsProperties[trackName];\n if (!trackProperties) {\n return;\n }\n const label = trackProperties.label;\n const track = {\n _id: trackName,\n label,\n kind: 'captions',\n default: trackProperties.media ? !!trackProperties.media.default : false,\n closedCaptions: trackProperties.media\n };\n this.nonNativeCaptionsTracks[trackName] = track;\n this.hls.trigger(Events.NON_NATIVE_TEXT_TRACKS_FOUND, {\n tracks: [track]\n });\n }\n createTextTrack(kind, label, lang) {\n const media = this.media;\n if (!media) {\n return;\n }\n return media.addTextTrack(kind, label, lang);\n }\n onMediaAttaching(event, data) {\n this.media = data.media;\n this._cleanTracks();\n }\n onMediaDetaching() {\n const {\n captionsTracks\n } = this;\n Object.keys(captionsTracks).forEach(trackName => {\n clearCurrentCues(captionsTracks[trackName]);\n delete captionsTracks[trackName];\n });\n this.nonNativeCaptionsTracks = {};\n }\n onManifestLoading() {\n // Detect discontinuity in video fragment (CEA-608) parsing\n this.lastCc = -1;\n this.lastSn = -1;\n this.lastPartIndex = -1;\n // Detect discontinuity in subtitle manifests\n this.prevCC = -1;\n this.vttCCs = newVTTCCs();\n // Reset tracks\n this._cleanTracks();\n this.tracks = [];\n this.captionsTracks = {};\n this.nonNativeCaptionsTracks = {};\n this.textTracks = [];\n this.unparsedVttFrags = [];\n this.initPTS = [];\n if (this.cea608Parser1 && this.cea608Parser2) {\n this.cea608Parser1.reset();\n this.cea608Parser2.reset();\n }\n }\n _cleanTracks() {\n // clear outdated subtitles\n const {\n media\n } = this;\n if (!media) {\n return;\n }\n const textTracks = media.textTracks;\n if (textTracks) {\n for (let i = 0; i < textTracks.length; i++) {\n clearCurrentCues(textTracks[i]);\n }\n }\n }\n onSubtitleTracksUpdated(event, data) {\n const tracks = data.subtitleTracks || [];\n const hasIMSC1 = tracks.some(track => track.textCodec === IMSC1_CODEC);\n if (this.config.enableWebVTT || hasIMSC1 && this.config.enableIMSC1) {\n const listIsIdentical = subtitleOptionsIdentical(this.tracks, tracks);\n if (listIsIdentical) {\n this.tracks = tracks;\n return;\n }\n this.textTracks = [];\n this.tracks = tracks;\n if (this.config.renderTextTracksNatively) {\n const media = this.media;\n const inUseTracks = media ? filterSubtitleTracks(media.textTracks) : null;\n this.tracks.forEach((track, index) => {\n // Reuse tracks with the same label and lang, but do not reuse 608/708 tracks\n let textTrack;\n if (inUseTracks) {\n let inUseTrack = null;\n for (let i = 0; i < inUseTracks.length; i++) {\n if (inUseTracks[i] && canReuseVttTextTrack(inUseTracks[i], track)) {\n inUseTrack = inUseTracks[i];\n inUseTracks[i] = null;\n break;\n }\n }\n if (inUseTrack) {\n textTrack = inUseTrack;\n }\n }\n if (textTrack) {\n clearCurrentCues(textTrack);\n } else {\n const textTrackKind = captionsOrSubtitlesFromCharacteristics(track);\n textTrack = this.createTextTrack(textTrackKind, track.name, track.lang);\n if (textTrack) {\n textTrack.mode = 'disabled';\n }\n }\n if (textTrack) {\n this.textTracks.push(textTrack);\n }\n });\n // Warn when video element has captions or subtitle TextTracks carried over from another source\n if (inUseTracks != null && inUseTracks.length) {\n const unusedTextTracks = inUseTracks.filter(t => t !== null).map(t => t.label);\n if (unusedTextTracks.length) {\n logger.warn(`Media element contains unused subtitle tracks: ${unusedTextTracks.join(', ')}. Replace media element for each source to clear TextTracks and captions menu.`);\n }\n }\n } else if (this.tracks.length) {\n // Create a list of tracks for the provider to consume\n const tracksList = this.tracks.map(track => {\n return {\n label: track.name,\n kind: track.type.toLowerCase(),\n default: track.default,\n subtitleTrack: track\n };\n });\n this.hls.trigger(Events.NON_NATIVE_TEXT_TRACKS_FOUND, {\n tracks: tracksList\n });\n }\n }\n }\n onManifestLoaded(event, data) {\n if (this.config.enableCEA708Captions && data.captions) {\n data.captions.forEach(captionsTrack => {\n const instreamIdMatch = /(?:CC|SERVICE)([1-4])/.exec(captionsTrack.instreamId);\n if (!instreamIdMatch) {\n return;\n }\n const trackName = `textTrack${instreamIdMatch[1]}`;\n const trackProperties = this.captionsProperties[trackName];\n if (!trackProperties) {\n return;\n }\n trackProperties.label = captionsTrack.name;\n if (captionsTrack.lang) {\n // optional attribute\n trackProperties.languageCode = captionsTrack.lang;\n }\n trackProperties.media = captionsTrack;\n });\n }\n }\n closedCaptionsForLevel(frag) {\n const level = this.hls.levels[frag.level];\n return level == null ? void 0 : level.attrs['CLOSED-CAPTIONS'];\n }\n onFragLoading(event, data) {\n // if this frag isn't contiguous, clear the parser so cues with bad start/end times aren't added to the textTrack\n if (this.enabled && data.frag.type === PlaylistLevelType.MAIN) {\n var _data$part$index, _data$part;\n const {\n cea608Parser1,\n cea608Parser2,\n lastSn\n } = this;\n const {\n cc,\n sn\n } = data.frag;\n const partIndex = (_data$part$index = (_data$part = data.part) == null ? void 0 : _data$part.index) != null ? _data$part$index : -1;\n if (cea608Parser1 && cea608Parser2) {\n if (sn !== lastSn + 1 || sn === lastSn && partIndex !== this.lastPartIndex + 1 || cc !== this.lastCc) {\n cea608Parser1.reset();\n cea608Parser2.reset();\n }\n }\n this.lastCc = cc;\n this.lastSn = sn;\n this.lastPartIndex = partIndex;\n }\n }\n onFragLoaded(event, data) {\n const {\n frag,\n payload\n } = data;\n if (frag.type === PlaylistLevelType.SUBTITLE) {\n // If fragment is subtitle type, parse as WebVTT.\n if (payload.byteLength) {\n const decryptData = frag.decryptdata;\n // fragment after decryption has a stats object\n const decrypted = ('stats' in data);\n // If the subtitles are not encrypted, parse VTTs now. Otherwise, we need to wait.\n if (decryptData == null || !decryptData.encrypted || decrypted) {\n const trackPlaylistMedia = this.tracks[frag.level];\n const vttCCs = this.vttCCs;\n if (!vttCCs[frag.cc]) {\n vttCCs[frag.cc] = {\n start: frag.start,\n prevCC: this.prevCC,\n new: true\n };\n this.prevCC = frag.cc;\n }\n if (trackPlaylistMedia && trackPlaylistMedia.textCodec === IMSC1_CODEC) {\n this._parseIMSC1(frag, payload);\n } else {\n this._parseVTTs(data);\n }\n }\n } else {\n // In case there is no payload, finish unsuccessfully.\n this.hls.trigger(Events.SUBTITLE_FRAG_PROCESSED, {\n success: false,\n frag,\n error: new Error('Empty subtitle payload')\n });\n }\n }\n }\n _parseIMSC1(frag, payload) {\n const hls = this.hls;\n parseIMSC1(payload, this.initPTS[frag.cc], cues => {\n this._appendCues(cues, frag.level);\n hls.trigger(Events.SUBTITLE_FRAG_PROCESSED, {\n success: true,\n frag: frag\n });\n }, error => {\n logger.log(`Failed to parse IMSC1: ${error}`);\n hls.trigger(Events.SUBTITLE_FRAG_PROCESSED, {\n success: false,\n frag: frag,\n error\n });\n });\n }\n _parseVTTs(data) {\n var _frag$initSegment;\n const {\n frag,\n payload\n } = data;\n // We need an initial synchronisation PTS. Store fragments as long as none has arrived\n const {\n initPTS,\n unparsedVttFrags\n } = this;\n const maxAvCC = initPTS.length - 1;\n if (!initPTS[frag.cc] && maxAvCC === -1) {\n unparsedVttFrags.push(data);\n return;\n }\n const hls = this.hls;\n // Parse the WebVTT file contents.\n const payloadWebVTT = (_frag$initSegment = frag.initSegment) != null && _frag$initSegment.data ? appendUint8Array(frag.initSegment.data, new Uint8Array(payload)) : payload;\n parseWebVTT(payloadWebVTT, this.initPTS[frag.cc], this.vttCCs, frag.cc, frag.start, cues => {\n this._appendCues(cues, frag.level);\n hls.trigger(Events.SUBTITLE_FRAG_PROCESSED, {\n success: true,\n frag: frag\n });\n }, error => {\n const missingInitPTS = error.message === 'Missing initPTS for VTT MPEGTS';\n if (missingInitPTS) {\n unparsedVttFrags.push(data);\n } else {\n this._fallbackToIMSC1(frag, payload);\n }\n // Something went wrong while parsing. Trigger event with success false.\n logger.log(`Failed to parse VTT cue: ${error}`);\n if (missingInitPTS && maxAvCC > frag.cc) {\n return;\n }\n hls.trigger(Events.SUBTITLE_FRAG_PROCESSED, {\n success: false,\n frag: frag,\n error\n });\n });\n }\n _fallbackToIMSC1(frag, payload) {\n // If textCodec is unknown, try parsing as IMSC1. Set textCodec based on the result\n const trackPlaylistMedia = this.tracks[frag.level];\n if (!trackPlaylistMedia.textCodec) {\n parseIMSC1(payload, this.initPTS[frag.cc], () => {\n trackPlaylistMedia.textCodec = IMSC1_CODEC;\n this._parseIMSC1(frag, payload);\n }, () => {\n trackPlaylistMedia.textCodec = 'wvtt';\n });\n }\n }\n _appendCues(cues, fragLevel) {\n const hls = this.hls;\n if (this.config.renderTextTracksNatively) {\n const textTrack = this.textTracks[fragLevel];\n // WebVTTParser.parse is an async method and if the currently selected text track mode is set to \"disabled\"\n // before parsing is done then don't try to access currentTrack.cues.getCueById as cues will be null\n // and trying to access getCueById method of cues will throw an exception\n // Because we check if the mode is disabled, we can force check `cues` below. They can't be null.\n if (!textTrack || textTrack.mode === 'disabled') {\n return;\n }\n cues.forEach(cue => addCueToTrack(textTrack, cue));\n } else {\n const currentTrack = this.tracks[fragLevel];\n if (!currentTrack) {\n return;\n }\n const track = currentTrack.default ? 'default' : 'subtitles' + fragLevel;\n hls.trigger(Events.CUES_PARSED, {\n type: 'subtitles',\n cues,\n track\n });\n }\n }\n onFragDecrypted(event, data) {\n const {\n frag\n } = data;\n if (frag.type === PlaylistLevelType.SUBTITLE) {\n this.onFragLoaded(Events.FRAG_LOADED, data);\n }\n }\n onSubtitleTracksCleared() {\n this.tracks = [];\n this.captionsTracks = {};\n }\n onFragParsingUserdata(event, data) {\n this.initCea608Parsers();\n const {\n cea608Parser1,\n cea608Parser2\n } = this;\n if (!this.enabled || !cea608Parser1 || !cea608Parser2) {\n return;\n }\n const {\n frag,\n samples\n } = data;\n if (frag.type === PlaylistLevelType.MAIN && this.closedCaptionsForLevel(frag) === 'NONE') {\n return;\n }\n // If the event contains captions (found in the bytes property), push all bytes into the parser immediately\n // It will create the proper timestamps based on the PTS value\n for (let i = 0; i < samples.length; i++) {\n const ccBytes = samples[i].bytes;\n if (ccBytes) {\n const ccdatas = this.extractCea608Data(ccBytes);\n cea608Parser1.addData(samples[i].pts, ccdatas[0]);\n cea608Parser2.addData(samples[i].pts, ccdatas[1]);\n }\n }\n }\n onBufferFlushing(event, {\n startOffset,\n endOffset,\n endOffsetSubtitles,\n type\n }) {\n const {\n media\n } = this;\n if (!media || media.currentTime < endOffset) {\n return;\n }\n // Clear 608 caption cues from the captions TextTracks when the video back buffer is flushed\n // Forward cues are never removed because we can loose streamed 608 content from recent fragments\n if (!type || type === 'video') {\n const {\n captionsTracks\n } = this;\n Object.keys(captionsTracks).forEach(trackName => removeCuesInRange(captionsTracks[trackName], startOffset, endOffset));\n }\n if (this.config.renderTextTracksNatively) {\n // Clear VTT/IMSC1 subtitle cues from the subtitle TextTracks when the back buffer is flushed\n if (startOffset === 0 && endOffsetSubtitles !== undefined) {\n const {\n textTracks\n } = this;\n Object.keys(textTracks).forEach(trackName => removeCuesInRange(textTracks[trackName], startOffset, endOffsetSubtitles));\n }\n }\n }\n extractCea608Data(byteArray) {\n const actualCCBytes = [[], []];\n const count = byteArray[0] & 0x1f;\n let position = 2;\n for (let j = 0; j < count; j++) {\n const tmpByte = byteArray[position++];\n const ccbyte1 = 0x7f & byteArray[position++];\n const ccbyte2 = 0x7f & byteArray[position++];\n if (ccbyte1 === 0 && ccbyte2 === 0) {\n continue;\n }\n const ccValid = (0x04 & tmpByte) !== 0; // Support all four channels\n if (ccValid) {\n const ccType = 0x03 & tmpByte;\n if (0x00 /* CEA608 field1*/ === ccType || 0x01 /* CEA608 field2*/ === ccType) {\n // Exclude CEA708 CC data.\n actualCCBytes[ccType].push(ccbyte1);\n actualCCBytes[ccType].push(ccbyte2);\n }\n }\n }\n return actualCCBytes;\n }\n}\nfunction captionsOrSubtitlesFromCharacteristics(track) {\n if (track.characteristics) {\n if (/transcribes-spoken-dialog/gi.test(track.characteristics) && /describes-music-and-sound/gi.test(track.characteristics)) {\n return 'captions';\n }\n }\n return 'subtitles';\n}\nfunction canReuseVttTextTrack(inUseTrack, manifestTrack) {\n return !!inUseTrack && inUseTrack.kind === captionsOrSubtitlesFromCharacteristics(manifestTrack) && subtitleTrackMatchesTextTrack(manifestTrack, inUseTrack);\n}\nfunction intersection(x1, x2, y1, y2) {\n return Math.min(x2, y2) - Math.max(x1, y1);\n}\nfunction newVTTCCs() {\n return {\n ccOffset: 0,\n presentationOffset: 0,\n 0: {\n start: 0,\n prevCC: -1,\n new: true\n }\n };\n}\n\nclass CapLevelController {\n constructor(hls) {\n this.hls = void 0;\n this.autoLevelCapping = void 0;\n this.firstLevel = void 0;\n this.media = void 0;\n this.restrictedLevels = void 0;\n this.timer = void 0;\n this.clientRect = void 0;\n this.streamController = void 0;\n this.hls = hls;\n this.autoLevelCapping = Number.POSITIVE_INFINITY;\n this.firstLevel = -1;\n this.media = null;\n this.restrictedLevels = [];\n this.timer = undefined;\n this.clientRect = null;\n this.registerListeners();\n }\n setStreamController(streamController) {\n this.streamController = streamController;\n }\n destroy() {\n if (this.hls) {\n this.unregisterListener();\n }\n if (this.timer) {\n this.stopCapping();\n }\n this.media = null;\n this.clientRect = null;\n // @ts-ignore\n this.hls = this.streamController = null;\n }\n registerListeners() {\n const {\n hls\n } = this;\n hls.on(Events.FPS_DROP_LEVEL_CAPPING, this.onFpsDropLevelCapping, this);\n hls.on(Events.MEDIA_ATTACHING, this.onMediaAttaching, this);\n hls.on(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n hls.on(Events.LEVELS_UPDATED, this.onLevelsUpdated, this);\n hls.on(Events.BUFFER_CODECS, this.onBufferCodecs, this);\n hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n }\n unregisterListener() {\n const {\n hls\n } = this;\n hls.off(Events.FPS_DROP_LEVEL_CAPPING, this.onFpsDropLevelCapping, this);\n hls.off(Events.MEDIA_ATTACHING, this.onMediaAttaching, this);\n hls.off(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n hls.off(Events.LEVELS_UPDATED, this.onLevelsUpdated, this);\n hls.off(Events.BUFFER_CODECS, this.onBufferCodecs, this);\n hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n }\n onFpsDropLevelCapping(event, data) {\n // Don't add a restricted level more than once\n const level = this.hls.levels[data.droppedLevel];\n if (this.isLevelAllowed(level)) {\n this.restrictedLevels.push({\n bitrate: level.bitrate,\n height: level.height,\n width: level.width\n });\n }\n }\n onMediaAttaching(event, data) {\n this.media = data.media instanceof HTMLVideoElement ? data.media : null;\n this.clientRect = null;\n if (this.timer && this.hls.levels.length) {\n this.detectPlayerSize();\n }\n }\n onManifestParsed(event, data) {\n const hls = this.hls;\n this.restrictedLevels = [];\n this.firstLevel = data.firstLevel;\n if (hls.config.capLevelToPlayerSize && data.video) {\n // Start capping immediately if the manifest has signaled video codecs\n this.startCapping();\n }\n }\n onLevelsUpdated(event, data) {\n if (this.timer && isFiniteNumber(this.autoLevelCapping)) {\n this.detectPlayerSize();\n }\n }\n\n // Only activate capping when playing a video stream; otherwise, multi-bitrate audio-only streams will be restricted\n // to the first level\n onBufferCodecs(event, data) {\n const hls = this.hls;\n if (hls.config.capLevelToPlayerSize && data.video) {\n // If the manifest did not signal a video codec capping has been deferred until we're certain video is present\n this.startCapping();\n }\n }\n onMediaDetaching() {\n this.stopCapping();\n }\n detectPlayerSize() {\n if (this.media) {\n if (this.mediaHeight <= 0 || this.mediaWidth <= 0) {\n this.clientRect = null;\n return;\n }\n const levels = this.hls.levels;\n if (levels.length) {\n const hls = this.hls;\n const maxLevel = this.getMaxLevel(levels.length - 1);\n if (maxLevel !== this.autoLevelCapping) {\n logger.log(`Setting autoLevelCapping to ${maxLevel}: ${levels[maxLevel].height}p@${levels[maxLevel].bitrate} for media ${this.mediaWidth}x${this.mediaHeight}`);\n }\n hls.autoLevelCapping = maxLevel;\n if (hls.autoLevelCapping > this.autoLevelCapping && this.streamController) {\n // if auto level capping has a higher value for the previous one, flush the buffer using nextLevelSwitch\n // usually happen when the user go to the fullscreen mode.\n this.streamController.nextLevelSwitch();\n }\n this.autoLevelCapping = hls.autoLevelCapping;\n }\n }\n }\n\n /*\n * returns level should be the one with the dimensions equal or greater than the media (player) dimensions (so the video will be downscaled)\n */\n getMaxLevel(capLevelIndex) {\n const levels = this.hls.levels;\n if (!levels.length) {\n return -1;\n }\n const validLevels = levels.filter((level, index) => this.isLevelAllowed(level) && index <= capLevelIndex);\n this.clientRect = null;\n return CapLevelController.getMaxLevelByMediaSize(validLevels, this.mediaWidth, this.mediaHeight);\n }\n startCapping() {\n if (this.timer) {\n // Don't reset capping if started twice; this can happen if the manifest signals a video codec\n return;\n }\n this.autoLevelCapping = Number.POSITIVE_INFINITY;\n self.clearInterval(this.timer);\n this.timer = self.setInterval(this.detectPlayerSize.bind(this), 1000);\n this.detectPlayerSize();\n }\n stopCapping() {\n this.restrictedLevels = [];\n this.firstLevel = -1;\n this.autoLevelCapping = Number.POSITIVE_INFINITY;\n if (this.timer) {\n self.clearInterval(this.timer);\n this.timer = undefined;\n }\n }\n getDimensions() {\n if (this.clientRect) {\n return this.clientRect;\n }\n const media = this.media;\n const boundsRect = {\n width: 0,\n height: 0\n };\n if (media) {\n const clientRect = media.getBoundingClientRect();\n boundsRect.width = clientRect.width;\n boundsRect.height = clientRect.height;\n if (!boundsRect.width && !boundsRect.height) {\n // When the media element has no width or height (equivalent to not being in the DOM),\n // then use its width and height attributes (media.width, media.height)\n boundsRect.width = clientRect.right - clientRect.left || media.width || 0;\n boundsRect.height = clientRect.bottom - clientRect.top || media.height || 0;\n }\n }\n this.clientRect = boundsRect;\n return boundsRect;\n }\n get mediaWidth() {\n return this.getDimensions().width * this.contentScaleFactor;\n }\n get mediaHeight() {\n return this.getDimensions().height * this.contentScaleFactor;\n }\n get contentScaleFactor() {\n let pixelRatio = 1;\n if (!this.hls.config.ignoreDevicePixelRatio) {\n try {\n pixelRatio = self.devicePixelRatio;\n } catch (e) {\n /* no-op */\n }\n }\n return pixelRatio;\n }\n isLevelAllowed(level) {\n const restrictedLevels = this.restrictedLevels;\n return !restrictedLevels.some(restrictedLevel => {\n return level.bitrate === restrictedLevel.bitrate && level.width === restrictedLevel.width && level.height === restrictedLevel.height;\n });\n }\n static getMaxLevelByMediaSize(levels, width, height) {\n if (!(levels != null && levels.length)) {\n return -1;\n }\n\n // Levels can have the same dimensions but differing bandwidths - since levels are ordered, we can look to the next\n // to determine whether we've chosen the greatest bandwidth for the media's dimensions\n const atGreatestBandwidth = (curLevel, nextLevel) => {\n if (!nextLevel) {\n return true;\n }\n return curLevel.width !== nextLevel.width || curLevel.height !== nextLevel.height;\n };\n\n // If we run through the loop without breaking, the media's dimensions are greater than every level, so default to\n // the max level\n let maxLevelIndex = levels.length - 1;\n // Prevent changes in aspect-ratio from causing capping to toggle back and forth\n const squareSize = Math.max(width, height);\n for (let i = 0; i < levels.length; i += 1) {\n const level = levels[i];\n if ((level.width >= squareSize || level.height >= squareSize) && atGreatestBandwidth(level, levels[i + 1])) {\n maxLevelIndex = i;\n break;\n }\n }\n return maxLevelIndex;\n }\n}\n\nclass FPSController {\n constructor(hls) {\n this.hls = void 0;\n this.isVideoPlaybackQualityAvailable = false;\n this.timer = void 0;\n this.media = null;\n this.lastTime = void 0;\n this.lastDroppedFrames = 0;\n this.lastDecodedFrames = 0;\n // stream controller must be provided as a dependency!\n this.streamController = void 0;\n this.hls = hls;\n this.registerListeners();\n }\n setStreamController(streamController) {\n this.streamController = streamController;\n }\n registerListeners() {\n this.hls.on(Events.MEDIA_ATTACHING, this.onMediaAttaching, this);\n }\n unregisterListeners() {\n this.hls.off(Events.MEDIA_ATTACHING, this.onMediaAttaching, this);\n }\n destroy() {\n if (this.timer) {\n clearInterval(this.timer);\n }\n this.unregisterListeners();\n this.isVideoPlaybackQualityAvailable = false;\n this.media = null;\n }\n onMediaAttaching(event, data) {\n const config = this.hls.config;\n if (config.capLevelOnFPSDrop) {\n const media = data.media instanceof self.HTMLVideoElement ? data.media : null;\n this.media = media;\n if (media && typeof media.getVideoPlaybackQuality === 'function') {\n this.isVideoPlaybackQualityAvailable = true;\n }\n self.clearInterval(this.timer);\n this.timer = self.setInterval(this.checkFPSInterval.bind(this), config.fpsDroppedMonitoringPeriod);\n }\n }\n checkFPS(video, decodedFrames, droppedFrames) {\n const currentTime = performance.now();\n if (decodedFrames) {\n if (this.lastTime) {\n const currentPeriod = currentTime - this.lastTime;\n const currentDropped = droppedFrames - this.lastDroppedFrames;\n const currentDecoded = decodedFrames - this.lastDecodedFrames;\n const droppedFPS = 1000 * currentDropped / currentPeriod;\n const hls = this.hls;\n hls.trigger(Events.FPS_DROP, {\n currentDropped: currentDropped,\n currentDecoded: currentDecoded,\n totalDroppedFrames: droppedFrames\n });\n if (droppedFPS > 0) {\n // logger.log('checkFPS : droppedFPS/decodedFPS:' + droppedFPS/(1000 * currentDecoded / currentPeriod));\n if (currentDropped > hls.config.fpsDroppedMonitoringThreshold * currentDecoded) {\n let currentLevel = hls.currentLevel;\n logger.warn('drop FPS ratio greater than max allowed value for currentLevel: ' + currentLevel);\n if (currentLevel > 0 && (hls.autoLevelCapping === -1 || hls.autoLevelCapping >= currentLevel)) {\n currentLevel = currentLevel - 1;\n hls.trigger(Events.FPS_DROP_LEVEL_CAPPING, {\n level: currentLevel,\n droppedLevel: hls.currentLevel\n });\n hls.autoLevelCapping = currentLevel;\n this.streamController.nextLevelSwitch();\n }\n }\n }\n }\n this.lastTime = currentTime;\n this.lastDroppedFrames = droppedFrames;\n this.lastDecodedFrames = decodedFrames;\n }\n }\n checkFPSInterval() {\n const video = this.media;\n if (video) {\n if (this.isVideoPlaybackQualityAvailable) {\n const videoPlaybackQuality = video.getVideoPlaybackQuality();\n this.checkFPS(video, videoPlaybackQuality.totalVideoFrames, videoPlaybackQuality.droppedVideoFrames);\n } else {\n // HTMLVideoElement doesn't include the webkit types\n this.checkFPS(video, video.webkitDecodedFrameCount, video.webkitDroppedFrameCount);\n }\n }\n }\n}\n\nconst LOGGER_PREFIX = '[eme]';\n/**\n * Controller to deal with encrypted media extensions (EME)\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Encrypted_Media_Extensions_API\n *\n * @class\n * @constructor\n */\nclass EMEController {\n constructor(hls) {\n this.hls = void 0;\n this.config = void 0;\n this.media = null;\n this.keyFormatPromise = null;\n this.keySystemAccessPromises = {};\n this._requestLicenseFailureCount = 0;\n this.mediaKeySessions = [];\n this.keyIdToKeySessionPromise = {};\n this.setMediaKeysQueue = EMEController.CDMCleanupPromise ? [EMEController.CDMCleanupPromise] : [];\n this.onMediaEncrypted = this._onMediaEncrypted.bind(this);\n this.onWaitingForKey = this._onWaitingForKey.bind(this);\n this.debug = logger.debug.bind(logger, LOGGER_PREFIX);\n this.log = logger.log.bind(logger, LOGGER_PREFIX);\n this.warn = logger.warn.bind(logger, LOGGER_PREFIX);\n this.error = logger.error.bind(logger, LOGGER_PREFIX);\n this.hls = hls;\n this.config = hls.config;\n this.registerListeners();\n }\n destroy() {\n this.unregisterListeners();\n this.onMediaDetached();\n // Remove any references that could be held in config options or callbacks\n const config = this.config;\n config.requestMediaKeySystemAccessFunc = null;\n config.licenseXhrSetup = config.licenseResponseCallback = undefined;\n config.drmSystems = config.drmSystemOptions = {};\n // @ts-ignore\n this.hls = this.onMediaEncrypted = this.onWaitingForKey = this.keyIdToKeySessionPromise = null;\n // @ts-ignore\n this.config = null;\n }\n registerListeners() {\n this.hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n this.hls.on(Events.MEDIA_DETACHED, this.onMediaDetached, this);\n this.hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n this.hls.on(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n }\n unregisterListeners() {\n this.hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n this.hls.off(Events.MEDIA_DETACHED, this.onMediaDetached, this);\n this.hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n this.hls.off(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n }\n getLicenseServerUrl(keySystem) {\n const {\n drmSystems,\n widevineLicenseUrl\n } = this.config;\n const keySystemConfiguration = drmSystems[keySystem];\n if (keySystemConfiguration) {\n return keySystemConfiguration.licenseUrl;\n }\n\n // For backward compatibility\n if (keySystem === KeySystems.WIDEVINE && widevineLicenseUrl) {\n return widevineLicenseUrl;\n }\n throw new Error(`no license server URL configured for key-system \"${keySystem}\"`);\n }\n getServerCertificateUrl(keySystem) {\n const {\n drmSystems\n } = this.config;\n const keySystemConfiguration = drmSystems[keySystem];\n if (keySystemConfiguration) {\n return keySystemConfiguration.serverCertificateUrl;\n } else {\n this.log(`No Server Certificate in config.drmSystems[\"${keySystem}\"]`);\n }\n }\n attemptKeySystemAccess(keySystemsToAttempt) {\n const levels = this.hls.levels;\n const uniqueCodec = (value, i, a) => !!value && a.indexOf(value) === i;\n const audioCodecs = levels.map(level => level.audioCodec).filter(uniqueCodec);\n const videoCodecs = levels.map(level => level.videoCodec).filter(uniqueCodec);\n if (audioCodecs.length + videoCodecs.length === 0) {\n videoCodecs.push('avc1.42e01e');\n }\n return new Promise((resolve, reject) => {\n const attempt = keySystems => {\n const keySystem = keySystems.shift();\n this.getMediaKeysPromise(keySystem, audioCodecs, videoCodecs).then(mediaKeys => resolve({\n keySystem,\n mediaKeys\n })).catch(error => {\n if (keySystems.length) {\n attempt(keySystems);\n } else if (error instanceof EMEKeyError) {\n reject(error);\n } else {\n reject(new EMEKeyError({\n type: ErrorTypes.KEY_SYSTEM_ERROR,\n details: ErrorDetails.KEY_SYSTEM_NO_ACCESS,\n error,\n fatal: true\n }, error.message));\n }\n });\n };\n attempt(keySystemsToAttempt);\n });\n }\n requestMediaKeySystemAccess(keySystem, supportedConfigurations) {\n const {\n requestMediaKeySystemAccessFunc\n } = this.config;\n if (!(typeof requestMediaKeySystemAccessFunc === 'function')) {\n let errMessage = `Configured requestMediaKeySystemAccess is not a function ${requestMediaKeySystemAccessFunc}`;\n if (requestMediaKeySystemAccess === null && self.location.protocol === 'http:') {\n errMessage = `navigator.requestMediaKeySystemAccess is not available over insecure protocol ${location.protocol}`;\n }\n return Promise.reject(new Error(errMessage));\n }\n return requestMediaKeySystemAccessFunc(keySystem, supportedConfigurations);\n }\n getMediaKeysPromise(keySystem, audioCodecs, videoCodecs) {\n // This can throw, but is caught in event handler callpath\n const mediaKeySystemConfigs = getSupportedMediaKeySystemConfigurations(keySystem, audioCodecs, videoCodecs, this.config.drmSystemOptions);\n const keySystemAccessPromises = this.keySystemAccessPromises[keySystem];\n let keySystemAccess = keySystemAccessPromises == null ? void 0 : keySystemAccessPromises.keySystemAccess;\n if (!keySystemAccess) {\n this.log(`Requesting encrypted media \"${keySystem}\" key-system access with config: ${JSON.stringify(mediaKeySystemConfigs)}`);\n keySystemAccess = this.requestMediaKeySystemAccess(keySystem, mediaKeySystemConfigs);\n const _keySystemAccessPromises = this.keySystemAccessPromises[keySystem] = {\n keySystemAccess\n };\n keySystemAccess.catch(error => {\n this.log(`Failed to obtain access to key-system \"${keySystem}\": ${error}`);\n });\n return keySystemAccess.then(mediaKeySystemAccess => {\n this.log(`Access for key-system \"${mediaKeySystemAccess.keySystem}\" obtained`);\n const certificateRequest = this.fetchServerCertificate(keySystem);\n this.log(`Create media-keys for \"${keySystem}\"`);\n _keySystemAccessPromises.mediaKeys = mediaKeySystemAccess.createMediaKeys().then(mediaKeys => {\n this.log(`Media-keys created for \"${keySystem}\"`);\n return certificateRequest.then(certificate => {\n if (certificate) {\n return this.setMediaKeysServerCertificate(mediaKeys, keySystem, certificate);\n }\n return mediaKeys;\n });\n });\n _keySystemAccessPromises.mediaKeys.catch(error => {\n this.error(`Failed to create media-keys for \"${keySystem}\"}: ${error}`);\n });\n return _keySystemAccessPromises.mediaKeys;\n });\n }\n return keySystemAccess.then(() => keySystemAccessPromises.mediaKeys);\n }\n createMediaKeySessionContext({\n decryptdata,\n keySystem,\n mediaKeys\n }) {\n this.log(`Creating key-system session \"${keySystem}\" keyId: ${Hex.hexDump(decryptdata.keyId || [])}`);\n const mediaKeysSession = mediaKeys.createSession();\n const mediaKeySessionContext = {\n decryptdata,\n keySystem,\n mediaKeys,\n mediaKeysSession,\n keyStatus: 'status-pending'\n };\n this.mediaKeySessions.push(mediaKeySessionContext);\n return mediaKeySessionContext;\n }\n renewKeySession(mediaKeySessionContext) {\n const decryptdata = mediaKeySessionContext.decryptdata;\n if (decryptdata.pssh) {\n const keySessionContext = this.createMediaKeySessionContext(mediaKeySessionContext);\n const keyId = this.getKeyIdString(decryptdata);\n const scheme = 'cenc';\n this.keyIdToKeySessionPromise[keyId] = this.generateRequestWithPreferredKeySession(keySessionContext, scheme, decryptdata.pssh, 'expired');\n } else {\n this.warn(`Could not renew expired session. Missing pssh initData.`);\n }\n this.removeSession(mediaKeySessionContext);\n }\n getKeyIdString(decryptdata) {\n if (!decryptdata) {\n throw new Error('Could not read keyId of undefined decryptdata');\n }\n if (decryptdata.keyId === null) {\n throw new Error('keyId is null');\n }\n return Hex.hexDump(decryptdata.keyId);\n }\n updateKeySession(mediaKeySessionContext, data) {\n var _mediaKeySessionConte;\n const keySession = mediaKeySessionContext.mediaKeysSession;\n this.log(`Updating key-session \"${keySession.sessionId}\" for keyID ${Hex.hexDump(((_mediaKeySessionConte = mediaKeySessionContext.decryptdata) == null ? void 0 : _mediaKeySessionConte.keyId) || [])}\n } (data length: ${data ? data.byteLength : data})`);\n return keySession.update(data);\n }\n selectKeySystemFormat(frag) {\n const keyFormats = Object.keys(frag.levelkeys || {});\n if (!this.keyFormatPromise) {\n this.log(`Selecting key-system from fragment (sn: ${frag.sn} ${frag.type}: ${frag.level}) key formats ${keyFormats.join(', ')}`);\n this.keyFormatPromise = this.getKeyFormatPromise(keyFormats);\n }\n return this.keyFormatPromise;\n }\n getKeyFormatPromise(keyFormats) {\n return new Promise((resolve, reject) => {\n const keySystemsInConfig = getKeySystemsForConfig(this.config);\n const keySystemsToAttempt = keyFormats.map(keySystemFormatToKeySystemDomain).filter(value => !!value && keySystemsInConfig.indexOf(value) !== -1);\n return this.getKeySystemSelectionPromise(keySystemsToAttempt).then(({\n keySystem\n }) => {\n const keySystemFormat = keySystemDomainToKeySystemFormat(keySystem);\n if (keySystemFormat) {\n resolve(keySystemFormat);\n } else {\n reject(new Error(`Unable to find format for key-system \"${keySystem}\"`));\n }\n }).catch(reject);\n });\n }\n loadKey(data) {\n const decryptdata = data.keyInfo.decryptdata;\n const keyId = this.getKeyIdString(decryptdata);\n const keyDetails = `(keyId: ${keyId} format: \"${decryptdata.keyFormat}\" method: ${decryptdata.method} uri: ${decryptdata.uri})`;\n this.log(`Starting session for key ${keyDetails}`);\n let keySessionContextPromise = this.keyIdToKeySessionPromise[keyId];\n if (!keySessionContextPromise) {\n keySessionContextPromise = this.keyIdToKeySessionPromise[keyId] = this.getKeySystemForKeyPromise(decryptdata).then(({\n keySystem,\n mediaKeys\n }) => {\n this.throwIfDestroyed();\n this.log(`Handle encrypted media sn: ${data.frag.sn} ${data.frag.type}: ${data.frag.level} using key ${keyDetails}`);\n return this.attemptSetMediaKeys(keySystem, mediaKeys).then(() => {\n this.throwIfDestroyed();\n const keySessionContext = this.createMediaKeySessionContext({\n keySystem,\n mediaKeys,\n decryptdata\n });\n const scheme = 'cenc';\n return this.generateRequestWithPreferredKeySession(keySessionContext, scheme, decryptdata.pssh, 'playlist-key');\n });\n });\n keySessionContextPromise.catch(error => this.handleError(error));\n }\n return keySessionContextPromise;\n }\n throwIfDestroyed(message = 'Invalid state') {\n if (!this.hls) {\n throw new Error('invalid state');\n }\n }\n handleError(error) {\n if (!this.hls) {\n return;\n }\n this.error(error.message);\n if (error instanceof EMEKeyError) {\n this.hls.trigger(Events.ERROR, error.data);\n } else {\n this.hls.trigger(Events.ERROR, {\n type: ErrorTypes.KEY_SYSTEM_ERROR,\n details: ErrorDetails.KEY_SYSTEM_NO_KEYS,\n error,\n fatal: true\n });\n }\n }\n getKeySystemForKeyPromise(decryptdata) {\n const keyId = this.getKeyIdString(decryptdata);\n const mediaKeySessionContext = this.keyIdToKeySessionPromise[keyId];\n if (!mediaKeySessionContext) {\n const keySystem = keySystemFormatToKeySystemDomain(decryptdata.keyFormat);\n const keySystemsToAttempt = keySystem ? [keySystem] : getKeySystemsForConfig(this.config);\n return this.attemptKeySystemAccess(keySystemsToAttempt);\n }\n return mediaKeySessionContext;\n }\n getKeySystemSelectionPromise(keySystemsToAttempt) {\n if (!keySystemsToAttempt.length) {\n keySystemsToAttempt = getKeySystemsForConfig(this.config);\n }\n if (keySystemsToAttempt.length === 0) {\n throw new EMEKeyError({\n type: ErrorTypes.KEY_SYSTEM_ERROR,\n details: ErrorDetails.KEY_SYSTEM_NO_CONFIGURED_LICENSE,\n fatal: true\n }, `Missing key-system license configuration options ${JSON.stringify({\n drmSystems: this.config.drmSystems\n })}`);\n }\n return this.attemptKeySystemAccess(keySystemsToAttempt);\n }\n _onMediaEncrypted(event) {\n const {\n initDataType,\n initData\n } = event;\n const logMessage = `\"${event.type}\" event: init data type: \"${initDataType}\"`;\n this.debug(logMessage);\n\n // Ignore event when initData is null\n if (initData === null) {\n return;\n }\n let keyId;\n let keySystemDomain;\n if (initDataType === 'sinf' && this.config.drmSystems[KeySystems.FAIRPLAY]) {\n // Match sinf keyId to playlist skd://keyId=\n const json = bin2str(new Uint8Array(initData));\n try {\n const sinf = base64Decode(JSON.parse(json).sinf);\n const tenc = parseSinf(new Uint8Array(sinf));\n if (!tenc) {\n throw new Error(`'schm' box missing or not cbcs/cenc with schi > tenc`);\n }\n keyId = tenc.subarray(8, 24);\n keySystemDomain = KeySystems.FAIRPLAY;\n } catch (error) {\n this.warn(`${logMessage} Failed to parse sinf: ${error}`);\n return;\n }\n } else {\n // Support Widevine clear-lead key-session creation (otherwise depend on playlist keys)\n const psshResults = parseMultiPssh(initData);\n const psshInfo = psshResults.filter(pssh => pssh.systemId === KeySystemIds.WIDEVINE)[0];\n if (!psshInfo) {\n if (psshResults.length === 0 || psshResults.some(pssh => !pssh.systemId)) {\n this.warn(`${logMessage} contains incomplete or invalid pssh data`);\n } else {\n this.log(`ignoring ${logMessage} for ${psshResults.map(pssh => keySystemIdToKeySystemDomain(pssh.systemId)).join(',')} pssh data in favor of playlist keys`);\n }\n return;\n }\n keySystemDomain = keySystemIdToKeySystemDomain(psshInfo.systemId);\n if (psshInfo.version === 0 && psshInfo.data) {\n const offset = psshInfo.data.length - 22;\n keyId = psshInfo.data.subarray(offset, offset + 16);\n }\n }\n if (!keySystemDomain || !keyId) {\n return;\n }\n const keyIdHex = Hex.hexDump(keyId);\n const {\n keyIdToKeySessionPromise,\n mediaKeySessions\n } = this;\n let keySessionContextPromise = keyIdToKeySessionPromise[keyIdHex];\n for (let i = 0; i < mediaKeySessions.length; i++) {\n // Match playlist key\n const keyContext = mediaKeySessions[i];\n const decryptdata = keyContext.decryptdata;\n if (!decryptdata.keyId) {\n continue;\n }\n const oldKeyIdHex = Hex.hexDump(decryptdata.keyId);\n if (keyIdHex === oldKeyIdHex || decryptdata.uri.replace(/-/g, '').indexOf(keyIdHex) !== -1) {\n keySessionContextPromise = keyIdToKeySessionPromise[oldKeyIdHex];\n if (decryptdata.pssh) {\n break;\n }\n delete keyIdToKeySessionPromise[oldKeyIdHex];\n decryptdata.pssh = new Uint8Array(initData);\n decryptdata.keyId = keyId;\n keySessionContextPromise = keyIdToKeySessionPromise[keyIdHex] = keySessionContextPromise.then(() => {\n return this.generateRequestWithPreferredKeySession(keyContext, initDataType, initData, 'encrypted-event-key-match');\n });\n break;\n }\n }\n if (!keySessionContextPromise) {\n // Clear-lead key (not encountered in playlist)\n keySessionContextPromise = keyIdToKeySessionPromise[keyIdHex] = this.getKeySystemSelectionPromise([keySystemDomain]).then(({\n keySystem,\n mediaKeys\n }) => {\n var _keySystemToKeySystem;\n this.throwIfDestroyed();\n const decryptdata = new LevelKey('ISO-23001-7', keyIdHex, (_keySystemToKeySystem = keySystemDomainToKeySystemFormat(keySystem)) != null ? _keySystemToKeySystem : '');\n decryptdata.pssh = new Uint8Array(initData);\n decryptdata.keyId = keyId;\n return this.attemptSetMediaKeys(keySystem, mediaKeys).then(() => {\n this.throwIfDestroyed();\n const keySessionContext = this.createMediaKeySessionContext({\n decryptdata,\n keySystem,\n mediaKeys\n });\n return this.generateRequestWithPreferredKeySession(keySessionContext, initDataType, initData, 'encrypted-event-no-match');\n });\n });\n }\n keySessionContextPromise.catch(error => this.handleError(error));\n }\n _onWaitingForKey(event) {\n this.log(`\"${event.type}\" event`);\n }\n attemptSetMediaKeys(keySystem, mediaKeys) {\n const queue = this.setMediaKeysQueue.slice();\n this.log(`Setting media-keys for \"${keySystem}\"`);\n // Only one setMediaKeys() can run at one time, and multiple setMediaKeys() operations\n // can be queued for execution for multiple key sessions.\n const setMediaKeysPromise = Promise.all(queue).then(() => {\n if (!this.media) {\n throw new Error('Attempted to set mediaKeys without media element attached');\n }\n return this.media.setMediaKeys(mediaKeys);\n });\n this.setMediaKeysQueue.push(setMediaKeysPromise);\n return setMediaKeysPromise.then(() => {\n this.log(`Media-keys set for \"${keySystem}\"`);\n queue.push(setMediaKeysPromise);\n this.setMediaKeysQueue = this.setMediaKeysQueue.filter(p => queue.indexOf(p) === -1);\n });\n }\n generateRequestWithPreferredKeySession(context, initDataType, initData, reason) {\n var _this$config$drmSyste, _this$config$drmSyste2;\n const generateRequestFilter = (_this$config$drmSyste = this.config.drmSystems) == null ? void 0 : (_this$config$drmSyste2 = _this$config$drmSyste[context.keySystem]) == null ? void 0 : _this$config$drmSyste2.generateRequest;\n if (generateRequestFilter) {\n try {\n const mappedInitData = generateRequestFilter.call(this.hls, initDataType, initData, context);\n if (!mappedInitData) {\n throw new Error('Invalid response from configured generateRequest filter');\n }\n initDataType = mappedInitData.initDataType;\n initData = context.decryptdata.pssh = mappedInitData.initData ? new Uint8Array(mappedInitData.initData) : null;\n } catch (error) {\n var _this$hls;\n this.warn(error.message);\n if ((_this$hls = this.hls) != null && _this$hls.config.debug) {\n throw error;\n }\n }\n }\n if (initData === null) {\n this.log(`Skipping key-session request for \"${reason}\" (no initData)`);\n return Promise.resolve(context);\n }\n const keyId = this.getKeyIdString(context.decryptdata);\n this.log(`Generating key-session request for \"${reason}\": ${keyId} (init data type: ${initDataType} length: ${initData ? initData.byteLength : null})`);\n const licenseStatus = new EventEmitter();\n const onmessage = context._onmessage = event => {\n const keySession = context.mediaKeysSession;\n if (!keySession) {\n licenseStatus.emit('error', new Error('invalid state'));\n return;\n }\n const {\n messageType,\n message\n } = event;\n this.log(`\"${messageType}\" message event for session \"${keySession.sessionId}\" message size: ${message.byteLength}`);\n if (messageType === 'license-request' || messageType === 'license-renewal') {\n this.renewLicense(context, message).catch(error => {\n this.handleError(error);\n licenseStatus.emit('error', error);\n });\n } else if (messageType === 'license-release') {\n if (context.keySystem === KeySystems.FAIRPLAY) {\n this.updateKeySession(context, strToUtf8array('acknowledged'));\n this.removeSession(context);\n }\n } else {\n this.warn(`unhandled media key message type \"${messageType}\"`);\n }\n };\n const onkeystatuseschange = context._onkeystatuseschange = event => {\n const keySession = context.mediaKeysSession;\n if (!keySession) {\n licenseStatus.emit('error', new Error('invalid state'));\n return;\n }\n this.onKeyStatusChange(context);\n const keyStatus = context.keyStatus;\n licenseStatus.emit('keyStatus', keyStatus);\n if (keyStatus === 'expired') {\n this.warn(`${context.keySystem} expired for key ${keyId}`);\n this.renewKeySession(context);\n }\n };\n context.mediaKeysSession.addEventListener('message', onmessage);\n context.mediaKeysSession.addEventListener('keystatuseschange', onkeystatuseschange);\n const keyUsablePromise = new Promise((resolve, reject) => {\n licenseStatus.on('error', reject);\n licenseStatus.on('keyStatus', keyStatus => {\n if (keyStatus.startsWith('usable')) {\n resolve();\n } else if (keyStatus === 'output-restricted') {\n reject(new EMEKeyError({\n type: ErrorTypes.KEY_SYSTEM_ERROR,\n details: ErrorDetails.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED,\n fatal: false\n }, 'HDCP level output restricted'));\n } else if (keyStatus === 'internal-error') {\n reject(new EMEKeyError({\n type: ErrorTypes.KEY_SYSTEM_ERROR,\n details: ErrorDetails.KEY_SYSTEM_STATUS_INTERNAL_ERROR,\n fatal: true\n }, `key status changed to \"${keyStatus}\"`));\n } else if (keyStatus === 'expired') {\n reject(new Error('key expired while generating request'));\n } else {\n this.warn(`unhandled key status change \"${keyStatus}\"`);\n }\n });\n });\n return context.mediaKeysSession.generateRequest(initDataType, initData).then(() => {\n var _context$mediaKeysSes;\n this.log(`Request generated for key-session \"${(_context$mediaKeysSes = context.mediaKeysSession) == null ? void 0 : _context$mediaKeysSes.sessionId}\" keyId: ${keyId}`);\n }).catch(error => {\n throw new EMEKeyError({\n type: ErrorTypes.KEY_SYSTEM_ERROR,\n details: ErrorDetails.KEY_SYSTEM_NO_SESSION,\n error,\n fatal: false\n }, `Error generating key-session request: ${error}`);\n }).then(() => keyUsablePromise).catch(error => {\n licenseStatus.removeAllListeners();\n this.removeSession(context);\n throw error;\n }).then(() => {\n licenseStatus.removeAllListeners();\n return context;\n });\n }\n onKeyStatusChange(mediaKeySessionContext) {\n mediaKeySessionContext.mediaKeysSession.keyStatuses.forEach((status, keyId) => {\n this.log(`key status change \"${status}\" for keyStatuses keyId: ${Hex.hexDump('buffer' in keyId ? new Uint8Array(keyId.buffer, keyId.byteOffset, keyId.byteLength) : new Uint8Array(keyId))} session keyId: ${Hex.hexDump(new Uint8Array(mediaKeySessionContext.decryptdata.keyId || []))} uri: ${mediaKeySessionContext.decryptdata.uri}`);\n mediaKeySessionContext.keyStatus = status;\n });\n }\n fetchServerCertificate(keySystem) {\n const config = this.config;\n const Loader = config.loader;\n const certLoader = new Loader(config);\n const url = this.getServerCertificateUrl(keySystem);\n if (!url) {\n return Promise.resolve();\n }\n this.log(`Fetching server certificate for \"${keySystem}\"`);\n return new Promise((resolve, reject) => {\n const loaderContext = {\n responseType: 'arraybuffer',\n url\n };\n const loadPolicy = config.certLoadPolicy.default;\n const loaderConfig = {\n loadPolicy,\n timeout: loadPolicy.maxLoadTimeMs,\n maxRetry: 0,\n retryDelay: 0,\n maxRetryDelay: 0\n };\n const loaderCallbacks = {\n onSuccess: (response, stats, context, networkDetails) => {\n resolve(response.data);\n },\n onError: (response, contex, networkDetails, stats) => {\n reject(new EMEKeyError({\n type: ErrorTypes.KEY_SYSTEM_ERROR,\n details: ErrorDetails.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,\n fatal: true,\n networkDetails,\n response: _objectSpread2({\n url: loaderContext.url,\n data: undefined\n }, response)\n }, `\"${keySystem}\" certificate request failed (${url}). Status: ${response.code} (${response.text})`));\n },\n onTimeout: (stats, context, networkDetails) => {\n reject(new EMEKeyError({\n type: ErrorTypes.KEY_SYSTEM_ERROR,\n details: ErrorDetails.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,\n fatal: true,\n networkDetails,\n response: {\n url: loaderContext.url,\n data: undefined\n }\n }, `\"${keySystem}\" certificate request timed out (${url})`));\n },\n onAbort: (stats, context, networkDetails) => {\n reject(new Error('aborted'));\n }\n };\n certLoader.load(loaderContext, loaderConfig, loaderCallbacks);\n });\n }\n setMediaKeysServerCertificate(mediaKeys, keySystem, cert) {\n return new Promise((resolve, reject) => {\n mediaKeys.setServerCertificate(cert).then(success => {\n this.log(`setServerCertificate ${success ? 'success' : 'not supported by CDM'} (${cert == null ? void 0 : cert.byteLength}) on \"${keySystem}\"`);\n resolve(mediaKeys);\n }).catch(error => {\n reject(new EMEKeyError({\n type: ErrorTypes.KEY_SYSTEM_ERROR,\n details: ErrorDetails.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED,\n error,\n fatal: true\n }, error.message));\n });\n });\n }\n renewLicense(context, keyMessage) {\n return this.requestLicense(context, new Uint8Array(keyMessage)).then(data => {\n return this.updateKeySession(context, new Uint8Array(data)).catch(error => {\n throw new EMEKeyError({\n type: ErrorTypes.KEY_SYSTEM_ERROR,\n details: ErrorDetails.KEY_SYSTEM_SESSION_UPDATE_FAILED,\n error,\n fatal: true\n }, error.message);\n });\n });\n }\n unpackPlayReadyKeyMessage(xhr, licenseChallenge) {\n // On Edge, the raw license message is UTF-16-encoded XML. We need\n // to unpack the Challenge element (base64-encoded string containing the\n // actual license request) and any HttpHeader elements (sent as request\n // headers).\n // For PlayReady CDMs, we need to dig the Challenge out of the XML.\n const xmlString = String.fromCharCode.apply(null, new Uint16Array(licenseChallenge.buffer));\n if (!xmlString.includes('PlayReadyKeyMessage')) {\n // This does not appear to be a wrapped message as on Edge. Some\n // clients do not need this unwrapping, so we will assume this is one of\n // them. Note that \"xml\" at this point probably looks like random\n // garbage, since we interpreted UTF-8 as UTF-16.\n xhr.setRequestHeader('Content-Type', 'text/xml; charset=utf-8');\n return licenseChallenge;\n }\n const keyMessageXml = new DOMParser().parseFromString(xmlString, 'application/xml');\n // Set request headers.\n const headers = keyMessageXml.querySelectorAll('HttpHeader');\n if (headers.length > 0) {\n let header;\n for (let i = 0, len = headers.length; i < len; i++) {\n var _header$querySelector, _header$querySelector2;\n header = headers[i];\n const name = (_header$querySelector = header.querySelector('name')) == null ? void 0 : _header$querySelector.textContent;\n const value = (_header$querySelector2 = header.querySelector('value')) == null ? void 0 : _header$querySelector2.textContent;\n if (name && value) {\n xhr.setRequestHeader(name, value);\n }\n }\n }\n const challengeElement = keyMessageXml.querySelector('Challenge');\n const challengeText = challengeElement == null ? void 0 : challengeElement.textContent;\n if (!challengeText) {\n throw new Error(`Cannot find <Challenge> in key message`);\n }\n return strToUtf8array(atob(challengeText));\n }\n setupLicenseXHR(xhr, url, keysListItem, licenseChallenge) {\n const licenseXhrSetup = this.config.licenseXhrSetup;\n if (!licenseXhrSetup) {\n xhr.open('POST', url, true);\n return Promise.resolve({\n xhr,\n licenseChallenge\n });\n }\n return Promise.resolve().then(() => {\n if (!keysListItem.decryptdata) {\n throw new Error('Key removed');\n }\n return licenseXhrSetup.call(this.hls, xhr, url, keysListItem, licenseChallenge);\n }).catch(error => {\n if (!keysListItem.decryptdata) {\n // Key session removed. Cancel license request.\n throw error;\n }\n // let's try to open before running setup\n xhr.open('POST', url, true);\n return licenseXhrSetup.call(this.hls, xhr, url, keysListItem, licenseChallenge);\n }).then(licenseXhrSetupResult => {\n // if licenseXhrSetup did not yet call open, let's do it now\n if (!xhr.readyState) {\n xhr.open('POST', url, true);\n }\n const finalLicenseChallenge = licenseXhrSetupResult ? licenseXhrSetupResult : licenseChallenge;\n return {\n xhr,\n licenseChallenge: finalLicenseChallenge\n };\n });\n }\n requestLicense(keySessionContext, licenseChallenge) {\n const keyLoadPolicy = this.config.keyLoadPolicy.default;\n return new Promise((resolve, reject) => {\n const url = this.getLicenseServerUrl(keySessionContext.keySystem);\n this.log(`Sending license request to URL: ${url}`);\n const xhr = new XMLHttpRequest();\n xhr.responseType = 'arraybuffer';\n xhr.onreadystatechange = () => {\n if (!this.hls || !keySessionContext.mediaKeysSession) {\n return reject(new Error('invalid state'));\n }\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n this._requestLicenseFailureCount = 0;\n let data = xhr.response;\n this.log(`License received ${data instanceof ArrayBuffer ? data.byteLength : data}`);\n const licenseResponseCallback = this.config.licenseResponseCallback;\n if (licenseResponseCallback) {\n try {\n data = licenseResponseCallback.call(this.hls, xhr, url, keySessionContext);\n } catch (error) {\n this.error(error);\n }\n }\n resolve(data);\n } else {\n const retryConfig = keyLoadPolicy.errorRetry;\n const maxNumRetry = retryConfig ? retryConfig.maxNumRetry : 0;\n this._requestLicenseFailureCount++;\n if (this._requestLicenseFailureCount > maxNumRetry || xhr.status >= 400 && xhr.status < 500) {\n reject(new EMEKeyError({\n type: ErrorTypes.KEY_SYSTEM_ERROR,\n details: ErrorDetails.KEY_SYSTEM_LICENSE_REQUEST_FAILED,\n fatal: true,\n networkDetails: xhr,\n response: {\n url,\n data: undefined,\n code: xhr.status,\n text: xhr.statusText\n }\n }, `License Request XHR failed (${url}). Status: ${xhr.status} (${xhr.statusText})`));\n } else {\n const attemptsLeft = maxNumRetry - this._requestLicenseFailureCount + 1;\n this.warn(`Retrying license request, ${attemptsLeft} attempts left`);\n this.requestLicense(keySessionContext, licenseChallenge).then(resolve, reject);\n }\n }\n }\n };\n if (keySessionContext.licenseXhr && keySessionContext.licenseXhr.readyState !== XMLHttpRequest.DONE) {\n keySessionContext.licenseXhr.abort();\n }\n keySessionContext.licenseXhr = xhr;\n this.setupLicenseXHR(xhr, url, keySessionContext, licenseChallenge).then(({\n xhr,\n licenseChallenge\n }) => {\n if (keySessionContext.keySystem == KeySystems.PLAYREADY) {\n licenseChallenge = this.unpackPlayReadyKeyMessage(xhr, licenseChallenge);\n }\n xhr.send(licenseChallenge);\n });\n });\n }\n onMediaAttached(event, data) {\n if (!this.config.emeEnabled) {\n return;\n }\n const media = data.media;\n\n // keep reference of media\n this.media = media;\n media.addEventListener('encrypted', this.onMediaEncrypted);\n media.addEventListener('waitingforkey', this.onWaitingForKey);\n }\n onMediaDetached() {\n const media = this.media;\n const mediaKeysList = this.mediaKeySessions;\n if (media) {\n media.removeEventListener('encrypted', this.onMediaEncrypted);\n media.removeEventListener('waitingforkey', this.onWaitingForKey);\n this.media = null;\n }\n this._requestLicenseFailureCount = 0;\n this.setMediaKeysQueue = [];\n this.mediaKeySessions = [];\n this.keyIdToKeySessionPromise = {};\n LevelKey.clearKeyUriToKeyIdMap();\n\n // Close all sessions and remove media keys from the video element.\n const keySessionCount = mediaKeysList.length;\n EMEController.CDMCleanupPromise = Promise.all(mediaKeysList.map(mediaKeySessionContext => this.removeSession(mediaKeySessionContext)).concat(media == null ? void 0 : media.setMediaKeys(null).catch(error => {\n this.log(`Could not clear media keys: ${error}`);\n }))).then(() => {\n if (keySessionCount) {\n this.log('finished closing key sessions and clearing media keys');\n mediaKeysList.length = 0;\n }\n }).catch(error => {\n this.log(`Could not close sessions and clear media keys: ${error}`);\n });\n }\n onManifestLoading() {\n this.keyFormatPromise = null;\n }\n onManifestLoaded(event, {\n sessionKeys\n }) {\n if (!sessionKeys || !this.config.emeEnabled) {\n return;\n }\n if (!this.keyFormatPromise) {\n const keyFormats = sessionKeys.reduce((formats, sessionKey) => {\n if (formats.indexOf(sessionKey.keyFormat) === -1) {\n formats.push(sessionKey.keyFormat);\n }\n return formats;\n }, []);\n this.log(`Selecting key-system from session-keys ${keyFormats.join(', ')}`);\n this.keyFormatPromise = this.getKeyFormatPromise(keyFormats);\n }\n }\n removeSession(mediaKeySessionContext) {\n const {\n mediaKeysSession,\n licenseXhr\n } = mediaKeySessionContext;\n if (mediaKeysSession) {\n this.log(`Remove licenses and keys and close session ${mediaKeysSession.sessionId}`);\n if (mediaKeySessionContext._onmessage) {\n mediaKeysSession.removeEventListener('message', mediaKeySessionContext._onmessage);\n mediaKeySessionContext._onmessage = undefined;\n }\n if (mediaKeySessionContext._onkeystatuseschange) {\n mediaKeysSession.removeEventListener('keystatuseschange', mediaKeySessionContext._onkeystatuseschange);\n mediaKeySessionContext._onkeystatuseschange = undefined;\n }\n if (licenseXhr && licenseXhr.readyState !== XMLHttpRequest.DONE) {\n licenseXhr.abort();\n }\n mediaKeySessionContext.mediaKeysSession = mediaKeySessionContext.decryptdata = mediaKeySessionContext.licenseXhr = undefined;\n const index = this.mediaKeySessions.indexOf(mediaKeySessionContext);\n if (index > -1) {\n this.mediaKeySessions.splice(index, 1);\n }\n return mediaKeysSession.remove().catch(error => {\n this.log(`Could not remove session: ${error}`);\n }).then(() => {\n return mediaKeysSession.close();\n }).catch(error => {\n this.log(`Could not close session: ${error}`);\n });\n }\n }\n}\nEMEController.CDMCleanupPromise = void 0;\nclass EMEKeyError extends Error {\n constructor(data, message) {\n super(message);\n this.data = void 0;\n data.error || (data.error = new Error(message));\n this.data = data;\n data.err = data.error;\n }\n}\n\n/**\n * Common Media Object Type\n *\n * @group CMCD\n * @group CMSD\n *\n * @beta\n */\nvar CmObjectType;\n(function (CmObjectType) {\n /**\n * text file, such as a manifest or playlist\n */\n CmObjectType[\"MANIFEST\"] = \"m\";\n /**\n * audio only\n */\n CmObjectType[\"AUDIO\"] = \"a\";\n /**\n * video only\n */\n CmObjectType[\"VIDEO\"] = \"v\";\n /**\n * muxed audio and video\n */\n CmObjectType[\"MUXED\"] = \"av\";\n /**\n * init segment\n */\n CmObjectType[\"INIT\"] = \"i\";\n /**\n * caption or subtitle\n */\n CmObjectType[\"CAPTION\"] = \"c\";\n /**\n * ISOBMFF timed text track\n */\n CmObjectType[\"TIMED_TEXT\"] = \"tt\";\n /**\n * cryptographic key, license or certificate.\n */\n CmObjectType[\"KEY\"] = \"k\";\n /**\n * other\n */\n CmObjectType[\"OTHER\"] = \"o\";\n})(CmObjectType || (CmObjectType = {}));\n\n/**\n * Common Media Streaming Format\n *\n * @group CMCD\n * @group CMSD\n *\n * @beta\n */\nvar CmStreamingFormat;\n(function (CmStreamingFormat) {\n /**\n * MPEG DASH\n */\n CmStreamingFormat[\"DASH\"] = \"d\";\n /**\n * HTTP Live Streaming (HLS)\n */\n CmStreamingFormat[\"HLS\"] = \"h\";\n /**\n * Smooth Streaming\n */\n CmStreamingFormat[\"SMOOTH\"] = \"s\";\n /**\n * Other\n */\n CmStreamingFormat[\"OTHER\"] = \"o\";\n})(CmStreamingFormat || (CmStreamingFormat = {}));\n\n/**\n * CMCD header fields.\n *\n * @group CMCD\n *\n * @beta\n */\nvar CmcdHeaderField;\n(function (CmcdHeaderField) {\n /**\n * keys whose values vary with the object being requested.\n */\n CmcdHeaderField[\"OBJECT\"] = \"CMCD-Object\";\n /**\n * keys whose values vary with each request.\n */\n CmcdHeaderField[\"REQUEST\"] = \"CMCD-Request\";\n /**\n * keys whose values are expected to be invariant over the life of the session.\n */\n CmcdHeaderField[\"SESSION\"] = \"CMCD-Session\";\n /**\n * keys whose values do not vary with every request or object.\n */\n CmcdHeaderField[\"STATUS\"] = \"CMCD-Status\";\n})(CmcdHeaderField || (CmcdHeaderField = {}));\n\n/**\n * The map of CMCD header fields to official CMCD keys.\n *\n * @internal\n *\n * @group CMCD\n */\nconst CmcdHeaderMap = {\n [CmcdHeaderField.OBJECT]: ['br', 'd', 'ot', 'tb'],\n [CmcdHeaderField.REQUEST]: ['bl', 'dl', 'mtp', 'nor', 'nrr', 'su'],\n [CmcdHeaderField.SESSION]: ['cid', 'pr', 'sf', 'sid', 'st', 'v'],\n [CmcdHeaderField.STATUS]: ['bs', 'rtp']\n};\n\n/**\n * Structured Field Item\n *\n * @group Structured Field\n *\n * @beta\n */\nclass SfItem {\n constructor(value, params) {\n this.value = void 0;\n this.params = void 0;\n if (Array.isArray(value)) {\n value = value.map(v => v instanceof SfItem ? v : new SfItem(v));\n }\n this.value = value;\n this.params = params;\n }\n}\n\n/**\n * A class to represent structured field tokens when `Symbol` is not available.\n *\n * @group Structured Field\n *\n * @beta\n */\nclass SfToken {\n constructor(description) {\n this.description = void 0;\n this.description = description;\n }\n}\n\nconst DICT = 'Dict';\n\nfunction format(value) {\n if (Array.isArray(value)) {\n return JSON.stringify(value);\n }\n if (value instanceof Map) {\n return 'Map{}';\n }\n if (value instanceof Set) {\n return 'Set{}';\n }\n if (typeof value === 'object') {\n return JSON.stringify(value);\n }\n return String(value);\n}\nfunction throwError(action, src, type, cause) {\n return new Error(`failed to ${action} \"${format(src)}\" as ${type}`, {\n cause\n });\n}\n\nconst BARE_ITEM = 'Bare Item';\n\nconst BOOLEAN = 'Boolean';\n\nconst BYTES = 'Byte Sequence';\n\nconst DECIMAL = 'Decimal';\n\nconst INTEGER = 'Integer';\n\nfunction isInvalidInt(value) {\n return value < -999999999999999 || 999999999999999 < value;\n}\n\nconst STRING_REGEX = /[\\x00-\\x1f\\x7f]+/; // eslint-disable-line no-control-regex\n\nconst TOKEN = 'Token';\n\nconst KEY = 'Key';\n\nfunction serializeError(src, type, cause) {\n return throwError('serialize', src, type, cause);\n}\n\n// 4.1.9. Serializing a Boolean\n//\n// Given a Boolean as input_boolean, return an ASCII string suitable for\n// use in a HTTP field value.\n//\n// 1. If input_boolean is not a boolean, fail serialization.\n//\n// 2. Let output be an empty string.\n//\n// 3. Append \"?\" to output.\n//\n// 4. If input_boolean is true, append \"1\" to output.\n//\n// 5. If input_boolean is false, append \"0\" to output.\n//\n// 6. Return output.\nfunction serializeBoolean(value) {\n if (typeof value !== 'boolean') {\n throw serializeError(value, BOOLEAN);\n }\n return value ? '?1' : '?0';\n}\n\n/**\n * Encodes binary data to base64\n *\n * @param binary - The binary data to encode\n * @returns The base64 encoded string\n *\n * @group Utils\n *\n * @beta\n */\nfunction base64encode(binary) {\n return btoa(String.fromCharCode(...binary));\n}\n\n// 4.1.8. Serializing a Byte Sequence\n//\n// Given a Byte Sequence as input_bytes, return an ASCII string suitable\n// for use in a HTTP field value.\n//\n// 1. If input_bytes is not a sequence of bytes, fail serialization.\n//\n// 2. Let output be an empty string.\n//\n// 3. Append \":\" to output.\n//\n// 4. Append the result of base64-encoding input_bytes as per\n// [RFC4648], Section 4, taking account of the requirements below.\n//\n// 5. Append \":\" to output.\n//\n// 6. Return output.\n//\n// The encoded data is required to be padded with \"=\", as per [RFC4648],\n// Section 3.2.\n//\n// Likewise, encoded data SHOULD have pad bits set to zero, as per\n// [RFC4648], Section 3.5, unless it is not possible to do so due to\n// implementation constraints.\nfunction serializeByteSequence(value) {\n if (ArrayBuffer.isView(value) === false) {\n throw serializeError(value, BYTES);\n }\n return `:${base64encode(value)}:`;\n}\n\n// 4.1.4. Serializing an Integer\n//\n// Given an Integer as input_integer, return an ASCII string suitable\n// for use in a HTTP field value.\n//\n// 1. If input_integer is not an integer in the range of\n// -999,999,999,999,999 to 999,999,999,999,999 inclusive, fail\n// serialization.\n//\n// 2. Let output be an empty string.\n//\n// 3. If input_integer is less than (but not equal to) 0, append \"-\" to\n// output.\n//\n// 4. Append input_integer's numeric value represented in base 10 using\n// only decimal digits to output.\n//\n// 5. Return output.\nfunction serializeInteger(value) {\n if (isInvalidInt(value)) {\n throw serializeError(value, INTEGER);\n }\n return value.toString();\n}\n\n// 4.1.10. Serializing a Date\n//\n// Given a Date as input_integer, return an ASCII string suitable for\n// use in an HTTP field value.\n// 1. Let output be \"@\".\n// 2. Append to output the result of running Serializing an Integer\n// with input_date (Section 4.1.4).\n// 3. Return output.\nfunction serializeDate(value) {\n return `@${serializeInteger(value.getTime() / 1000)}`;\n}\n\n/**\n * This implements the rounding procedure described in step 2 of the \"Serializing a Decimal\" specification.\n * This rounding style is known as \"even rounding\", \"banker's rounding\", or \"commercial rounding\".\n *\n * @param value - The value to round\n * @param precision - The number of decimal places to round to\n * @returns The rounded value\n *\n * @group Utils\n *\n * @beta\n */\nfunction roundToEven(value, precision) {\n if (value < 0) {\n return -roundToEven(-value, precision);\n }\n const decimalShift = Math.pow(10, precision);\n const isEquidistant = Math.abs(value * decimalShift % 1 - 0.5) < Number.EPSILON;\n if (isEquidistant) {\n // If the tail of the decimal place is 'equidistant' we round to the nearest even value\n const flooredValue = Math.floor(value * decimalShift);\n return (flooredValue % 2 === 0 ? flooredValue : flooredValue + 1) / decimalShift;\n } else {\n // Otherwise, proceed as normal\n return Math.round(value * decimalShift) / decimalShift;\n }\n}\n\n// 4.1.5. Serializing a Decimal\n//\n// Given a decimal number as input_decimal, return an ASCII string\n// suitable for use in a HTTP field value.\n//\n// 1. If input_decimal is not a decimal number, fail serialization.\n//\n// 2. If input_decimal has more than three significant digits to the\n// right of the decimal point, round it to three decimal places,\n// rounding the final digit to the nearest value, or to the even\n// value if it is equidistant.\n//\n// 3. If input_decimal has more than 12 significant digits to the left\n// of the decimal point after rounding, fail serialization.\n//\n// 4. Let output be an empty string.\n//\n// 5. If input_decimal is less than (but not equal to) 0, append \"-\"\n// to output.\n//\n// 6. Append input_decimal's integer component represented in base 10\n// (using only decimal digits) to output; if it is zero, append\n// \"0\".\n//\n// 7. Append \".\" to output.\n//\n// 8. If input_decimal's fractional component is zero, append \"0\" to\n// output.\n//\n// 9. Otherwise, append the significant digits of input_decimal's\n// fractional component represented in base 10 (using only decimal\n// digits) to output.\n//\n// 10. Return output.\nfunction serializeDecimal(value) {\n const roundedValue = roundToEven(value, 3); // round to 3 decimal places\n if (Math.floor(Math.abs(roundedValue)).toString().length > 12) {\n throw serializeError(value, DECIMAL);\n }\n const stringValue = roundedValue.toString();\n return stringValue.includes('.') ? stringValue : `${stringValue}.0`;\n}\n\nconst STRING = 'String';\n\n// 4.1.6. Serializing a String\n//\n// Given a String as input_string, return an ASCII string suitable for\n// use in a HTTP field value.\n//\n// 1. Convert input_string into a sequence of ASCII characters; if\n// conversion fails, fail serialization.\n//\n// 2. If input_string contains characters in the range %x00-1f or %x7f\n// (i.e., not in VCHAR or SP), fail serialization.\n//\n// 3. Let output be the string DQUOTE.\n//\n// 4. For each character char in input_string:\n//\n// 1. If char is \"\\\" or DQUOTE:\n//\n// 1. Append \"\\\" to output.\n//\n// 2. Append char to output.\n//\n// 5. Append DQUOTE to output.\n//\n// 6. Return output.\nfunction serializeString(value) {\n if (STRING_REGEX.test(value)) {\n throw serializeError(value, STRING);\n }\n return `\"${value.replace(/\\\\/g, `\\\\\\\\`).replace(/\"/g, `\\\\\"`)}\"`;\n}\n\nfunction symbolToStr(symbol) {\n return symbol.description || symbol.toString().slice(7, -1);\n}\n\nfunction serializeToken(token) {\n const value = symbolToStr(token);\n if (/^([a-zA-Z*])([!#$%&'*+\\-.^_`|~\\w:/]*)$/.test(value) === false) {\n throw serializeError(value, TOKEN);\n }\n return value;\n}\n\n// 4.1.3.1. Serializing a Bare Item\n//\n// Given an Item as input_item, return an ASCII string suitable for use\n// in a HTTP field value.\n//\n// 1. If input_item is an Integer, return the result of running\n// Serializing an Integer (Section 4.1.4) with input_item.\n//\n// 2. If input_item is a Decimal, return the result of running\n// Serializing a Decimal (Section 4.1.5) with input_item.\n//\n// 3. If input_item is a String, return the result of running\n// Serializing a String (Section 4.1.6) with input_item.\n//\n// 4. If input_item is a Token, return the result of running\n// Serializing a Token (Section 4.1.7) with input_item.\n//\n// 5. If input_item is a Boolean, return the result of running\n// Serializing a Boolean (Section 4.1.9) with input_item.\n//\n// 6. If input_item is a Byte Sequence, return the result of running\n// Serializing a Byte Sequence (Section 4.1.8) with input_item.\n//\n// 7. If input_item is a Date, return the result of running Serializing\n// a Date (Section 4.1.10) with input_item.\n//\n// 8. Otherwise, fail serialization.\nfunction serializeBareItem(value) {\n switch (typeof value) {\n case 'number':\n if (!isFiniteNumber(value)) {\n throw serializeError(value, BARE_ITEM);\n }\n if (Number.isInteger(value)) {\n return serializeInteger(value);\n }\n return serializeDecimal(value);\n case 'string':\n return serializeString(value);\n case 'symbol':\n return serializeToken(value);\n case 'boolean':\n return serializeBoolean(value);\n case 'object':\n if (value instanceof Date) {\n return serializeDate(value);\n }\n if (value instanceof Uint8Array) {\n return serializeByteSequence(value);\n }\n if (value instanceof SfToken) {\n return serializeToken(value);\n }\n default:\n // fail\n throw serializeError(value, BARE_ITEM);\n }\n}\n\n// 4.1.1.3. Serializing a Key\n//\n// Given a key as input_key, return an ASCII string suitable for use in\n// a HTTP field value.\n//\n// 1. Convert input_key into a sequence of ASCII characters; if\n// conversion fails, fail serialization.\n//\n// 2. If input_key contains characters not in lcalpha, DIGIT, \"_\", \"-\",\n// \".\", or \"*\" fail serialization.\n//\n// 3. If the first character of input_key is not lcalpha or \"*\", fail\n// serialization.\n//\n// 4. Let output be an empty string.\n//\n// 5. Append input_key to output.\n//\n// 6. Return output.\nfunction serializeKey(value) {\n if (/^[a-z*][a-z0-9\\-_.*]*$/.test(value) === false) {\n throw serializeError(value, KEY);\n }\n return value;\n}\n\n// 4.1.1.2. Serializing Parameters\n//\n// Given an ordered Dictionary as input_parameters (each member having a\n// param_name and a param_value), return an ASCII string suitable for\n// use in a HTTP field value.\n//\n// 1. Let output be an empty string.\n//\n// 2. For each param_name with a value of param_value in\n// input_parameters:\n//\n// 1. Append \";\" to output.\n//\n// 2. Append the result of running Serializing a Key\n// (Section 4.1.1.3) with param_name to output.\n//\n// 3. If param_value is not Boolean true:\n//\n// 1. Append \"=\" to output.\n//\n// 2. Append the result of running Serializing a bare Item\n// (Section 4.1.3.1) with param_value to output.\n//\n// 3. Return output.\nfunction serializeParams(params) {\n if (params == null) {\n return '';\n }\n return Object.entries(params).map(([key, value]) => {\n if (value === true) {\n return `;${serializeKey(key)}`; // omit true\n }\n return `;${serializeKey(key)}=${serializeBareItem(value)}`;\n }).join('');\n}\n\n// 4.1.3. Serializing an Item\n//\n// Given an Item as bare_item and Parameters as item_parameters, return\n// an ASCII string suitable for use in a HTTP field value.\n//\n// 1. Let output be an empty string.\n//\n// 2. Append the result of running Serializing a Bare Item\n// Section 4.1.3.1 with bare_item to output.\n//\n// 3. Append the result of running Serializing Parameters\n// Section 4.1.1.2 with item_parameters to output.\n//\n// 4. Return output.\nfunction serializeItem(value) {\n if (value instanceof SfItem) {\n return `${serializeBareItem(value.value)}${serializeParams(value.params)}`;\n } else {\n return serializeBareItem(value);\n }\n}\n\n// 4.1.1.1. Serializing an Inner List\n//\n// Given an array of (member_value, parameters) tuples as inner_list,\n// and parameters as list_parameters, return an ASCII string suitable\n// for use in a HTTP field value.\n//\n// 1. Let output be the string \"(\".\n//\n// 2. For each (member_value, parameters) of inner_list:\n//\n// 1. Append the result of running Serializing an Item\n// (Section 4.1.3) with (member_value, parameters) to output.\n//\n// 2. If more values remain in inner_list, append a single SP to\n// output.\n//\n// 3. Append \")\" to output.\n//\n// 4. Append the result of running Serializing Parameters\n// (Section 4.1.1.2) with list_parameters to output.\n//\n// 5. Return output.\nfunction serializeInnerList(value) {\n return `(${value.value.map(serializeItem).join(' ')})${serializeParams(value.params)}`;\n}\n\n// 4.1.2. Serializing a Dictionary\n//\n// Given an ordered Dictionary as input_dictionary (each member having a\n// member_name and a tuple value of (member_value, parameters)), return\n// an ASCII string suitable for use in a HTTP field value.\n//\n// 1. Let output be an empty string.\n//\n// 2. For each member_name with a value of (member_value, parameters)\n// in input_dictionary:\n//\n// 1. Append the result of running Serializing a Key\n// (Section 4.1.1.3) with member's member_name to output.\n//\n// 2. If member_value is Boolean true:\n//\n// 1. Append the result of running Serializing Parameters\n// (Section 4.1.1.2) with parameters to output.\n//\n// 3. Otherwise:\n//\n// 1. Append \"=\" to output.\n//\n// 2. If member_value is an array, append the result of running\n// Serializing an Inner List (Section 4.1.1.1) with\n// (member_value, parameters) to output.\n//\n// 3. Otherwise, append the result of running Serializing an\n// Item (Section 4.1.3) with (member_value, parameters) to\n// output.\n//\n// 4. If more members remain in input_dictionary:\n//\n// 1. Append \",\" to output.\n//\n// 2. Append a single SP to output.\n//\n// 3. Return output.\nfunction serializeDict(dict, options = {\n whitespace: true\n}) {\n if (typeof dict !== 'object') {\n throw serializeError(dict, DICT);\n }\n const entries = dict instanceof Map ? dict.entries() : Object.entries(dict);\n const optionalWhiteSpace = options != null && options.whitespace ? ' ' : '';\n return Array.from(entries).map(([key, item]) => {\n if (item instanceof SfItem === false) {\n item = new SfItem(item);\n }\n let output = serializeKey(key);\n if (item.value === true) {\n output += serializeParams(item.params);\n } else {\n output += '=';\n if (Array.isArray(item.value)) {\n output += serializeInnerList(item);\n } else {\n output += serializeItem(item);\n }\n }\n return output;\n }).join(`,${optionalWhiteSpace}`);\n}\n\n/**\n * Encode an object into a structured field dictionary\n *\n * @param input - The structured field dictionary to encode\n * @returns The structured field string\n *\n * @group Structured Field\n *\n * @beta\n */\nfunction encodeSfDict(value, options) {\n return serializeDict(value, options);\n}\n\n/**\n * Checks if the given key is a token field.\n *\n * @param key - The key to check.\n *\n * @returns `true` if the key is a token field.\n *\n * @internal\n *\n * @group CMCD\n */\nconst isTokenField = key => key === 'ot' || key === 'sf' || key === 'st';\n\nconst isValid = value => {\n if (typeof value === 'number') {\n return isFiniteNumber(value);\n }\n return value != null && value !== '' && value !== false;\n};\n\n/**\n * Constructs a relative path from a URL.\n *\n * @param url - The destination URL\n * @param base - The base URL\n * @returns The relative path\n *\n * @group Utils\n *\n * @beta\n */\nfunction urlToRelativePath(url, base) {\n const to = new URL(url);\n const from = new URL(base);\n if (to.origin !== from.origin) {\n return url;\n }\n const toPath = to.pathname.split('/').slice(1);\n const fromPath = from.pathname.split('/').slice(1, -1);\n // remove common parents\n while (toPath[0] === fromPath[0]) {\n toPath.shift();\n fromPath.shift();\n }\n // add back paths\n while (fromPath.length) {\n fromPath.shift();\n toPath.unshift('..');\n }\n return toPath.join('/');\n}\n\n/**\n * Generate a random v4 UUID\n *\n * @returns A random v4 UUID\n *\n * @group Utils\n *\n * @beta\n */\nfunction uuid() {\n try {\n return crypto.randomUUID();\n } catch (error) {\n try {\n const url = URL.createObjectURL(new Blob());\n const uuid = url.toString();\n URL.revokeObjectURL(url);\n return uuid.slice(uuid.lastIndexOf('/') + 1);\n } catch (error) {\n let dt = new Date().getTime();\n const uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\n const r = (dt + Math.random() * 16) % 16 | 0;\n dt = Math.floor(dt / 16);\n return (c == 'x' ? r : r & 0x3 | 0x8).toString(16);\n });\n return uuid;\n }\n }\n}\n\nconst toRounded = value => Math.round(value);\nconst toUrlSafe = (value, options) => {\n if (options != null && options.baseUrl) {\n value = urlToRelativePath(value, options.baseUrl);\n }\n return encodeURIComponent(value);\n};\nconst toHundred = value => toRounded(value / 100) * 100;\n/**\n * The default formatters for CMCD values.\n *\n * @group CMCD\n *\n * @beta\n */\nconst CmcdFormatters = {\n /**\n * Bitrate (kbps) rounded integer\n */\n br: toRounded,\n /**\n * Duration (milliseconds) rounded integer\n */\n d: toRounded,\n /**\n * Buffer Length (milliseconds) rounded nearest 100ms\n */\n bl: toHundred,\n /**\n * Deadline (milliseconds) rounded nearest 100ms\n */\n dl: toHundred,\n /**\n * Measured Throughput (kbps) rounded nearest 100kbps\n */\n mtp: toHundred,\n /**\n * Next Object Request URL encoded\n */\n nor: toUrlSafe,\n /**\n * Requested maximum throughput (kbps) rounded nearest 100kbps\n */\n rtp: toHundred,\n /**\n * Top Bitrate (kbps) rounded integer\n */\n tb: toRounded\n};\n\n/**\n * Internal CMCD processing function.\n *\n * @param obj - The CMCD object to process.\n * @param map - The mapping function to use.\n * @param options - Options for encoding.\n *\n * @internal\n *\n * @group CMCD\n */\nfunction processCmcd(obj, options) {\n const results = {};\n if (obj == null || typeof obj !== 'object') {\n return results;\n }\n const keys = Object.keys(obj).sort();\n const formatters = _extends({}, CmcdFormatters, options == null ? void 0 : options.formatters);\n const filter = options == null ? void 0 : options.filter;\n keys.forEach(key => {\n if (filter != null && filter(key)) {\n return;\n }\n let value = obj[key];\n const formatter = formatters[key];\n if (formatter) {\n value = formatter(value, options);\n }\n // Version should only be reported if not equal to 1.\n if (key === 'v' && value === 1) {\n return;\n }\n // Playback rate should only be sent if not equal to 1.\n if (key == 'pr' && value === 1) {\n return;\n }\n // ignore invalid values\n if (!isValid(value)) {\n return;\n }\n if (isTokenField(key) && typeof value === 'string') {\n value = new SfToken(value);\n }\n results[key] = value;\n });\n return results;\n}\n\n/**\n * Encode a CMCD object to a string.\n *\n * @param cmcd - The CMCD object to encode.\n * @param options - Options for encoding.\n *\n * @returns The encoded CMCD string.\n *\n * @group CMCD\n *\n * @beta\n */\nfunction encodeCmcd(cmcd, options = {}) {\n if (!cmcd) {\n return '';\n }\n return encodeSfDict(processCmcd(cmcd, options), _extends({\n whitespace: false\n }, options));\n}\n\n/**\n * Convert a CMCD data object to request headers\n *\n * @param cmcd - The CMCD data object to convert.\n * @param options - Options for encoding the CMCD object.\n *\n * @returns The CMCD header shards.\n *\n * @group CMCD\n *\n * @beta\n */\nfunction toCmcdHeaders(cmcd, options = {}) {\n if (!cmcd) {\n return {};\n }\n const entries = Object.entries(cmcd);\n const headerMap = Object.entries(CmcdHeaderMap).concat(Object.entries((options == null ? void 0 : options.customHeaderMap) || {}));\n const shards = entries.reduce((acc, entry) => {\n var _headerMap$find, _acc$field;\n const [key, value] = entry;\n const field = ((_headerMap$find = headerMap.find(entry => entry[1].includes(key))) == null ? void 0 : _headerMap$find[0]) || CmcdHeaderField.REQUEST;\n (_acc$field = acc[field]) != null ? _acc$field : acc[field] = {};\n acc[field][key] = value;\n return acc;\n }, {});\n return Object.entries(shards).reduce((acc, [field, value]) => {\n acc[field] = encodeCmcd(value, options);\n return acc;\n }, {});\n}\n\n/**\n * Append CMCD query args to a header object.\n *\n * @param headers - The headers to append to.\n * @param cmcd - The CMCD object to append.\n * @param customHeaderMap - A map of custom CMCD keys to header fields.\n *\n * @returns The headers with the CMCD header shards appended.\n *\n * @group CMCD\n *\n * @beta\n */\nfunction appendCmcdHeaders(headers, cmcd, options) {\n return _extends(headers, toCmcdHeaders(cmcd, options));\n}\n\n/**\n * CMCD parameter name.\n *\n * @group CMCD\n *\n * @beta\n */\nconst CMCD_PARAM = 'CMCD';\n\n/**\n * Convert a CMCD data object to a query arg.\n *\n * @param cmcd - The CMCD object to convert.\n * @param options - Options for encoding the CMCD object.\n *\n * @returns The CMCD query arg.\n *\n * @group CMCD\n *\n * @beta\n */\nfunction toCmcdQuery(cmcd, options = {}) {\n if (!cmcd) {\n return '';\n }\n const params = encodeCmcd(cmcd, options);\n return `${CMCD_PARAM}=${encodeURIComponent(params)}`;\n}\n\nconst REGEX = /CMCD=[^&#]+/;\n/**\n * Append CMCD query args to a URL.\n *\n * @param url - The URL to append to.\n * @param cmcd - The CMCD object to append.\n * @param options - Options for encoding the CMCD object.\n *\n * @returns The URL with the CMCD query args appended.\n *\n * @group CMCD\n *\n * @beta\n */\nfunction appendCmcdQuery(url, cmcd, options) {\n // TODO: Replace with URLSearchParams once we drop Safari < 10.1 & Chrome < 49 support.\n // https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams\n const query = toCmcdQuery(cmcd, options);\n if (!query) {\n return url;\n }\n if (REGEX.test(url)) {\n return url.replace(REGEX, query);\n }\n const separator = url.includes('?') ? '&' : '?';\n return `${url}${separator}${query}`;\n}\n\n/**\n * Controller to deal with Common Media Client Data (CMCD)\n * @see https://cdn.cta.tech/cta/media/media/resources/standards/pdfs/cta-5004-final.pdf\n */\nclass CMCDController {\n // eslint-disable-line no-restricted-globals\n\n constructor(hls) {\n this.hls = void 0;\n this.config = void 0;\n this.media = void 0;\n this.sid = void 0;\n this.cid = void 0;\n this.useHeaders = false;\n this.includeKeys = void 0;\n this.initialized = false;\n this.starved = false;\n this.buffering = true;\n this.audioBuffer = void 0;\n // eslint-disable-line no-restricted-globals\n this.videoBuffer = void 0;\n this.onWaiting = () => {\n if (this.initialized) {\n this.starved = true;\n }\n this.buffering = true;\n };\n this.onPlaying = () => {\n if (!this.initialized) {\n this.initialized = true;\n }\n this.buffering = false;\n };\n /**\n * Apply CMCD data to a manifest request.\n */\n this.applyPlaylistData = context => {\n try {\n this.apply(context, {\n ot: CmObjectType.MANIFEST,\n su: !this.initialized\n });\n } catch (error) {\n logger.warn('Could not generate manifest CMCD data.', error);\n }\n };\n /**\n * Apply CMCD data to a segment request\n */\n this.applyFragmentData = context => {\n try {\n const fragment = context.frag;\n const level = this.hls.levels[fragment.level];\n const ot = this.getObjectType(fragment);\n const data = {\n d: fragment.duration * 1000,\n ot\n };\n if (ot === CmObjectType.VIDEO || ot === CmObjectType.AUDIO || ot == CmObjectType.MUXED) {\n data.br = level.bitrate / 1000;\n data.tb = this.getTopBandwidth(ot) / 1000;\n data.bl = this.getBufferLength(ot);\n }\n this.apply(context, data);\n } catch (error) {\n logger.warn('Could not generate segment CMCD data.', error);\n }\n };\n this.hls = hls;\n const config = this.config = hls.config;\n const {\n cmcd\n } = config;\n if (cmcd != null) {\n config.pLoader = this.createPlaylistLoader();\n config.fLoader = this.createFragmentLoader();\n this.sid = cmcd.sessionId || uuid();\n this.cid = cmcd.contentId;\n this.useHeaders = cmcd.useHeaders === true;\n this.includeKeys = cmcd.includeKeys;\n this.registerListeners();\n }\n }\n registerListeners() {\n const hls = this.hls;\n hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.on(Events.MEDIA_DETACHED, this.onMediaDetached, this);\n hls.on(Events.BUFFER_CREATED, this.onBufferCreated, this);\n }\n unregisterListeners() {\n const hls = this.hls;\n hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.off(Events.MEDIA_DETACHED, this.onMediaDetached, this);\n hls.off(Events.BUFFER_CREATED, this.onBufferCreated, this);\n }\n destroy() {\n this.unregisterListeners();\n this.onMediaDetached();\n\n // @ts-ignore\n this.hls = this.config = this.audioBuffer = this.videoBuffer = null;\n // @ts-ignore\n this.onWaiting = this.onPlaying = null;\n }\n onMediaAttached(event, data) {\n this.media = data.media;\n this.media.addEventListener('waiting', this.onWaiting);\n this.media.addEventListener('playing', this.onPlaying);\n }\n onMediaDetached() {\n if (!this.media) {\n return;\n }\n this.media.removeEventListener('waiting', this.onWaiting);\n this.media.removeEventListener('playing', this.onPlaying);\n\n // @ts-ignore\n this.media = null;\n }\n onBufferCreated(event, data) {\n var _data$tracks$audio, _data$tracks$video;\n this.audioBuffer = (_data$tracks$audio = data.tracks.audio) == null ? void 0 : _data$tracks$audio.buffer;\n this.videoBuffer = (_data$tracks$video = data.tracks.video) == null ? void 0 : _data$tracks$video.buffer;\n }\n /**\n * Create baseline CMCD data\n */\n createData() {\n var _this$media;\n return {\n v: 1,\n sf: CmStreamingFormat.HLS,\n sid: this.sid,\n cid: this.cid,\n pr: (_this$media = this.media) == null ? void 0 : _this$media.playbackRate,\n mtp: this.hls.bandwidthEstimate / 1000\n };\n }\n\n /**\n * Apply CMCD data to a request.\n */\n apply(context, data = {}) {\n // apply baseline data\n _extends(data, this.createData());\n const isVideo = data.ot === CmObjectType.INIT || data.ot === CmObjectType.VIDEO || data.ot === CmObjectType.MUXED;\n if (this.starved && isVideo) {\n data.bs = true;\n data.su = true;\n this.starved = false;\n }\n if (data.su == null) {\n data.su = this.buffering;\n }\n\n // TODO: Implement rtp, nrr, nor, dl\n\n const {\n includeKeys\n } = this;\n if (includeKeys) {\n data = Object.keys(data).reduce((acc, key) => {\n includeKeys.includes(key) && (acc[key] = data[key]);\n return acc;\n }, {});\n }\n if (this.useHeaders) {\n if (!context.headers) {\n context.headers = {};\n }\n appendCmcdHeaders(context.headers, data);\n } else {\n context.url = appendCmcdQuery(context.url, data);\n }\n }\n /**\n * The CMCD object type.\n */\n getObjectType(fragment) {\n const {\n type\n } = fragment;\n if (type === 'subtitle') {\n return CmObjectType.TIMED_TEXT;\n }\n if (fragment.sn === 'initSegment') {\n return CmObjectType.INIT;\n }\n if (type === 'audio') {\n return CmObjectType.AUDIO;\n }\n if (type === 'main') {\n if (!this.hls.audioTracks.length) {\n return CmObjectType.MUXED;\n }\n return CmObjectType.VIDEO;\n }\n return undefined;\n }\n\n /**\n * Get the highest bitrate.\n */\n getTopBandwidth(type) {\n let bitrate = 0;\n let levels;\n const hls = this.hls;\n if (type === CmObjectType.AUDIO) {\n levels = hls.audioTracks;\n } else {\n const max = hls.maxAutoLevel;\n const len = max > -1 ? max + 1 : hls.levels.length;\n levels = hls.levels.slice(0, len);\n }\n for (const level of levels) {\n if (level.bitrate > bitrate) {\n bitrate = level.bitrate;\n }\n }\n return bitrate > 0 ? bitrate : NaN;\n }\n\n /**\n * Get the buffer length for a media type in milliseconds\n */\n getBufferLength(type) {\n const media = this.hls.media;\n const buffer = type === CmObjectType.AUDIO ? this.audioBuffer : this.videoBuffer;\n if (!buffer || !media) {\n return NaN;\n }\n const info = BufferHelper.bufferInfo(buffer, media.currentTime, this.config.maxBufferHole);\n return info.len * 1000;\n }\n\n /**\n * Create a playlist loader\n */\n createPlaylistLoader() {\n const {\n pLoader\n } = this.config;\n const apply = this.applyPlaylistData;\n const Ctor = pLoader || this.config.loader;\n return class CmcdPlaylistLoader {\n constructor(config) {\n this.loader = void 0;\n this.loader = new Ctor(config);\n }\n get stats() {\n return this.loader.stats;\n }\n get context() {\n return this.loader.context;\n }\n destroy() {\n this.loader.destroy();\n }\n abort() {\n this.loader.abort();\n }\n load(context, config, callbacks) {\n apply(context);\n this.loader.load(context, config, callbacks);\n }\n };\n }\n\n /**\n * Create a playlist loader\n */\n createFragmentLoader() {\n const {\n fLoader\n } = this.config;\n const apply = this.applyFragmentData;\n const Ctor = fLoader || this.config.loader;\n return class CmcdFragmentLoader {\n constructor(config) {\n this.loader = void 0;\n this.loader = new Ctor(config);\n }\n get stats() {\n return this.loader.stats;\n }\n get context() {\n return this.loader.context;\n }\n destroy() {\n this.loader.destroy();\n }\n abort() {\n this.loader.abort();\n }\n load(context, config, callbacks) {\n apply(context);\n this.loader.load(context, config, callbacks);\n }\n };\n }\n}\n\nconst PATHWAY_PENALTY_DURATION_MS = 300000;\nclass ContentSteeringController {\n constructor(hls) {\n this.hls = void 0;\n this.log = void 0;\n this.loader = null;\n this.uri = null;\n this.pathwayId = '.';\n this.pathwayPriority = null;\n this.timeToLoad = 300;\n this.reloadTimer = -1;\n this.updated = 0;\n this.started = false;\n this.enabled = true;\n this.levels = null;\n this.audioTracks = null;\n this.subtitleTracks = null;\n this.penalizedPathways = {};\n this.hls = hls;\n this.log = logger.log.bind(logger, `[content-steering]:`);\n this.registerListeners();\n }\n registerListeners() {\n const hls = this.hls;\n hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n hls.on(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n hls.on(Events.ERROR, this.onError, this);\n }\n unregisterListeners() {\n const hls = this.hls;\n if (!hls) {\n return;\n }\n hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n hls.off(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n hls.off(Events.ERROR, this.onError, this);\n }\n startLoad() {\n this.started = true;\n this.clearTimeout();\n if (this.enabled && this.uri) {\n if (this.updated) {\n const ttl = this.timeToLoad * 1000 - (performance.now() - this.updated);\n if (ttl > 0) {\n this.scheduleRefresh(this.uri, ttl);\n return;\n }\n }\n this.loadSteeringManifest(this.uri);\n }\n }\n stopLoad() {\n this.started = false;\n if (this.loader) {\n this.loader.destroy();\n this.loader = null;\n }\n this.clearTimeout();\n }\n clearTimeout() {\n if (this.reloadTimer !== -1) {\n self.clearTimeout(this.reloadTimer);\n this.reloadTimer = -1;\n }\n }\n destroy() {\n this.unregisterListeners();\n this.stopLoad();\n // @ts-ignore\n this.hls = null;\n this.levels = this.audioTracks = this.subtitleTracks = null;\n }\n removeLevel(levelToRemove) {\n const levels = this.levels;\n if (levels) {\n this.levels = levels.filter(level => level !== levelToRemove);\n }\n }\n onManifestLoading() {\n this.stopLoad();\n this.enabled = true;\n this.timeToLoad = 300;\n this.updated = 0;\n this.uri = null;\n this.pathwayId = '.';\n this.levels = this.audioTracks = this.subtitleTracks = null;\n }\n onManifestLoaded(event, data) {\n const {\n contentSteering\n } = data;\n if (contentSteering === null) {\n return;\n }\n this.pathwayId = contentSteering.pathwayId;\n this.uri = contentSteering.uri;\n if (this.started) {\n this.startLoad();\n }\n }\n onManifestParsed(event, data) {\n this.audioTracks = data.audioTracks;\n this.subtitleTracks = data.subtitleTracks;\n }\n onError(event, data) {\n const {\n errorAction\n } = data;\n if ((errorAction == null ? void 0 : errorAction.action) === NetworkErrorAction.SendAlternateToPenaltyBox && errorAction.flags === ErrorActionFlags.MoveAllAlternatesMatchingHost) {\n const levels = this.levels;\n let pathwayPriority = this.pathwayPriority;\n let errorPathway = this.pathwayId;\n if (data.context) {\n const {\n groupId,\n pathwayId,\n type\n } = data.context;\n if (groupId && levels) {\n errorPathway = this.getPathwayForGroupId(groupId, type, errorPathway);\n } else if (pathwayId) {\n errorPathway = pathwayId;\n }\n }\n if (!(errorPathway in this.penalizedPathways)) {\n this.penalizedPathways[errorPathway] = performance.now();\n }\n if (!pathwayPriority && levels) {\n // If PATHWAY-PRIORITY was not provided, list pathways for error handling\n pathwayPriority = levels.reduce((pathways, level) => {\n if (pathways.indexOf(level.pathwayId) === -1) {\n pathways.push(level.pathwayId);\n }\n return pathways;\n }, []);\n }\n if (pathwayPriority && pathwayPriority.length > 1) {\n this.updatePathwayPriority(pathwayPriority);\n errorAction.resolved = this.pathwayId !== errorPathway;\n }\n if (!errorAction.resolved) {\n logger.warn(`Could not resolve ${data.details} (\"${data.error.message}\") with content-steering for Pathway: ${errorPathway} levels: ${levels ? levels.length : levels} priorities: ${JSON.stringify(pathwayPriority)} penalized: ${JSON.stringify(this.penalizedPathways)}`);\n }\n }\n }\n filterParsedLevels(levels) {\n // Filter levels to only include those that are in the initial pathway\n this.levels = levels;\n let pathwayLevels = this.getLevelsForPathway(this.pathwayId);\n if (pathwayLevels.length === 0) {\n const pathwayId = levels[0].pathwayId;\n this.log(`No levels found in Pathway ${this.pathwayId}. Setting initial Pathway to \"${pathwayId}\"`);\n pathwayLevels = this.getLevelsForPathway(pathwayId);\n this.pathwayId = pathwayId;\n }\n if (pathwayLevels.length !== levels.length) {\n this.log(`Found ${pathwayLevels.length}/${levels.length} levels in Pathway \"${this.pathwayId}\"`);\n }\n return pathwayLevels;\n }\n getLevelsForPathway(pathwayId) {\n if (this.levels === null) {\n return [];\n }\n return this.levels.filter(level => pathwayId === level.pathwayId);\n }\n updatePathwayPriority(pathwayPriority) {\n this.pathwayPriority = pathwayPriority;\n let levels;\n\n // Evaluate if we should remove the pathway from the penalized list\n const penalizedPathways = this.penalizedPathways;\n const now = performance.now();\n Object.keys(penalizedPathways).forEach(pathwayId => {\n if (now - penalizedPathways[pathwayId] > PATHWAY_PENALTY_DURATION_MS) {\n delete penalizedPathways[pathwayId];\n }\n });\n for (let i = 0; i < pathwayPriority.length; i++) {\n const pathwayId = pathwayPriority[i];\n if (pathwayId in penalizedPathways) {\n continue;\n }\n if (pathwayId === this.pathwayId) {\n return;\n }\n const selectedIndex = this.hls.nextLoadLevel;\n const selectedLevel = this.hls.levels[selectedIndex];\n levels = this.getLevelsForPathway(pathwayId);\n if (levels.length > 0) {\n this.log(`Setting Pathway to \"${pathwayId}\"`);\n this.pathwayId = pathwayId;\n reassignFragmentLevelIndexes(levels);\n this.hls.trigger(Events.LEVELS_UPDATED, {\n levels\n });\n // Set LevelController's level to trigger LEVEL_SWITCHING which loads playlist if needed\n const levelAfterChange = this.hls.levels[selectedIndex];\n if (selectedLevel && levelAfterChange && this.levels) {\n if (levelAfterChange.attrs['STABLE-VARIANT-ID'] !== selectedLevel.attrs['STABLE-VARIANT-ID'] && levelAfterChange.bitrate !== selectedLevel.bitrate) {\n this.log(`Unstable Pathways change from bitrate ${selectedLevel.bitrate} to ${levelAfterChange.bitrate}`);\n }\n this.hls.nextLoadLevel = selectedIndex;\n }\n break;\n }\n }\n }\n getPathwayForGroupId(groupId, type, defaultPathway) {\n const levels = this.getLevelsForPathway(defaultPathway).concat(this.levels || []);\n for (let i = 0; i < levels.length; i++) {\n if (type === PlaylistContextType.AUDIO_TRACK && levels[i].hasAudioGroup(groupId) || type === PlaylistContextType.SUBTITLE_TRACK && levels[i].hasSubtitleGroup(groupId)) {\n return levels[i].pathwayId;\n }\n }\n return defaultPathway;\n }\n clonePathways(pathwayClones) {\n const levels = this.levels;\n if (!levels) {\n return;\n }\n const audioGroupCloneMap = {};\n const subtitleGroupCloneMap = {};\n pathwayClones.forEach(pathwayClone => {\n const {\n ID: cloneId,\n 'BASE-ID': baseId,\n 'URI-REPLACEMENT': uriReplacement\n } = pathwayClone;\n if (levels.some(level => level.pathwayId === cloneId)) {\n return;\n }\n const clonedVariants = this.getLevelsForPathway(baseId).map(baseLevel => {\n const attributes = new AttrList(baseLevel.attrs);\n attributes['PATHWAY-ID'] = cloneId;\n const clonedAudioGroupId = attributes.AUDIO && `${attributes.AUDIO}_clone_${cloneId}`;\n const clonedSubtitleGroupId = attributes.SUBTITLES && `${attributes.SUBTITLES}_clone_${cloneId}`;\n if (clonedAudioGroupId) {\n audioGroupCloneMap[attributes.AUDIO] = clonedAudioGroupId;\n attributes.AUDIO = clonedAudioGroupId;\n }\n if (clonedSubtitleGroupId) {\n subtitleGroupCloneMap[attributes.SUBTITLES] = clonedSubtitleGroupId;\n attributes.SUBTITLES = clonedSubtitleGroupId;\n }\n const url = performUriReplacement(baseLevel.uri, attributes['STABLE-VARIANT-ID'], 'PER-VARIANT-URIS', uriReplacement);\n const clonedLevel = new Level({\n attrs: attributes,\n audioCodec: baseLevel.audioCodec,\n bitrate: baseLevel.bitrate,\n height: baseLevel.height,\n name: baseLevel.name,\n url,\n videoCodec: baseLevel.videoCodec,\n width: baseLevel.width\n });\n if (baseLevel.audioGroups) {\n for (let i = 1; i < baseLevel.audioGroups.length; i++) {\n clonedLevel.addGroupId('audio', `${baseLevel.audioGroups[i]}_clone_${cloneId}`);\n }\n }\n if (baseLevel.subtitleGroups) {\n for (let i = 1; i < baseLevel.subtitleGroups.length; i++) {\n clonedLevel.addGroupId('text', `${baseLevel.subtitleGroups[i]}_clone_${cloneId}`);\n }\n }\n return clonedLevel;\n });\n levels.push(...clonedVariants);\n cloneRenditionGroups(this.audioTracks, audioGroupCloneMap, uriReplacement, cloneId);\n cloneRenditionGroups(this.subtitleTracks, subtitleGroupCloneMap, uriReplacement, cloneId);\n });\n }\n loadSteeringManifest(uri) {\n const config = this.hls.config;\n const Loader = config.loader;\n if (this.loader) {\n this.loader.destroy();\n }\n this.loader = new Loader(config);\n let url;\n try {\n url = new self.URL(uri);\n } catch (error) {\n this.enabled = false;\n this.log(`Failed to parse Steering Manifest URI: ${uri}`);\n return;\n }\n if (url.protocol !== 'data:') {\n const throughput = (this.hls.bandwidthEstimate || config.abrEwmaDefaultEstimate) | 0;\n url.searchParams.set('_HLS_pathway', this.pathwayId);\n url.searchParams.set('_HLS_throughput', '' + throughput);\n }\n const context = {\n responseType: 'json',\n url: url.href\n };\n const loadPolicy = config.steeringManifestLoadPolicy.default;\n const legacyRetryCompatibility = loadPolicy.errorRetry || loadPolicy.timeoutRetry || {};\n const loaderConfig = {\n loadPolicy,\n timeout: loadPolicy.maxLoadTimeMs,\n maxRetry: legacyRetryCompatibility.maxNumRetry || 0,\n retryDelay: legacyRetryCompatibility.retryDelayMs || 0,\n maxRetryDelay: legacyRetryCompatibility.maxRetryDelayMs || 0\n };\n const callbacks = {\n onSuccess: (response, stats, context, networkDetails) => {\n this.log(`Loaded steering manifest: \"${url}\"`);\n const steeringData = response.data;\n if (steeringData.VERSION !== 1) {\n this.log(`Steering VERSION ${steeringData.VERSION} not supported!`);\n return;\n }\n this.updated = performance.now();\n this.timeToLoad = steeringData.TTL;\n const {\n 'RELOAD-URI': reloadUri,\n 'PATHWAY-CLONES': pathwayClones,\n 'PATHWAY-PRIORITY': pathwayPriority\n } = steeringData;\n if (reloadUri) {\n try {\n this.uri = new self.URL(reloadUri, url).href;\n } catch (error) {\n this.enabled = false;\n this.log(`Failed to parse Steering Manifest RELOAD-URI: ${reloadUri}`);\n return;\n }\n }\n this.scheduleRefresh(this.uri || context.url);\n if (pathwayClones) {\n this.clonePathways(pathwayClones);\n }\n const loadedSteeringData = {\n steeringManifest: steeringData,\n url: url.toString()\n };\n this.hls.trigger(Events.STEERING_MANIFEST_LOADED, loadedSteeringData);\n if (pathwayPriority) {\n this.updatePathwayPriority(pathwayPriority);\n }\n },\n onError: (error, context, networkDetails, stats) => {\n this.log(`Error loading steering manifest: ${error.code} ${error.text} (${context.url})`);\n this.stopLoad();\n if (error.code === 410) {\n this.enabled = false;\n this.log(`Steering manifest ${context.url} no longer available`);\n return;\n }\n let ttl = this.timeToLoad * 1000;\n if (error.code === 429) {\n const loader = this.loader;\n if (typeof (loader == null ? void 0 : loader.getResponseHeader) === 'function') {\n const retryAfter = loader.getResponseHeader('Retry-After');\n if (retryAfter) {\n ttl = parseFloat(retryAfter) * 1000;\n }\n }\n this.log(`Steering manifest ${context.url} rate limited`);\n return;\n }\n this.scheduleRefresh(this.uri || context.url, ttl);\n },\n onTimeout: (stats, context, networkDetails) => {\n this.log(`Timeout loading steering manifest (${context.url})`);\n this.scheduleRefresh(this.uri || context.url);\n }\n };\n this.log(`Requesting steering manifest: ${url}`);\n this.loader.load(context, loaderConfig, callbacks);\n }\n scheduleRefresh(uri, ttlMs = this.timeToLoad * 1000) {\n this.clearTimeout();\n this.reloadTimer = self.setTimeout(() => {\n var _this$hls;\n const media = (_this$hls = this.hls) == null ? void 0 : _this$hls.media;\n if (media && !media.ended) {\n this.loadSteeringManifest(uri);\n return;\n }\n this.scheduleRefresh(uri, this.timeToLoad * 1000);\n }, ttlMs);\n }\n}\nfunction cloneRenditionGroups(tracks, groupCloneMap, uriReplacement, cloneId) {\n if (!tracks) {\n return;\n }\n Object.keys(groupCloneMap).forEach(audioGroupId => {\n const clonedTracks = tracks.filter(track => track.groupId === audioGroupId).map(track => {\n const clonedTrack = _extends({}, track);\n clonedTrack.details = undefined;\n clonedTrack.attrs = new AttrList(clonedTrack.attrs);\n clonedTrack.url = clonedTrack.attrs.URI = performUriReplacement(track.url, track.attrs['STABLE-RENDITION-ID'], 'PER-RENDITION-URIS', uriReplacement);\n clonedTrack.groupId = clonedTrack.attrs['GROUP-ID'] = groupCloneMap[audioGroupId];\n clonedTrack.attrs['PATHWAY-ID'] = cloneId;\n return clonedTrack;\n });\n tracks.push(...clonedTracks);\n });\n}\nfunction performUriReplacement(uri, stableId, perOptionKey, uriReplacement) {\n const {\n HOST: host,\n PARAMS: params,\n [perOptionKey]: perOptionUris\n } = uriReplacement;\n let perVariantUri;\n if (stableId) {\n perVariantUri = perOptionUris == null ? void 0 : perOptionUris[stableId];\n if (perVariantUri) {\n uri = perVariantUri;\n }\n }\n const url = new self.URL(uri);\n if (host && !perVariantUri) {\n url.host = host;\n }\n if (params) {\n Object.keys(params).sort().forEach(key => {\n if (key) {\n url.searchParams.set(key, params[key]);\n }\n });\n }\n return url.href;\n}\n\nconst AGE_HEADER_LINE_REGEX = /^age:\\s*[\\d.]+\\s*$/im;\nclass XhrLoader {\n constructor(config) {\n this.xhrSetup = void 0;\n this.requestTimeout = void 0;\n this.retryTimeout = void 0;\n this.retryDelay = void 0;\n this.config = null;\n this.callbacks = null;\n this.context = null;\n this.loader = null;\n this.stats = void 0;\n this.xhrSetup = config ? config.xhrSetup || null : null;\n this.stats = new LoadStats();\n this.retryDelay = 0;\n }\n destroy() {\n this.callbacks = null;\n this.abortInternal();\n this.loader = null;\n this.config = null;\n this.context = null;\n this.xhrSetup = null;\n }\n abortInternal() {\n const loader = this.loader;\n self.clearTimeout(this.requestTimeout);\n self.clearTimeout(this.retryTimeout);\n if (loader) {\n loader.onreadystatechange = null;\n loader.onprogress = null;\n if (loader.readyState !== 4) {\n this.stats.aborted = true;\n loader.abort();\n }\n }\n }\n abort() {\n var _this$callbacks;\n this.abortInternal();\n if ((_this$callbacks = this.callbacks) != null && _this$callbacks.onAbort) {\n this.callbacks.onAbort(this.stats, this.context, this.loader);\n }\n }\n load(context, config, callbacks) {\n if (this.stats.loading.start) {\n throw new Error('Loader can only be used once.');\n }\n this.stats.loading.start = self.performance.now();\n this.context = context;\n this.config = config;\n this.callbacks = callbacks;\n this.loadInternal();\n }\n loadInternal() {\n const {\n config,\n context\n } = this;\n if (!config || !context) {\n return;\n }\n const xhr = this.loader = new self.XMLHttpRequest();\n const stats = this.stats;\n stats.loading.first = 0;\n stats.loaded = 0;\n stats.aborted = false;\n const xhrSetup = this.xhrSetup;\n if (xhrSetup) {\n Promise.resolve().then(() => {\n if (this.loader !== xhr || this.stats.aborted) return;\n return xhrSetup(xhr, context.url);\n }).catch(error => {\n if (this.loader !== xhr || this.stats.aborted) return;\n xhr.open('GET', context.url, true);\n return xhrSetup(xhr, context.url);\n }).then(() => {\n if (this.loader !== xhr || this.stats.aborted) return;\n this.openAndSendXhr(xhr, context, config);\n }).catch(error => {\n // IE11 throws an exception on xhr.open if attempting to access an HTTP resource over HTTPS\n this.callbacks.onError({\n code: xhr.status,\n text: error.message\n }, context, xhr, stats);\n return;\n });\n } else {\n this.openAndSendXhr(xhr, context, config);\n }\n }\n openAndSendXhr(xhr, context, config) {\n if (!xhr.readyState) {\n xhr.open('GET', context.url, true);\n }\n const headers = context.headers;\n const {\n maxTimeToFirstByteMs,\n maxLoadTimeMs\n } = config.loadPolicy;\n if (headers) {\n for (const header in headers) {\n xhr.setRequestHeader(header, headers[header]);\n }\n }\n if (context.rangeEnd) {\n xhr.setRequestHeader('Range', 'bytes=' + context.rangeStart + '-' + (context.rangeEnd - 1));\n }\n xhr.onreadystatechange = this.readystatechange.bind(this);\n xhr.onprogress = this.loadprogress.bind(this);\n xhr.responseType = context.responseType;\n // setup timeout before we perform request\n self.clearTimeout(this.requestTimeout);\n config.timeout = maxTimeToFirstByteMs && isFiniteNumber(maxTimeToFirstByteMs) ? maxTimeToFirstByteMs : maxLoadTimeMs;\n this.requestTimeout = self.setTimeout(this.loadtimeout.bind(this), config.timeout);\n xhr.send();\n }\n readystatechange() {\n const {\n context,\n loader: xhr,\n stats\n } = this;\n if (!context || !xhr) {\n return;\n }\n const readyState = xhr.readyState;\n const config = this.config;\n\n // don't proceed if xhr has been aborted\n if (stats.aborted) {\n return;\n }\n\n // >= HEADERS_RECEIVED\n if (readyState >= 2) {\n if (stats.loading.first === 0) {\n stats.loading.first = Math.max(self.performance.now(), stats.loading.start);\n // readyState >= 2 AND readyState !==4 (readyState = HEADERS_RECEIVED || LOADING) rearm timeout as xhr not finished yet\n if (config.timeout !== config.loadPolicy.maxLoadTimeMs) {\n self.clearTimeout(this.requestTimeout);\n config.timeout = config.loadPolicy.maxLoadTimeMs;\n this.requestTimeout = self.setTimeout(this.loadtimeout.bind(this), config.loadPolicy.maxLoadTimeMs - (stats.loading.first - stats.loading.start));\n }\n }\n if (readyState === 4) {\n self.clearTimeout(this.requestTimeout);\n xhr.onreadystatechange = null;\n xhr.onprogress = null;\n const status = xhr.status;\n // http status between 200 to 299 are all successful\n const useResponseText = xhr.responseType === 'text' ? xhr.responseText : null;\n if (status >= 200 && status < 300) {\n const data = useResponseText != null ? useResponseText : xhr.response;\n if (data != null) {\n stats.loading.end = Math.max(self.performance.now(), stats.loading.first);\n const len = xhr.responseType === 'arraybuffer' ? data.byteLength : data.length;\n stats.loaded = stats.total = len;\n stats.bwEstimate = stats.total * 8000 / (stats.loading.end - stats.loading.first);\n if (!this.callbacks) {\n return;\n }\n const onProgress = this.callbacks.onProgress;\n if (onProgress) {\n onProgress(stats, context, data, xhr);\n }\n if (!this.callbacks) {\n return;\n }\n const _response = {\n url: xhr.responseURL,\n data: data,\n code: status\n };\n this.callbacks.onSuccess(_response, stats, context, xhr);\n return;\n }\n }\n\n // Handle bad status or nullish response\n const retryConfig = config.loadPolicy.errorRetry;\n const retryCount = stats.retry;\n // if max nb of retries reached or if http status between 400 and 499 (such error cannot be recovered, retrying is useless), return error\n const response = {\n url: context.url,\n data: undefined,\n code: status\n };\n if (shouldRetry(retryConfig, retryCount, false, response)) {\n this.retry(retryConfig);\n } else {\n logger.error(`${status} while loading ${context.url}`);\n this.callbacks.onError({\n code: status,\n text: xhr.statusText\n }, context, xhr, stats);\n }\n }\n }\n }\n loadtimeout() {\n if (!this.config) return;\n const retryConfig = this.config.loadPolicy.timeoutRetry;\n const retryCount = this.stats.retry;\n if (shouldRetry(retryConfig, retryCount, true)) {\n this.retry(retryConfig);\n } else {\n var _this$context;\n logger.warn(`timeout while loading ${(_this$context = this.context) == null ? void 0 : _this$context.url}`);\n const callbacks = this.callbacks;\n if (callbacks) {\n this.abortInternal();\n callbacks.onTimeout(this.stats, this.context, this.loader);\n }\n }\n }\n retry(retryConfig) {\n const {\n context,\n stats\n } = this;\n this.retryDelay = getRetryDelay(retryConfig, stats.retry);\n stats.retry++;\n logger.warn(`${status ? 'HTTP Status ' + status : 'Timeout'} while loading ${context == null ? void 0 : context.url}, retrying ${stats.retry}/${retryConfig.maxNumRetry} in ${this.retryDelay}ms`);\n // abort and reset internal state\n this.abortInternal();\n this.loader = null;\n // schedule retry\n self.clearTimeout(this.retryTimeout);\n this.retryTimeout = self.setTimeout(this.loadInternal.bind(this), this.retryDelay);\n }\n loadprogress(event) {\n const stats = this.stats;\n stats.loaded = event.loaded;\n if (event.lengthComputable) {\n stats.total = event.total;\n }\n }\n getCacheAge() {\n let result = null;\n if (this.loader && AGE_HEADER_LINE_REGEX.test(this.loader.getAllResponseHeaders())) {\n const ageHeader = this.loader.getResponseHeader('age');\n result = ageHeader ? parseFloat(ageHeader) : null;\n }\n return result;\n }\n getResponseHeader(name) {\n if (this.loader && new RegExp(`^${name}:\\\\s*[\\\\d.]+\\\\s*$`, 'im').test(this.loader.getAllResponseHeaders())) {\n return this.loader.getResponseHeader(name);\n }\n return null;\n }\n}\n\nfunction fetchSupported() {\n if (\n // @ts-ignore\n self.fetch && self.AbortController && self.ReadableStream && self.Request) {\n try {\n new self.ReadableStream({}); // eslint-disable-line no-new\n return true;\n } catch (e) {\n /* noop */\n }\n }\n return false;\n}\nconst BYTERANGE = /(\\d+)-(\\d+)\\/(\\d+)/;\nclass FetchLoader {\n constructor(config /* HlsConfig */) {\n this.fetchSetup = void 0;\n this.requestTimeout = void 0;\n this.request = null;\n this.response = null;\n this.controller = void 0;\n this.context = null;\n this.config = null;\n this.callbacks = null;\n this.stats = void 0;\n this.loader = null;\n this.fetchSetup = config.fetchSetup || getRequest;\n this.controller = new self.AbortController();\n this.stats = new LoadStats();\n }\n destroy() {\n this.loader = this.callbacks = this.context = this.config = this.request = null;\n this.abortInternal();\n this.response = null;\n // @ts-ignore\n this.fetchSetup = this.controller = this.stats = null;\n }\n abortInternal() {\n if (this.controller && !this.stats.loading.end) {\n this.stats.aborted = true;\n this.controller.abort();\n }\n }\n abort() {\n var _this$callbacks;\n this.abortInternal();\n if ((_this$callbacks = this.callbacks) != null && _this$callbacks.onAbort) {\n this.callbacks.onAbort(this.stats, this.context, this.response);\n }\n }\n load(context, config, callbacks) {\n const stats = this.stats;\n if (stats.loading.start) {\n throw new Error('Loader can only be used once.');\n }\n stats.loading.start = self.performance.now();\n const initParams = getRequestParameters(context, this.controller.signal);\n const onProgress = callbacks.onProgress;\n const isArrayBuffer = context.responseType === 'arraybuffer';\n const LENGTH = isArrayBuffer ? 'byteLength' : 'length';\n const {\n maxTimeToFirstByteMs,\n maxLoadTimeMs\n } = config.loadPolicy;\n this.context = context;\n this.config = config;\n this.callbacks = callbacks;\n this.request = this.fetchSetup(context, initParams);\n self.clearTimeout(this.requestTimeout);\n config.timeout = maxTimeToFirstByteMs && isFiniteNumber(maxTimeToFirstByteMs) ? maxTimeToFirstByteMs : maxLoadTimeMs;\n this.requestTimeout = self.setTimeout(() => {\n this.abortInternal();\n callbacks.onTimeout(stats, context, this.response);\n }, config.timeout);\n self.fetch(this.request).then(response => {\n this.response = this.loader = response;\n const first = Math.max(self.performance.now(), stats.loading.start);\n self.clearTimeout(this.requestTimeout);\n config.timeout = maxLoadTimeMs;\n this.requestTimeout = self.setTimeout(() => {\n this.abortInternal();\n callbacks.onTimeout(stats, context, this.response);\n }, maxLoadTimeMs - (first - stats.loading.start));\n if (!response.ok) {\n const {\n status,\n statusText\n } = response;\n throw new FetchError(statusText || 'fetch, bad network response', status, response);\n }\n stats.loading.first = first;\n stats.total = getContentLength(response.headers) || stats.total;\n if (onProgress && isFiniteNumber(config.highWaterMark)) {\n return this.loadProgressively(response, stats, context, config.highWaterMark, onProgress);\n }\n if (isArrayBuffer) {\n return response.arrayBuffer();\n }\n if (context.responseType === 'json') {\n return response.json();\n }\n return response.text();\n }).then(responseData => {\n const response = this.response;\n if (!response) {\n throw new Error('loader destroyed');\n }\n self.clearTimeout(this.requestTimeout);\n stats.loading.end = Math.max(self.performance.now(), stats.loading.first);\n const total = responseData[LENGTH];\n if (total) {\n stats.loaded = stats.total = total;\n }\n const loaderResponse = {\n url: response.url,\n data: responseData,\n code: response.status\n };\n if (onProgress && !isFiniteNumber(config.highWaterMark)) {\n onProgress(stats, context, responseData, response);\n }\n callbacks.onSuccess(loaderResponse, stats, context, response);\n }).catch(error => {\n self.clearTimeout(this.requestTimeout);\n if (stats.aborted) {\n return;\n }\n // CORS errors result in an undefined code. Set it to 0 here to align with XHR's behavior\n // when destroying, 'error' itself can be undefined\n const code = !error ? 0 : error.code || 0;\n const text = !error ? null : error.message;\n callbacks.onError({\n code,\n text\n }, context, error ? error.details : null, stats);\n });\n }\n getCacheAge() {\n let result = null;\n if (this.response) {\n const ageHeader = this.response.headers.get('age');\n result = ageHeader ? parseFloat(ageHeader) : null;\n }\n return result;\n }\n getResponseHeader(name) {\n return this.response ? this.response.headers.get(name) : null;\n }\n loadProgressively(response, stats, context, highWaterMark = 0, onProgress) {\n const chunkCache = new ChunkCache();\n const reader = response.body.getReader();\n const pump = () => {\n return reader.read().then(data => {\n if (data.done) {\n if (chunkCache.dataLength) {\n onProgress(stats, context, chunkCache.flush(), response);\n }\n return Promise.resolve(new ArrayBuffer(0));\n }\n const chunk = data.value;\n const len = chunk.length;\n stats.loaded += len;\n if (len < highWaterMark || chunkCache.dataLength) {\n // The current chunk is too small to to be emitted or the cache already has data\n // Push it to the cache\n chunkCache.push(chunk);\n if (chunkCache.dataLength >= highWaterMark) {\n // flush in order to join the typed arrays\n onProgress(stats, context, chunkCache.flush(), response);\n }\n } else {\n // If there's nothing cached already, and the chache is large enough\n // just emit the progress event\n onProgress(stats, context, chunk, response);\n }\n return pump();\n }).catch(() => {\n /* aborted */\n return Promise.reject();\n });\n };\n return pump();\n }\n}\nfunction getRequestParameters(context, signal) {\n const initParams = {\n method: 'GET',\n mode: 'cors',\n credentials: 'same-origin',\n signal,\n headers: new self.Headers(_extends({}, context.headers))\n };\n if (context.rangeEnd) {\n initParams.headers.set('Range', 'bytes=' + context.rangeStart + '-' + String(context.rangeEnd - 1));\n }\n return initParams;\n}\nfunction getByteRangeLength(byteRangeHeader) {\n const result = BYTERANGE.exec(byteRangeHeader);\n if (result) {\n return parseInt(result[2]) - parseInt(result[1]) + 1;\n }\n}\nfunction getContentLength(headers) {\n const contentRange = headers.get('Content-Range');\n if (contentRange) {\n const byteRangeLength = getByteRangeLength(contentRange);\n if (isFiniteNumber(byteRangeLength)) {\n return byteRangeLength;\n }\n }\n const contentLength = headers.get('Content-Length');\n if (contentLength) {\n return parseInt(contentLength);\n }\n}\nfunction getRequest(context, initParams) {\n return new self.Request(context.url, initParams);\n}\nclass FetchError extends Error {\n constructor(message, code, details) {\n super(message);\n this.code = void 0;\n this.details = void 0;\n this.code = code;\n this.details = details;\n }\n}\n\nconst WHITESPACE_CHAR = /\\s/;\nconst Cues = {\n newCue(track, startTime, endTime, captionScreen) {\n const result = [];\n let row;\n // the type data states this is VTTCue, but it can potentially be a TextTrackCue on old browsers\n let cue;\n let indenting;\n let indent;\n let text;\n const Cue = self.VTTCue || self.TextTrackCue;\n for (let r = 0; r < captionScreen.rows.length; r++) {\n row = captionScreen.rows[r];\n indenting = true;\n indent = 0;\n text = '';\n if (!row.isEmpty()) {\n var _track$cues;\n for (let c = 0; c < row.chars.length; c++) {\n if (WHITESPACE_CHAR.test(row.chars[c].uchar) && indenting) {\n indent++;\n } else {\n text += row.chars[c].uchar;\n indenting = false;\n }\n }\n // To be used for cleaning-up orphaned roll-up captions\n row.cueStartTime = startTime;\n\n // Give a slight bump to the endTime if it's equal to startTime to avoid a SyntaxError in IE\n if (startTime === endTime) {\n endTime += 0.0001;\n }\n if (indent >= 16) {\n indent--;\n } else {\n indent++;\n }\n const cueText = fixLineBreaks(text.trim());\n const id = generateCueId(startTime, endTime, cueText);\n\n // If this cue already exists in the track do not push it\n if (!(track != null && (_track$cues = track.cues) != null && _track$cues.getCueById(id))) {\n cue = new Cue(startTime, endTime, cueText);\n cue.id = id;\n cue.line = r + 1;\n cue.align = 'left';\n // Clamp the position between 10 and 80 percent (CEA-608 PAC indent code)\n // https://dvcs.w3.org/hg/text-tracks/raw-file/default/608toVTT/608toVTT.html#positioning-in-cea-608\n // Firefox throws an exception and captions break with out of bounds 0-100 values\n cue.position = 10 + Math.min(80, Math.floor(indent * 8 / 32) * 10);\n result.push(cue);\n }\n }\n }\n if (track && result.length) {\n // Sort bottom cues in reverse order so that they render in line order when overlapping in Chrome\n result.sort((cueA, cueB) => {\n if (cueA.line === 'auto' || cueB.line === 'auto') {\n return 0;\n }\n if (cueA.line > 8 && cueB.line > 8) {\n return cueB.line - cueA.line;\n }\n return cueA.line - cueB.line;\n });\n result.forEach(cue => addCueToTrack(track, cue));\n }\n return result;\n }\n};\n\n/**\n * @deprecated use fragLoadPolicy.default\n */\n\n/**\n * @deprecated use manifestLoadPolicy.default and playlistLoadPolicy.default\n */\n\nconst defaultLoadPolicy = {\n maxTimeToFirstByteMs: 8000,\n maxLoadTimeMs: 20000,\n timeoutRetry: null,\n errorRetry: null\n};\n\n/**\n * @ignore\n * If possible, keep hlsDefaultConfig shallow\n * It is cloned whenever a new Hls instance is created, by keeping the config\n * shallow the properties are cloned, and we don't end up manipulating the default\n */\nconst hlsDefaultConfig = _objectSpread2(_objectSpread2({\n autoStartLoad: true,\n // used by stream-controller\n startPosition: -1,\n // used by stream-controller\n defaultAudioCodec: undefined,\n // used by stream-controller\n debug: false,\n // used by logger\n capLevelOnFPSDrop: false,\n // used by fps-controller\n capLevelToPlayerSize: false,\n // used by cap-level-controller\n ignoreDevicePixelRatio: false,\n // used by cap-level-controller\n preferManagedMediaSource: true,\n initialLiveManifestSize: 1,\n // used by stream-controller\n maxBufferLength: 30,\n // used by stream-controller\n backBufferLength: Infinity,\n // used by buffer-controller\n frontBufferFlushThreshold: Infinity,\n maxBufferSize: 60 * 1000 * 1000,\n // used by stream-controller\n maxBufferHole: 0.1,\n // used by stream-controller\n highBufferWatchdogPeriod: 2,\n // used by stream-controller\n nudgeOffset: 0.1,\n // used by stream-controller\n nudgeMaxRetry: 3,\n // used by stream-controller\n maxFragLookUpTolerance: 0.25,\n // used by stream-controller\n liveSyncDurationCount: 3,\n // used by latency-controller\n liveMaxLatencyDurationCount: Infinity,\n // used by latency-controller\n liveSyncDuration: undefined,\n // used by latency-controller\n liveMaxLatencyDuration: undefined,\n // used by latency-controller\n maxLiveSyncPlaybackRate: 1,\n // used by latency-controller\n liveDurationInfinity: false,\n // used by buffer-controller\n /**\n * @deprecated use backBufferLength\n */\n liveBackBufferLength: null,\n // used by buffer-controller\n maxMaxBufferLength: 600,\n // used by stream-controller\n enableWorker: true,\n // used by transmuxer\n workerPath: null,\n // used by transmuxer\n enableSoftwareAES: true,\n // used by decrypter\n startLevel: undefined,\n // used by level-controller\n startFragPrefetch: false,\n // used by stream-controller\n fpsDroppedMonitoringPeriod: 5000,\n // used by fps-controller\n fpsDroppedMonitoringThreshold: 0.2,\n // used by fps-controller\n appendErrorMaxRetry: 3,\n // used by buffer-controller\n loader: XhrLoader,\n // loader: FetchLoader,\n fLoader: undefined,\n // used by fragment-loader\n pLoader: undefined,\n // used by playlist-loader\n xhrSetup: undefined,\n // used by xhr-loader\n licenseXhrSetup: undefined,\n // used by eme-controller\n licenseResponseCallback: undefined,\n // used by eme-controller\n abrController: AbrController,\n bufferController: BufferController,\n capLevelController: CapLevelController,\n errorController: ErrorController,\n fpsController: FPSController,\n stretchShortVideoTrack: false,\n // used by mp4-remuxer\n maxAudioFramesDrift: 1,\n // used by mp4-remuxer\n forceKeyFrameOnDiscontinuity: true,\n // used by ts-demuxer\n abrEwmaFastLive: 3,\n // used by abr-controller\n abrEwmaSlowLive: 9,\n // used by abr-controller\n abrEwmaFastVoD: 3,\n // used by abr-controller\n abrEwmaSlowVoD: 9,\n // used by abr-controller\n abrEwmaDefaultEstimate: 5e5,\n // 500 kbps // used by abr-controller\n abrEwmaDefaultEstimateMax: 5e6,\n // 5 mbps\n abrBandWidthFactor: 0.95,\n // used by abr-controller\n abrBandWidthUpFactor: 0.7,\n // used by abr-controller\n abrMaxWithRealBitrate: false,\n // used by abr-controller\n maxStarvationDelay: 4,\n // used by abr-controller\n maxLoadingDelay: 4,\n // used by abr-controller\n minAutoBitrate: 0,\n // used by hls\n emeEnabled: false,\n // used by eme-controller\n widevineLicenseUrl: undefined,\n // used by eme-controller\n drmSystems: {},\n // used by eme-controller\n drmSystemOptions: {},\n // used by eme-controller\n requestMediaKeySystemAccessFunc: requestMediaKeySystemAccess ,\n // used by eme-controller\n testBandwidth: true,\n progressive: false,\n lowLatencyMode: true,\n cmcd: undefined,\n enableDateRangeMetadataCues: true,\n enableEmsgMetadataCues: true,\n enableID3MetadataCues: true,\n useMediaCapabilities: true,\n certLoadPolicy: {\n default: defaultLoadPolicy\n },\n keyLoadPolicy: {\n default: {\n maxTimeToFirstByteMs: 8000,\n maxLoadTimeMs: 20000,\n timeoutRetry: {\n maxNumRetry: 1,\n retryDelayMs: 1000,\n maxRetryDelayMs: 20000,\n backoff: 'linear'\n },\n errorRetry: {\n maxNumRetry: 8,\n retryDelayMs: 1000,\n maxRetryDelayMs: 20000,\n backoff: 'linear'\n }\n }\n },\n manifestLoadPolicy: {\n default: {\n maxTimeToFirstByteMs: Infinity,\n maxLoadTimeMs: 20000,\n timeoutRetry: {\n maxNumRetry: 2,\n retryDelayMs: 0,\n maxRetryDelayMs: 0\n },\n errorRetry: {\n maxNumRetry: 1,\n retryDelayMs: 1000,\n maxRetryDelayMs: 8000\n }\n }\n },\n playlistLoadPolicy: {\n default: {\n maxTimeToFirstByteMs: 10000,\n maxLoadTimeMs: 20000,\n timeoutRetry: {\n maxNumRetry: 2,\n retryDelayMs: 0,\n maxRetryDelayMs: 0\n },\n errorRetry: {\n maxNumRetry: 2,\n retryDelayMs: 1000,\n maxRetryDelayMs: 8000\n }\n }\n },\n fragLoadPolicy: {\n default: {\n maxTimeToFirstByteMs: 10000,\n maxLoadTimeMs: 120000,\n timeoutRetry: {\n maxNumRetry: 4,\n retryDelayMs: 0,\n maxRetryDelayMs: 0\n },\n errorRetry: {\n maxNumRetry: 6,\n retryDelayMs: 1000,\n maxRetryDelayMs: 8000\n }\n }\n },\n steeringManifestLoadPolicy: {\n default: {\n maxTimeToFirstByteMs: 10000,\n maxLoadTimeMs: 20000,\n timeoutRetry: {\n maxNumRetry: 2,\n retryDelayMs: 0,\n maxRetryDelayMs: 0\n },\n errorRetry: {\n maxNumRetry: 1,\n retryDelayMs: 1000,\n maxRetryDelayMs: 8000\n }\n } \n },\n // These default settings are deprecated in favor of the above policies\n // and are maintained for backwards compatibility\n manifestLoadingTimeOut: 10000,\n manifestLoadingMaxRetry: 1,\n manifestLoadingRetryDelay: 1000,\n manifestLoadingMaxRetryTimeout: 64000,\n levelLoadingTimeOut: 10000,\n levelLoadingMaxRetry: 4,\n levelLoadingRetryDelay: 1000,\n levelLoadingMaxRetryTimeout: 64000,\n fragLoadingTimeOut: 20000,\n fragLoadingMaxRetry: 6,\n fragLoadingRetryDelay: 1000,\n fragLoadingMaxRetryTimeout: 64000\n}, timelineConfig()), {}, {\n subtitleStreamController: SubtitleStreamController ,\n subtitleTrackController: SubtitleTrackController ,\n timelineController: TimelineController ,\n audioStreamController: AudioStreamController ,\n audioTrackController: AudioTrackController ,\n emeController: EMEController ,\n cmcdController: CMCDController ,\n contentSteeringController: ContentSteeringController \n});\nfunction timelineConfig() {\n return {\n cueHandler: Cues,\n // used by timeline-controller\n enableWebVTT: true,\n // used by timeline-controller\n enableIMSC1: true,\n // used by timeline-controller\n enableCEA708Captions: true,\n // used by timeline-controller\n captionsTextTrack1Label: 'English',\n // used by timeline-controller\n captionsTextTrack1LanguageCode: 'en',\n // used by timeline-controller\n captionsTextTrack2Label: 'Spanish',\n // used by timeline-controller\n captionsTextTrack2LanguageCode: 'es',\n // used by timeline-controller\n captionsTextTrack3Label: 'Unknown CC',\n // used by timeline-controller\n captionsTextTrack3LanguageCode: '',\n // used by timeline-controller\n captionsTextTrack4Label: 'Unknown CC',\n // used by timeline-controller\n captionsTextTrack4LanguageCode: '',\n // used by timeline-controller\n renderTextTracksNatively: true\n };\n}\n\n/**\n * @ignore\n */\nfunction mergeConfig(defaultConfig, userConfig) {\n if ((userConfig.liveSyncDurationCount || userConfig.liveMaxLatencyDurationCount) && (userConfig.liveSyncDuration || userConfig.liveMaxLatencyDuration)) {\n throw new Error(\"Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration\");\n }\n if (userConfig.liveMaxLatencyDurationCount !== undefined && (userConfig.liveSyncDurationCount === undefined || userConfig.liveMaxLatencyDurationCount <= userConfig.liveSyncDurationCount)) {\n throw new Error('Illegal hls.js config: \"liveMaxLatencyDurationCount\" must be greater than \"liveSyncDurationCount\"');\n }\n if (userConfig.liveMaxLatencyDuration !== undefined && (userConfig.liveSyncDuration === undefined || userConfig.liveMaxLatencyDuration <= userConfig.liveSyncDuration)) {\n throw new Error('Illegal hls.js config: \"liveMaxLatencyDuration\" must be greater than \"liveSyncDuration\"');\n }\n const defaultsCopy = deepCpy(defaultConfig);\n\n // Backwards compatibility with deprecated config values\n const deprecatedSettingTypes = ['manifest', 'level', 'frag'];\n const deprecatedSettings = ['TimeOut', 'MaxRetry', 'RetryDelay', 'MaxRetryTimeout'];\n deprecatedSettingTypes.forEach(type => {\n const policyName = `${type === 'level' ? 'playlist' : type}LoadPolicy`;\n const policyNotSet = userConfig[policyName] === undefined;\n const report = [];\n deprecatedSettings.forEach(setting => {\n const deprecatedSetting = `${type}Loading${setting}`;\n const value = userConfig[deprecatedSetting];\n if (value !== undefined && policyNotSet) {\n report.push(deprecatedSetting);\n const settings = defaultsCopy[policyName].default;\n userConfig[policyName] = {\n default: settings\n };\n switch (setting) {\n case 'TimeOut':\n settings.maxLoadTimeMs = value;\n settings.maxTimeToFirstByteMs = value;\n break;\n case 'MaxRetry':\n settings.errorRetry.maxNumRetry = value;\n settings.timeoutRetry.maxNumRetry = value;\n break;\n case 'RetryDelay':\n settings.errorRetry.retryDelayMs = value;\n settings.timeoutRetry.retryDelayMs = value;\n break;\n case 'MaxRetryTimeout':\n settings.errorRetry.maxRetryDelayMs = value;\n settings.timeoutRetry.maxRetryDelayMs = value;\n break;\n }\n }\n });\n if (report.length) {\n logger.warn(`hls.js config: \"${report.join('\", \"')}\" setting(s) are deprecated, use \"${policyName}\": ${JSON.stringify(userConfig[policyName])}`);\n }\n });\n return _objectSpread2(_objectSpread2({}, defaultsCopy), userConfig);\n}\nfunction deepCpy(obj) {\n if (obj && typeof obj === 'object') {\n if (Array.isArray(obj)) {\n return obj.map(deepCpy);\n }\n return Object.keys(obj).reduce((result, key) => {\n result[key] = deepCpy(obj[key]);\n return result;\n }, {});\n }\n return obj;\n}\n\n/**\n * @ignore\n */\nfunction enableStreamingMode(config) {\n const currentLoader = config.loader;\n if (currentLoader !== FetchLoader && currentLoader !== XhrLoader) {\n // If a developer has configured their own loader, respect that choice\n logger.log('[config]: Custom loader detected, cannot enable progressive streaming');\n config.progressive = false;\n } else {\n const canStreamProgressively = fetchSupported();\n if (canStreamProgressively) {\n config.loader = FetchLoader;\n config.progressive = true;\n config.enableSoftwareAES = true;\n logger.log('[config]: Progressive streaming enabled, using FetchLoader');\n }\n }\n}\n\nlet chromeOrFirefox;\nclass LevelController extends BasePlaylistController {\n constructor(hls, contentSteeringController) {\n super(hls, '[level-controller]');\n this._levels = [];\n this._firstLevel = -1;\n this._maxAutoLevel = -1;\n this._startLevel = void 0;\n this.currentLevel = null;\n this.currentLevelIndex = -1;\n this.manualLevelIndex = -1;\n this.steering = void 0;\n this.onParsedComplete = void 0;\n this.steering = contentSteeringController;\n this._registerListeners();\n }\n _registerListeners() {\n const {\n hls\n } = this;\n hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n hls.on(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n hls.on(Events.LEVELS_UPDATED, this.onLevelsUpdated, this);\n hls.on(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n hls.on(Events.ERROR, this.onError, this);\n }\n _unregisterListeners() {\n const {\n hls\n } = this;\n hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n hls.off(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n hls.off(Events.LEVELS_UPDATED, this.onLevelsUpdated, this);\n hls.off(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n hls.off(Events.ERROR, this.onError, this);\n }\n destroy() {\n this._unregisterListeners();\n this.steering = null;\n this.resetLevels();\n super.destroy();\n }\n stopLoad() {\n const levels = this._levels;\n\n // clean up live level details to force reload them, and reset load errors\n levels.forEach(level => {\n level.loadError = 0;\n level.fragmentError = 0;\n });\n super.stopLoad();\n }\n resetLevels() {\n this._startLevel = undefined;\n this.manualLevelIndex = -1;\n this.currentLevelIndex = -1;\n this.currentLevel = null;\n this._levels = [];\n this._maxAutoLevel = -1;\n }\n onManifestLoading(event, data) {\n this.resetLevels();\n }\n onManifestLoaded(event, data) {\n const preferManagedMediaSource = this.hls.config.preferManagedMediaSource;\n const levels = [];\n const redundantSet = {};\n const generatePathwaySet = {};\n let resolutionFound = false;\n let videoCodecFound = false;\n let audioCodecFound = false;\n data.levels.forEach(levelParsed => {\n var _audioCodec, _videoCodec;\n const attributes = levelParsed.attrs;\n\n // erase audio codec info if browser does not support mp4a.40.34.\n // demuxer will autodetect codec and fallback to mpeg/audio\n let {\n audioCodec,\n videoCodec\n } = levelParsed;\n if (((_audioCodec = audioCodec) == null ? void 0 : _audioCodec.indexOf('mp4a.40.34')) !== -1) {\n chromeOrFirefox || (chromeOrFirefox = /chrome|firefox/i.test(navigator.userAgent));\n if (chromeOrFirefox) {\n levelParsed.audioCodec = audioCodec = undefined;\n }\n }\n if (audioCodec) {\n levelParsed.audioCodec = audioCodec = getCodecCompatibleName(audioCodec, preferManagedMediaSource);\n }\n if (((_videoCodec = videoCodec) == null ? void 0 : _videoCodec.indexOf('avc1')) === 0) {\n videoCodec = levelParsed.videoCodec = convertAVC1ToAVCOTI(videoCodec);\n }\n\n // only keep levels with supported audio/video codecs\n const {\n width,\n height,\n unknownCodecs\n } = levelParsed;\n resolutionFound || (resolutionFound = !!(width && height));\n videoCodecFound || (videoCodecFound = !!videoCodec);\n audioCodecFound || (audioCodecFound = !!audioCodec);\n if (unknownCodecs != null && unknownCodecs.length || audioCodec && !areCodecsMediaSourceSupported(audioCodec, 'audio', preferManagedMediaSource) || videoCodec && !areCodecsMediaSourceSupported(videoCodec, 'video', preferManagedMediaSource)) {\n return;\n }\n const {\n CODECS,\n 'FRAME-RATE': FRAMERATE,\n 'HDCP-LEVEL': HDCP,\n 'PATHWAY-ID': PATHWAY,\n RESOLUTION,\n 'VIDEO-RANGE': VIDEO_RANGE\n } = attributes;\n const contentSteeringPrefix = `${PATHWAY || '.'}-`;\n const levelKey = `${contentSteeringPrefix}${levelParsed.bitrate}-${RESOLUTION}-${FRAMERATE}-${CODECS}-${VIDEO_RANGE}-${HDCP}`;\n if (!redundantSet[levelKey]) {\n const level = new Level(levelParsed);\n redundantSet[levelKey] = level;\n generatePathwaySet[levelKey] = 1;\n levels.push(level);\n } else if (redundantSet[levelKey].uri !== levelParsed.url && !levelParsed.attrs['PATHWAY-ID']) {\n // Assign Pathway IDs to Redundant Streams (default Pathways is \".\". Redundant Streams \"..\", \"...\", and so on.)\n // Content Steering controller to handles Pathway fallback on error\n const pathwayCount = generatePathwaySet[levelKey] += 1;\n levelParsed.attrs['PATHWAY-ID'] = new Array(pathwayCount + 1).join('.');\n const level = new Level(levelParsed);\n redundantSet[levelKey] = level;\n levels.push(level);\n } else {\n redundantSet[levelKey].addGroupId('audio', attributes.AUDIO);\n redundantSet[levelKey].addGroupId('text', attributes.SUBTITLES);\n }\n });\n this.filterAndSortMediaOptions(levels, data, resolutionFound, videoCodecFound, audioCodecFound);\n }\n filterAndSortMediaOptions(filteredLevels, data, resolutionFound, videoCodecFound, audioCodecFound) {\n let audioTracks = [];\n let subtitleTracks = [];\n let levels = filteredLevels;\n\n // remove audio-only and invalid video-range levels if we also have levels with video codecs or RESOLUTION signalled\n if ((resolutionFound || videoCodecFound) && audioCodecFound) {\n levels = levels.filter(({\n videoCodec,\n videoRange,\n width,\n height\n }) => (!!videoCodec || !!(width && height)) && isVideoRange(videoRange));\n }\n if (levels.length === 0) {\n // Dispatch error after MANIFEST_LOADED is done propagating\n Promise.resolve().then(() => {\n if (this.hls) {\n if (data.levels.length) {\n this.warn(`One or more CODECS in variant not supported: ${JSON.stringify(data.levels[0].attrs)}`);\n }\n const error = new Error('no level with compatible codecs found in manifest');\n this.hls.trigger(Events.ERROR, {\n type: ErrorTypes.MEDIA_ERROR,\n details: ErrorDetails.MANIFEST_INCOMPATIBLE_CODECS_ERROR,\n fatal: true,\n url: data.url,\n error,\n reason: error.message\n });\n }\n });\n return;\n }\n if (data.audioTracks) {\n const {\n preferManagedMediaSource\n } = this.hls.config;\n audioTracks = data.audioTracks.filter(track => !track.audioCodec || areCodecsMediaSourceSupported(track.audioCodec, 'audio', preferManagedMediaSource));\n // Assign ids after filtering as array indices by group-id\n assignTrackIdsByGroup(audioTracks);\n }\n if (data.subtitles) {\n subtitleTracks = data.subtitles;\n assignTrackIdsByGroup(subtitleTracks);\n }\n // start bitrate is the first bitrate of the manifest\n const unsortedLevels = levels.slice(0);\n // sort levels from lowest to highest\n levels.sort((a, b) => {\n if (a.attrs['HDCP-LEVEL'] !== b.attrs['HDCP-LEVEL']) {\n return (a.attrs['HDCP-LEVEL'] || '') > (b.attrs['HDCP-LEVEL'] || '') ? 1 : -1;\n }\n // sort on height before bitrate for cap-level-controller\n if (resolutionFound && a.height !== b.height) {\n return a.height - b.height;\n }\n if (a.frameRate !== b.frameRate) {\n return a.frameRate - b.frameRate;\n }\n if (a.videoRange !== b.videoRange) {\n return VideoRangeValues.indexOf(a.videoRange) - VideoRangeValues.indexOf(b.videoRange);\n }\n if (a.videoCodec !== b.videoCodec) {\n const valueA = videoCodecPreferenceValue(a.videoCodec);\n const valueB = videoCodecPreferenceValue(b.videoCodec);\n if (valueA !== valueB) {\n return valueB - valueA;\n }\n }\n if (a.uri === b.uri && a.codecSet !== b.codecSet) {\n const valueA = codecsSetSelectionPreferenceValue(a.codecSet);\n const valueB = codecsSetSelectionPreferenceValue(b.codecSet);\n if (valueA !== valueB) {\n return valueB - valueA;\n }\n }\n if (a.averageBitrate !== b.averageBitrate) {\n return a.averageBitrate - b.averageBitrate;\n }\n return 0;\n });\n let firstLevelInPlaylist = unsortedLevels[0];\n if (this.steering) {\n levels = this.steering.filterParsedLevels(levels);\n if (levels.length !== unsortedLevels.length) {\n for (let i = 0; i < unsortedLevels.length; i++) {\n if (unsortedLevels[i].pathwayId === levels[0].pathwayId) {\n firstLevelInPlaylist = unsortedLevels[i];\n break;\n }\n }\n }\n }\n this._levels = levels;\n\n // find index of first level in sorted levels\n for (let i = 0; i < levels.length; i++) {\n if (levels[i] === firstLevelInPlaylist) {\n var _this$hls$userConfig;\n this._firstLevel = i;\n const firstLevelBitrate = firstLevelInPlaylist.bitrate;\n const bandwidthEstimate = this.hls.bandwidthEstimate;\n this.log(`manifest loaded, ${levels.length} level(s) found, first bitrate: ${firstLevelBitrate}`);\n // Update default bwe to first variant bitrate as long it has not been configured or set\n if (((_this$hls$userConfig = this.hls.userConfig) == null ? void 0 : _this$hls$userConfig.abrEwmaDefaultEstimate) === undefined) {\n const startingBwEstimate = Math.min(firstLevelBitrate, this.hls.config.abrEwmaDefaultEstimateMax);\n if (startingBwEstimate > bandwidthEstimate && bandwidthEstimate === hlsDefaultConfig.abrEwmaDefaultEstimate) {\n this.hls.bandwidthEstimate = startingBwEstimate;\n }\n }\n break;\n }\n }\n\n // Audio is only alternate if manifest include a URI along with the audio group tag,\n // and this is not an audio-only stream where levels contain audio-only\n const audioOnly = audioCodecFound && !videoCodecFound;\n const edata = {\n levels,\n audioTracks,\n subtitleTracks,\n sessionData: data.sessionData,\n sessionKeys: data.sessionKeys,\n firstLevel: this._firstLevel,\n stats: data.stats,\n audio: audioCodecFound,\n video: videoCodecFound,\n altAudio: !audioOnly && audioTracks.some(t => !!t.url)\n };\n this.hls.trigger(Events.MANIFEST_PARSED, edata);\n\n // Initiate loading after all controllers have received MANIFEST_PARSED\n if (this.hls.config.autoStartLoad || this.hls.forceStartLoad) {\n this.hls.startLoad(this.hls.config.startPosition);\n }\n }\n get levels() {\n if (this._levels.length === 0) {\n return null;\n }\n return this._levels;\n }\n get level() {\n return this.currentLevelIndex;\n }\n set level(newLevel) {\n const levels = this._levels;\n if (levels.length === 0) {\n return;\n }\n // check if level idx is valid\n if (newLevel < 0 || newLevel >= levels.length) {\n // invalid level id given, trigger error\n const error = new Error('invalid level idx');\n const fatal = newLevel < 0;\n this.hls.trigger(Events.ERROR, {\n type: ErrorTypes.OTHER_ERROR,\n details: ErrorDetails.LEVEL_SWITCH_ERROR,\n level: newLevel,\n fatal,\n error,\n reason: error.message\n });\n if (fatal) {\n return;\n }\n newLevel = Math.min(newLevel, levels.length - 1);\n }\n const lastLevelIndex = this.currentLevelIndex;\n const lastLevel = this.currentLevel;\n const lastPathwayId = lastLevel ? lastLevel.attrs['PATHWAY-ID'] : undefined;\n const level = levels[newLevel];\n const pathwayId = level.attrs['PATHWAY-ID'];\n this.currentLevelIndex = newLevel;\n this.currentLevel = level;\n if (lastLevelIndex === newLevel && level.details && lastLevel && lastPathwayId === pathwayId) {\n return;\n }\n this.log(`Switching to level ${newLevel} (${level.height ? level.height + 'p ' : ''}${level.videoRange ? level.videoRange + ' ' : ''}${level.codecSet ? level.codecSet + ' ' : ''}@${level.bitrate})${pathwayId ? ' with Pathway ' + pathwayId : ''} from level ${lastLevelIndex}${lastPathwayId ? ' with Pathway ' + lastPathwayId : ''}`);\n const levelSwitchingData = {\n level: newLevel,\n attrs: level.attrs,\n details: level.details,\n bitrate: level.bitrate,\n averageBitrate: level.averageBitrate,\n maxBitrate: level.maxBitrate,\n realBitrate: level.realBitrate,\n width: level.width,\n height: level.height,\n codecSet: level.codecSet,\n audioCodec: level.audioCodec,\n videoCodec: level.videoCodec,\n audioGroups: level.audioGroups,\n subtitleGroups: level.subtitleGroups,\n loaded: level.loaded,\n loadError: level.loadError,\n fragmentError: level.fragmentError,\n name: level.name,\n id: level.id,\n uri: level.uri,\n url: level.url,\n urlId: 0,\n audioGroupIds: level.audioGroupIds,\n textGroupIds: level.textGroupIds\n };\n this.hls.trigger(Events.LEVEL_SWITCHING, levelSwitchingData);\n // check if we need to load playlist for this level\n const levelDetails = level.details;\n if (!levelDetails || levelDetails.live) {\n // level not retrieved yet, or live playlist we need to (re)load it\n const hlsUrlParameters = this.switchParams(level.uri, lastLevel == null ? void 0 : lastLevel.details, levelDetails);\n this.loadPlaylist(hlsUrlParameters);\n }\n }\n get manualLevel() {\n return this.manualLevelIndex;\n }\n set manualLevel(newLevel) {\n this.manualLevelIndex = newLevel;\n if (this._startLevel === undefined) {\n this._startLevel = newLevel;\n }\n if (newLevel !== -1) {\n this.level = newLevel;\n }\n }\n get firstLevel() {\n return this._firstLevel;\n }\n set firstLevel(newLevel) {\n this._firstLevel = newLevel;\n }\n get startLevel() {\n // Setting hls.startLevel (this._startLevel) overrides config.startLevel\n if (this._startLevel === undefined) {\n const configStartLevel = this.hls.config.startLevel;\n if (configStartLevel !== undefined) {\n return configStartLevel;\n }\n return this.hls.firstAutoLevel;\n }\n return this._startLevel;\n }\n set startLevel(newLevel) {\n this._startLevel = newLevel;\n }\n onError(event, data) {\n if (data.fatal || !data.context) {\n return;\n }\n if (data.context.type === PlaylistContextType.LEVEL && data.context.level === this.level) {\n this.checkRetry(data);\n }\n }\n\n // reset errors on the successful load of a fragment\n onFragBuffered(event, {\n frag\n }) {\n if (frag !== undefined && frag.type === PlaylistLevelType.MAIN) {\n const el = frag.elementaryStreams;\n if (!Object.keys(el).some(type => !!el[type])) {\n return;\n }\n const level = this._levels[frag.level];\n if (level != null && level.loadError) {\n this.log(`Resetting level error count of ${level.loadError} on frag buffered`);\n level.loadError = 0;\n }\n }\n }\n onLevelLoaded(event, data) {\n var _data$deliveryDirecti2;\n const {\n level,\n details\n } = data;\n const curLevel = this._levels[level];\n if (!curLevel) {\n var _data$deliveryDirecti;\n this.warn(`Invalid level index ${level}`);\n if ((_data$deliveryDirecti = data.deliveryDirectives) != null && _data$deliveryDirecti.skip) {\n details.deltaUpdateFailed = true;\n }\n return;\n }\n\n // only process level loaded events matching with expected level\n if (level === this.currentLevelIndex) {\n // reset level load error counter on successful level loaded only if there is no issues with fragments\n if (curLevel.fragmentError === 0) {\n curLevel.loadError = 0;\n }\n this.playlistLoaded(level, data, curLevel.details);\n } else if ((_data$deliveryDirecti2 = data.deliveryDirectives) != null && _data$deliveryDirecti2.skip) {\n // received a delta playlist update that cannot be merged\n details.deltaUpdateFailed = true;\n }\n }\n loadPlaylist(hlsUrlParameters) {\n super.loadPlaylist();\n const currentLevelIndex = this.currentLevelIndex;\n const currentLevel = this.currentLevel;\n if (currentLevel && this.shouldLoadPlaylist(currentLevel)) {\n let url = currentLevel.uri;\n if (hlsUrlParameters) {\n try {\n url = hlsUrlParameters.addDirectives(url);\n } catch (error) {\n this.warn(`Could not construct new URL with HLS Delivery Directives: ${error}`);\n }\n }\n const pathwayId = currentLevel.attrs['PATHWAY-ID'];\n this.log(`Loading level index ${currentLevelIndex}${(hlsUrlParameters == null ? void 0 : hlsUrlParameters.msn) !== undefined ? ' at sn ' + hlsUrlParameters.msn + ' part ' + hlsUrlParameters.part : ''} with${pathwayId ? ' Pathway ' + pathwayId : ''} ${url}`);\n\n // console.log('Current audio track group ID:', this.hls.audioTracks[this.hls.audioTrack].groupId);\n // console.log('New video quality level audio group id:', levelObject.attrs.AUDIO, level);\n this.clearTimer();\n this.hls.trigger(Events.LEVEL_LOADING, {\n url,\n level: currentLevelIndex,\n pathwayId: currentLevel.attrs['PATHWAY-ID'],\n id: 0,\n // Deprecated Level urlId\n deliveryDirectives: hlsUrlParameters || null\n });\n }\n }\n get nextLoadLevel() {\n if (this.manualLevelIndex !== -1) {\n return this.manualLevelIndex;\n } else {\n return this.hls.nextAutoLevel;\n }\n }\n set nextLoadLevel(nextLevel) {\n this.level = nextLevel;\n if (this.manualLevelIndex === -1) {\n this.hls.nextAutoLevel = nextLevel;\n }\n }\n removeLevel(levelIndex) {\n var _this$currentLevel;\n const levels = this._levels.filter((level, index) => {\n if (index !== levelIndex) {\n return true;\n }\n if (this.steering) {\n this.steering.removeLevel(level);\n }\n if (level === this.currentLevel) {\n this.currentLevel = null;\n this.currentLevelIndex = -1;\n if (level.details) {\n level.details.fragments.forEach(f => f.level = -1);\n }\n }\n return false;\n });\n reassignFragmentLevelIndexes(levels);\n this._levels = levels;\n if (this.currentLevelIndex > -1 && (_this$currentLevel = this.currentLevel) != null && _this$currentLevel.details) {\n this.currentLevelIndex = this.currentLevel.details.fragments[0].level;\n }\n this.hls.trigger(Events.LEVELS_UPDATED, {\n levels\n });\n }\n onLevelsUpdated(event, {\n levels\n }) {\n this._levels = levels;\n }\n checkMaxAutoUpdated() {\n const {\n autoLevelCapping,\n maxAutoLevel,\n maxHdcpLevel\n } = this.hls;\n if (this._maxAutoLevel !== maxAutoLevel) {\n this._maxAutoLevel = maxAutoLevel;\n this.hls.trigger(Events.MAX_AUTO_LEVEL_UPDATED, {\n autoLevelCapping,\n levels: this.levels,\n maxAutoLevel,\n minAutoLevel: this.hls.minAutoLevel,\n maxHdcpLevel\n });\n }\n }\n}\nfunction assignTrackIdsByGroup(tracks) {\n const groups = {};\n tracks.forEach(track => {\n const groupId = track.groupId || '';\n track.id = groups[groupId] = groups[groupId] || 0;\n groups[groupId]++;\n });\n}\n\nclass KeyLoader {\n constructor(config) {\n this.config = void 0;\n this.keyUriToKeyInfo = {};\n this.emeController = null;\n this.config = config;\n }\n abort(type) {\n for (const uri in this.keyUriToKeyInfo) {\n const loader = this.keyUriToKeyInfo[uri].loader;\n if (loader) {\n var _loader$context;\n if (type && type !== ((_loader$context = loader.context) == null ? void 0 : _loader$context.frag.type)) {\n return;\n }\n loader.abort();\n }\n }\n }\n detach() {\n for (const uri in this.keyUriToKeyInfo) {\n const keyInfo = this.keyUriToKeyInfo[uri];\n // Remove cached EME keys on detach\n if (keyInfo.mediaKeySessionContext || keyInfo.decryptdata.isCommonEncryption) {\n delete this.keyUriToKeyInfo[uri];\n }\n }\n }\n destroy() {\n this.detach();\n for (const uri in this.keyUriToKeyInfo) {\n const loader = this.keyUriToKeyInfo[uri].loader;\n if (loader) {\n loader.destroy();\n }\n }\n this.keyUriToKeyInfo = {};\n }\n createKeyLoadError(frag, details = ErrorDetails.KEY_LOAD_ERROR, error, networkDetails, response) {\n return new LoadError({\n type: ErrorTypes.NETWORK_ERROR,\n details,\n fatal: false,\n frag,\n response,\n error,\n networkDetails\n });\n }\n loadClear(loadingFrag, encryptedFragments) {\n if (this.emeController && this.config.emeEnabled) {\n // access key-system with nearest key on start (loaidng frag is unencrypted)\n const {\n sn,\n cc\n } = loadingFrag;\n for (let i = 0; i < encryptedFragments.length; i++) {\n const frag = encryptedFragments[i];\n if (cc <= frag.cc && (sn === 'initSegment' || frag.sn === 'initSegment' || sn < frag.sn)) {\n this.emeController.selectKeySystemFormat(frag).then(keySystemFormat => {\n frag.setKeyFormat(keySystemFormat);\n });\n break;\n }\n }\n }\n }\n load(frag) {\n if (!frag.decryptdata && frag.encrypted && this.emeController) {\n // Multiple keys, but none selected, resolve in eme-controller\n return this.emeController.selectKeySystemFormat(frag).then(keySystemFormat => {\n return this.loadInternal(frag, keySystemFormat);\n });\n }\n return this.loadInternal(frag);\n }\n loadInternal(frag, keySystemFormat) {\n var _keyInfo, _keyInfo2;\n if (keySystemFormat) {\n frag.setKeyFormat(keySystemFormat);\n }\n const decryptdata = frag.decryptdata;\n if (!decryptdata) {\n const error = new Error(keySystemFormat ? `Expected frag.decryptdata to be defined after setting format ${keySystemFormat}` : 'Missing decryption data on fragment in onKeyLoading');\n return Promise.reject(this.createKeyLoadError(frag, ErrorDetails.KEY_LOAD_ERROR, error));\n }\n const uri = decryptdata.uri;\n if (!uri) {\n return Promise.reject(this.createKeyLoadError(frag, ErrorDetails.KEY_LOAD_ERROR, new Error(`Invalid key URI: \"${uri}\"`)));\n }\n let keyInfo = this.keyUriToKeyInfo[uri];\n if ((_keyInfo = keyInfo) != null && _keyInfo.decryptdata.key) {\n decryptdata.key = keyInfo.decryptdata.key;\n return Promise.resolve({\n frag,\n keyInfo\n });\n }\n // Return key load promise as long as it does not have a mediakey session with an unusable key status\n if ((_keyInfo2 = keyInfo) != null && _keyInfo2.keyLoadPromise) {\n var _keyInfo$mediaKeySess;\n switch ((_keyInfo$mediaKeySess = keyInfo.mediaKeySessionContext) == null ? void 0 : _keyInfo$mediaKeySess.keyStatus) {\n case undefined:\n case 'status-pending':\n case 'usable':\n case 'usable-in-future':\n return keyInfo.keyLoadPromise.then(keyLoadedData => {\n // Return the correct fragment with updated decryptdata key and loaded keyInfo\n decryptdata.key = keyLoadedData.keyInfo.decryptdata.key;\n return {\n frag,\n keyInfo\n };\n });\n }\n // If we have a key session and status and it is not pending or usable, continue\n // This will go back to the eme-controller for expired keys to get a new keyLoadPromise\n }\n\n // Load the key or return the loading promise\n keyInfo = this.keyUriToKeyInfo[uri] = {\n decryptdata,\n keyLoadPromise: null,\n loader: null,\n mediaKeySessionContext: null\n };\n switch (decryptdata.method) {\n case 'ISO-23001-7':\n case 'SAMPLE-AES':\n case 'SAMPLE-AES-CENC':\n case 'SAMPLE-AES-CTR':\n if (decryptdata.keyFormat === 'identity') {\n // loadKeyHTTP handles http(s) and data URLs\n return this.loadKeyHTTP(keyInfo, frag);\n }\n return this.loadKeyEME(keyInfo, frag);\n case 'AES-128':\n return this.loadKeyHTTP(keyInfo, frag);\n default:\n return Promise.reject(this.createKeyLoadError(frag, ErrorDetails.KEY_LOAD_ERROR, new Error(`Key supplied with unsupported METHOD: \"${decryptdata.method}\"`)));\n }\n }\n loadKeyEME(keyInfo, frag) {\n const keyLoadedData = {\n frag,\n keyInfo\n };\n if (this.emeController && this.config.emeEnabled) {\n const keySessionContextPromise = this.emeController.loadKey(keyLoadedData);\n if (keySessionContextPromise) {\n return (keyInfo.keyLoadPromise = keySessionContextPromise.then(keySessionContext => {\n keyInfo.mediaKeySessionContext = keySessionContext;\n return keyLoadedData;\n })).catch(error => {\n // Remove promise for license renewal or retry\n keyInfo.keyLoadPromise = null;\n throw error;\n });\n }\n }\n return Promise.resolve(keyLoadedData);\n }\n loadKeyHTTP(keyInfo, frag) {\n const config = this.config;\n const Loader = config.loader;\n const keyLoader = new Loader(config);\n frag.keyLoader = keyInfo.loader = keyLoader;\n return keyInfo.keyLoadPromise = new Promise((resolve, reject) => {\n const loaderContext = {\n keyInfo,\n frag,\n responseType: 'arraybuffer',\n url: keyInfo.decryptdata.uri\n };\n\n // maxRetry is 0 so that instead of retrying the same key on the same variant multiple times,\n // key-loader will trigger an error and rely on stream-controller to handle retry logic.\n // this will also align retry logic with fragment-loader\n const loadPolicy = config.keyLoadPolicy.default;\n const loaderConfig = {\n loadPolicy,\n timeout: loadPolicy.maxLoadTimeMs,\n maxRetry: 0,\n retryDelay: 0,\n maxRetryDelay: 0\n };\n const loaderCallbacks = {\n onSuccess: (response, stats, context, networkDetails) => {\n const {\n frag,\n keyInfo,\n url: uri\n } = context;\n if (!frag.decryptdata || keyInfo !== this.keyUriToKeyInfo[uri]) {\n return reject(this.createKeyLoadError(frag, ErrorDetails.KEY_LOAD_ERROR, new Error('after key load, decryptdata unset or changed'), networkDetails));\n }\n keyInfo.decryptdata.key = frag.decryptdata.key = new Uint8Array(response.data);\n\n // detach fragment key loader on load success\n frag.keyLoader = null;\n keyInfo.loader = null;\n resolve({\n frag,\n keyInfo\n });\n },\n onError: (response, context, networkDetails, stats) => {\n this.resetLoader(context);\n reject(this.createKeyLoadError(frag, ErrorDetails.KEY_LOAD_ERROR, new Error(`HTTP Error ${response.code} loading key ${response.text}`), networkDetails, _objectSpread2({\n url: loaderContext.url,\n data: undefined\n }, response)));\n },\n onTimeout: (stats, context, networkDetails) => {\n this.resetLoader(context);\n reject(this.createKeyLoadError(frag, ErrorDetails.KEY_LOAD_TIMEOUT, new Error('key loading timed out'), networkDetails));\n },\n onAbort: (stats, context, networkDetails) => {\n this.resetLoader(context);\n reject(this.createKeyLoadError(frag, ErrorDetails.INTERNAL_ABORTED, new Error('key loading aborted'), networkDetails));\n }\n };\n keyLoader.load(loaderContext, loaderConfig, loaderCallbacks);\n });\n }\n resetLoader(context) {\n const {\n frag,\n keyInfo,\n url: uri\n } = context;\n const loader = keyInfo.loader;\n if (frag.keyLoader === loader) {\n frag.keyLoader = null;\n keyInfo.loader = null;\n }\n delete this.keyUriToKeyInfo[uri];\n if (loader) {\n loader.destroy();\n }\n }\n}\n\nfunction getSourceBuffer() {\n return self.SourceBuffer || self.WebKitSourceBuffer;\n}\nfunction isMSESupported() {\n const mediaSource = getMediaSource();\n if (!mediaSource) {\n return false;\n }\n\n // if SourceBuffer is exposed ensure its API is valid\n // Older browsers do not expose SourceBuffer globally so checking SourceBuffer.prototype is impossible\n const sourceBuffer = getSourceBuffer();\n return !sourceBuffer || sourceBuffer.prototype && typeof sourceBuffer.prototype.appendBuffer === 'function' && typeof sourceBuffer.prototype.remove === 'function';\n}\nfunction isSupported() {\n if (!isMSESupported()) {\n return false;\n }\n const mediaSource = getMediaSource();\n return typeof (mediaSource == null ? void 0 : mediaSource.isTypeSupported) === 'function' && (['avc1.42E01E,mp4a.40.2', 'av01.0.01M.08', 'vp09.00.50.08'].some(codecsForVideoContainer => mediaSource.isTypeSupported(mimeTypeForCodec(codecsForVideoContainer, 'video'))) || ['mp4a.40.2', 'fLaC'].some(codecForAudioContainer => mediaSource.isTypeSupported(mimeTypeForCodec(codecForAudioContainer, 'audio'))));\n}\nfunction changeTypeSupported() {\n var _sourceBuffer$prototy;\n const sourceBuffer = getSourceBuffer();\n return typeof (sourceBuffer == null ? void 0 : (_sourceBuffer$prototy = sourceBuffer.prototype) == null ? void 0 : _sourceBuffer$prototy.changeType) === 'function';\n}\n\nconst STALL_MINIMUM_DURATION_MS = 250;\nconst MAX_START_GAP_JUMP = 2.0;\nconst SKIP_BUFFER_HOLE_STEP_SECONDS = 0.1;\nconst SKIP_BUFFER_RANGE_START = 0.05;\nclass GapController {\n constructor(config, media, fragmentTracker, hls) {\n this.config = void 0;\n this.media = null;\n this.fragmentTracker = void 0;\n this.hls = void 0;\n this.nudgeRetry = 0;\n this.stallReported = false;\n this.stalled = null;\n this.moved = false;\n this.seeking = false;\n this.config = config;\n this.media = media;\n this.fragmentTracker = fragmentTracker;\n this.hls = hls;\n }\n destroy() {\n this.media = null;\n // @ts-ignore\n this.hls = this.fragmentTracker = null;\n }\n\n /**\n * Checks if the playhead is stuck within a gap, and if so, attempts to free it.\n * A gap is an unbuffered range between two buffered ranges (or the start and the first buffered range).\n *\n * @param lastCurrentTime - Previously read playhead position\n */\n poll(lastCurrentTime, activeFrag) {\n const {\n config,\n media,\n stalled\n } = this;\n if (media === null) {\n return;\n }\n const {\n currentTime,\n seeking\n } = media;\n const seeked = this.seeking && !seeking;\n const beginSeek = !this.seeking && seeking;\n this.seeking = seeking;\n\n // The playhead is moving, no-op\n if (currentTime !== lastCurrentTime) {\n this.moved = true;\n if (!seeking) {\n this.nudgeRetry = 0;\n }\n if (stalled !== null) {\n // The playhead is now moving, but was previously stalled\n if (this.stallReported) {\n const _stalledDuration = self.performance.now() - stalled;\n logger.warn(`playback not stuck anymore @${currentTime}, after ${Math.round(_stalledDuration)}ms`);\n this.stallReported = false;\n }\n this.stalled = null;\n }\n return;\n }\n\n // Clear stalled state when beginning or finishing seeking so that we don't report stalls coming out of a seek\n if (beginSeek || seeked) {\n this.stalled = null;\n return;\n }\n\n // The playhead should not be moving\n if (media.paused && !seeking || media.ended || media.playbackRate === 0 || !BufferHelper.getBuffered(media).length) {\n this.nudgeRetry = 0;\n return;\n }\n const bufferInfo = BufferHelper.bufferInfo(media, currentTime, 0);\n const nextStart = bufferInfo.nextStart || 0;\n if (seeking) {\n // Waiting for seeking in a buffered range to complete\n const hasEnoughBuffer = bufferInfo.len > MAX_START_GAP_JUMP;\n // Next buffered range is too far ahead to jump to while still seeking\n const noBufferGap = !nextStart || activeFrag && activeFrag.start <= currentTime || nextStart - currentTime > MAX_START_GAP_JUMP && !this.fragmentTracker.getPartialFragment(currentTime);\n if (hasEnoughBuffer || noBufferGap) {\n return;\n }\n // Reset moved state when seeking to a point in or before a gap\n this.moved = false;\n }\n\n // Skip start gaps if we haven't played, but the last poll detected the start of a stall\n // The addition poll gives the browser a chance to jump the gap for us\n if (!this.moved && this.stalled !== null) {\n var _level$details;\n // There is no playable buffer (seeked, waiting for buffer)\n const isBuffered = bufferInfo.len > 0;\n if (!isBuffered && !nextStart) {\n return;\n }\n // Jump start gaps within jump threshold\n const startJump = Math.max(nextStart, bufferInfo.start || 0) - currentTime;\n\n // When joining a live stream with audio tracks, account for live playlist window sliding by allowing\n // a larger jump over start gaps caused by the audio-stream-controller buffering a start fragment\n // that begins over 1 target duration after the video start position.\n const level = this.hls.levels ? this.hls.levels[this.hls.currentLevel] : null;\n const isLive = level == null ? void 0 : (_level$details = level.details) == null ? void 0 : _level$details.live;\n const maxStartGapJump = isLive ? level.details.targetduration * 2 : MAX_START_GAP_JUMP;\n const partialOrGap = this.fragmentTracker.getPartialFragment(currentTime);\n if (startJump > 0 && (startJump <= maxStartGapJump || partialOrGap)) {\n if (!media.paused) {\n this._trySkipBufferHole(partialOrGap);\n }\n return;\n }\n }\n\n // Start tracking stall time\n const tnow = self.performance.now();\n if (stalled === null) {\n this.stalled = tnow;\n return;\n }\n const stalledDuration = tnow - stalled;\n if (!seeking && stalledDuration >= STALL_MINIMUM_DURATION_MS) {\n // Report stalling after trying to fix\n this._reportStall(bufferInfo);\n if (!this.media) {\n return;\n }\n }\n const bufferedWithHoles = BufferHelper.bufferInfo(media, currentTime, config.maxBufferHole);\n this._tryFixBufferStall(bufferedWithHoles, stalledDuration);\n }\n\n /**\n * Detects and attempts to fix known buffer stalling issues.\n * @param bufferInfo - The properties of the current buffer.\n * @param stalledDurationMs - The amount of time Hls.js has been stalling for.\n * @private\n */\n _tryFixBufferStall(bufferInfo, stalledDurationMs) {\n const {\n config,\n fragmentTracker,\n media\n } = this;\n if (media === null) {\n return;\n }\n const currentTime = media.currentTime;\n const partial = fragmentTracker.getPartialFragment(currentTime);\n if (partial) {\n // Try to skip over the buffer hole caused by a partial fragment\n // This method isn't limited by the size of the gap between buffered ranges\n const targetTime = this._trySkipBufferHole(partial);\n // we return here in this case, meaning\n // the branch below only executes when we haven't seeked to a new position\n if (targetTime || !this.media) {\n return;\n }\n }\n\n // if we haven't had to skip over a buffer hole of a partial fragment\n // we may just have to \"nudge\" the playlist as the browser decoding/rendering engine\n // needs to cross some sort of threshold covering all source-buffers content\n // to start playing properly.\n if ((bufferInfo.len > config.maxBufferHole || bufferInfo.nextStart && bufferInfo.nextStart - currentTime < config.maxBufferHole) && stalledDurationMs > config.highBufferWatchdogPeriod * 1000) {\n logger.warn('Trying to nudge playhead over buffer-hole');\n // Try to nudge currentTime over a buffer hole if we've been stalling for the configured amount of seconds\n // We only try to jump the hole if it's under the configured size\n // Reset stalled so to rearm watchdog timer\n this.stalled = null;\n this._tryNudgeBuffer();\n }\n }\n\n /**\n * Triggers a BUFFER_STALLED_ERROR event, but only once per stall period.\n * @param bufferLen - The playhead distance from the end of the current buffer segment.\n * @private\n */\n _reportStall(bufferInfo) {\n const {\n hls,\n media,\n stallReported\n } = this;\n if (!stallReported && media) {\n // Report stalled error once\n this.stallReported = true;\n const error = new Error(`Playback stalling at @${media.currentTime} due to low buffer (${JSON.stringify(bufferInfo)})`);\n logger.warn(error.message);\n hls.trigger(Events.ERROR, {\n type: ErrorTypes.MEDIA_ERROR,\n details: ErrorDetails.BUFFER_STALLED_ERROR,\n fatal: false,\n error,\n buffer: bufferInfo.len\n });\n }\n }\n\n /**\n * Attempts to fix buffer stalls by jumping over known gaps caused by partial fragments\n * @param partial - The partial fragment found at the current time (where playback is stalling).\n * @private\n */\n _trySkipBufferHole(partial) {\n const {\n config,\n hls,\n media\n } = this;\n if (media === null) {\n return 0;\n }\n\n // Check if currentTime is between unbuffered regions of partial fragments\n const currentTime = media.currentTime;\n const bufferInfo = BufferHelper.bufferInfo(media, currentTime, 0);\n const startTime = currentTime < bufferInfo.start ? bufferInfo.start : bufferInfo.nextStart;\n if (startTime) {\n const bufferStarved = bufferInfo.len <= config.maxBufferHole;\n const waiting = bufferInfo.len > 0 && bufferInfo.len < 1 && media.readyState < 3;\n const gapLength = startTime - currentTime;\n if (gapLength > 0 && (bufferStarved || waiting)) {\n // Only allow large gaps to be skipped if it is a start gap, or all fragments in skip range are partial\n if (gapLength > config.maxBufferHole) {\n const {\n fragmentTracker\n } = this;\n let startGap = false;\n if (currentTime === 0) {\n const startFrag = fragmentTracker.getAppendedFrag(0, PlaylistLevelType.MAIN);\n if (startFrag && startTime < startFrag.end) {\n startGap = true;\n }\n }\n if (!startGap) {\n const startProvisioned = partial || fragmentTracker.getAppendedFrag(currentTime, PlaylistLevelType.MAIN);\n if (startProvisioned) {\n let moreToLoad = false;\n let pos = startProvisioned.end;\n while (pos < startTime) {\n const provisioned = fragmentTracker.getPartialFragment(pos);\n if (provisioned) {\n pos += provisioned.duration;\n } else {\n moreToLoad = true;\n break;\n }\n }\n if (moreToLoad) {\n return 0;\n }\n }\n }\n }\n const targetTime = Math.max(startTime + SKIP_BUFFER_RANGE_START, currentTime + SKIP_BUFFER_HOLE_STEP_SECONDS);\n logger.warn(`skipping hole, adjusting currentTime from ${currentTime} to ${targetTime}`);\n this.moved = true;\n this.stalled = null;\n media.currentTime = targetTime;\n if (partial && !partial.gap) {\n const error = new Error(`fragment loaded with buffer holes, seeking from ${currentTime} to ${targetTime}`);\n hls.trigger(Events.ERROR, {\n type: ErrorTypes.MEDIA_ERROR,\n details: ErrorDetails.BUFFER_SEEK_OVER_HOLE,\n fatal: false,\n error,\n reason: error.message,\n frag: partial\n });\n }\n return targetTime;\n }\n }\n return 0;\n }\n\n /**\n * Attempts to fix buffer stalls by advancing the mediaElement's current time by a small amount.\n * @private\n */\n _tryNudgeBuffer() {\n const {\n config,\n hls,\n media,\n nudgeRetry\n } = this;\n if (media === null) {\n return;\n }\n const currentTime = media.currentTime;\n this.nudgeRetry++;\n if (nudgeRetry < config.nudgeMaxRetry) {\n const targetTime = currentTime + (nudgeRetry + 1) * config.nudgeOffset;\n // playback stalled in buffered area ... let's nudge currentTime to try to overcome this\n const error = new Error(`Nudging 'currentTime' from ${currentTime} to ${targetTime}`);\n logger.warn(error.message);\n media.currentTime = targetTime;\n hls.trigger(Events.ERROR, {\n type: ErrorTypes.MEDIA_ERROR,\n details: ErrorDetails.BUFFER_NUDGE_ON_STALL,\n error,\n fatal: false\n });\n } else {\n const error = new Error(`Playhead still not moving while enough data buffered @${currentTime} after ${config.nudgeMaxRetry} nudges`);\n logger.error(error.message);\n hls.trigger(Events.ERROR, {\n type: ErrorTypes.MEDIA_ERROR,\n details: ErrorDetails.BUFFER_STALLED_ERROR,\n error,\n fatal: true\n });\n }\n }\n}\n\nconst TICK_INTERVAL = 100; // how often to tick in ms\n\nclass StreamController extends BaseStreamController {\n constructor(hls, fragmentTracker, keyLoader) {\n super(hls, fragmentTracker, keyLoader, '[stream-controller]', PlaylistLevelType.MAIN);\n this.audioCodecSwap = false;\n this.gapController = null;\n this.level = -1;\n this._forceStartLoad = false;\n this.altAudio = false;\n this.audioOnly = false;\n this.fragPlaying = null;\n this.onvplaying = null;\n this.onvseeked = null;\n this.fragLastKbps = 0;\n this.couldBacktrack = false;\n this.backtrackFragment = null;\n this.audioCodecSwitch = false;\n this.videoBuffer = null;\n this._registerListeners();\n }\n _registerListeners() {\n const {\n hls\n } = this;\n hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.on(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n hls.on(Events.LEVEL_LOADING, this.onLevelLoading, this);\n hls.on(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n hls.on(Events.FRAG_LOAD_EMERGENCY_ABORTED, this.onFragLoadEmergencyAborted, this);\n hls.on(Events.ERROR, this.onError, this);\n hls.on(Events.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this);\n hls.on(Events.AUDIO_TRACK_SWITCHED, this.onAudioTrackSwitched, this);\n hls.on(Events.BUFFER_CREATED, this.onBufferCreated, this);\n hls.on(Events.BUFFER_FLUSHED, this.onBufferFlushed, this);\n hls.on(Events.LEVELS_UPDATED, this.onLevelsUpdated, this);\n hls.on(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n }\n _unregisterListeners() {\n const {\n hls\n } = this;\n hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n hls.off(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n hls.off(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n hls.off(Events.FRAG_LOAD_EMERGENCY_ABORTED, this.onFragLoadEmergencyAborted, this);\n hls.off(Events.ERROR, this.onError, this);\n hls.off(Events.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this);\n hls.off(Events.AUDIO_TRACK_SWITCHED, this.onAudioTrackSwitched, this);\n hls.off(Events.BUFFER_CREATED, this.onBufferCreated, this);\n hls.off(Events.BUFFER_FLUSHED, this.onBufferFlushed, this);\n hls.off(Events.LEVELS_UPDATED, this.onLevelsUpdated, this);\n hls.off(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n }\n onHandlerDestroying() {\n this._unregisterListeners();\n super.onHandlerDestroying();\n }\n startLoad(startPosition) {\n if (this.levels) {\n const {\n lastCurrentTime,\n hls\n } = this;\n this.stopLoad();\n this.setInterval(TICK_INTERVAL);\n this.level = -1;\n if (!this.startFragRequested) {\n // determine load level\n let startLevel = hls.startLevel;\n if (startLevel === -1) {\n if (hls.config.testBandwidth && this.levels.length > 1) {\n // -1 : guess start Level by doing a bitrate test by loading first fragment of lowest quality level\n startLevel = 0;\n this.bitrateTest = true;\n } else {\n startLevel = hls.firstAutoLevel;\n }\n }\n // set new level to playlist loader : this will trigger start level load\n // hls.nextLoadLevel remains until it is set to a new value or until a new frag is successfully loaded\n hls.nextLoadLevel = startLevel;\n this.level = hls.loadLevel;\n this.loadedmetadata = false;\n }\n // if startPosition undefined but lastCurrentTime set, set startPosition to last currentTime\n if (lastCurrentTime > 0 && startPosition === -1) {\n this.log(`Override startPosition with lastCurrentTime @${lastCurrentTime.toFixed(3)}`);\n startPosition = lastCurrentTime;\n }\n this.state = State.IDLE;\n this.nextLoadPosition = this.startPosition = this.lastCurrentTime = startPosition;\n this.tick();\n } else {\n this._forceStartLoad = true;\n this.state = State.STOPPED;\n }\n }\n stopLoad() {\n this._forceStartLoad = false;\n super.stopLoad();\n }\n doTick() {\n switch (this.state) {\n case State.WAITING_LEVEL:\n {\n const {\n levels,\n level\n } = this;\n const currentLevel = levels == null ? void 0 : levels[level];\n const details = currentLevel == null ? void 0 : currentLevel.details;\n if (details && (!details.live || this.levelLastLoaded === currentLevel)) {\n if (this.waitForCdnTuneIn(details)) {\n break;\n }\n this.state = State.IDLE;\n break;\n } else if (this.hls.nextLoadLevel !== this.level) {\n this.state = State.IDLE;\n break;\n }\n break;\n }\n case State.FRAG_LOADING_WAITING_RETRY:\n {\n var _this$media;\n const now = self.performance.now();\n const retryDate = this.retryDate;\n // if current time is gt than retryDate, or if media seeking let's switch to IDLE state to retry loading\n if (!retryDate || now >= retryDate || (_this$media = this.media) != null && _this$media.seeking) {\n const {\n levels,\n level\n } = this;\n const currentLevel = levels == null ? void 0 : levels[level];\n this.resetStartWhenNotLoaded(currentLevel || null);\n this.state = State.IDLE;\n }\n }\n break;\n }\n if (this.state === State.IDLE) {\n this.doTickIdle();\n }\n this.onTickEnd();\n }\n onTickEnd() {\n super.onTickEnd();\n this.checkBuffer();\n this.checkFragmentChanged();\n }\n doTickIdle() {\n const {\n hls,\n levelLastLoaded,\n levels,\n media\n } = this;\n\n // if start level not parsed yet OR\n // if video not attached AND start fragment already requested OR start frag prefetch not enabled\n // exit loop, as we either need more info (level not parsed) or we need media to be attached to load new fragment\n if (levelLastLoaded === null || !media && (this.startFragRequested || !hls.config.startFragPrefetch)) {\n return;\n }\n\n // If the \"main\" level is audio-only but we are loading an alternate track in the same group, do not load anything\n if (this.altAudio && this.audioOnly) {\n return;\n }\n const level = this.buffering ? hls.nextLoadLevel : hls.loadLevel;\n if (!(levels != null && levels[level])) {\n return;\n }\n const levelInfo = levels[level];\n\n // if buffer length is less than maxBufLen try to load a new fragment\n\n const bufferInfo = this.getMainFwdBufferInfo();\n if (bufferInfo === null) {\n return;\n }\n const lastDetails = this.getLevelDetails();\n if (lastDetails && this._streamEnded(bufferInfo, lastDetails)) {\n const data = {};\n if (this.altAudio) {\n data.type = 'video';\n }\n this.hls.trigger(Events.BUFFER_EOS, data);\n this.state = State.ENDED;\n return;\n }\n if (!this.buffering) {\n return;\n }\n\n // set next load level : this will trigger a playlist load if needed\n if (hls.loadLevel !== level && hls.manualLevel === -1) {\n this.log(`Adapting to level ${level} from level ${this.level}`);\n }\n this.level = hls.nextLoadLevel = level;\n const levelDetails = levelInfo.details;\n // if level info not retrieved yet, switch state and wait for level retrieval\n // if live playlist, ensure that new playlist has been refreshed to avoid loading/try to load\n // a useless and outdated fragment (that might even introduce load error if it is already out of the live playlist)\n if (!levelDetails || this.state === State.WAITING_LEVEL || levelDetails.live && this.levelLastLoaded !== levelInfo) {\n this.level = level;\n this.state = State.WAITING_LEVEL;\n return;\n }\n const bufferLen = bufferInfo.len;\n\n // compute max Buffer Length that we could get from this load level, based on level bitrate. don't buffer more than 60 MB and more than 30s\n const maxBufLen = this.getMaxBufferLength(levelInfo.maxBitrate);\n\n // Stay idle if we are still with buffer margins\n if (bufferLen >= maxBufLen) {\n return;\n }\n if (this.backtrackFragment && this.backtrackFragment.start > bufferInfo.end) {\n this.backtrackFragment = null;\n }\n const targetBufferTime = this.backtrackFragment ? this.backtrackFragment.start : bufferInfo.end;\n let frag = this.getNextFragment(targetBufferTime, levelDetails);\n // Avoid backtracking by loading an earlier segment in streams with segments that do not start with a key frame (flagged by `couldBacktrack`)\n if (this.couldBacktrack && !this.fragPrevious && frag && frag.sn !== 'initSegment' && this.fragmentTracker.getState(frag) !== FragmentState.OK) {\n var _this$backtrackFragme;\n const backtrackSn = ((_this$backtrackFragme = this.backtrackFragment) != null ? _this$backtrackFragme : frag).sn;\n const fragIdx = backtrackSn - levelDetails.startSN;\n const backtrackFrag = levelDetails.fragments[fragIdx - 1];\n if (backtrackFrag && frag.cc === backtrackFrag.cc) {\n frag = backtrackFrag;\n this.fragmentTracker.removeFragment(backtrackFrag);\n }\n } else if (this.backtrackFragment && bufferInfo.len) {\n this.backtrackFragment = null;\n }\n // Avoid loop loading by using nextLoadPosition set for backtracking and skipping consecutive GAP tags\n if (frag && this.isLoopLoading(frag, targetBufferTime)) {\n const gapStart = frag.gap;\n if (!gapStart) {\n // Cleanup the fragment tracker before trying to find the next unbuffered fragment\n const type = this.audioOnly && !this.altAudio ? ElementaryStreamTypes.AUDIO : ElementaryStreamTypes.VIDEO;\n const mediaBuffer = (type === ElementaryStreamTypes.VIDEO ? this.videoBuffer : this.mediaBuffer) || this.media;\n if (mediaBuffer) {\n this.afterBufferFlushed(mediaBuffer, type, PlaylistLevelType.MAIN);\n }\n }\n frag = this.getNextFragmentLoopLoading(frag, levelDetails, bufferInfo, PlaylistLevelType.MAIN, maxBufLen);\n }\n if (!frag) {\n return;\n }\n if (frag.initSegment && !frag.initSegment.data && !this.bitrateTest) {\n frag = frag.initSegment;\n }\n this.loadFragment(frag, levelInfo, targetBufferTime);\n }\n loadFragment(frag, level, targetBufferTime) {\n // Check if fragment is not loaded\n const fragState = this.fragmentTracker.getState(frag);\n this.fragCurrent = frag;\n if (fragState === FragmentState.NOT_LOADED || fragState === FragmentState.PARTIAL) {\n if (frag.sn === 'initSegment') {\n this._loadInitSegment(frag, level);\n } else if (this.bitrateTest) {\n this.log(`Fragment ${frag.sn} of level ${frag.level} is being downloaded to test bitrate and will not be buffered`);\n this._loadBitrateTestFrag(frag, level);\n } else {\n this.startFragRequested = true;\n super.loadFragment(frag, level, targetBufferTime);\n }\n } else {\n this.clearTrackerIfNeeded(frag);\n }\n }\n getBufferedFrag(position) {\n return this.fragmentTracker.getBufferedFrag(position, PlaylistLevelType.MAIN);\n }\n followingBufferedFrag(frag) {\n if (frag) {\n // try to get range of next fragment (500ms after this range)\n return this.getBufferedFrag(frag.end + 0.5);\n }\n return null;\n }\n\n /*\n on immediate level switch :\n - pause playback if playing\n - cancel any pending load request\n - and trigger a buffer flush\n */\n immediateLevelSwitch() {\n this.abortCurrentFrag();\n this.flushMainBuffer(0, Number.POSITIVE_INFINITY);\n }\n\n /**\n * try to switch ASAP without breaking video playback:\n * in order to ensure smooth but quick level switching,\n * we need to find the next flushable buffer range\n * we should take into account new segment fetch time\n */\n nextLevelSwitch() {\n const {\n levels,\n media\n } = this;\n // ensure that media is defined and that metadata are available (to retrieve currentTime)\n if (media != null && media.readyState) {\n let fetchdelay;\n const fragPlayingCurrent = this.getAppendedFrag(media.currentTime);\n if (fragPlayingCurrent && fragPlayingCurrent.start > 1) {\n // flush buffer preceding current fragment (flush until current fragment start offset)\n // minus 1s to avoid video freezing, that could happen if we flush keyframe of current video ...\n this.flushMainBuffer(0, fragPlayingCurrent.start - 1);\n }\n const levelDetails = this.getLevelDetails();\n if (levelDetails != null && levelDetails.live) {\n const bufferInfo = this.getMainFwdBufferInfo();\n // Do not flush in live stream with low buffer\n if (!bufferInfo || bufferInfo.len < levelDetails.targetduration * 2) {\n return;\n }\n }\n if (!media.paused && levels) {\n // add a safety delay of 1s\n const nextLevelId = this.hls.nextLoadLevel;\n const nextLevel = levels[nextLevelId];\n const fragLastKbps = this.fragLastKbps;\n if (fragLastKbps && this.fragCurrent) {\n fetchdelay = this.fragCurrent.duration * nextLevel.maxBitrate / (1000 * fragLastKbps) + 1;\n } else {\n fetchdelay = 0;\n }\n } else {\n fetchdelay = 0;\n }\n // this.log('fetchdelay:'+fetchdelay);\n // find buffer range that will be reached once new fragment will be fetched\n const bufferedFrag = this.getBufferedFrag(media.currentTime + fetchdelay);\n if (bufferedFrag) {\n // we can flush buffer range following this one without stalling playback\n const nextBufferedFrag = this.followingBufferedFrag(bufferedFrag);\n if (nextBufferedFrag) {\n // if we are here, we can also cancel any loading/demuxing in progress, as they are useless\n this.abortCurrentFrag();\n // start flush position is in next buffered frag. Leave some padding for non-independent segments and smoother playback.\n const maxStart = nextBufferedFrag.maxStartPTS ? nextBufferedFrag.maxStartPTS : nextBufferedFrag.start;\n const fragDuration = nextBufferedFrag.duration;\n const startPts = Math.max(bufferedFrag.end, maxStart + Math.min(Math.max(fragDuration - this.config.maxFragLookUpTolerance, fragDuration * (this.couldBacktrack ? 0.5 : 0.125)), fragDuration * (this.couldBacktrack ? 0.75 : 0.25)));\n this.flushMainBuffer(startPts, Number.POSITIVE_INFINITY);\n }\n }\n }\n }\n abortCurrentFrag() {\n const fragCurrent = this.fragCurrent;\n this.fragCurrent = null;\n this.backtrackFragment = null;\n if (fragCurrent) {\n fragCurrent.abortRequests();\n this.fragmentTracker.removeFragment(fragCurrent);\n }\n switch (this.state) {\n case State.KEY_LOADING:\n case State.FRAG_LOADING:\n case State.FRAG_LOADING_WAITING_RETRY:\n case State.PARSING:\n case State.PARSED:\n this.state = State.IDLE;\n break;\n }\n this.nextLoadPosition = this.getLoadPosition();\n }\n flushMainBuffer(startOffset, endOffset) {\n super.flushMainBuffer(startOffset, endOffset, this.altAudio ? 'video' : null);\n }\n onMediaAttached(event, data) {\n super.onMediaAttached(event, data);\n const media = data.media;\n this.onvplaying = this.onMediaPlaying.bind(this);\n this.onvseeked = this.onMediaSeeked.bind(this);\n media.addEventListener('playing', this.onvplaying);\n media.addEventListener('seeked', this.onvseeked);\n this.gapController = new GapController(this.config, media, this.fragmentTracker, this.hls);\n }\n onMediaDetaching() {\n const {\n media\n } = this;\n if (media && this.onvplaying && this.onvseeked) {\n media.removeEventListener('playing', this.onvplaying);\n media.removeEventListener('seeked', this.onvseeked);\n this.onvplaying = this.onvseeked = null;\n this.videoBuffer = null;\n }\n this.fragPlaying = null;\n if (this.gapController) {\n this.gapController.destroy();\n this.gapController = null;\n }\n super.onMediaDetaching();\n }\n onMediaPlaying() {\n // tick to speed up FRAG_CHANGED triggering\n this.tick();\n }\n onMediaSeeked() {\n const media = this.media;\n const currentTime = media ? media.currentTime : null;\n if (isFiniteNumber(currentTime)) {\n this.log(`Media seeked to ${currentTime.toFixed(3)}`);\n }\n\n // If seeked was issued before buffer was appended do not tick immediately\n const bufferInfo = this.getMainFwdBufferInfo();\n if (bufferInfo === null || bufferInfo.len === 0) {\n this.warn(`Main forward buffer length on \"seeked\" event ${bufferInfo ? bufferInfo.len : 'empty'})`);\n return;\n }\n\n // tick to speed up FRAG_CHANGED triggering\n this.tick();\n }\n onManifestLoading() {\n // reset buffer on manifest loading\n this.log('Trigger BUFFER_RESET');\n this.hls.trigger(Events.BUFFER_RESET, undefined);\n this.fragmentTracker.removeAllFragments();\n this.couldBacktrack = false;\n this.startPosition = this.lastCurrentTime = this.fragLastKbps = 0;\n this.levels = this.fragPlaying = this.backtrackFragment = this.levelLastLoaded = null;\n this.altAudio = this.audioOnly = this.startFragRequested = false;\n }\n onManifestParsed(event, data) {\n // detect if we have different kind of audio codecs used amongst playlists\n let aac = false;\n let heaac = false;\n data.levels.forEach(level => {\n const codec = level.audioCodec;\n if (codec) {\n aac = aac || codec.indexOf('mp4a.40.2') !== -1;\n heaac = heaac || codec.indexOf('mp4a.40.5') !== -1;\n }\n });\n this.audioCodecSwitch = aac && heaac && !changeTypeSupported();\n if (this.audioCodecSwitch) {\n this.log('Both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC');\n }\n this.levels = data.levels;\n this.startFragRequested = false;\n }\n onLevelLoading(event, data) {\n const {\n levels\n } = this;\n if (!levels || this.state !== State.IDLE) {\n return;\n }\n const level = levels[data.level];\n if (!level.details || level.details.live && this.levelLastLoaded !== level || this.waitForCdnTuneIn(level.details)) {\n this.state = State.WAITING_LEVEL;\n }\n }\n onLevelLoaded(event, data) {\n var _curLevel$details;\n const {\n levels\n } = this;\n const newLevelId = data.level;\n const newDetails = data.details;\n const duration = newDetails.totalduration;\n if (!levels) {\n this.warn(`Levels were reset while loading level ${newLevelId}`);\n return;\n }\n this.log(`Level ${newLevelId} loaded [${newDetails.startSN},${newDetails.endSN}]${newDetails.lastPartSn ? `[part-${newDetails.lastPartSn}-${newDetails.lastPartIndex}]` : ''}, cc [${newDetails.startCC}, ${newDetails.endCC}] duration:${duration}`);\n const curLevel = levels[newLevelId];\n const fragCurrent = this.fragCurrent;\n if (fragCurrent && (this.state === State.FRAG_LOADING || this.state === State.FRAG_LOADING_WAITING_RETRY)) {\n if (fragCurrent.level !== data.level && fragCurrent.loader) {\n this.abortCurrentFrag();\n }\n }\n let sliding = 0;\n if (newDetails.live || (_curLevel$details = curLevel.details) != null && _curLevel$details.live) {\n var _this$levelLastLoaded;\n this.checkLiveUpdate(newDetails);\n if (newDetails.deltaUpdateFailed) {\n return;\n }\n sliding = this.alignPlaylists(newDetails, curLevel.details, (_this$levelLastLoaded = this.levelLastLoaded) == null ? void 0 : _this$levelLastLoaded.details);\n }\n // override level info\n curLevel.details = newDetails;\n this.levelLastLoaded = curLevel;\n this.hls.trigger(Events.LEVEL_UPDATED, {\n details: newDetails,\n level: newLevelId\n });\n\n // only switch back to IDLE state if we were waiting for level to start downloading a new fragment\n if (this.state === State.WAITING_LEVEL) {\n if (this.waitForCdnTuneIn(newDetails)) {\n // Wait for Low-Latency CDN Tune-in\n return;\n }\n this.state = State.IDLE;\n }\n if (!this.startFragRequested) {\n this.setStartPosition(newDetails, sliding);\n } else if (newDetails.live) {\n this.synchronizeToLiveEdge(newDetails);\n }\n\n // trigger handler right now\n this.tick();\n }\n _handleFragmentLoadProgress(data) {\n var _frag$initSegment;\n const {\n frag,\n part,\n payload\n } = data;\n const {\n levels\n } = this;\n if (!levels) {\n this.warn(`Levels were reset while fragment load was in progress. Fragment ${frag.sn} of level ${frag.level} will not be buffered`);\n return;\n }\n const currentLevel = levels[frag.level];\n const details = currentLevel.details;\n if (!details) {\n this.warn(`Dropping fragment ${frag.sn} of level ${frag.level} after level details were reset`);\n this.fragmentTracker.removeFragment(frag);\n return;\n }\n const videoCodec = currentLevel.videoCodec;\n\n // time Offset is accurate if level PTS is known, or if playlist is not sliding (not live)\n const accurateTimeOffset = details.PTSKnown || !details.live;\n const initSegmentData = (_frag$initSegment = frag.initSegment) == null ? void 0 : _frag$initSegment.data;\n const audioCodec = this._getAudioCodec(currentLevel);\n\n // transmux the MPEG-TS data to ISO-BMFF segments\n // this.log(`Transmuxing ${frag.sn} of [${details.startSN} ,${details.endSN}],level ${frag.level}, cc ${frag.cc}`);\n const transmuxer = this.transmuxer = this.transmuxer || new TransmuxerInterface(this.hls, PlaylistLevelType.MAIN, this._handleTransmuxComplete.bind(this), this._handleTransmuxerFlush.bind(this));\n const partIndex = part ? part.index : -1;\n const partial = partIndex !== -1;\n const chunkMeta = new ChunkMetadata(frag.level, frag.sn, frag.stats.chunkCount, payload.byteLength, partIndex, partial);\n const initPTS = this.initPTS[frag.cc];\n transmuxer.push(payload, initSegmentData, audioCodec, videoCodec, frag, part, details.totalduration, accurateTimeOffset, chunkMeta, initPTS);\n }\n onAudioTrackSwitching(event, data) {\n // if any URL found on new audio track, it is an alternate audio track\n const fromAltAudio = this.altAudio;\n const altAudio = !!data.url;\n // if we switch on main audio, ensure that main fragment scheduling is synced with media.buffered\n // don't do anything if we switch to alt audio: audio stream controller is handling it.\n // we will just have to change buffer scheduling on audioTrackSwitched\n if (!altAudio) {\n if (this.mediaBuffer !== this.media) {\n this.log('Switching on main audio, use media.buffered to schedule main fragment loading');\n this.mediaBuffer = this.media;\n const fragCurrent = this.fragCurrent;\n // we need to refill audio buffer from main: cancel any frag loading to speed up audio switch\n if (fragCurrent) {\n this.log('Switching to main audio track, cancel main fragment load');\n fragCurrent.abortRequests();\n this.fragmentTracker.removeFragment(fragCurrent);\n }\n // destroy transmuxer to force init segment generation (following audio switch)\n this.resetTransmuxer();\n // switch to IDLE state to load new fragment\n this.resetLoadingState();\n } else if (this.audioOnly) {\n // Reset audio transmuxer so when switching back to main audio we're not still appending where we left off\n this.resetTransmuxer();\n }\n const hls = this.hls;\n // If switching from alt to main audio, flush all audio and trigger track switched\n if (fromAltAudio) {\n hls.trigger(Events.BUFFER_FLUSHING, {\n startOffset: 0,\n endOffset: Number.POSITIVE_INFINITY,\n type: null\n });\n this.fragmentTracker.removeAllFragments();\n }\n hls.trigger(Events.AUDIO_TRACK_SWITCHED, data);\n }\n }\n onAudioTrackSwitched(event, data) {\n const trackId = data.id;\n const altAudio = !!this.hls.audioTracks[trackId].url;\n if (altAudio) {\n const videoBuffer = this.videoBuffer;\n // if we switched on alternate audio, ensure that main fragment scheduling is synced with video sourcebuffer buffered\n if (videoBuffer && this.mediaBuffer !== videoBuffer) {\n this.log('Switching on alternate audio, use video.buffered to schedule main fragment loading');\n this.mediaBuffer = videoBuffer;\n }\n }\n this.altAudio = altAudio;\n this.tick();\n }\n onBufferCreated(event, data) {\n const tracks = data.tracks;\n let mediaTrack;\n let name;\n let alternate = false;\n for (const type in tracks) {\n const track = tracks[type];\n if (track.id === 'main') {\n name = type;\n mediaTrack = track;\n // keep video source buffer reference\n if (type === 'video') {\n const videoTrack = tracks[type];\n if (videoTrack) {\n this.videoBuffer = videoTrack.buffer;\n }\n }\n } else {\n alternate = true;\n }\n }\n if (alternate && mediaTrack) {\n this.log(`Alternate track found, use ${name}.buffered to schedule main fragment loading`);\n this.mediaBuffer = mediaTrack.buffer;\n } else {\n this.mediaBuffer = this.media;\n }\n }\n onFragBuffered(event, data) {\n const {\n frag,\n part\n } = data;\n if (frag && frag.type !== PlaylistLevelType.MAIN) {\n return;\n }\n if (this.fragContextChanged(frag)) {\n // If a level switch was requested while a fragment was buffering, it will emit the FRAG_BUFFERED event upon completion\n // Avoid setting state back to IDLE, since that will interfere with a level switch\n this.warn(`Fragment ${frag.sn}${part ? ' p: ' + part.index : ''} of level ${frag.level} finished buffering, but was aborted. state: ${this.state}`);\n if (this.state === State.PARSED) {\n this.state = State.IDLE;\n }\n return;\n }\n const stats = part ? part.stats : frag.stats;\n this.fragLastKbps = Math.round(8 * stats.total / (stats.buffering.end - stats.loading.first));\n if (frag.sn !== 'initSegment') {\n this.fragPrevious = frag;\n }\n this.fragBufferedComplete(frag, part);\n }\n onError(event, data) {\n var _data$context;\n if (data.fatal) {\n this.state = State.ERROR;\n return;\n }\n switch (data.details) {\n case ErrorDetails.FRAG_GAP:\n case ErrorDetails.FRAG_PARSING_ERROR:\n case ErrorDetails.FRAG_DECRYPT_ERROR:\n case ErrorDetails.FRAG_LOAD_ERROR:\n case ErrorDetails.FRAG_LOAD_TIMEOUT:\n case ErrorDetails.KEY_LOAD_ERROR:\n case ErrorDetails.KEY_LOAD_TIMEOUT:\n this.onFragmentOrKeyLoadError(PlaylistLevelType.MAIN, data);\n break;\n case ErrorDetails.LEVEL_LOAD_ERROR:\n case ErrorDetails.LEVEL_LOAD_TIMEOUT:\n case ErrorDetails.LEVEL_PARSING_ERROR:\n // in case of non fatal error while loading level, if level controller is not retrying to load level, switch back to IDLE\n if (!data.levelRetry && this.state === State.WAITING_LEVEL && ((_data$context = data.context) == null ? void 0 : _data$context.type) === PlaylistContextType.LEVEL) {\n this.state = State.IDLE;\n }\n break;\n case ErrorDetails.BUFFER_APPEND_ERROR:\n case ErrorDetails.BUFFER_FULL_ERROR:\n if (!data.parent || data.parent !== 'main') {\n return;\n }\n if (data.details === ErrorDetails.BUFFER_APPEND_ERROR) {\n this.resetLoadingState();\n return;\n }\n if (this.reduceLengthAndFlushBuffer(data)) {\n this.flushMainBuffer(0, Number.POSITIVE_INFINITY);\n }\n break;\n case ErrorDetails.INTERNAL_EXCEPTION:\n this.recoverWorkerError(data);\n break;\n }\n }\n\n // Checks the health of the buffer and attempts to resolve playback stalls.\n checkBuffer() {\n const {\n media,\n gapController\n } = this;\n if (!media || !gapController || !media.readyState) {\n // Exit early if we don't have media or if the media hasn't buffered anything yet (readyState 0)\n return;\n }\n if (this.loadedmetadata || !BufferHelper.getBuffered(media).length) {\n // Resolve gaps using the main buffer, whose ranges are the intersections of the A/V sourcebuffers\n const activeFrag = this.state !== State.IDLE ? this.fragCurrent : null;\n gapController.poll(this.lastCurrentTime, activeFrag);\n }\n this.lastCurrentTime = media.currentTime;\n }\n onFragLoadEmergencyAborted() {\n this.state = State.IDLE;\n // if loadedmetadata is not set, it means that we are emergency switch down on first frag\n // in that case, reset startFragRequested flag\n if (!this.loadedmetadata) {\n this.startFragRequested = false;\n this.nextLoadPosition = this.startPosition;\n }\n this.tickImmediate();\n }\n onBufferFlushed(event, {\n type\n }) {\n if (type !== ElementaryStreamTypes.AUDIO || this.audioOnly && !this.altAudio) {\n const mediaBuffer = (type === ElementaryStreamTypes.VIDEO ? this.videoBuffer : this.mediaBuffer) || this.media;\n this.afterBufferFlushed(mediaBuffer, type, PlaylistLevelType.MAIN);\n this.tick();\n }\n }\n onLevelsUpdated(event, data) {\n if (this.level > -1 && this.fragCurrent) {\n this.level = this.fragCurrent.level;\n }\n this.levels = data.levels;\n }\n swapAudioCodec() {\n this.audioCodecSwap = !this.audioCodecSwap;\n }\n\n /**\n * Seeks to the set startPosition if not equal to the mediaElement's current time.\n */\n seekToStartPos() {\n const {\n media\n } = this;\n if (!media) {\n return;\n }\n const currentTime = media.currentTime;\n let startPosition = this.startPosition;\n // only adjust currentTime if different from startPosition or if startPosition not buffered\n // at that stage, there should be only one buffered range, as we reach that code after first fragment has been buffered\n if (startPosition >= 0 && currentTime < startPosition) {\n if (media.seeking) {\n this.log(`could not seek to ${startPosition}, already seeking at ${currentTime}`);\n return;\n }\n const buffered = BufferHelper.getBuffered(media);\n const bufferStart = buffered.length ? buffered.start(0) : 0;\n const delta = bufferStart - startPosition;\n if (delta > 0 && (delta < this.config.maxBufferHole || delta < this.config.maxFragLookUpTolerance)) {\n this.log(`adjusting start position by ${delta} to match buffer start`);\n startPosition += delta;\n this.startPosition = startPosition;\n }\n this.log(`seek to target start position ${startPosition} from current time ${currentTime}`);\n media.currentTime = startPosition;\n }\n }\n _getAudioCodec(currentLevel) {\n let audioCodec = this.config.defaultAudioCodec || currentLevel.audioCodec;\n if (this.audioCodecSwap && audioCodec) {\n this.log('Swapping audio codec');\n if (audioCodec.indexOf('mp4a.40.5') !== -1) {\n audioCodec = 'mp4a.40.2';\n } else {\n audioCodec = 'mp4a.40.5';\n }\n }\n return audioCodec;\n }\n _loadBitrateTestFrag(frag, level) {\n frag.bitrateTest = true;\n this._doFragLoad(frag, level).then(data => {\n const {\n hls\n } = this;\n if (!data || this.fragContextChanged(frag)) {\n return;\n }\n level.fragmentError = 0;\n this.state = State.IDLE;\n this.startFragRequested = false;\n this.bitrateTest = false;\n const stats = frag.stats;\n // Bitrate tests fragments are neither parsed nor buffered\n stats.parsing.start = stats.parsing.end = stats.buffering.start = stats.buffering.end = self.performance.now();\n hls.trigger(Events.FRAG_LOADED, data);\n frag.bitrateTest = false;\n });\n }\n _handleTransmuxComplete(transmuxResult) {\n var _id3$samples;\n const id = 'main';\n const {\n hls\n } = this;\n const {\n remuxResult,\n chunkMeta\n } = transmuxResult;\n const context = this.getCurrentContext(chunkMeta);\n if (!context) {\n this.resetWhenMissingContext(chunkMeta);\n return;\n }\n const {\n frag,\n part,\n level\n } = context;\n const {\n video,\n text,\n id3,\n initSegment\n } = remuxResult;\n const {\n details\n } = level;\n // The audio-stream-controller handles audio buffering if Hls.js is playing an alternate audio track\n const audio = this.altAudio ? undefined : remuxResult.audio;\n\n // Check if the current fragment has been aborted. We check this by first seeing if we're still playing the current level.\n // If we are, subsequently check if the currently loading fragment (fragCurrent) has changed.\n if (this.fragContextChanged(frag)) {\n this.fragmentTracker.removeFragment(frag);\n return;\n }\n this.state = State.PARSING;\n if (initSegment) {\n if (initSegment != null && initSegment.tracks) {\n const mapFragment = frag.initSegment || frag;\n this._bufferInitSegment(level, initSegment.tracks, mapFragment, chunkMeta);\n hls.trigger(Events.FRAG_PARSING_INIT_SEGMENT, {\n frag: mapFragment,\n id,\n tracks: initSegment.tracks\n });\n }\n\n // This would be nice if Number.isFinite acted as a typeguard, but it doesn't. See: https://github.com/Microsoft/TypeScript/issues/10038\n const initPTS = initSegment.initPTS;\n const timescale = initSegment.timescale;\n if (isFiniteNumber(initPTS)) {\n this.initPTS[frag.cc] = {\n baseTime: initPTS,\n timescale\n };\n hls.trigger(Events.INIT_PTS_FOUND, {\n frag,\n id,\n initPTS,\n timescale\n });\n }\n }\n\n // Avoid buffering if backtracking this fragment\n if (video && details && frag.sn !== 'initSegment') {\n const prevFrag = details.fragments[frag.sn - 1 - details.startSN];\n const isFirstFragment = frag.sn === details.startSN;\n const isFirstInDiscontinuity = !prevFrag || frag.cc > prevFrag.cc;\n if (remuxResult.independent !== false) {\n const {\n startPTS,\n endPTS,\n startDTS,\n endDTS\n } = video;\n if (part) {\n part.elementaryStreams[video.type] = {\n startPTS,\n endPTS,\n startDTS,\n endDTS\n };\n } else {\n if (video.firstKeyFrame && video.independent && chunkMeta.id === 1 && !isFirstInDiscontinuity) {\n this.couldBacktrack = true;\n }\n if (video.dropped && video.independent) {\n // Backtrack if dropped frames create a gap after currentTime\n\n const bufferInfo = this.getMainFwdBufferInfo();\n const targetBufferTime = (bufferInfo ? bufferInfo.end : this.getLoadPosition()) + this.config.maxBufferHole;\n const startTime = video.firstKeyFramePTS ? video.firstKeyFramePTS : startPTS;\n if (!isFirstFragment && targetBufferTime < startTime - this.config.maxBufferHole && !isFirstInDiscontinuity) {\n this.backtrack(frag);\n return;\n } else if (isFirstInDiscontinuity) {\n // Mark segment with a gap to avoid loop loading\n frag.gap = true;\n }\n // Set video stream start to fragment start so that truncated samples do not distort the timeline, and mark it partial\n frag.setElementaryStreamInfo(video.type, frag.start, endPTS, frag.start, endDTS, true);\n } else if (isFirstFragment && startPTS > MAX_START_GAP_JUMP) {\n // Mark segment with a gap to skip large start gap\n frag.gap = true;\n }\n }\n frag.setElementaryStreamInfo(video.type, startPTS, endPTS, startDTS, endDTS);\n if (this.backtrackFragment) {\n this.backtrackFragment = frag;\n }\n this.bufferFragmentData(video, frag, part, chunkMeta, isFirstFragment || isFirstInDiscontinuity);\n } else if (isFirstFragment || isFirstInDiscontinuity) {\n // Mark segment with a gap to avoid loop loading\n frag.gap = true;\n } else {\n this.backtrack(frag);\n return;\n }\n }\n if (audio) {\n const {\n startPTS,\n endPTS,\n startDTS,\n endDTS\n } = audio;\n if (part) {\n part.elementaryStreams[ElementaryStreamTypes.AUDIO] = {\n startPTS,\n endPTS,\n startDTS,\n endDTS\n };\n }\n frag.setElementaryStreamInfo(ElementaryStreamTypes.AUDIO, startPTS, endPTS, startDTS, endDTS);\n this.bufferFragmentData(audio, frag, part, chunkMeta);\n }\n if (details && id3 != null && (_id3$samples = id3.samples) != null && _id3$samples.length) {\n const emittedID3 = {\n id,\n frag,\n details,\n samples: id3.samples\n };\n hls.trigger(Events.FRAG_PARSING_METADATA, emittedID3);\n }\n if (details && text) {\n const emittedText = {\n id,\n frag,\n details,\n samples: text.samples\n };\n hls.trigger(Events.FRAG_PARSING_USERDATA, emittedText);\n }\n }\n _bufferInitSegment(currentLevel, tracks, frag, chunkMeta) {\n if (this.state !== State.PARSING) {\n return;\n }\n this.audioOnly = !!tracks.audio && !tracks.video;\n\n // if audio track is expected to come from audio stream controller, discard any coming from main\n if (this.altAudio && !this.audioOnly) {\n delete tracks.audio;\n }\n // include levelCodec in audio and video tracks\n const {\n audio,\n video,\n audiovideo\n } = tracks;\n if (audio) {\n let audioCodec = currentLevel.audioCodec;\n const ua = navigator.userAgent.toLowerCase();\n if (this.audioCodecSwitch) {\n if (audioCodec) {\n if (audioCodec.indexOf('mp4a.40.5') !== -1) {\n audioCodec = 'mp4a.40.2';\n } else {\n audioCodec = 'mp4a.40.5';\n }\n }\n // In the case that AAC and HE-AAC audio codecs are signalled in manifest,\n // force HE-AAC, as it seems that most browsers prefers it.\n // don't force HE-AAC if mono stream, or in Firefox\n const audioMetadata = audio.metadata;\n if (audioMetadata && 'channelCount' in audioMetadata && (audioMetadata.channelCount || 1) !== 1 && ua.indexOf('firefox') === -1) {\n audioCodec = 'mp4a.40.5';\n }\n }\n // HE-AAC is broken on Android, always signal audio codec as AAC even if variant manifest states otherwise\n if (audioCodec && audioCodec.indexOf('mp4a.40.5') !== -1 && ua.indexOf('android') !== -1 && audio.container !== 'audio/mpeg') {\n // Exclude mpeg audio\n audioCodec = 'mp4a.40.2';\n this.log(`Android: force audio codec to ${audioCodec}`);\n }\n if (currentLevel.audioCodec && currentLevel.audioCodec !== audioCodec) {\n this.log(`Swapping manifest audio codec \"${currentLevel.audioCodec}\" for \"${audioCodec}\"`);\n }\n audio.levelCodec = audioCodec;\n audio.id = 'main';\n this.log(`Init audio buffer, container:${audio.container}, codecs[selected/level/parsed]=[${audioCodec || ''}/${currentLevel.audioCodec || ''}/${audio.codec}]`);\n }\n if (video) {\n video.levelCodec = currentLevel.videoCodec;\n video.id = 'main';\n this.log(`Init video buffer, container:${video.container}, codecs[level/parsed]=[${currentLevel.videoCodec || ''}/${video.codec}]`);\n }\n if (audiovideo) {\n this.log(`Init audiovideo buffer, container:${audiovideo.container}, codecs[level/parsed]=[${currentLevel.codecs}/${audiovideo.codec}]`);\n }\n this.hls.trigger(Events.BUFFER_CODECS, tracks);\n // loop through tracks that are going to be provided to bufferController\n Object.keys(tracks).forEach(trackName => {\n const track = tracks[trackName];\n const initSegment = track.initSegment;\n if (initSegment != null && initSegment.byteLength) {\n this.hls.trigger(Events.BUFFER_APPENDING, {\n type: trackName,\n data: initSegment,\n frag,\n part: null,\n chunkMeta,\n parent: frag.type\n });\n }\n });\n // trigger handler right now\n this.tickImmediate();\n }\n getMainFwdBufferInfo() {\n return this.getFwdBufferInfo(this.mediaBuffer ? this.mediaBuffer : this.media, PlaylistLevelType.MAIN);\n }\n backtrack(frag) {\n this.couldBacktrack = true;\n // Causes findFragments to backtrack through fragments to find the keyframe\n this.backtrackFragment = frag;\n this.resetTransmuxer();\n this.flushBufferGap(frag);\n this.fragmentTracker.removeFragment(frag);\n this.fragPrevious = null;\n this.nextLoadPosition = frag.start;\n this.state = State.IDLE;\n }\n checkFragmentChanged() {\n const video = this.media;\n let fragPlayingCurrent = null;\n if (video && video.readyState > 1 && video.seeking === false) {\n const currentTime = video.currentTime;\n /* if video element is in seeked state, currentTime can only increase.\n (assuming that playback rate is positive ...)\n As sometimes currentTime jumps back to zero after a\n media decode error, check this, to avoid seeking back to\n wrong position after a media decode error\n */\n\n if (BufferHelper.isBuffered(video, currentTime)) {\n fragPlayingCurrent = this.getAppendedFrag(currentTime);\n } else if (BufferHelper.isBuffered(video, currentTime + 0.1)) {\n /* ensure that FRAG_CHANGED event is triggered at startup,\n when first video frame is displayed and playback is paused.\n add a tolerance of 100ms, in case current position is not buffered,\n check if current pos+100ms is buffered and use that buffer range\n for FRAG_CHANGED event reporting */\n fragPlayingCurrent = this.getAppendedFrag(currentTime + 0.1);\n }\n if (fragPlayingCurrent) {\n this.backtrackFragment = null;\n const fragPlaying = this.fragPlaying;\n const fragCurrentLevel = fragPlayingCurrent.level;\n if (!fragPlaying || fragPlayingCurrent.sn !== fragPlaying.sn || fragPlaying.level !== fragCurrentLevel) {\n this.fragPlaying = fragPlayingCurrent;\n this.hls.trigger(Events.FRAG_CHANGED, {\n frag: fragPlayingCurrent\n });\n if (!fragPlaying || fragPlaying.level !== fragCurrentLevel) {\n this.hls.trigger(Events.LEVEL_SWITCHED, {\n level: fragCurrentLevel\n });\n }\n }\n }\n }\n }\n get nextLevel() {\n const frag = this.nextBufferedFrag;\n if (frag) {\n return frag.level;\n }\n return -1;\n }\n get currentFrag() {\n const media = this.media;\n if (media) {\n return this.fragPlaying || this.getAppendedFrag(media.currentTime);\n }\n return null;\n }\n get currentProgramDateTime() {\n const media = this.media;\n if (media) {\n const currentTime = media.currentTime;\n const frag = this.currentFrag;\n if (frag && isFiniteNumber(currentTime) && isFiniteNumber(frag.programDateTime)) {\n const epocMs = frag.programDateTime + (currentTime - frag.start) * 1000;\n return new Date(epocMs);\n }\n }\n return null;\n }\n get currentLevel() {\n const frag = this.currentFrag;\n if (frag) {\n return frag.level;\n }\n return -1;\n }\n get nextBufferedFrag() {\n const frag = this.currentFrag;\n if (frag) {\n return this.followingBufferedFrag(frag);\n }\n return null;\n }\n get forceStartLoad() {\n return this._forceStartLoad;\n }\n}\n\n/**\n * The `Hls` class is the core of the HLS.js library used to instantiate player instances.\n * @public\n */\nclass Hls {\n /**\n * Get the video-dev/hls.js package version.\n */\n static get version() {\n return \"1.5.18\";\n }\n\n /**\n * Check if the required MediaSource Extensions are available.\n */\n static isMSESupported() {\n return isMSESupported();\n }\n\n /**\n * Check if MediaSource Extensions are available and isTypeSupported checks pass for any baseline codecs.\n */\n static isSupported() {\n return isSupported();\n }\n\n /**\n * Get the MediaSource global used for MSE playback (ManagedMediaSource, MediaSource, or WebKitMediaSource).\n */\n static getMediaSource() {\n return getMediaSource();\n }\n static get Events() {\n return Events;\n }\n static get ErrorTypes() {\n return ErrorTypes;\n }\n static get ErrorDetails() {\n return ErrorDetails;\n }\n\n /**\n * Get the default configuration applied to new instances.\n */\n static get DefaultConfig() {\n if (!Hls.defaultConfig) {\n return hlsDefaultConfig;\n }\n return Hls.defaultConfig;\n }\n\n /**\n * Replace the default configuration applied to new instances.\n */\n static set DefaultConfig(defaultConfig) {\n Hls.defaultConfig = defaultConfig;\n }\n\n /**\n * Creates an instance of an HLS client that can attach to exactly one `HTMLMediaElement`.\n * @param userConfig - Configuration options applied over `Hls.DefaultConfig`\n */\n constructor(userConfig = {}) {\n /**\n * The runtime configuration used by the player. At instantiation this is combination of `hls.userConfig` merged over `Hls.DefaultConfig`.\n */\n this.config = void 0;\n /**\n * The configuration object provided on player instantiation.\n */\n this.userConfig = void 0;\n this.coreComponents = void 0;\n this.networkControllers = void 0;\n this.started = false;\n this._emitter = new EventEmitter();\n this._autoLevelCapping = -1;\n this._maxHdcpLevel = null;\n this.abrController = void 0;\n this.bufferController = void 0;\n this.capLevelController = void 0;\n this.latencyController = void 0;\n this.levelController = void 0;\n this.streamController = void 0;\n this.audioTrackController = void 0;\n this.subtitleTrackController = void 0;\n this.emeController = void 0;\n this.cmcdController = void 0;\n this._media = null;\n this.url = null;\n this.triggeringException = void 0;\n enableLogs(userConfig.debug || false, 'Hls instance');\n const config = this.config = mergeConfig(Hls.DefaultConfig, userConfig);\n this.userConfig = userConfig;\n if (config.progressive) {\n enableStreamingMode(config);\n }\n\n // core controllers and network loaders\n const {\n abrController: ConfigAbrController,\n bufferController: ConfigBufferController,\n capLevelController: ConfigCapLevelController,\n errorController: ConfigErrorController,\n fpsController: ConfigFpsController\n } = config;\n const errorController = new ConfigErrorController(this);\n const abrController = this.abrController = new ConfigAbrController(this);\n const bufferController = this.bufferController = new ConfigBufferController(this);\n const capLevelController = this.capLevelController = new ConfigCapLevelController(this);\n const fpsController = new ConfigFpsController(this);\n const playListLoader = new PlaylistLoader(this);\n const id3TrackController = new ID3TrackController(this);\n const ConfigContentSteeringController = config.contentSteeringController;\n // ConentSteeringController is defined before LevelController to receive Multivariant Playlist events first\n const contentSteering = ConfigContentSteeringController ? new ConfigContentSteeringController(this) : null;\n const levelController = this.levelController = new LevelController(this, contentSteering);\n // FragmentTracker must be defined before StreamController because the order of event handling is important\n const fragmentTracker = new FragmentTracker(this);\n const keyLoader = new KeyLoader(this.config);\n const streamController = this.streamController = new StreamController(this, fragmentTracker, keyLoader);\n\n // Cap level controller uses streamController to flush the buffer\n capLevelController.setStreamController(streamController);\n // fpsController uses streamController to switch when frames are being dropped\n fpsController.setStreamController(streamController);\n const networkControllers = [playListLoader, levelController, streamController];\n if (contentSteering) {\n networkControllers.splice(1, 0, contentSteering);\n }\n this.networkControllers = networkControllers;\n const coreComponents = [abrController, bufferController, capLevelController, fpsController, id3TrackController, fragmentTracker];\n this.audioTrackController = this.createController(config.audioTrackController, networkControllers);\n const AudioStreamControllerClass = config.audioStreamController;\n if (AudioStreamControllerClass) {\n networkControllers.push(new AudioStreamControllerClass(this, fragmentTracker, keyLoader));\n }\n // subtitleTrackController must be defined before subtitleStreamController because the order of event handling is important\n this.subtitleTrackController = this.createController(config.subtitleTrackController, networkControllers);\n const SubtitleStreamControllerClass = config.subtitleStreamController;\n if (SubtitleStreamControllerClass) {\n networkControllers.push(new SubtitleStreamControllerClass(this, fragmentTracker, keyLoader));\n }\n this.createController(config.timelineController, coreComponents);\n keyLoader.emeController = this.emeController = this.createController(config.emeController, coreComponents);\n this.cmcdController = this.createController(config.cmcdController, coreComponents);\n this.latencyController = this.createController(LatencyController, coreComponents);\n this.coreComponents = coreComponents;\n\n // Error controller handles errors before and after all other controllers\n // This listener will be invoked after all other controllers error listeners\n networkControllers.push(errorController);\n const onErrorOut = errorController.onErrorOut;\n if (typeof onErrorOut === 'function') {\n this.on(Events.ERROR, onErrorOut, errorController);\n }\n }\n createController(ControllerClass, components) {\n if (ControllerClass) {\n const controllerInstance = new ControllerClass(this);\n if (components) {\n components.push(controllerInstance);\n }\n return controllerInstance;\n }\n return null;\n }\n\n // Delegate the EventEmitter through the public API of Hls.js\n on(event, listener, context = this) {\n this._emitter.on(event, listener, context);\n }\n once(event, listener, context = this) {\n this._emitter.once(event, listener, context);\n }\n removeAllListeners(event) {\n this._emitter.removeAllListeners(event);\n }\n off(event, listener, context = this, once) {\n this._emitter.off(event, listener, context, once);\n }\n listeners(event) {\n return this._emitter.listeners(event);\n }\n emit(event, name, eventObject) {\n return this._emitter.emit(event, name, eventObject);\n }\n trigger(event, eventObject) {\n if (this.config.debug) {\n return this.emit(event, event, eventObject);\n } else {\n try {\n return this.emit(event, event, eventObject);\n } catch (error) {\n logger.error('An internal error happened while handling event ' + event + '. Error message: \"' + error.message + '\". Here is a stacktrace:', error);\n // Prevent recursion in error event handlers that throw #5497\n if (!this.triggeringException) {\n this.triggeringException = true;\n const fatal = event === Events.ERROR;\n this.trigger(Events.ERROR, {\n type: ErrorTypes.OTHER_ERROR,\n details: ErrorDetails.INTERNAL_EXCEPTION,\n fatal,\n event,\n error\n });\n this.triggeringException = false;\n }\n }\n }\n return false;\n }\n listenerCount(event) {\n return this._emitter.listenerCount(event);\n }\n\n /**\n * Dispose of the instance\n */\n destroy() {\n logger.log('destroy');\n this.trigger(Events.DESTROYING, undefined);\n this.detachMedia();\n this.removeAllListeners();\n this._autoLevelCapping = -1;\n this.url = null;\n this.networkControllers.forEach(component => component.destroy());\n this.networkControllers.length = 0;\n this.coreComponents.forEach(component => component.destroy());\n this.coreComponents.length = 0;\n // Remove any references that could be held in config options or callbacks\n const config = this.config;\n config.xhrSetup = config.fetchSetup = undefined;\n // @ts-ignore\n this.userConfig = null;\n }\n\n /**\n * Attaches Hls.js to a media element\n */\n attachMedia(media) {\n logger.log('attachMedia');\n this._media = media;\n this.trigger(Events.MEDIA_ATTACHING, {\n media: media\n });\n }\n\n /**\n * Detach Hls.js from the media\n */\n detachMedia() {\n logger.log('detachMedia');\n this.trigger(Events.MEDIA_DETACHING, undefined);\n this._media = null;\n }\n\n /**\n * Set the source URL. Can be relative or absolute.\n */\n loadSource(url) {\n this.stopLoad();\n const media = this.media;\n const loadedSource = this.url;\n const loadingSource = this.url = urlToolkitExports.buildAbsoluteURL(self.location.href, url, {\n alwaysNormalize: true\n });\n this._autoLevelCapping = -1;\n this._maxHdcpLevel = null;\n logger.log(`loadSource:${loadingSource}`);\n if (media && loadedSource && (loadedSource !== loadingSource || this.bufferController.hasSourceTypes())) {\n this.detachMedia();\n this.attachMedia(media);\n }\n // when attaching to a source URL, trigger a playlist load\n this.trigger(Events.MANIFEST_LOADING, {\n url: url\n });\n }\n\n /**\n * Start loading data from the stream source.\n * Depending on default config, client starts loading automatically when a source is set.\n *\n * @param startPosition - Set the start position to stream from.\n * Defaults to -1 (None: starts from earliest point)\n */\n startLoad(startPosition = -1) {\n logger.log(`startLoad(${startPosition})`);\n this.started = true;\n this.resumeBuffering();\n for (let i = 0; i < this.networkControllers.length; i++) {\n this.networkControllers[i].startLoad(startPosition);\n if (!this.started || !this.networkControllers) {\n break;\n }\n }\n }\n\n /**\n * Stop loading of any stream data.\n */\n stopLoad() {\n logger.log('stopLoad');\n this.started = false;\n for (let i = 0; i < this.networkControllers.length; i++) {\n this.networkControllers[i].stopLoad();\n if (this.started || !this.networkControllers) {\n break;\n }\n }\n }\n\n /**\n * Resumes stream controller segment loading after `pauseBuffering` has been called.\n */\n resumeBuffering() {\n logger.log(`resume buffering`);\n this.networkControllers.forEach(controller => {\n if (controller.resumeBuffering) {\n controller.resumeBuffering();\n }\n });\n }\n\n /**\n * Prevents stream controller from loading new segments until `resumeBuffering` is called.\n * This allows for media buffering to be paused without interupting playlist loading.\n */\n pauseBuffering() {\n logger.log(`pause buffering`);\n this.networkControllers.forEach(controller => {\n if (controller.pauseBuffering) {\n controller.pauseBuffering();\n }\n });\n }\n\n /**\n * Swap through possible audio codecs in the stream (for example to switch from stereo to 5.1)\n */\n swapAudioCodec() {\n logger.log('swapAudioCodec');\n this.streamController.swapAudioCodec();\n }\n\n /**\n * When the media-element fails, this allows to detach and then re-attach it\n * as one call (convenience method).\n *\n * Automatic recovery of media-errors by this process is configurable.\n */\n recoverMediaError() {\n logger.log('recoverMediaError');\n const media = this._media;\n this.detachMedia();\n if (media) {\n this.attachMedia(media);\n }\n }\n removeLevel(levelIndex) {\n this.levelController.removeLevel(levelIndex);\n }\n\n /**\n * @returns an array of levels (variants) sorted by HDCP-LEVEL, RESOLUTION (height), FRAME-RATE, CODECS, VIDEO-RANGE, and BANDWIDTH\n */\n get levels() {\n const levels = this.levelController.levels;\n return levels ? levels : [];\n }\n\n /**\n * Index of quality level (variant) currently played\n */\n get currentLevel() {\n return this.streamController.currentLevel;\n }\n\n /**\n * Set quality level index immediately. This will flush the current buffer to replace the quality asap. That means playback will interrupt at least shortly to re-buffer and re-sync eventually. Set to -1 for automatic level selection.\n */\n set currentLevel(newLevel) {\n logger.log(`set currentLevel:${newLevel}`);\n this.levelController.manualLevel = newLevel;\n this.streamController.immediateLevelSwitch();\n }\n\n /**\n * Index of next quality level loaded as scheduled by stream controller.\n */\n get nextLevel() {\n return this.streamController.nextLevel;\n }\n\n /**\n * Set quality level index for next loaded data.\n * This will switch the video quality asap, without interrupting playback.\n * May abort current loading of data, and flush parts of buffer (outside currently played fragment region).\n * @param newLevel - Pass -1 for automatic level selection\n */\n set nextLevel(newLevel) {\n logger.log(`set nextLevel:${newLevel}`);\n this.levelController.manualLevel = newLevel;\n this.streamController.nextLevelSwitch();\n }\n\n /**\n * Return the quality level of the currently or last (of none is loaded currently) segment\n */\n get loadLevel() {\n return this.levelController.level;\n }\n\n /**\n * Set quality level index for next loaded data in a conservative way.\n * This will switch the quality without flushing, but interrupt current loading.\n * Thus the moment when the quality switch will appear in effect will only be after the already existing buffer.\n * @param newLevel - Pass -1 for automatic level selection\n */\n set loadLevel(newLevel) {\n logger.log(`set loadLevel:${newLevel}`);\n this.levelController.manualLevel = newLevel;\n }\n\n /**\n * get next quality level loaded\n */\n get nextLoadLevel() {\n return this.levelController.nextLoadLevel;\n }\n\n /**\n * Set quality level of next loaded segment in a fully \"non-destructive\" way.\n * Same as `loadLevel` but will wait for next switch (until current loading is done).\n */\n set nextLoadLevel(level) {\n this.levelController.nextLoadLevel = level;\n }\n\n /**\n * Return \"first level\": like a default level, if not set,\n * falls back to index of first level referenced in manifest\n */\n get firstLevel() {\n return Math.max(this.levelController.firstLevel, this.minAutoLevel);\n }\n\n /**\n * Sets \"first-level\", see getter.\n */\n set firstLevel(newLevel) {\n logger.log(`set firstLevel:${newLevel}`);\n this.levelController.firstLevel = newLevel;\n }\n\n /**\n * Return the desired start level for the first fragment that will be loaded.\n * The default value of -1 indicates automatic start level selection.\n * Setting hls.nextAutoLevel without setting a startLevel will result in\n * the nextAutoLevel value being used for one fragment load.\n */\n get startLevel() {\n const startLevel = this.levelController.startLevel;\n if (startLevel === -1 && this.abrController.forcedAutoLevel > -1) {\n return this.abrController.forcedAutoLevel;\n }\n return startLevel;\n }\n\n /**\n * set start level (level of first fragment that will be played back)\n * if not overrided by user, first level appearing in manifest will be used as start level\n * if -1 : automatic start level selection, playback will start from level matching download bandwidth\n * (determined from download of first segment)\n */\n set startLevel(newLevel) {\n logger.log(`set startLevel:${newLevel}`);\n // if not in automatic start level detection, ensure startLevel is greater than minAutoLevel\n if (newLevel !== -1) {\n newLevel = Math.max(newLevel, this.minAutoLevel);\n }\n this.levelController.startLevel = newLevel;\n }\n\n /**\n * Whether level capping is enabled.\n * Default value is set via `config.capLevelToPlayerSize`.\n */\n get capLevelToPlayerSize() {\n return this.config.capLevelToPlayerSize;\n }\n\n /**\n * Enables or disables level capping. If disabled after previously enabled, `nextLevelSwitch` will be immediately called.\n */\n set capLevelToPlayerSize(shouldStartCapping) {\n const newCapLevelToPlayerSize = !!shouldStartCapping;\n if (newCapLevelToPlayerSize !== this.config.capLevelToPlayerSize) {\n if (newCapLevelToPlayerSize) {\n this.capLevelController.startCapping(); // If capping occurs, nextLevelSwitch will happen based on size.\n } else {\n this.capLevelController.stopCapping();\n this.autoLevelCapping = -1;\n this.streamController.nextLevelSwitch(); // Now we're uncapped, get the next level asap.\n }\n this.config.capLevelToPlayerSize = newCapLevelToPlayerSize;\n }\n }\n\n /**\n * Capping/max level value that should be used by automatic level selection algorithm (`ABRController`)\n */\n get autoLevelCapping() {\n return this._autoLevelCapping;\n }\n\n /**\n * Returns the current bandwidth estimate in bits per second, when available. Otherwise, `NaN` is returned.\n */\n get bandwidthEstimate() {\n const {\n bwEstimator\n } = this.abrController;\n if (!bwEstimator) {\n return NaN;\n }\n return bwEstimator.getEstimate();\n }\n set bandwidthEstimate(abrEwmaDefaultEstimate) {\n this.abrController.resetEstimator(abrEwmaDefaultEstimate);\n }\n\n /**\n * get time to first byte estimate\n * @type {number}\n */\n get ttfbEstimate() {\n const {\n bwEstimator\n } = this.abrController;\n if (!bwEstimator) {\n return NaN;\n }\n return bwEstimator.getEstimateTTFB();\n }\n\n /**\n * Capping/max level value that should be used by automatic level selection algorithm (`ABRController`)\n */\n set autoLevelCapping(newLevel) {\n if (this._autoLevelCapping !== newLevel) {\n logger.log(`set autoLevelCapping:${newLevel}`);\n this._autoLevelCapping = newLevel;\n this.levelController.checkMaxAutoUpdated();\n }\n }\n get maxHdcpLevel() {\n return this._maxHdcpLevel;\n }\n set maxHdcpLevel(value) {\n if (isHdcpLevel(value) && this._maxHdcpLevel !== value) {\n this._maxHdcpLevel = value;\n this.levelController.checkMaxAutoUpdated();\n }\n }\n\n /**\n * True when automatic level selection enabled\n */\n get autoLevelEnabled() {\n return this.levelController.manualLevel === -1;\n }\n\n /**\n * Level set manually (if any)\n */\n get manualLevel() {\n return this.levelController.manualLevel;\n }\n\n /**\n * min level selectable in auto mode according to config.minAutoBitrate\n */\n get minAutoLevel() {\n const {\n levels,\n config: {\n minAutoBitrate\n }\n } = this;\n if (!levels) return 0;\n const len = levels.length;\n for (let i = 0; i < len; i++) {\n if (levels[i].maxBitrate >= minAutoBitrate) {\n return i;\n }\n }\n return 0;\n }\n\n /**\n * max level selectable in auto mode according to autoLevelCapping\n */\n get maxAutoLevel() {\n const {\n levels,\n autoLevelCapping,\n maxHdcpLevel\n } = this;\n let maxAutoLevel;\n if (autoLevelCapping === -1 && levels != null && levels.length) {\n maxAutoLevel = levels.length - 1;\n } else {\n maxAutoLevel = autoLevelCapping;\n }\n if (maxHdcpLevel) {\n for (let i = maxAutoLevel; i--;) {\n const hdcpLevel = levels[i].attrs['HDCP-LEVEL'];\n if (hdcpLevel && hdcpLevel <= maxHdcpLevel) {\n return i;\n }\n }\n }\n return maxAutoLevel;\n }\n get firstAutoLevel() {\n return this.abrController.firstAutoLevel;\n }\n\n /**\n * next automatically selected quality level\n */\n get nextAutoLevel() {\n return this.abrController.nextAutoLevel;\n }\n\n /**\n * this setter is used to force next auto level.\n * this is useful to force a switch down in auto mode:\n * in case of load error on level N, hls.js can set nextAutoLevel to N-1 for example)\n * forced value is valid for one fragment. upon successful frag loading at forced level,\n * this value will be resetted to -1 by ABR controller.\n */\n set nextAutoLevel(nextLevel) {\n this.abrController.nextAutoLevel = nextLevel;\n }\n\n /**\n * get the datetime value relative to media.currentTime for the active level Program Date Time if present\n */\n get playingDate() {\n return this.streamController.currentProgramDateTime;\n }\n get mainForwardBufferInfo() {\n return this.streamController.getMainFwdBufferInfo();\n }\n\n /**\n * Find and select the best matching audio track, making a level switch when a Group change is necessary.\n * Updates `hls.config.audioPreference`. Returns the selected track, or null when no matching track is found.\n */\n setAudioOption(audioOption) {\n var _this$audioTrackContr;\n return (_this$audioTrackContr = this.audioTrackController) == null ? void 0 : _this$audioTrackContr.setAudioOption(audioOption);\n }\n /**\n * Find and select the best matching subtitle track, making a level switch when a Group change is necessary.\n * Updates `hls.config.subtitlePreference`. Returns the selected track, or null when no matching track is found.\n */\n setSubtitleOption(subtitleOption) {\n var _this$subtitleTrackCo;\n (_this$subtitleTrackCo = this.subtitleTrackController) == null ? void 0 : _this$subtitleTrackCo.setSubtitleOption(subtitleOption);\n return null;\n }\n\n /**\n * Get the complete list of audio tracks across all media groups\n */\n get allAudioTracks() {\n const audioTrackController = this.audioTrackController;\n return audioTrackController ? audioTrackController.allAudioTracks : [];\n }\n\n /**\n * Get the list of selectable audio tracks\n */\n get audioTracks() {\n const audioTrackController = this.audioTrackController;\n return audioTrackController ? audioTrackController.audioTracks : [];\n }\n\n /**\n * index of the selected audio track (index in audio track lists)\n */\n get audioTrack() {\n const audioTrackController = this.audioTrackController;\n return audioTrackController ? audioTrackController.audioTrack : -1;\n }\n\n /**\n * selects an audio track, based on its index in audio track lists\n */\n set audioTrack(audioTrackId) {\n const audioTrackController = this.audioTrackController;\n if (audioTrackController) {\n audioTrackController.audioTrack = audioTrackId;\n }\n }\n\n /**\n * get the complete list of subtitle tracks across all media groups\n */\n get allSubtitleTracks() {\n const subtitleTrackController = this.subtitleTrackController;\n return subtitleTrackController ? subtitleTrackController.allSubtitleTracks : [];\n }\n\n /**\n * get alternate subtitle tracks list from playlist\n */\n get subtitleTracks() {\n const subtitleTrackController = this.subtitleTrackController;\n return subtitleTrackController ? subtitleTrackController.subtitleTracks : [];\n }\n\n /**\n * index of the selected subtitle track (index in subtitle track lists)\n */\n get subtitleTrack() {\n const subtitleTrackController = this.subtitleTrackController;\n return subtitleTrackController ? subtitleTrackController.subtitleTrack : -1;\n }\n get media() {\n return this._media;\n }\n\n /**\n * select an subtitle track, based on its index in subtitle track lists\n */\n set subtitleTrack(subtitleTrackId) {\n const subtitleTrackController = this.subtitleTrackController;\n if (subtitleTrackController) {\n subtitleTrackController.subtitleTrack = subtitleTrackId;\n }\n }\n\n /**\n * Whether subtitle display is enabled or not\n */\n get subtitleDisplay() {\n const subtitleTrackController = this.subtitleTrackController;\n return subtitleTrackController ? subtitleTrackController.subtitleDisplay : false;\n }\n\n /**\n * Enable/disable subtitle display rendering\n */\n set subtitleDisplay(value) {\n const subtitleTrackController = this.subtitleTrackController;\n if (subtitleTrackController) {\n subtitleTrackController.subtitleDisplay = value;\n }\n }\n\n /**\n * get mode for Low-Latency HLS loading\n */\n get lowLatencyMode() {\n return this.config.lowLatencyMode;\n }\n\n /**\n * Enable/disable Low-Latency HLS part playlist and segment loading, and start live streams at playlist PART-HOLD-BACK rather than HOLD-BACK.\n */\n set lowLatencyMode(mode) {\n this.config.lowLatencyMode = mode;\n }\n\n /**\n * Position (in seconds) of live sync point (ie edge of live position minus safety delay defined by ```hls.config.liveSyncDuration```)\n * @returns null prior to loading live Playlist\n */\n get liveSyncPosition() {\n return this.latencyController.liveSyncPosition;\n }\n\n /**\n * Estimated position (in seconds) of live edge (ie edge of live playlist plus time sync playlist advanced)\n * @returns 0 before first playlist is loaded\n */\n get latency() {\n return this.latencyController.latency;\n }\n\n /**\n * maximum distance from the edge before the player seeks forward to ```hls.liveSyncPosition```\n * configured using ```liveMaxLatencyDurationCount``` (multiple of target duration) or ```liveMaxLatencyDuration```\n * @returns 0 before first playlist is loaded\n */\n get maxLatency() {\n return this.latencyController.maxLatency;\n }\n\n /**\n * target distance from the edge as calculated by the latency controller\n */\n get targetLatency() {\n return this.latencyController.targetLatency;\n }\n\n /**\n * the rate at which the edge of the current live playlist is advancing or 1 if there is none\n */\n get drift() {\n return this.latencyController.drift;\n }\n\n /**\n * set to true when startLoad is called before MANIFEST_PARSED event\n */\n get forceStartLoad() {\n return this.streamController.forceStartLoad;\n }\n}\nHls.defaultConfig = void 0;\n\nexport { AbrController, AttrList, AudioStreamController, AudioTrackController, BasePlaylistController, BaseSegment, BaseStreamController, BufferController, CMCDController, CapLevelController, ChunkMetadata, ContentSteeringController, DateRange, EMEController, ErrorActionFlags, ErrorController, ErrorDetails, ErrorTypes, Events, FPSController, Fragment, Hls, HlsSkip, HlsUrlParameters, KeySystemFormats, KeySystems, Level, LevelDetails, LevelKey, LoadStats, MetadataSchema, NetworkErrorAction, Part, PlaylistLevelType, SubtitleStreamController, SubtitleTrackController, TimelineController, Hls as default, getMediaSource, isMSESupported, isSupported };\n//# sourceMappingURL=hls.mjs.map\n","import HTMLReactParser from '../lib/index.js';\n\nexport {\n Comment,\n Element,\n ProcessingInstruction,\n Text,\n attributesToProps,\n domToReact,\n htmlToDOM,\n} from '../lib/index.js';\n\nexport default HTMLReactParser.default || HTMLReactParser;\n","/**\n * HTML URL properties.\n *\n * Each key is a property name and each value is a list of tag names it applies\n * to or `null` if it applies to all elements.\n *\n * @type {Record<string, Array<string> | null>}\n */\nexport const urlAttributes = {\n action: ['form'],\n cite: ['blockquote', 'del', 'ins', 'q'],\n data: ['object'],\n formAction: ['button', 'input'],\n href: ['a', 'area', 'base', 'link'],\n icon: ['menuitem'],\n itemId: null,\n manifest: ['html'],\n ping: ['a', 'area'],\n poster: ['video'],\n src: [\n 'audio',\n 'embed',\n 'iframe',\n 'img',\n 'input',\n 'script',\n 'source',\n 'track',\n 'video'\n ]\n}\n","const consoleLogger = {\n type: 'logger',\n log(args) {\n this.output('log', args);\n },\n warn(args) {\n this.output('warn', args);\n },\n error(args) {\n this.output('error', args);\n },\n output(type, args) {\n if (console && console[type]) console[type].apply(console, args);\n }\n};\nclass Logger {\n constructor(concreteLogger) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.init(concreteLogger, options);\n }\n init(concreteLogger) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.prefix = options.prefix || 'i18next:';\n this.logger = concreteLogger || consoleLogger;\n this.options = options;\n this.debug = options.debug;\n }\n log() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return this.forward(args, 'log', '', true);\n }\n warn() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return this.forward(args, 'warn', '', true);\n }\n error() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n return this.forward(args, 'error', '');\n }\n deprecate() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n }\n forward(args, lvl, prefix, debugOnly) {\n if (debugOnly && !this.debug) return null;\n if (typeof args[0] === 'string') args[0] = `${prefix}${this.prefix} ${args[0]}`;\n return this.logger[lvl](args);\n }\n create(moduleName) {\n return new Logger(this.logger, {\n ...{\n prefix: `${this.prefix}:${moduleName}:`\n },\n ...this.options\n });\n }\n clone(options) {\n options = options || this.options;\n options.prefix = options.prefix || this.prefix;\n return new Logger(this.logger, options);\n }\n}\nvar baseLogger = new Logger();\n\nclass EventEmitter {\n constructor() {\n this.observers = {};\n }\n on(events, listener) {\n events.split(' ').forEach(event => {\n this.observers[event] = this.observers[event] || [];\n this.observers[event].push(listener);\n });\n return this;\n }\n off(event, listener) {\n if (!this.observers[event]) return;\n if (!listener) {\n delete this.observers[event];\n return;\n }\n this.observers[event] = this.observers[event].filter(l => l !== listener);\n }\n emit(event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n if (this.observers[event]) {\n const cloned = [].concat(this.observers[event]);\n cloned.forEach(observer => {\n observer(...args);\n });\n }\n if (this.observers['*']) {\n const cloned = [].concat(this.observers['*']);\n cloned.forEach(observer => {\n observer.apply(observer, [event, ...args]);\n });\n }\n }\n}\n\nfunction defer() {\n let res;\n let rej;\n const promise = new Promise((resolve, reject) => {\n res = resolve;\n rej = reject;\n });\n promise.resolve = res;\n promise.reject = rej;\n return promise;\n}\nfunction makeString(object) {\n if (object == null) return '';\n return '' + object;\n}\nfunction copy(a, s, t) {\n a.forEach(m => {\n if (s[m]) t[m] = s[m];\n });\n}\nfunction getLastOfPath(object, path, Empty) {\n function cleanKey(key) {\n return key && key.indexOf('###') > -1 ? key.replace(/###/g, '.') : key;\n }\n function canNotTraverseDeeper() {\n return !object || typeof object === 'string';\n }\n const stack = typeof path !== 'string' ? [].concat(path) : path.split('.');\n while (stack.length > 1) {\n if (canNotTraverseDeeper()) return {};\n const key = cleanKey(stack.shift());\n if (!object[key] && Empty) object[key] = new Empty();\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n object = object[key];\n } else {\n object = {};\n }\n }\n if (canNotTraverseDeeper()) return {};\n return {\n obj: object,\n k: cleanKey(stack.shift())\n };\n}\nfunction setPath(object, path, newValue) {\n const {\n obj,\n k\n } = getLastOfPath(object, path, Object);\n obj[k] = newValue;\n}\nfunction pushPath(object, path, newValue, concat) {\n const {\n obj,\n k\n } = getLastOfPath(object, path, Object);\n obj[k] = obj[k] || [];\n if (concat) obj[k] = obj[k].concat(newValue);\n if (!concat) obj[k].push(newValue);\n}\nfunction getPath(object, path) {\n const {\n obj,\n k\n } = getLastOfPath(object, path);\n if (!obj) return undefined;\n return obj[k];\n}\nfunction getPathWithDefaults(data, defaultData, key) {\n const value = getPath(data, key);\n if (value !== undefined) {\n return value;\n }\n return getPath(defaultData, key);\n}\nfunction deepExtend(target, source, overwrite) {\n for (const prop in source) {\n if (prop !== '__proto__' && prop !== 'constructor') {\n if (prop in target) {\n if (typeof target[prop] === 'string' || target[prop] instanceof String || typeof source[prop] === 'string' || source[prop] instanceof String) {\n if (overwrite) target[prop] = source[prop];\n } else {\n deepExtend(target[prop], source[prop], overwrite);\n }\n } else {\n target[prop] = source[prop];\n }\n }\n }\n return target;\n}\nfunction regexEscape(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\nvar _entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/'\n};\nfunction escape(data) {\n if (typeof data === 'string') {\n return data.replace(/[&<>\"'\\/]/g, s => _entityMap[s]);\n }\n return data;\n}\nconst chars = [' ', ',', '?', '!', ';'];\nfunction looksLikeObjectPath(key, nsSeparator, keySeparator) {\n nsSeparator = nsSeparator || '';\n keySeparator = keySeparator || '';\n const possibleChars = chars.filter(c => nsSeparator.indexOf(c) < 0 && keySeparator.indexOf(c) < 0);\n if (possibleChars.length === 0) return true;\n const r = new RegExp(`(${possibleChars.map(c => c === '?' ? '\\\\?' : c).join('|')})`);\n let matched = !r.test(key);\n if (!matched) {\n const ki = key.indexOf(keySeparator);\n if (ki > 0 && !r.test(key.substring(0, ki))) {\n matched = true;\n }\n }\n return matched;\n}\nfunction deepFind(obj, path) {\n let keySeparator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '.';\n if (!obj) return undefined;\n if (obj[path]) return obj[path];\n const paths = path.split(keySeparator);\n let current = obj;\n for (let i = 0; i < paths.length; ++i) {\n if (!current) return undefined;\n if (typeof current[paths[i]] === 'string' && i + 1 < paths.length) {\n return undefined;\n }\n if (current[paths[i]] === undefined) {\n let j = 2;\n let p = paths.slice(i, i + j).join(keySeparator);\n let mix = current[p];\n while (mix === undefined && paths.length > i + j) {\n j++;\n p = paths.slice(i, i + j).join(keySeparator);\n mix = current[p];\n }\n if (mix === undefined) return undefined;\n if (mix === null) return null;\n if (path.endsWith(p)) {\n if (typeof mix === 'string') return mix;\n if (p && typeof mix[p] === 'string') return mix[p];\n }\n const joinedPath = paths.slice(i + j).join(keySeparator);\n if (joinedPath) return deepFind(mix, joinedPath, keySeparator);\n return undefined;\n }\n current = current[paths[i]];\n }\n return current;\n}\nfunction getCleanedCode(code) {\n if (code && code.indexOf('_') > 0) return code.replace('_', '-');\n return code;\n}\n\nclass ResourceStore extends EventEmitter {\n constructor(data) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n ns: ['translation'],\n defaultNS: 'translation'\n };\n super();\n this.data = data || {};\n this.options = options;\n if (this.options.keySeparator === undefined) {\n this.options.keySeparator = '.';\n }\n if (this.options.ignoreJSONStructure === undefined) {\n this.options.ignoreJSONStructure = true;\n }\n }\n addNamespaces(ns) {\n if (this.options.ns.indexOf(ns) < 0) {\n this.options.ns.push(ns);\n }\n }\n removeNamespaces(ns) {\n const index = this.options.ns.indexOf(ns);\n if (index > -1) {\n this.options.ns.splice(index, 1);\n }\n }\n getResource(lng, ns, key) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n const ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n let path = [lng, ns];\n if (key && typeof key !== 'string') path = path.concat(key);\n if (key && typeof key === 'string') path = path.concat(keySeparator ? key.split(keySeparator) : key);\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n }\n const result = getPath(this.data, path);\n if (result || !ignoreJSONStructure || typeof key !== 'string') return result;\n return deepFind(this.data && this.data[lng] && this.data[lng][ns], key, keySeparator);\n }\n addResource(lng, ns, key, value) {\n let options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n silent: false\n };\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n let path = [lng, ns];\n if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n value = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n setPath(this.data, path, value);\n if (!options.silent) this.emit('added', lng, ns, key, value);\n }\n addResources(lng, ns, resources) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n silent: false\n };\n for (const m in resources) {\n if (typeof resources[m] === 'string' || Object.prototype.toString.apply(resources[m]) === '[object Array]') this.addResource(lng, ns, m, resources[m], {\n silent: true\n });\n }\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n addResourceBundle(lng, ns, resources, deep, overwrite) {\n let options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {\n silent: false\n };\n let path = [lng, ns];\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n deep = resources;\n resources = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n let pack = getPath(this.data, path) || {};\n if (deep) {\n deepExtend(pack, resources, overwrite);\n } else {\n pack = {\n ...pack,\n ...resources\n };\n }\n setPath(this.data, path, pack);\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n removeResourceBundle(lng, ns) {\n if (this.hasResourceBundle(lng, ns)) {\n delete this.data[lng][ns];\n }\n this.removeNamespaces(ns);\n this.emit('removed', lng, ns);\n }\n hasResourceBundle(lng, ns) {\n return this.getResource(lng, ns) !== undefined;\n }\n getResourceBundle(lng, ns) {\n if (!ns) ns = this.options.defaultNS;\n if (this.options.compatibilityAPI === 'v1') return {\n ...{},\n ...this.getResource(lng, ns)\n };\n return this.getResource(lng, ns);\n }\n getDataByLanguage(lng) {\n return this.data[lng];\n }\n hasLanguageSomeTranslations(lng) {\n const data = this.getDataByLanguage(lng);\n const n = data && Object.keys(data) || [];\n return !!n.find(v => data[v] && Object.keys(data[v]).length > 0);\n }\n toJSON() {\n return this.data;\n }\n}\n\nvar postProcessor = {\n processors: {},\n addPostProcessor(module) {\n this.processors[module.name] = module;\n },\n handle(processors, value, key, options, translator) {\n processors.forEach(processor => {\n if (this.processors[processor]) value = this.processors[processor].process(value, key, options, translator);\n });\n return value;\n }\n};\n\nconst checkedLoadedFor = {};\nclass Translator extends EventEmitter {\n constructor(services) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super();\n copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, this);\n this.options = options;\n if (this.options.keySeparator === undefined) {\n this.options.keySeparator = '.';\n }\n this.logger = baseLogger.create('translator');\n }\n changeLanguage(lng) {\n if (lng) this.language = lng;\n }\n exists(key) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n if (key === undefined || key === null) {\n return false;\n }\n const resolved = this.resolve(key, options);\n return resolved && resolved.res !== undefined;\n }\n extractFromKey(key, options) {\n let nsSeparator = options.nsSeparator !== undefined ? options.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n let namespaces = options.ns || this.options.defaultNS || [];\n const wouldCheckForNsInKey = nsSeparator && key.indexOf(nsSeparator) > -1;\n const seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !options.keySeparator && !this.options.userDefinedNsSeparator && !options.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n const m = key.match(this.interpolator.nestingRegexp);\n if (m && m.length > 0) {\n return {\n key,\n namespaces\n };\n }\n const parts = key.split(nsSeparator);\n if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n key = parts.join(keySeparator);\n }\n if (typeof namespaces === 'string') namespaces = [namespaces];\n return {\n key,\n namespaces\n };\n }\n translate(keys, options, lastKey) {\n if (typeof options !== 'object' && this.options.overloadTranslationOptionHandler) {\n options = this.options.overloadTranslationOptionHandler(arguments);\n }\n if (typeof options === 'object') options = {\n ...options\n };\n if (!options) options = {};\n if (keys === undefined || keys === null) return '';\n if (!Array.isArray(keys)) keys = [String(keys)];\n const returnDetails = options.returnDetails !== undefined ? options.returnDetails : this.options.returnDetails;\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n const {\n key,\n namespaces\n } = this.extractFromKey(keys[keys.length - 1], options);\n const namespace = namespaces[namespaces.length - 1];\n const lng = options.lng || this.language;\n const appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n if (lng && lng.toLowerCase() === 'cimode') {\n if (appendNamespaceToCIMode) {\n const nsSeparator = options.nsSeparator || this.options.nsSeparator;\n if (returnDetails) {\n return {\n res: `${namespace}${nsSeparator}${key}`,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace,\n usedParams: this.getUsedParamsDetails(options)\n };\n }\n return `${namespace}${nsSeparator}${key}`;\n }\n if (returnDetails) {\n return {\n res: key,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace,\n usedParams: this.getUsedParamsDetails(options)\n };\n }\n return key;\n }\n const resolved = this.resolve(keys, options);\n let res = resolved && resolved.res;\n const resUsedKey = resolved && resolved.usedKey || key;\n const resExactUsedKey = resolved && resolved.exactUsedKey || key;\n const resType = Object.prototype.toString.apply(res);\n const noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n const joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;\n const handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n const handleAsObject = typeof res !== 'string' && typeof res !== 'boolean' && typeof res !== 'number';\n if (handleAsObjectInI18nFormat && res && handleAsObject && noObject.indexOf(resType) < 0 && !(typeof joinArrays === 'string' && resType === '[object Array]')) {\n if (!options.returnObjects && !this.options.returnObjects) {\n if (!this.options.returnedObjectHandler) {\n this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n }\n const r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, res, {\n ...options,\n ns: namespaces\n }) : `key '${key} (${this.language})' returned an object instead of string.`;\n if (returnDetails) {\n resolved.res = r;\n resolved.usedParams = this.getUsedParamsDetails(options);\n return resolved;\n }\n return r;\n }\n if (keySeparator) {\n const resTypeIsArray = resType === '[object Array]';\n const copy = resTypeIsArray ? [] : {};\n const newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n for (const m in res) {\n if (Object.prototype.hasOwnProperty.call(res, m)) {\n const deepKey = `${newKeyToUse}${keySeparator}${m}`;\n copy[m] = this.translate(deepKey, {\n ...options,\n ...{\n joinArrays: false,\n ns: namespaces\n }\n });\n if (copy[m] === deepKey) copy[m] = res[m];\n }\n }\n res = copy;\n }\n } else if (handleAsObjectInI18nFormat && typeof joinArrays === 'string' && resType === '[object Array]') {\n res = res.join(joinArrays);\n if (res) res = this.extendTranslation(res, keys, options, lastKey);\n } else {\n let usedDefault = false;\n let usedKey = false;\n const needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n const hasDefaultValue = Translator.hasDefaultValue(options);\n const defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, options) : '';\n const defaultValueSuffixOrdinalFallback = options.ordinal && needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, {\n ordinal: false\n }) : '';\n const defaultValue = options[`defaultValue${defaultValueSuffix}`] || options[`defaultValue${defaultValueSuffixOrdinalFallback}`] || options.defaultValue;\n if (!this.isValidLookup(res) && hasDefaultValue) {\n usedDefault = true;\n res = defaultValue;\n }\n if (!this.isValidLookup(res)) {\n usedKey = true;\n res = key;\n }\n const missingKeyNoValueFallbackToKey = options.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n const resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n const updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n if (usedKey || usedDefault || updateMissing) {\n this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n if (keySeparator) {\n const fk = this.resolve(key, {\n ...options,\n keySeparator: false\n });\n if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n }\n let lngs = [];\n const fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);\n if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n for (let i = 0; i < fallbackLngs.length; i++) {\n lngs.push(fallbackLngs[i]);\n }\n } else if (this.options.saveMissingTo === 'all') {\n lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);\n } else {\n lngs.push(options.lng || this.language);\n }\n const send = (l, k, specificDefaultValue) => {\n const defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n if (this.options.missingKeyHandler) {\n this.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, options);\n } else if (this.backendConnector && this.backendConnector.saveMissing) {\n this.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, options);\n }\n this.emit('missingKey', l, namespace, k, res);\n };\n if (this.options.saveMissing) {\n if (this.options.saveMissingPlurals && needsPluralHandling) {\n lngs.forEach(language => {\n this.pluralResolver.getSuffixes(language, options).forEach(suffix => {\n send([language], key + suffix, options[`defaultValue${suffix}`] || defaultValue);\n });\n });\n } else {\n send(lngs, key, defaultValue);\n }\n }\n }\n res = this.extendTranslation(res, keys, options, resolved, lastKey);\n if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = `${namespace}:${key}`;\n if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {\n if (this.options.compatibilityAPI !== 'v1') {\n res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? `${namespace}:${key}` : key, usedDefault ? res : undefined);\n } else {\n res = this.options.parseMissingKeyHandler(res);\n }\n }\n }\n if (returnDetails) {\n resolved.res = res;\n resolved.usedParams = this.getUsedParamsDetails(options);\n return resolved;\n }\n return res;\n }\n extendTranslation(res, key, options, resolved, lastKey) {\n var _this = this;\n if (this.i18nFormat && this.i18nFormat.parse) {\n res = this.i18nFormat.parse(res, {\n ...this.options.interpolation.defaultVariables,\n ...options\n }, options.lng || this.language || resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n resolved\n });\n } else if (!options.skipInterpolation) {\n if (options.interpolation) this.interpolator.init({\n ...options,\n ...{\n interpolation: {\n ...this.options.interpolation,\n ...options.interpolation\n }\n }\n });\n const skipOnVariables = typeof res === 'string' && (options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);\n let nestBef;\n if (skipOnVariables) {\n const nb = res.match(this.interpolator.nestingRegexp);\n nestBef = nb && nb.length;\n }\n let data = options.replace && typeof options.replace !== 'string' ? options.replace : options;\n if (this.options.interpolation.defaultVariables) data = {\n ...this.options.interpolation.defaultVariables,\n ...data\n };\n res = this.interpolator.interpolate(res, data, options.lng || this.language, options);\n if (skipOnVariables) {\n const na = res.match(this.interpolator.nestingRegexp);\n const nestAft = na && na.length;\n if (nestBef < nestAft) options.nest = false;\n }\n if (!options.lng && this.options.compatibilityAPI !== 'v1' && resolved && resolved.res) options.lng = resolved.usedLng;\n if (options.nest !== false) res = this.interpolator.nest(res, function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (lastKey && lastKey[0] === args[0] && !options.context) {\n _this.logger.warn(`It seems you are nesting recursively key: ${args[0]} in key: ${key[0]}`);\n return null;\n }\n return _this.translate(...args, key);\n }, options);\n if (options.interpolation) this.interpolator.reset();\n }\n const postProcess = options.postProcess || this.options.postProcess;\n const postProcessorNames = typeof postProcess === 'string' ? [postProcess] : postProcess;\n if (res !== undefined && res !== null && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) {\n res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? {\n i18nResolved: {\n ...resolved,\n usedParams: this.getUsedParamsDetails(options)\n },\n ...options\n } : options, this);\n }\n return res;\n }\n resolve(keys) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let found;\n let usedKey;\n let exactUsedKey;\n let usedLng;\n let usedNS;\n if (typeof keys === 'string') keys = [keys];\n keys.forEach(k => {\n if (this.isValidLookup(found)) return;\n const extracted = this.extractFromKey(k, options);\n const key = extracted.key;\n usedKey = key;\n let namespaces = extracted.namespaces;\n if (this.options.fallbackNS) namespaces = namespaces.concat(this.options.fallbackNS);\n const needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n const needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0 && this.pluralResolver.shouldUseIntlApi();\n const needsContextHandling = options.context !== undefined && (typeof options.context === 'string' || typeof options.context === 'number') && options.context !== '';\n const codes = options.lngs ? options.lngs : this.languageUtils.toResolveHierarchy(options.lng || this.language, options.fallbackLng);\n namespaces.forEach(ns => {\n if (this.isValidLookup(found)) return;\n usedNS = ns;\n if (!checkedLoadedFor[`${codes[0]}-${ns}`] && this.utils && this.utils.hasLoadedNamespace && !this.utils.hasLoadedNamespace(usedNS)) {\n checkedLoadedFor[`${codes[0]}-${ns}`] = true;\n this.logger.warn(`key \"${usedKey}\" for languages \"${codes.join(', ')}\" won't get resolved as namespace \"${usedNS}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n }\n codes.forEach(code => {\n if (this.isValidLookup(found)) return;\n usedLng = code;\n const finalKeys = [key];\n if (this.i18nFormat && this.i18nFormat.addLookupKeys) {\n this.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);\n } else {\n let pluralSuffix;\n if (needsPluralHandling) pluralSuffix = this.pluralResolver.getSuffix(code, options.count, options);\n const zeroSuffix = `${this.options.pluralSeparator}zero`;\n const ordinalPrefix = `${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;\n if (needsPluralHandling) {\n finalKeys.push(key + pluralSuffix);\n if (options.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {\n finalKeys.push(key + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n }\n if (needsZeroSuffixLookup) {\n finalKeys.push(key + zeroSuffix);\n }\n }\n if (needsContextHandling) {\n const contextKey = `${key}${this.options.contextSeparator}${options.context}`;\n finalKeys.push(contextKey);\n if (needsPluralHandling) {\n finalKeys.push(contextKey + pluralSuffix);\n if (options.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {\n finalKeys.push(contextKey + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n }\n if (needsZeroSuffixLookup) {\n finalKeys.push(contextKey + zeroSuffix);\n }\n }\n }\n }\n let possibleKey;\n while (possibleKey = finalKeys.pop()) {\n if (!this.isValidLookup(found)) {\n exactUsedKey = possibleKey;\n found = this.getResource(code, ns, possibleKey, options);\n }\n }\n });\n });\n });\n return {\n res: found,\n usedKey,\n exactUsedKey,\n usedLng,\n usedNS\n };\n }\n isValidLookup(res) {\n return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n }\n getResource(code, ns, key) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n if (this.i18nFormat && this.i18nFormat.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n return this.resourceStore.getResource(code, ns, key, options);\n }\n getUsedParamsDetails() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const optionsKeys = ['defaultValue', 'ordinal', 'context', 'replace', 'lng', 'lngs', 'fallbackLng', 'ns', 'keySeparator', 'nsSeparator', 'returnObjects', 'returnDetails', 'joinArrays', 'postProcess', 'interpolation'];\n const useOptionsReplaceForData = options.replace && typeof options.replace !== 'string';\n let data = useOptionsReplaceForData ? options.replace : options;\n if (useOptionsReplaceForData && typeof options.count !== 'undefined') {\n data.count = options.count;\n }\n if (this.options.interpolation.defaultVariables) {\n data = {\n ...this.options.interpolation.defaultVariables,\n ...data\n };\n }\n if (!useOptionsReplaceForData) {\n data = {\n ...data\n };\n for (const key of optionsKeys) {\n delete data[key];\n }\n }\n return data;\n }\n static hasDefaultValue(options) {\n const prefix = 'defaultValue';\n for (const option in options) {\n if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n return true;\n }\n }\n return false;\n }\n}\n\nfunction capitalize(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\nclass LanguageUtil {\n constructor(options) {\n this.options = options;\n this.supportedLngs = this.options.supportedLngs || false;\n this.logger = baseLogger.create('languageUtils');\n }\n getScriptPartFromCode(code) {\n code = getCleanedCode(code);\n if (!code || code.indexOf('-') < 0) return null;\n const p = code.split('-');\n if (p.length === 2) return null;\n p.pop();\n if (p[p.length - 1].toLowerCase() === 'x') return null;\n return this.formatLanguageCode(p.join('-'));\n }\n getLanguagePartFromCode(code) {\n code = getCleanedCode(code);\n if (!code || code.indexOf('-') < 0) return code;\n const p = code.split('-');\n return this.formatLanguageCode(p[0]);\n }\n formatLanguageCode(code) {\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n const specialCases = ['hans', 'hant', 'latn', 'cyrl', 'cans', 'mong', 'arab'];\n let p = code.split('-');\n if (this.options.lowerCaseLng) {\n p = p.map(part => part.toLowerCase());\n } else if (p.length === 2) {\n p[0] = p[0].toLowerCase();\n p[1] = p[1].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n } else if (p.length === 3) {\n p[0] = p[0].toLowerCase();\n if (p[1].length === 2) p[1] = p[1].toUpperCase();\n if (p[0] !== 'sgn' && p[2].length === 2) p[2] = p[2].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n if (specialCases.indexOf(p[2].toLowerCase()) > -1) p[2] = capitalize(p[2].toLowerCase());\n }\n return p.join('-');\n }\n return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n }\n isSupportedCode(code) {\n if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n code = this.getLanguagePartFromCode(code);\n }\n return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n }\n getBestMatchFromCodes(codes) {\n if (!codes) return null;\n let found;\n codes.forEach(code => {\n if (found) return;\n const cleanedLng = this.formatLanguageCode(code);\n if (!this.options.supportedLngs || this.isSupportedCode(cleanedLng)) found = cleanedLng;\n });\n if (!found && this.options.supportedLngs) {\n codes.forEach(code => {\n if (found) return;\n const lngOnly = this.getLanguagePartFromCode(code);\n if (this.isSupportedCode(lngOnly)) return found = lngOnly;\n found = this.options.supportedLngs.find(supportedLng => {\n if (supportedLng === lngOnly) return supportedLng;\n if (supportedLng.indexOf('-') < 0 && lngOnly.indexOf('-') < 0) return;\n if (supportedLng.indexOf(lngOnly) === 0) return supportedLng;\n });\n });\n }\n if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n return found;\n }\n getFallbackCodes(fallbacks, code) {\n if (!fallbacks) return [];\n if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n if (typeof fallbacks === 'string') fallbacks = [fallbacks];\n if (Object.prototype.toString.apply(fallbacks) === '[object Array]') return fallbacks;\n if (!code) return fallbacks.default || [];\n let found = fallbacks[code];\n if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n if (!found) found = fallbacks[this.formatLanguageCode(code)];\n if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n if (!found) found = fallbacks.default;\n return found || [];\n }\n toResolveHierarchy(code, fallbackCode) {\n const fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);\n const codes = [];\n const addCode = c => {\n if (!c) return;\n if (this.isSupportedCode(c)) {\n codes.push(c);\n } else {\n this.logger.warn(`rejecting language code not found in supportedLngs: ${c}`);\n }\n };\n if (typeof code === 'string' && (code.indexOf('-') > -1 || code.indexOf('_') > -1)) {\n if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n } else if (typeof code === 'string') {\n addCode(this.formatLanguageCode(code));\n }\n fallbackCodes.forEach(fc => {\n if (codes.indexOf(fc) < 0) addCode(this.formatLanguageCode(fc));\n });\n return codes;\n }\n}\n\nlet sets = [{\n lngs: ['ach', 'ak', 'am', 'arn', 'br', 'fil', 'gun', 'ln', 'mfe', 'mg', 'mi', 'oc', 'pt', 'pt-BR', 'tg', 'tl', 'ti', 'tr', 'uz', 'wa'],\n nr: [1, 2],\n fc: 1\n}, {\n lngs: ['af', 'an', 'ast', 'az', 'bg', 'bn', 'ca', 'da', 'de', 'dev', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fi', 'fo', 'fur', 'fy', 'gl', 'gu', 'ha', 'hi', 'hu', 'hy', 'ia', 'it', 'kk', 'kn', 'ku', 'lb', 'mai', 'ml', 'mn', 'mr', 'nah', 'nap', 'nb', 'ne', 'nl', 'nn', 'no', 'nso', 'pa', 'pap', 'pms', 'ps', 'pt-PT', 'rm', 'sco', 'se', 'si', 'so', 'son', 'sq', 'sv', 'sw', 'ta', 'te', 'tk', 'ur', 'yo'],\n nr: [1, 2],\n fc: 2\n}, {\n lngs: ['ay', 'bo', 'cgg', 'fa', 'ht', 'id', 'ja', 'jbo', 'ka', 'km', 'ko', 'ky', 'lo', 'ms', 'sah', 'su', 'th', 'tt', 'ug', 'vi', 'wo', 'zh'],\n nr: [1],\n fc: 3\n}, {\n lngs: ['be', 'bs', 'cnr', 'dz', 'hr', 'ru', 'sr', 'uk'],\n nr: [1, 2, 5],\n fc: 4\n}, {\n lngs: ['ar'],\n nr: [0, 1, 2, 3, 11, 100],\n fc: 5\n}, {\n lngs: ['cs', 'sk'],\n nr: [1, 2, 5],\n fc: 6\n}, {\n lngs: ['csb', 'pl'],\n nr: [1, 2, 5],\n fc: 7\n}, {\n lngs: ['cy'],\n nr: [1, 2, 3, 8],\n fc: 8\n}, {\n lngs: ['fr'],\n nr: [1, 2],\n fc: 9\n}, {\n lngs: ['ga'],\n nr: [1, 2, 3, 7, 11],\n fc: 10\n}, {\n lngs: ['gd'],\n nr: [1, 2, 3, 20],\n fc: 11\n}, {\n lngs: ['is'],\n nr: [1, 2],\n fc: 12\n}, {\n lngs: ['jv'],\n nr: [0, 1],\n fc: 13\n}, {\n lngs: ['kw'],\n nr: [1, 2, 3, 4],\n fc: 14\n}, {\n lngs: ['lt'],\n nr: [1, 2, 10],\n fc: 15\n}, {\n lngs: ['lv'],\n nr: [1, 2, 0],\n fc: 16\n}, {\n lngs: ['mk'],\n nr: [1, 2],\n fc: 17\n}, {\n lngs: ['mnk'],\n nr: [0, 1, 2],\n fc: 18\n}, {\n lngs: ['mt'],\n nr: [1, 2, 11, 20],\n fc: 19\n}, {\n lngs: ['or'],\n nr: [2, 1],\n fc: 2\n}, {\n lngs: ['ro'],\n nr: [1, 2, 20],\n fc: 20\n}, {\n lngs: ['sl'],\n nr: [5, 1, 2, 3],\n fc: 21\n}, {\n lngs: ['he', 'iw'],\n nr: [1, 2, 20, 21],\n fc: 22\n}];\nlet _rulesPluralsTypes = {\n 1: function (n) {\n return Number(n > 1);\n },\n 2: function (n) {\n return Number(n != 1);\n },\n 3: function (n) {\n return 0;\n },\n 4: function (n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 5: function (n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);\n },\n 6: function (n) {\n return Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2);\n },\n 7: function (n) {\n return Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 8: function (n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3);\n },\n 9: function (n) {\n return Number(n >= 2);\n },\n 10: function (n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);\n },\n 11: function (n) {\n return Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3);\n },\n 12: function (n) {\n return Number(n % 10 != 1 || n % 100 == 11);\n },\n 13: function (n) {\n return Number(n !== 0);\n },\n 14: function (n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3);\n },\n 15: function (n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 16: function (n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2);\n },\n 17: function (n) {\n return Number(n == 1 || n % 10 == 1 && n % 100 != 11 ? 0 : 1);\n },\n 18: function (n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : 2);\n },\n 19: function (n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3);\n },\n 20: function (n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2);\n },\n 21: function (n) {\n return Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0);\n },\n 22: function (n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3);\n }\n};\nconst nonIntlVersions = ['v1', 'v2', 'v3'];\nconst intlVersions = ['v4'];\nconst suffixesOrder = {\n zero: 0,\n one: 1,\n two: 2,\n few: 3,\n many: 4,\n other: 5\n};\nfunction createRules() {\n const rules = {};\n sets.forEach(set => {\n set.lngs.forEach(l => {\n rules[l] = {\n numbers: set.nr,\n plurals: _rulesPluralsTypes[set.fc]\n };\n });\n });\n return rules;\n}\nclass PluralResolver {\n constructor(languageUtils) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.languageUtils = languageUtils;\n this.options = options;\n this.logger = baseLogger.create('pluralResolver');\n if ((!this.options.compatibilityJSON || intlVersions.includes(this.options.compatibilityJSON)) && (typeof Intl === 'undefined' || !Intl.PluralRules)) {\n this.options.compatibilityJSON = 'v3';\n this.logger.error('Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.');\n }\n this.rules = createRules();\n }\n addRule(lng, obj) {\n this.rules[lng] = obj;\n }\n getRule(code) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (this.shouldUseIntlApi()) {\n try {\n return new Intl.PluralRules(getCleanedCode(code), {\n type: options.ordinal ? 'ordinal' : 'cardinal'\n });\n } catch {\n return;\n }\n }\n return this.rules[code] || this.rules[this.languageUtils.getLanguagePartFromCode(code)];\n }\n needsPlural(code) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const rule = this.getRule(code, options);\n if (this.shouldUseIntlApi()) {\n return rule && rule.resolvedOptions().pluralCategories.length > 1;\n }\n return rule && rule.numbers.length > 1;\n }\n getPluralFormsOfKey(code, key) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return this.getSuffixes(code, options).map(suffix => `${key}${suffix}`);\n }\n getSuffixes(code) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const rule = this.getRule(code, options);\n if (!rule) {\n return [];\n }\n if (this.shouldUseIntlApi()) {\n return rule.resolvedOptions().pluralCategories.sort((pluralCategory1, pluralCategory2) => suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2]).map(pluralCategory => `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${pluralCategory}`);\n }\n return rule.numbers.map(number => this.getSuffix(code, number, options));\n }\n getSuffix(code, count) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const rule = this.getRule(code, options);\n if (rule) {\n if (this.shouldUseIntlApi()) {\n return `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${rule.select(count)}`;\n }\n return this.getSuffixRetroCompatible(rule, count);\n }\n this.logger.warn(`no plural rule found for: ${code}`);\n return '';\n }\n getSuffixRetroCompatible(rule, count) {\n const idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));\n let suffix = rule.numbers[idx];\n if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n if (suffix === 2) {\n suffix = 'plural';\n } else if (suffix === 1) {\n suffix = '';\n }\n }\n const returnSuffix = () => this.options.prepend && suffix.toString() ? this.options.prepend + suffix.toString() : suffix.toString();\n if (this.options.compatibilityJSON === 'v1') {\n if (suffix === 1) return '';\n if (typeof suffix === 'number') return `_plural_${suffix.toString()}`;\n return returnSuffix();\n } else if (this.options.compatibilityJSON === 'v2') {\n return returnSuffix();\n } else if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n return returnSuffix();\n }\n return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();\n }\n shouldUseIntlApi() {\n return !nonIntlVersions.includes(this.options.compatibilityJSON);\n }\n}\n\nfunction deepFindWithDefaults(data, defaultData, key) {\n let keySeparator = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '.';\n let ignoreJSONStructure = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n let path = getPathWithDefaults(data, defaultData, key);\n if (!path && ignoreJSONStructure && typeof key === 'string') {\n path = deepFind(data, key, keySeparator);\n if (path === undefined) path = deepFind(defaultData, key, keySeparator);\n }\n return path;\n}\nclass Interpolator {\n constructor() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.logger = baseLogger.create('interpolator');\n this.options = options;\n this.format = options.interpolation && options.interpolation.format || (value => value);\n this.init(options);\n }\n init() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (!options.interpolation) options.interpolation = {\n escapeValue: true\n };\n const iOpts = options.interpolation;\n this.escape = iOpts.escape !== undefined ? iOpts.escape : escape;\n this.escapeValue = iOpts.escapeValue !== undefined ? iOpts.escapeValue : true;\n this.useRawValueToEscape = iOpts.useRawValueToEscape !== undefined ? iOpts.useRawValueToEscape : false;\n this.prefix = iOpts.prefix ? regexEscape(iOpts.prefix) : iOpts.prefixEscaped || '{{';\n this.suffix = iOpts.suffix ? regexEscape(iOpts.suffix) : iOpts.suffixEscaped || '}}';\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n this.unescapePrefix = iOpts.unescapeSuffix ? '' : iOpts.unescapePrefix || '-';\n this.unescapeSuffix = this.unescapePrefix ? '' : iOpts.unescapeSuffix || '';\n this.nestingPrefix = iOpts.nestingPrefix ? regexEscape(iOpts.nestingPrefix) : iOpts.nestingPrefixEscaped || regexEscape('$t(');\n this.nestingSuffix = iOpts.nestingSuffix ? regexEscape(iOpts.nestingSuffix) : iOpts.nestingSuffixEscaped || regexEscape(')');\n this.nestingOptionsSeparator = iOpts.nestingOptionsSeparator ? iOpts.nestingOptionsSeparator : iOpts.nestingOptionsSeparator || ',';\n this.maxReplaces = iOpts.maxReplaces ? iOpts.maxReplaces : 1000;\n this.alwaysFormat = iOpts.alwaysFormat !== undefined ? iOpts.alwaysFormat : false;\n this.resetRegExp();\n }\n reset() {\n if (this.options) this.init(this.options);\n }\n resetRegExp() {\n const regexpStr = `${this.prefix}(.+?)${this.suffix}`;\n this.regexp = new RegExp(regexpStr, 'g');\n const regexpUnescapeStr = `${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`;\n this.regexpUnescape = new RegExp(regexpUnescapeStr, 'g');\n const nestingRegexpStr = `${this.nestingPrefix}(.+?)${this.nestingSuffix}`;\n this.nestingRegexp = new RegExp(nestingRegexpStr, 'g');\n }\n interpolate(str, data, lng, options) {\n let match;\n let value;\n let replaces;\n const defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n function regexSafe(val) {\n return val.replace(/\\$/g, '$$$$');\n }\n const handleFormat = key => {\n if (key.indexOf(this.formatSeparator) < 0) {\n const path = deepFindWithDefaults(data, defaultData, key, this.options.keySeparator, this.options.ignoreJSONStructure);\n return this.alwaysFormat ? this.format(path, undefined, lng, {\n ...options,\n ...data,\n interpolationkey: key\n }) : path;\n }\n const p = key.split(this.formatSeparator);\n const k = p.shift().trim();\n const f = p.join(this.formatSeparator).trim();\n return this.format(deepFindWithDefaults(data, defaultData, k, this.options.keySeparator, this.options.ignoreJSONStructure), f, lng, {\n ...options,\n ...data,\n interpolationkey: k\n });\n };\n this.resetRegExp();\n const missingInterpolationHandler = options && options.missingInterpolationHandler || this.options.missingInterpolationHandler;\n const skipOnVariables = options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;\n const todos = [{\n regex: this.regexpUnescape,\n safeValue: val => regexSafe(val)\n }, {\n regex: this.regexp,\n safeValue: val => this.escapeValue ? regexSafe(this.escape(val)) : regexSafe(val)\n }];\n todos.forEach(todo => {\n replaces = 0;\n while (match = todo.regex.exec(str)) {\n const matchedVar = match[1].trim();\n value = handleFormat(matchedVar);\n if (value === undefined) {\n if (typeof missingInterpolationHandler === 'function') {\n const temp = missingInterpolationHandler(str, match, options);\n value = typeof temp === 'string' ? temp : '';\n } else if (options && Object.prototype.hasOwnProperty.call(options, matchedVar)) {\n value = '';\n } else if (skipOnVariables) {\n value = match[0];\n continue;\n } else {\n this.logger.warn(`missed to pass in variable ${matchedVar} for interpolating ${str}`);\n value = '';\n }\n } else if (typeof value !== 'string' && !this.useRawValueToEscape) {\n value = makeString(value);\n }\n const safeValue = todo.safeValue(value);\n str = str.replace(match[0], safeValue);\n if (skipOnVariables) {\n todo.regex.lastIndex += value.length;\n todo.regex.lastIndex -= match[0].length;\n } else {\n todo.regex.lastIndex = 0;\n }\n replaces++;\n if (replaces >= this.maxReplaces) {\n break;\n }\n }\n });\n return str;\n }\n nest(str, fc) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n let match;\n let value;\n let clonedOptions;\n function handleHasOptions(key, inheritedOptions) {\n const sep = this.nestingOptionsSeparator;\n if (key.indexOf(sep) < 0) return key;\n const c = key.split(new RegExp(`${sep}[ ]*{`));\n let optionsString = `{${c[1]}`;\n key = c[0];\n optionsString = this.interpolate(optionsString, clonedOptions);\n const matchedSingleQuotes = optionsString.match(/'/g);\n const matchedDoubleQuotes = optionsString.match(/\"/g);\n if (matchedSingleQuotes && matchedSingleQuotes.length % 2 === 0 && !matchedDoubleQuotes || matchedDoubleQuotes.length % 2 !== 0) {\n optionsString = optionsString.replace(/'/g, '\"');\n }\n try {\n clonedOptions = JSON.parse(optionsString);\n if (inheritedOptions) clonedOptions = {\n ...inheritedOptions,\n ...clonedOptions\n };\n } catch (e) {\n this.logger.warn(`failed parsing options string in nesting for key ${key}`, e);\n return `${key}${sep}${optionsString}`;\n }\n delete clonedOptions.defaultValue;\n return key;\n }\n while (match = this.nestingRegexp.exec(str)) {\n let formatters = [];\n clonedOptions = {\n ...options\n };\n clonedOptions = clonedOptions.replace && typeof clonedOptions.replace !== 'string' ? clonedOptions.replace : clonedOptions;\n clonedOptions.applyPostProcessor = false;\n delete clonedOptions.defaultValue;\n let doReduce = false;\n if (match[0].indexOf(this.formatSeparator) !== -1 && !/{.*}/.test(match[1])) {\n const r = match[1].split(this.formatSeparator).map(elem => elem.trim());\n match[1] = r.shift();\n formatters = r;\n doReduce = true;\n }\n value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n if (value && match[0] === str && typeof value !== 'string') return value;\n if (typeof value !== 'string') value = makeString(value);\n if (!value) {\n this.logger.warn(`missed to resolve ${match[1]} for nesting ${str}`);\n value = '';\n }\n if (doReduce) {\n value = formatters.reduce((v, f) => this.format(v, f, options.lng, {\n ...options,\n interpolationkey: match[1].trim()\n }), value.trim());\n }\n str = str.replace(match[0], value);\n this.regexp.lastIndex = 0;\n }\n return str;\n }\n}\n\nfunction parseFormatStr(formatStr) {\n let formatName = formatStr.toLowerCase().trim();\n const formatOptions = {};\n if (formatStr.indexOf('(') > -1) {\n const p = formatStr.split('(');\n formatName = p[0].toLowerCase().trim();\n const optStr = p[1].substring(0, p[1].length - 1);\n if (formatName === 'currency' && optStr.indexOf(':') < 0) {\n if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n } else if (formatName === 'relativetime' && optStr.indexOf(':') < 0) {\n if (!formatOptions.range) formatOptions.range = optStr.trim();\n } else {\n const opts = optStr.split(';');\n opts.forEach(opt => {\n if (!opt) return;\n const [key, ...rest] = opt.split(':');\n const val = rest.join(':').trim().replace(/^'+|'+$/g, '');\n if (!formatOptions[key.trim()]) formatOptions[key.trim()] = val;\n if (val === 'false') formatOptions[key.trim()] = false;\n if (val === 'true') formatOptions[key.trim()] = true;\n if (!isNaN(val)) formatOptions[key.trim()] = parseInt(val, 10);\n });\n }\n }\n return {\n formatName,\n formatOptions\n };\n}\nfunction createCachedFormatter(fn) {\n const cache = {};\n return function invokeFormatter(val, lng, options) {\n const key = lng + JSON.stringify(options);\n let formatter = cache[key];\n if (!formatter) {\n formatter = fn(getCleanedCode(lng), options);\n cache[key] = formatter;\n }\n return formatter(val);\n };\n}\nclass Formatter {\n constructor() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.logger = baseLogger.create('formatter');\n this.options = options;\n this.formats = {\n number: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.NumberFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n }),\n currency: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.NumberFormat(lng, {\n ...opt,\n style: 'currency'\n });\n return val => formatter.format(val);\n }),\n datetime: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.DateTimeFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n }),\n relativetime: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.RelativeTimeFormat(lng, {\n ...opt\n });\n return val => formatter.format(val, opt.range || 'day');\n }),\n list: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.ListFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n })\n };\n this.init(options);\n }\n init(services) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n const iOpts = options.interpolation;\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n }\n add(name, fc) {\n this.formats[name.toLowerCase().trim()] = fc;\n }\n addCached(name, fc) {\n this.formats[name.toLowerCase().trim()] = createCachedFormatter(fc);\n }\n format(value, format, lng) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n const formats = format.split(this.formatSeparator);\n const result = formats.reduce((mem, f) => {\n const {\n formatName,\n formatOptions\n } = parseFormatStr(f);\n if (this.formats[formatName]) {\n let formatted = mem;\n try {\n const valOptions = options && options.formatParams && options.formatParams[options.interpolationkey] || {};\n const l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n formatted = this.formats[formatName](mem, l, {\n ...formatOptions,\n ...options,\n ...valOptions\n });\n } catch (error) {\n this.logger.warn(error);\n }\n return formatted;\n } else {\n this.logger.warn(`there was no format function for ${formatName}`);\n }\n return mem;\n }, value);\n return result;\n }\n}\n\nfunction removePending(q, name) {\n if (q.pending[name] !== undefined) {\n delete q.pending[name];\n q.pendingCount--;\n }\n}\nclass Connector extends EventEmitter {\n constructor(backend, store, services) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n super();\n this.backend = backend;\n this.store = store;\n this.services = services;\n this.languageUtils = services.languageUtils;\n this.options = options;\n this.logger = baseLogger.create('backendConnector');\n this.waitingReads = [];\n this.maxParallelReads = options.maxParallelReads || 10;\n this.readingCalls = 0;\n this.maxRetries = options.maxRetries >= 0 ? options.maxRetries : 5;\n this.retryTimeout = options.retryTimeout >= 1 ? options.retryTimeout : 350;\n this.state = {};\n this.queue = [];\n if (this.backend && this.backend.init) {\n this.backend.init(services, options.backend, options);\n }\n }\n queueLoad(languages, namespaces, options, callback) {\n const toLoad = {};\n const pending = {};\n const toLoadLanguages = {};\n const toLoadNamespaces = {};\n languages.forEach(lng => {\n let hasAllNamespaces = true;\n namespaces.forEach(ns => {\n const name = `${lng}|${ns}`;\n if (!options.reload && this.store.hasResourceBundle(lng, ns)) {\n this.state[name] = 2;\n } else if (this.state[name] < 0) ; else if (this.state[name] === 1) {\n if (pending[name] === undefined) pending[name] = true;\n } else {\n this.state[name] = 1;\n hasAllNamespaces = false;\n if (pending[name] === undefined) pending[name] = true;\n if (toLoad[name] === undefined) toLoad[name] = true;\n if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;\n }\n });\n if (!hasAllNamespaces) toLoadLanguages[lng] = true;\n });\n if (Object.keys(toLoad).length || Object.keys(pending).length) {\n this.queue.push({\n pending,\n pendingCount: Object.keys(pending).length,\n loaded: {},\n errors: [],\n callback\n });\n }\n return {\n toLoad: Object.keys(toLoad),\n pending: Object.keys(pending),\n toLoadLanguages: Object.keys(toLoadLanguages),\n toLoadNamespaces: Object.keys(toLoadNamespaces)\n };\n }\n loaded(name, err, data) {\n const s = name.split('|');\n const lng = s[0];\n const ns = s[1];\n if (err) this.emit('failedLoading', lng, ns, err);\n if (data) {\n this.store.addResourceBundle(lng, ns, data);\n }\n this.state[name] = err ? -1 : 2;\n const loaded = {};\n this.queue.forEach(q => {\n pushPath(q.loaded, [lng], ns);\n removePending(q, name);\n if (err) q.errors.push(err);\n if (q.pendingCount === 0 && !q.done) {\n Object.keys(q.loaded).forEach(l => {\n if (!loaded[l]) loaded[l] = {};\n const loadedKeys = q.loaded[l];\n if (loadedKeys.length) {\n loadedKeys.forEach(n => {\n if (loaded[l][n] === undefined) loaded[l][n] = true;\n });\n }\n });\n q.done = true;\n if (q.errors.length) {\n q.callback(q.errors);\n } else {\n q.callback();\n }\n }\n });\n this.emit('loaded', loaded);\n this.queue = this.queue.filter(q => !q.done);\n }\n read(lng, ns, fcName) {\n let tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n let wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : this.retryTimeout;\n let callback = arguments.length > 5 ? arguments[5] : undefined;\n if (!lng.length) return callback(null, {});\n if (this.readingCalls >= this.maxParallelReads) {\n this.waitingReads.push({\n lng,\n ns,\n fcName,\n tried,\n wait,\n callback\n });\n return;\n }\n this.readingCalls++;\n const resolver = (err, data) => {\n this.readingCalls--;\n if (this.waitingReads.length > 0) {\n const next = this.waitingReads.shift();\n this.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);\n }\n if (err && data && tried < this.maxRetries) {\n setTimeout(() => {\n this.read.call(this, lng, ns, fcName, tried + 1, wait * 2, callback);\n }, wait);\n return;\n }\n callback(err, data);\n };\n const fc = this.backend[fcName].bind(this.backend);\n if (fc.length === 2) {\n try {\n const r = fc(lng, ns);\n if (r && typeof r.then === 'function') {\n r.then(data => resolver(null, data)).catch(resolver);\n } else {\n resolver(null, r);\n }\n } catch (err) {\n resolver(err);\n }\n return;\n }\n return fc(lng, ns, resolver);\n }\n prepareLoading(languages, namespaces) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n let callback = arguments.length > 3 ? arguments[3] : undefined;\n if (!this.backend) {\n this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n return callback && callback();\n }\n if (typeof languages === 'string') languages = this.languageUtils.toResolveHierarchy(languages);\n if (typeof namespaces === 'string') namespaces = [namespaces];\n const toLoad = this.queueLoad(languages, namespaces, options, callback);\n if (!toLoad.toLoad.length) {\n if (!toLoad.pending.length) callback();\n return null;\n }\n toLoad.toLoad.forEach(name => {\n this.loadOne(name);\n });\n }\n load(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {}, callback);\n }\n reload(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {\n reload: true\n }, callback);\n }\n loadOne(name) {\n let prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n const s = name.split('|');\n const lng = s[0];\n const ns = s[1];\n this.read(lng, ns, 'read', undefined, undefined, (err, data) => {\n if (err) this.logger.warn(`${prefix}loading namespace ${ns} for language ${lng} failed`, err);\n if (!err && data) this.logger.log(`${prefix}loaded namespace ${ns} for language ${lng}`, data);\n this.loaded(name, err, data);\n });\n }\n saveMissing(languages, namespace, key, fallbackValue, isUpdate) {\n let options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n let clb = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : () => {};\n if (this.services.utils && this.services.utils.hasLoadedNamespace && !this.services.utils.hasLoadedNamespace(namespace)) {\n this.logger.warn(`did not save key \"${key}\" as the namespace \"${namespace}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n return;\n }\n if (key === undefined || key === null || key === '') return;\n if (this.backend && this.backend.create) {\n const opts = {\n ...options,\n isUpdate\n };\n const fc = this.backend.create.bind(this.backend);\n if (fc.length < 6) {\n try {\n let r;\n if (fc.length === 5) {\n r = fc(languages, namespace, key, fallbackValue, opts);\n } else {\n r = fc(languages, namespace, key, fallbackValue);\n }\n if (r && typeof r.then === 'function') {\n r.then(data => clb(null, data)).catch(clb);\n } else {\n clb(null, r);\n }\n } catch (err) {\n clb(err);\n }\n } else {\n fc(languages, namespace, key, fallbackValue, clb, opts);\n }\n }\n if (!languages || !languages[0]) return;\n this.store.addResource(languages[0], namespace, key, fallbackValue);\n }\n}\n\nfunction get() {\n return {\n debug: false,\n initImmediate: true,\n ns: ['translation'],\n defaultNS: ['translation'],\n fallbackLng: ['dev'],\n fallbackNS: false,\n supportedLngs: false,\n nonExplicitSupportedLngs: false,\n load: 'all',\n preload: false,\n simplifyPluralSuffix: true,\n keySeparator: '.',\n nsSeparator: ':',\n pluralSeparator: '_',\n contextSeparator: '_',\n partialBundledLanguages: false,\n saveMissing: false,\n updateMissing: false,\n saveMissingTo: 'fallback',\n saveMissingPlurals: true,\n missingKeyHandler: false,\n missingInterpolationHandler: false,\n postProcess: false,\n postProcessPassResolved: false,\n returnNull: false,\n returnEmptyString: true,\n returnObjects: false,\n joinArrays: false,\n returnedObjectHandler: false,\n parseMissingKeyHandler: false,\n appendNamespaceToMissingKey: false,\n appendNamespaceToCIMode: false,\n overloadTranslationOptionHandler: function handle(args) {\n let ret = {};\n if (typeof args[1] === 'object') ret = args[1];\n if (typeof args[1] === 'string') ret.defaultValue = args[1];\n if (typeof args[2] === 'string') ret.tDescription = args[2];\n if (typeof args[2] === 'object' || typeof args[3] === 'object') {\n const options = args[3] || args[2];\n Object.keys(options).forEach(key => {\n ret[key] = options[key];\n });\n }\n return ret;\n },\n interpolation: {\n escapeValue: true,\n format: (value, format, lng, options) => value,\n prefix: '{{',\n suffix: '}}',\n formatSeparator: ',',\n unescapePrefix: '-',\n nestingPrefix: '$t(',\n nestingSuffix: ')',\n nestingOptionsSeparator: ',',\n maxReplaces: 1000,\n skipOnVariables: true\n }\n };\n}\nfunction transformOptions(options) {\n if (typeof options.ns === 'string') options.ns = [options.ns];\n if (typeof options.fallbackLng === 'string') options.fallbackLng = [options.fallbackLng];\n if (typeof options.fallbackNS === 'string') options.fallbackNS = [options.fallbackNS];\n if (options.supportedLngs && options.supportedLngs.indexOf('cimode') < 0) {\n options.supportedLngs = options.supportedLngs.concat(['cimode']);\n }\n return options;\n}\n\nfunction noop() {}\nfunction bindMemberFunctions(inst) {\n const mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n mems.forEach(mem => {\n if (typeof inst[mem] === 'function') {\n inst[mem] = inst[mem].bind(inst);\n }\n });\n}\nclass I18n extends EventEmitter {\n constructor() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments.length > 1 ? arguments[1] : undefined;\n super();\n this.options = transformOptions(options);\n this.services = {};\n this.logger = baseLogger;\n this.modules = {\n external: []\n };\n bindMemberFunctions(this);\n if (callback && !this.isInitialized && !options.isClone) {\n if (!this.options.initImmediate) {\n this.init(options, callback);\n return this;\n }\n setTimeout(() => {\n this.init(options, callback);\n }, 0);\n }\n }\n init() {\n var _this = this;\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments.length > 1 ? arguments[1] : undefined;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n if (!options.defaultNS && options.defaultNS !== false && options.ns) {\n if (typeof options.ns === 'string') {\n options.defaultNS = options.ns;\n } else if (options.ns.indexOf('translation') < 0) {\n options.defaultNS = options.ns[0];\n }\n }\n const defOpts = get();\n this.options = {\n ...defOpts,\n ...this.options,\n ...transformOptions(options)\n };\n if (this.options.compatibilityAPI !== 'v1') {\n this.options.interpolation = {\n ...defOpts.interpolation,\n ...this.options.interpolation\n };\n }\n if (options.keySeparator !== undefined) {\n this.options.userDefinedKeySeparator = options.keySeparator;\n }\n if (options.nsSeparator !== undefined) {\n this.options.userDefinedNsSeparator = options.nsSeparator;\n }\n function createClassOnDemand(ClassOrObject) {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n }\n if (!this.options.isClone) {\n if (this.modules.logger) {\n baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n } else {\n baseLogger.init(null, this.options);\n }\n let formatter;\n if (this.modules.formatter) {\n formatter = this.modules.formatter;\n } else if (typeof Intl !== 'undefined') {\n formatter = Formatter;\n }\n const lu = new LanguageUtil(this.options);\n this.store = new ResourceStore(this.options.resources, this.options);\n const s = this.services;\n s.logger = baseLogger;\n s.resourceStore = this.store;\n s.languageUtils = lu;\n s.pluralResolver = new PluralResolver(lu, {\n prepend: this.options.pluralSeparator,\n compatibilityJSON: this.options.compatibilityJSON,\n simplifyPluralSuffix: this.options.simplifyPluralSuffix\n });\n if (formatter && (!this.options.interpolation.format || this.options.interpolation.format === defOpts.interpolation.format)) {\n s.formatter = createClassOnDemand(formatter);\n s.formatter.init(s, this.options);\n this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n }\n s.interpolator = new Interpolator(this.options);\n s.utils = {\n hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n };\n s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n s.backendConnector.on('*', function (event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n _this.emit(event, ...args);\n });\n if (this.modules.languageDetector) {\n s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n if (s.languageDetector.init) s.languageDetector.init(s, this.options.detection, this.options);\n }\n if (this.modules.i18nFormat) {\n s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n if (s.i18nFormat.init) s.i18nFormat.init(this);\n }\n this.translator = new Translator(this.services, this.options);\n this.translator.on('*', function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n _this.emit(event, ...args);\n });\n this.modules.external.forEach(m => {\n if (m.init) m.init(this);\n });\n }\n this.format = this.options.interpolation.format;\n if (!callback) callback = noop;\n if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n const codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n }\n if (!this.services.languageDetector && !this.options.lng) {\n this.logger.warn('init: no languageDetector is used and no lng is defined');\n }\n const storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n storeApi.forEach(fcName => {\n this[fcName] = function () {\n return _this.store[fcName](...arguments);\n };\n });\n const storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n storeApiChained.forEach(fcName => {\n this[fcName] = function () {\n _this.store[fcName](...arguments);\n return _this;\n };\n });\n const deferred = defer();\n const load = () => {\n const finish = (err, t) => {\n if (this.isInitialized && !this.initializedStoreOnce) this.logger.warn('init: i18next is already initialized. You should call init just once!');\n this.isInitialized = true;\n if (!this.options.isClone) this.logger.log('initialized', this.options);\n this.emit('initialized', this.options);\n deferred.resolve(t);\n callback(err, t);\n };\n if (this.languages && this.options.compatibilityAPI !== 'v1' && !this.isInitialized) return finish(null, this.t.bind(this));\n this.changeLanguage(this.options.lng, finish);\n };\n if (this.options.resources || !this.options.initImmediate) {\n load();\n } else {\n setTimeout(load, 0);\n }\n return deferred;\n }\n loadResources(language) {\n let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n let usedCallback = callback;\n const usedLng = typeof language === 'string' ? language : this.language;\n if (typeof language === 'function') usedCallback = language;\n if (!this.options.resources || this.options.partialBundledLanguages) {\n if (usedLng && usedLng.toLowerCase() === 'cimode' && (!this.options.preload || this.options.preload.length === 0)) return usedCallback();\n const toLoad = [];\n const append = lng => {\n if (!lng) return;\n if (lng === 'cimode') return;\n const lngs = this.services.languageUtils.toResolveHierarchy(lng);\n lngs.forEach(l => {\n if (l === 'cimode') return;\n if (toLoad.indexOf(l) < 0) toLoad.push(l);\n });\n };\n if (!usedLng) {\n const fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n fallbacks.forEach(l => append(l));\n } else {\n append(usedLng);\n }\n if (this.options.preload) {\n this.options.preload.forEach(l => append(l));\n }\n this.services.backendConnector.load(toLoad, this.options.ns, e => {\n if (!e && !this.resolvedLanguage && this.language) this.setResolvedLanguage(this.language);\n usedCallback(e);\n });\n } else {\n usedCallback(null);\n }\n }\n reloadResources(lngs, ns, callback) {\n const deferred = defer();\n if (!lngs) lngs = this.languages;\n if (!ns) ns = this.options.ns;\n if (!callback) callback = noop;\n this.services.backendConnector.reload(lngs, ns, err => {\n deferred.resolve();\n callback(err);\n });\n return deferred;\n }\n use(module) {\n if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n if (module.type === 'backend') {\n this.modules.backend = module;\n }\n if (module.type === 'logger' || module.log && module.warn && module.error) {\n this.modules.logger = module;\n }\n if (module.type === 'languageDetector') {\n this.modules.languageDetector = module;\n }\n if (module.type === 'i18nFormat') {\n this.modules.i18nFormat = module;\n }\n if (module.type === 'postProcessor') {\n postProcessor.addPostProcessor(module);\n }\n if (module.type === 'formatter') {\n this.modules.formatter = module;\n }\n if (module.type === '3rdParty') {\n this.modules.external.push(module);\n }\n return this;\n }\n setResolvedLanguage(l) {\n if (!l || !this.languages) return;\n if (['cimode', 'dev'].indexOf(l) > -1) return;\n for (let li = 0; li < this.languages.length; li++) {\n const lngInLngs = this.languages[li];\n if (['cimode', 'dev'].indexOf(lngInLngs) > -1) continue;\n if (this.store.hasLanguageSomeTranslations(lngInLngs)) {\n this.resolvedLanguage = lngInLngs;\n break;\n }\n }\n }\n changeLanguage(lng, callback) {\n var _this2 = this;\n this.isLanguageChangingTo = lng;\n const deferred = defer();\n this.emit('languageChanging', lng);\n const setLngProps = l => {\n this.language = l;\n this.languages = this.services.languageUtils.toResolveHierarchy(l);\n this.resolvedLanguage = undefined;\n this.setResolvedLanguage(l);\n };\n const done = (err, l) => {\n if (l) {\n setLngProps(l);\n this.translator.changeLanguage(l);\n this.isLanguageChangingTo = undefined;\n this.emit('languageChanged', l);\n this.logger.log('languageChanged', l);\n } else {\n this.isLanguageChangingTo = undefined;\n }\n deferred.resolve(function () {\n return _this2.t(...arguments);\n });\n if (callback) callback(err, function () {\n return _this2.t(...arguments);\n });\n };\n const setLng = lngs => {\n if (!lng && !lngs && this.services.languageDetector) lngs = [];\n const l = typeof lngs === 'string' ? lngs : this.services.languageUtils.getBestMatchFromCodes(lngs);\n if (l) {\n if (!this.language) {\n setLngProps(l);\n }\n if (!this.translator.language) this.translator.changeLanguage(l);\n if (this.services.languageDetector && this.services.languageDetector.cacheUserLanguage) this.services.languageDetector.cacheUserLanguage(l);\n }\n this.loadResources(l, err => {\n done(err, l);\n });\n };\n if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n setLng(this.services.languageDetector.detect());\n } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n if (this.services.languageDetector.detect.length === 0) {\n this.services.languageDetector.detect().then(setLng);\n } else {\n this.services.languageDetector.detect(setLng);\n }\n } else {\n setLng(lng);\n }\n return deferred;\n }\n getFixedT(lng, ns, keyPrefix) {\n var _this3 = this;\n const fixedT = function (key, opts) {\n let options;\n if (typeof opts !== 'object') {\n for (var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n rest[_key3 - 2] = arguments[_key3];\n }\n options = _this3.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n } else {\n options = {\n ...opts\n };\n }\n options.lng = options.lng || fixedT.lng;\n options.lngs = options.lngs || fixedT.lngs;\n options.ns = options.ns || fixedT.ns;\n options.keyPrefix = options.keyPrefix || keyPrefix || fixedT.keyPrefix;\n const keySeparator = _this3.options.keySeparator || '.';\n let resultKey;\n if (options.keyPrefix && Array.isArray(key)) {\n resultKey = key.map(k => `${options.keyPrefix}${keySeparator}${k}`);\n } else {\n resultKey = options.keyPrefix ? `${options.keyPrefix}${keySeparator}${key}` : key;\n }\n return _this3.t(resultKey, options);\n };\n if (typeof lng === 'string') {\n fixedT.lng = lng;\n } else {\n fixedT.lngs = lng;\n }\n fixedT.ns = ns;\n fixedT.keyPrefix = keyPrefix;\n return fixedT;\n }\n t() {\n return this.translator && this.translator.translate(...arguments);\n }\n exists() {\n return this.translator && this.translator.exists(...arguments);\n }\n setDefaultNamespace(ns) {\n this.options.defaultNS = ns;\n }\n hasLoadedNamespace(ns) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!this.isInitialized) {\n this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n return false;\n }\n if (!this.languages || !this.languages.length) {\n this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n return false;\n }\n const lng = options.lng || this.resolvedLanguage || this.languages[0];\n const fallbackLng = this.options ? this.options.fallbackLng : false;\n const lastLng = this.languages[this.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n const loadNotPending = (l, n) => {\n const loadState = this.services.backendConnector.state[`${l}|${n}`];\n return loadState === -1 || loadState === 2;\n };\n if (options.precheck) {\n const preResult = options.precheck(this, loadNotPending);\n if (preResult !== undefined) return preResult;\n }\n if (this.hasResourceBundle(lng, ns)) return true;\n if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n }\n loadNamespaces(ns, callback) {\n const deferred = defer();\n if (!this.options.ns) {\n if (callback) callback();\n return Promise.resolve();\n }\n if (typeof ns === 'string') ns = [ns];\n ns.forEach(n => {\n if (this.options.ns.indexOf(n) < 0) this.options.ns.push(n);\n });\n this.loadResources(err => {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n loadLanguages(lngs, callback) {\n const deferred = defer();\n if (typeof lngs === 'string') lngs = [lngs];\n const preloaded = this.options.preload || [];\n const newLngs = lngs.filter(lng => preloaded.indexOf(lng) < 0);\n if (!newLngs.length) {\n if (callback) callback();\n return Promise.resolve();\n }\n this.options.preload = preloaded.concat(newLngs);\n this.loadResources(err => {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n dir(lng) {\n if (!lng) lng = this.resolvedLanguage || (this.languages && this.languages.length > 0 ? this.languages[0] : this.language);\n if (!lng) return 'rtl';\n const rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam', 'ckb'];\n const languageUtils = this.services && this.services.languageUtils || new LanguageUtil(get());\n return rtlLngs.indexOf(languageUtils.getLanguagePartFromCode(lng)) > -1 || lng.toLowerCase().indexOf('-arab') > 1 ? 'rtl' : 'ltr';\n }\n static createInstance() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments.length > 1 ? arguments[1] : undefined;\n return new I18n(options, callback);\n }\n cloneInstance() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n const forkResourceStore = options.forkResourceStore;\n if (forkResourceStore) delete options.forkResourceStore;\n const mergedOptions = {\n ...this.options,\n ...options,\n ...{\n isClone: true\n }\n };\n const clone = new I18n(mergedOptions);\n if (options.debug !== undefined || options.prefix !== undefined) {\n clone.logger = clone.logger.clone(options);\n }\n const membersToCopy = ['store', 'services', 'language'];\n membersToCopy.forEach(m => {\n clone[m] = this[m];\n });\n clone.services = {\n ...this.services\n };\n clone.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n if (forkResourceStore) {\n clone.store = new ResourceStore(this.store.data, mergedOptions);\n clone.services.resourceStore = clone.store;\n }\n clone.translator = new Translator(clone.services, mergedOptions);\n clone.translator.on('*', function (event) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n clone.emit(event, ...args);\n });\n clone.init(mergedOptions, callback);\n clone.translator.options = mergedOptions;\n clone.translator.backendConnector.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n return clone;\n }\n toJSON() {\n return {\n options: this.options,\n store: this.store,\n language: this.language,\n languages: this.languages,\n resolvedLanguage: this.resolvedLanguage\n };\n }\n}\nconst instance = I18n.createInstance();\ninstance.createInstance = I18n.createInstance;\n\nconst createInstance = instance.createInstance;\nconst dir = instance.dir;\nconst init = instance.init;\nconst loadResources = instance.loadResources;\nconst reloadResources = instance.reloadResources;\nconst use = instance.use;\nconst changeLanguage = instance.changeLanguage;\nconst getFixedT = instance.getFixedT;\nconst t = instance.t;\nconst exists = instance.exists;\nconst setDefaultNamespace = instance.setDefaultNamespace;\nconst hasLoadedNamespace = instance.hasLoadedNamespace;\nconst loadNamespaces = instance.loadNamespaces;\nconst loadLanguages = instance.loadLanguages;\n\nexport { changeLanguage, createInstance, instance as default, dir, exists, getFixedT, hasLoadedNamespace, init, loadLanguages, loadNamespaces, loadResources, reloadResources, setDefaultNamespace, t, use };\n","const instanceOfAny = (object, constructors) => constructors.some((c) => object instanceof c);\n\nlet idbProxyableTypes;\nlet cursorAdvanceMethods;\n// This is a function to prevent it throwing up in node environments.\nfunction getIdbProxyableTypes() {\n return (idbProxyableTypes ||\n (idbProxyableTypes = [\n IDBDatabase,\n IDBObjectStore,\n IDBIndex,\n IDBCursor,\n IDBTransaction,\n ]));\n}\n// This is a function to prevent it throwing up in node environments.\nfunction getCursorAdvanceMethods() {\n return (cursorAdvanceMethods ||\n (cursorAdvanceMethods = [\n IDBCursor.prototype.advance,\n IDBCursor.prototype.continue,\n IDBCursor.prototype.continuePrimaryKey,\n ]));\n}\nconst cursorRequestMap = new WeakMap();\nconst transactionDoneMap = new WeakMap();\nconst transactionStoreNamesMap = new WeakMap();\nconst transformCache = new WeakMap();\nconst reverseTransformCache = new WeakMap();\nfunction promisifyRequest(request) {\n const promise = new Promise((resolve, reject) => {\n const unlisten = () => {\n request.removeEventListener('success', success);\n request.removeEventListener('error', error);\n };\n const success = () => {\n resolve(wrap(request.result));\n unlisten();\n };\n const error = () => {\n reject(request.error);\n unlisten();\n };\n request.addEventListener('success', success);\n request.addEventListener('error', error);\n });\n promise\n .then((value) => {\n // Since cursoring reuses the IDBRequest (*sigh*), we cache it for later retrieval\n // (see wrapFunction).\n if (value instanceof IDBCursor) {\n cursorRequestMap.set(value, request);\n }\n // Catching to avoid \"Uncaught Promise exceptions\"\n })\n .catch(() => { });\n // This mapping exists in reverseTransformCache but doesn't doesn't exist in transformCache. This\n // is because we create many promises from a single IDBRequest.\n reverseTransformCache.set(promise, request);\n return promise;\n}\nfunction cacheDonePromiseForTransaction(tx) {\n // Early bail if we've already created a done promise for this transaction.\n if (transactionDoneMap.has(tx))\n return;\n const done = new Promise((resolve, reject) => {\n const unlisten = () => {\n tx.removeEventListener('complete', complete);\n tx.removeEventListener('error', error);\n tx.removeEventListener('abort', error);\n };\n const complete = () => {\n resolve();\n unlisten();\n };\n const error = () => {\n reject(tx.error || new DOMException('AbortError', 'AbortError'));\n unlisten();\n };\n tx.addEventListener('complete', complete);\n tx.addEventListener('error', error);\n tx.addEventListener('abort', error);\n });\n // Cache it for later retrieval.\n transactionDoneMap.set(tx, done);\n}\nlet idbProxyTraps = {\n get(target, prop, receiver) {\n if (target instanceof IDBTransaction) {\n // Special handling for transaction.done.\n if (prop === 'done')\n return transactionDoneMap.get(target);\n // Polyfill for objectStoreNames because of Edge.\n if (prop === 'objectStoreNames') {\n return target.objectStoreNames || transactionStoreNamesMap.get(target);\n }\n // Make tx.store return the only store in the transaction, or undefined if there are many.\n if (prop === 'store') {\n return receiver.objectStoreNames[1]\n ? undefined\n : receiver.objectStore(receiver.objectStoreNames[0]);\n }\n }\n // Else transform whatever we get back.\n return wrap(target[prop]);\n },\n set(target, prop, value) {\n target[prop] = value;\n return true;\n },\n has(target, prop) {\n if (target instanceof IDBTransaction &&\n (prop === 'done' || prop === 'store')) {\n return true;\n }\n return prop in target;\n },\n};\nfunction replaceTraps(callback) {\n idbProxyTraps = callback(idbProxyTraps);\n}\nfunction wrapFunction(func) {\n // Due to expected object equality (which is enforced by the caching in `wrap`), we\n // only create one new func per func.\n // Edge doesn't support objectStoreNames (booo), so we polyfill it here.\n if (func === IDBDatabase.prototype.transaction &&\n !('objectStoreNames' in IDBTransaction.prototype)) {\n return function (storeNames, ...args) {\n const tx = func.call(unwrap(this), storeNames, ...args);\n transactionStoreNamesMap.set(tx, storeNames.sort ? storeNames.sort() : [storeNames]);\n return wrap(tx);\n };\n }\n // Cursor methods are special, as the behaviour is a little more different to standard IDB. In\n // IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the\n // cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense\n // with real promises, so each advance methods returns a new promise for the cursor object, or\n // undefined if the end of the cursor has been reached.\n if (getCursorAdvanceMethods().includes(func)) {\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n func.apply(unwrap(this), args);\n return wrap(cursorRequestMap.get(this));\n };\n }\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n return wrap(func.apply(unwrap(this), args));\n };\n}\nfunction transformCachableValue(value) {\n if (typeof value === 'function')\n return wrapFunction(value);\n // This doesn't return, it just creates a 'done' promise for the transaction,\n // which is later returned for transaction.done (see idbObjectHandler).\n if (value instanceof IDBTransaction)\n cacheDonePromiseForTransaction(value);\n if (instanceOfAny(value, getIdbProxyableTypes()))\n return new Proxy(value, idbProxyTraps);\n // Return the same value back if we're not going to transform it.\n return value;\n}\nfunction wrap(value) {\n // We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because\n // IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.\n if (value instanceof IDBRequest)\n return promisifyRequest(value);\n // If we've already transformed this value before, reuse the transformed value.\n // This is faster, but it also provides object equality.\n if (transformCache.has(value))\n return transformCache.get(value);\n const newValue = transformCachableValue(value);\n // Not all types are transformed.\n // These may be primitive types, so they can't be WeakMap keys.\n if (newValue !== value) {\n transformCache.set(value, newValue);\n reverseTransformCache.set(newValue, value);\n }\n return newValue;\n}\nconst unwrap = (value) => reverseTransformCache.get(value);\n\nexport { reverseTransformCache as a, instanceOfAny as i, replaceTraps as r, unwrap as u, wrap as w };\n","import { w as wrap, r as replaceTraps } from './wrap-idb-value.js';\nexport { u as unwrap, w as wrap } from './wrap-idb-value.js';\n\n/**\n * Open a database.\n *\n * @param name Name of the database.\n * @param version Schema version.\n * @param callbacks Additional callbacks.\n */\nfunction openDB(name, version, { blocked, upgrade, blocking, terminated } = {}) {\n const request = indexedDB.open(name, version);\n const openPromise = wrap(request);\n if (upgrade) {\n request.addEventListener('upgradeneeded', (event) => {\n upgrade(wrap(request.result), event.oldVersion, event.newVersion, wrap(request.transaction), event);\n });\n }\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event.newVersion, event));\n }\n openPromise\n .then((db) => {\n if (terminated)\n db.addEventListener('close', () => terminated());\n if (blocking) {\n db.addEventListener('versionchange', (event) => blocking(event.oldVersion, event.newVersion, event));\n }\n })\n .catch(() => { });\n return openPromise;\n}\n/**\n * Delete a database.\n *\n * @param name Name of the database.\n */\nfunction deleteDB(name, { blocked } = {}) {\n const request = indexedDB.deleteDatabase(name);\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event));\n }\n return wrap(request).then(() => undefined);\n}\n\nconst readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];\nconst writeMethods = ['put', 'add', 'delete', 'clear'];\nconst cachedMethods = new Map();\nfunction getMethod(target, prop) {\n if (!(target instanceof IDBDatabase &&\n !(prop in target) &&\n typeof prop === 'string')) {\n return;\n }\n if (cachedMethods.get(prop))\n return cachedMethods.get(prop);\n const targetFuncName = prop.replace(/FromIndex$/, '');\n const useIndex = prop !== targetFuncName;\n const isWrite = writeMethods.includes(targetFuncName);\n if (\n // Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.\n !(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) ||\n !(isWrite || readMethods.includes(targetFuncName))) {\n return;\n }\n const method = async function (storeName, ...args) {\n // isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(\n const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');\n let target = tx.store;\n if (useIndex)\n target = target.index(args.shift());\n // Must reject if op rejects.\n // If it's a write operation, must reject if tx.done rejects.\n // Must reject with op rejection first.\n // Must resolve with op value.\n // Must handle both promises (no unhandled rejections)\n return (await Promise.all([\n target[targetFuncName](...args),\n isWrite && tx.done,\n ]))[0];\n };\n cachedMethods.set(prop, method);\n return method;\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),\n has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop),\n}));\n\nexport { deleteDB, openDB };\n","import digest from '../runtime/digest.js';\nexport const encoder = new TextEncoder();\nexport const decoder = new TextDecoder();\nconst MAX_INT32 = 2 ** 32;\nexport function concat(...buffers) {\n const size = buffers.reduce((acc, { length }) => acc + length, 0);\n const buf = new Uint8Array(size);\n let i = 0;\n for (const buffer of buffers) {\n buf.set(buffer, i);\n i += buffer.length;\n }\n return buf;\n}\nexport function p2s(alg, p2sInput) {\n return concat(encoder.encode(alg), new Uint8Array([0]), p2sInput);\n}\nfunction writeUInt32BE(buf, value, offset) {\n if (value < 0 || value >= MAX_INT32) {\n throw new RangeError(`value must be >= 0 and <= ${MAX_INT32 - 1}. Received ${value}`);\n }\n buf.set([value >>> 24, value >>> 16, value >>> 8, value & 0xff], offset);\n}\nexport function uint64be(value) {\n const high = Math.floor(value / MAX_INT32);\n const low = value % MAX_INT32;\n const buf = new Uint8Array(8);\n writeUInt32BE(buf, high, 0);\n writeUInt32BE(buf, low, 4);\n return buf;\n}\nexport function uint32be(value) {\n const buf = new Uint8Array(4);\n writeUInt32BE(buf, value);\n return buf;\n}\nexport function lengthAndInput(input) {\n return concat(uint32be(input.length), input);\n}\nexport async function concatKdf(secret, bits, value) {\n const iterations = Math.ceil((bits >> 3) / 32);\n const res = new Uint8Array(iterations * 32);\n for (let iter = 0; iter < iterations; iter++) {\n const buf = new Uint8Array(4 + secret.length + value.length);\n buf.set(uint32be(iter + 1));\n buf.set(secret, 4);\n buf.set(value, 4 + secret.length);\n res.set(await digest('sha256', buf), iter * 32);\n }\n return res.slice(0, bits >> 3);\n}\n","import { encoder, decoder } from '../lib/buffer_utils.js';\nexport const encodeBase64 = (input) => {\n let unencoded = input;\n if (typeof unencoded === 'string') {\n unencoded = encoder.encode(unencoded);\n }\n const CHUNK_SIZE = 0x8000;\n const arr = [];\n for (let i = 0; i < unencoded.length; i += CHUNK_SIZE) {\n arr.push(String.fromCharCode.apply(null, unencoded.subarray(i, i + CHUNK_SIZE)));\n }\n return btoa(arr.join(''));\n};\nexport const encode = (input) => {\n return encodeBase64(input).replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n};\nexport const decodeBase64 = (encoded) => {\n const binary = atob(encoded);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes;\n};\nexport const decode = (input) => {\n let encoded = input;\n if (encoded instanceof Uint8Array) {\n encoded = decoder.decode(encoded);\n }\n encoded = encoded.replace(/-/g, '+').replace(/_/g, '/').replace(/\\s/g, '');\n try {\n return decodeBase64(encoded);\n }\n catch {\n throw new TypeError('The input to be decoded is not correctly encoded.');\n }\n};\n","export class JOSEError extends Error {\n constructor(message, options) {\n super(message, options);\n this.code = 'ERR_JOSE_GENERIC';\n this.name = this.constructor.name;\n Error.captureStackTrace?.(this, this.constructor);\n }\n}\nJOSEError.code = 'ERR_JOSE_GENERIC';\nexport class JWTClaimValidationFailed extends JOSEError {\n constructor(message, payload, claim = 'unspecified', reason = 'unspecified') {\n super(message, { cause: { claim, reason, payload } });\n this.code = 'ERR_JWT_CLAIM_VALIDATION_FAILED';\n this.claim = claim;\n this.reason = reason;\n this.payload = payload;\n }\n}\nJWTClaimValidationFailed.code = 'ERR_JWT_CLAIM_VALIDATION_FAILED';\nexport class JWTExpired extends JOSEError {\n constructor(message, payload, claim = 'unspecified', reason = 'unspecified') {\n super(message, { cause: { claim, reason, payload } });\n this.code = 'ERR_JWT_EXPIRED';\n this.claim = claim;\n this.reason = reason;\n this.payload = payload;\n }\n}\nJWTExpired.code = 'ERR_JWT_EXPIRED';\nexport class JOSEAlgNotAllowed extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JOSE_ALG_NOT_ALLOWED';\n }\n}\nJOSEAlgNotAllowed.code = 'ERR_JOSE_ALG_NOT_ALLOWED';\nexport class JOSENotSupported extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JOSE_NOT_SUPPORTED';\n }\n}\nJOSENotSupported.code = 'ERR_JOSE_NOT_SUPPORTED';\nexport class JWEDecryptionFailed extends JOSEError {\n constructor(message = 'decryption operation failed', options) {\n super(message, options);\n this.code = 'ERR_JWE_DECRYPTION_FAILED';\n }\n}\nJWEDecryptionFailed.code = 'ERR_JWE_DECRYPTION_FAILED';\nexport class JWEInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWE_INVALID';\n }\n}\nJWEInvalid.code = 'ERR_JWE_INVALID';\nexport class JWSInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWS_INVALID';\n }\n}\nJWSInvalid.code = 'ERR_JWS_INVALID';\nexport class JWTInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWT_INVALID';\n }\n}\nJWTInvalid.code = 'ERR_JWT_INVALID';\nexport class JWKInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWK_INVALID';\n }\n}\nJWKInvalid.code = 'ERR_JWK_INVALID';\nexport class JWKSInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWKS_INVALID';\n }\n}\nJWKSInvalid.code = 'ERR_JWKS_INVALID';\nexport class JWKSNoMatchingKey extends JOSEError {\n constructor(message = 'no applicable key found in the JSON Web Key Set', options) {\n super(message, options);\n this.code = 'ERR_JWKS_NO_MATCHING_KEY';\n }\n}\nJWKSNoMatchingKey.code = 'ERR_JWKS_NO_MATCHING_KEY';\nexport class JWKSMultipleMatchingKeys extends JOSEError {\n constructor(message = 'multiple matching keys found in the JSON Web Key Set', options) {\n super(message, options);\n this.code = 'ERR_JWKS_MULTIPLE_MATCHING_KEYS';\n }\n}\nSymbol.asyncIterator;\nJWKSMultipleMatchingKeys.code = 'ERR_JWKS_MULTIPLE_MATCHING_KEYS';\nexport class JWKSTimeout extends JOSEError {\n constructor(message = 'request timed out', options) {\n super(message, options);\n this.code = 'ERR_JWKS_TIMEOUT';\n }\n}\nJWKSTimeout.code = 'ERR_JWKS_TIMEOUT';\nexport class JWSSignatureVerificationFailed extends JOSEError {\n constructor(message = 'signature verification failed', options) {\n super(message, options);\n this.code = 'ERR_JWS_SIGNATURE_VERIFICATION_FAILED';\n }\n}\nJWSSignatureVerificationFailed.code = 'ERR_JWS_SIGNATURE_VERIFICATION_FAILED';\n","export default crypto;\nexport const isCryptoKey = (key) => key instanceof CryptoKey;\n","function unusable(name, prop = 'algorithm.name') {\n return new TypeError(`CryptoKey does not support this operation, its ${prop} must be ${name}`);\n}\nfunction isAlgorithm(algorithm, name) {\n return algorithm.name === name;\n}\nfunction getHashLength(hash) {\n return parseInt(hash.name.slice(4), 10);\n}\nfunction getNamedCurve(alg) {\n switch (alg) {\n case 'ES256':\n return 'P-256';\n case 'ES384':\n return 'P-384';\n case 'ES512':\n return 'P-521';\n default:\n throw new Error('unreachable');\n }\n}\nfunction checkUsage(key, usages) {\n if (usages.length && !usages.some((expected) => key.usages.includes(expected))) {\n let msg = 'CryptoKey does not support this operation, its usages must include ';\n if (usages.length > 2) {\n const last = usages.pop();\n msg += `one of ${usages.join(', ')}, or ${last}.`;\n }\n else if (usages.length === 2) {\n msg += `one of ${usages[0]} or ${usages[1]}.`;\n }\n else {\n msg += `${usages[0]}.`;\n }\n throw new TypeError(msg);\n }\n}\nexport function checkSigCryptoKey(key, alg, ...usages) {\n switch (alg) {\n case 'HS256':\n case 'HS384':\n case 'HS512': {\n if (!isAlgorithm(key.algorithm, 'HMAC'))\n throw unusable('HMAC');\n const expected = parseInt(alg.slice(2), 10);\n const actual = getHashLength(key.algorithm.hash);\n if (actual !== expected)\n throw unusable(`SHA-${expected}`, 'algorithm.hash');\n break;\n }\n case 'RS256':\n case 'RS384':\n case 'RS512': {\n if (!isAlgorithm(key.algorithm, 'RSASSA-PKCS1-v1_5'))\n throw unusable('RSASSA-PKCS1-v1_5');\n const expected = parseInt(alg.slice(2), 10);\n const actual = getHashLength(key.algorithm.hash);\n if (actual !== expected)\n throw unusable(`SHA-${expected}`, 'algorithm.hash');\n break;\n }\n case 'PS256':\n case 'PS384':\n case 'PS512': {\n if (!isAlgorithm(key.algorithm, 'RSA-PSS'))\n throw unusable('RSA-PSS');\n const expected = parseInt(alg.slice(2), 10);\n const actual = getHashLength(key.algorithm.hash);\n if (actual !== expected)\n throw unusable(`SHA-${expected}`, 'algorithm.hash');\n break;\n }\n case 'EdDSA': {\n if (key.algorithm.name !== 'Ed25519' && key.algorithm.name !== 'Ed448') {\n throw unusable('Ed25519 or Ed448');\n }\n break;\n }\n case 'ES256':\n case 'ES384':\n case 'ES512': {\n if (!isAlgorithm(key.algorithm, 'ECDSA'))\n throw unusable('ECDSA');\n const expected = getNamedCurve(alg);\n const actual = key.algorithm.namedCurve;\n if (actual !== expected)\n throw unusable(expected, 'algorithm.namedCurve');\n break;\n }\n default:\n throw new TypeError('CryptoKey does not support this operation');\n }\n checkUsage(key, usages);\n}\nexport function checkEncCryptoKey(key, alg, ...usages) {\n switch (alg) {\n case 'A128GCM':\n case 'A192GCM':\n case 'A256GCM': {\n if (!isAlgorithm(key.algorithm, 'AES-GCM'))\n throw unusable('AES-GCM');\n const expected = parseInt(alg.slice(1, 4), 10);\n const actual = key.algorithm.length;\n if (actual !== expected)\n throw unusable(expected, 'algorithm.length');\n break;\n }\n case 'A128KW':\n case 'A192KW':\n case 'A256KW': {\n if (!isAlgorithm(key.algorithm, 'AES-KW'))\n throw unusable('AES-KW');\n const expected = parseInt(alg.slice(1, 4), 10);\n const actual = key.algorithm.length;\n if (actual !== expected)\n throw unusable(expected, 'algorithm.length');\n break;\n }\n case 'ECDH': {\n switch (key.algorithm.name) {\n case 'ECDH':\n case 'X25519':\n case 'X448':\n break;\n default:\n throw unusable('ECDH, X25519, or X448');\n }\n break;\n }\n case 'PBES2-HS256+A128KW':\n case 'PBES2-HS384+A192KW':\n case 'PBES2-HS512+A256KW':\n if (!isAlgorithm(key.algorithm, 'PBKDF2'))\n throw unusable('PBKDF2');\n break;\n case 'RSA-OAEP':\n case 'RSA-OAEP-256':\n case 'RSA-OAEP-384':\n case 'RSA-OAEP-512': {\n if (!isAlgorithm(key.algorithm, 'RSA-OAEP'))\n throw unusable('RSA-OAEP');\n const expected = parseInt(alg.slice(9), 10) || 1;\n const actual = getHashLength(key.algorithm.hash);\n if (actual !== expected)\n throw unusable(`SHA-${expected}`, 'algorithm.hash');\n break;\n }\n default:\n throw new TypeError('CryptoKey does not support this operation');\n }\n checkUsage(key, usages);\n}\n","function message(msg, actual, ...types) {\n types = types.filter(Boolean);\n if (types.length > 2) {\n const last = types.pop();\n msg += `one of type ${types.join(', ')}, or ${last}.`;\n }\n else if (types.length === 2) {\n msg += `one of type ${types[0]} or ${types[1]}.`;\n }\n else {\n msg += `of type ${types[0]}.`;\n }\n if (actual == null) {\n msg += ` Received ${actual}`;\n }\n else if (typeof actual === 'function' && actual.name) {\n msg += ` Received function ${actual.name}`;\n }\n else if (typeof actual === 'object' && actual != null) {\n if (actual.constructor?.name) {\n msg += ` Received an instance of ${actual.constructor.name}`;\n }\n }\n return msg;\n}\nexport default (actual, ...types) => {\n return message('Key must be ', actual, ...types);\n};\nexport function withAlg(alg, actual, ...types) {\n return message(`Key for the ${alg} algorithm must be `, actual, ...types);\n}\n","import { isCryptoKey } from './webcrypto.js';\nexport default (key) => {\n if (isCryptoKey(key)) {\n return true;\n }\n return key?.[Symbol.toStringTag] === 'KeyObject';\n};\nexport const types = ['CryptoKey'];\n","function isObjectLike(value) {\n return typeof value === 'object' && value !== null;\n}\nexport default function isObject(input) {\n if (!isObjectLike(input) || Object.prototype.toString.call(input) !== '[object Object]') {\n return false;\n }\n if (Object.getPrototypeOf(input) === null) {\n return true;\n }\n let proto = input;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(input) === proto;\n}\n","import isObject from './is_object.js';\nexport function isJWK(key) {\n return isObject(key) && typeof key.kty === 'string';\n}\nexport function isPrivateJWK(key) {\n return key.kty !== 'oct' && typeof key.d === 'string';\n}\nexport function isPublicJWK(key) {\n return key.kty !== 'oct' && typeof key.d === 'undefined';\n}\nexport function isSecretJWK(key) {\n return isJWK(key) && key.kty === 'oct' && typeof key.k === 'string';\n}\n","import crypto from './webcrypto.js';\nimport { JOSENotSupported } from '../util/errors.js';\nfunction subtleMapping(jwk) {\n let algorithm;\n let keyUsages;\n switch (jwk.kty) {\n case 'RSA': {\n switch (jwk.alg) {\n case 'PS256':\n case 'PS384':\n case 'PS512':\n algorithm = { name: 'RSA-PSS', hash: `SHA-${jwk.alg.slice(-3)}` };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'RS256':\n case 'RS384':\n case 'RS512':\n algorithm = { name: 'RSASSA-PKCS1-v1_5', hash: `SHA-${jwk.alg.slice(-3)}` };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'RSA-OAEP':\n case 'RSA-OAEP-256':\n case 'RSA-OAEP-384':\n case 'RSA-OAEP-512':\n algorithm = {\n name: 'RSA-OAEP',\n hash: `SHA-${parseInt(jwk.alg.slice(-3), 10) || 1}`,\n };\n keyUsages = jwk.d ? ['decrypt', 'unwrapKey'] : ['encrypt', 'wrapKey'];\n break;\n default:\n throw new JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n }\n break;\n }\n case 'EC': {\n switch (jwk.alg) {\n case 'ES256':\n algorithm = { name: 'ECDSA', namedCurve: 'P-256' };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'ES384':\n algorithm = { name: 'ECDSA', namedCurve: 'P-384' };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'ES512':\n algorithm = { name: 'ECDSA', namedCurve: 'P-521' };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'ECDH-ES':\n case 'ECDH-ES+A128KW':\n case 'ECDH-ES+A192KW':\n case 'ECDH-ES+A256KW':\n algorithm = { name: 'ECDH', namedCurve: jwk.crv };\n keyUsages = jwk.d ? ['deriveBits'] : [];\n break;\n default:\n throw new JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n }\n break;\n }\n case 'OKP': {\n switch (jwk.alg) {\n case 'EdDSA':\n algorithm = { name: jwk.crv };\n keyUsages = jwk.d ? ['sign'] : ['verify'];\n break;\n case 'ECDH-ES':\n case 'ECDH-ES+A128KW':\n case 'ECDH-ES+A192KW':\n case 'ECDH-ES+A256KW':\n algorithm = { name: jwk.crv };\n keyUsages = jwk.d ? ['deriveBits'] : [];\n break;\n default:\n throw new JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n }\n break;\n }\n default:\n throw new JOSENotSupported('Invalid or unsupported JWK \"kty\" (Key Type) Parameter value');\n }\n return { algorithm, keyUsages };\n}\nconst parse = async (jwk) => {\n if (!jwk.alg) {\n throw new TypeError('\"alg\" argument is required when \"jwk.alg\" is not present');\n }\n const { algorithm, keyUsages } = subtleMapping(jwk);\n const rest = [\n algorithm,\n jwk.ext ?? false,\n jwk.key_ops ?? keyUsages,\n ];\n const keyData = { ...jwk };\n delete keyData.alg;\n delete keyData.use;\n return crypto.subtle.importKey('jwk', keyData, ...rest);\n};\nexport default parse;\n","import { isJWK } from '../lib/is_jwk.js';\nimport { decode } from './base64url.js';\nimport importJWK from './jwk_to_key.js';\nconst exportKeyValue = (k) => decode(k);\nlet privCache;\nlet pubCache;\nconst isKeyObject = (key) => {\n return key?.[Symbol.toStringTag] === 'KeyObject';\n};\nconst importAndCache = async (cache, key, jwk, alg, freeze = false) => {\n let cached = cache.get(key);\n if (cached?.[alg]) {\n return cached[alg];\n }\n const cryptoKey = await importJWK({ ...jwk, alg });\n if (freeze)\n Object.freeze(key);\n if (!cached) {\n cache.set(key, { [alg]: cryptoKey });\n }\n else {\n cached[alg] = cryptoKey;\n }\n return cryptoKey;\n};\nconst normalizePublicKey = (key, alg) => {\n if (isKeyObject(key)) {\n let jwk = key.export({ format: 'jwk' });\n delete jwk.d;\n delete jwk.dp;\n delete jwk.dq;\n delete jwk.p;\n delete jwk.q;\n delete jwk.qi;\n if (jwk.k) {\n return exportKeyValue(jwk.k);\n }\n pubCache || (pubCache = new WeakMap());\n return importAndCache(pubCache, key, jwk, alg);\n }\n if (isJWK(key)) {\n if (key.k)\n return decode(key.k);\n pubCache || (pubCache = new WeakMap());\n const cryptoKey = importAndCache(pubCache, key, key, alg, true);\n return cryptoKey;\n }\n return key;\n};\nconst normalizePrivateKey = (key, alg) => {\n if (isKeyObject(key)) {\n let jwk = key.export({ format: 'jwk' });\n if (jwk.k) {\n return exportKeyValue(jwk.k);\n }\n privCache || (privCache = new WeakMap());\n return importAndCache(privCache, key, jwk, alg);\n }\n if (isJWK(key)) {\n if (key.k)\n return decode(key.k);\n privCache || (privCache = new WeakMap());\n const cryptoKey = importAndCache(privCache, key, key, alg, true);\n return cryptoKey;\n }\n return key;\n};\nexport default { normalizePublicKey, normalizePrivateKey };\n","import subtleAlgorithm from './subtle_dsa.js';\nimport crypto from './webcrypto.js';\nimport checkKeyLength from './check_key_length.js';\nimport getSignKey from './get_sign_verify_key.js';\nconst sign = async (alg, key, data) => {\n const cryptoKey = await getSignKey(alg, key, 'sign');\n checkKeyLength(alg, cryptoKey);\n const signature = await crypto.subtle.sign(subtleAlgorithm(alg, cryptoKey.algorithm), cryptoKey, data);\n return new Uint8Array(signature);\n};\nexport default sign;\n","import crypto, { isCryptoKey } from './webcrypto.js';\nimport { checkSigCryptoKey } from '../lib/crypto_key.js';\nimport invalidKeyInput from '../lib/invalid_key_input.js';\nimport { types } from './is_key_like.js';\nimport normalize from './normalize_key.js';\nexport default async function getCryptoKey(alg, key, usage) {\n if (usage === 'sign') {\n key = await normalize.normalizePrivateKey(key, alg);\n }\n if (usage === 'verify') {\n key = await normalize.normalizePublicKey(key, alg);\n }\n if (isCryptoKey(key)) {\n checkSigCryptoKey(key, alg, usage);\n return key;\n }\n if (key instanceof Uint8Array) {\n if (!alg.startsWith('HS')) {\n throw new TypeError(invalidKeyInput(key, ...types));\n }\n return crypto.subtle.importKey('raw', key, { hash: `SHA-${alg.slice(-3)}`, name: 'HMAC' }, false, [usage]);\n }\n throw new TypeError(invalidKeyInput(key, ...types, 'Uint8Array', 'JSON Web Key'));\n}\n","export default (alg, key) => {\n if (alg.startsWith('RS') || alg.startsWith('PS')) {\n const { modulusLength } = key.algorithm;\n if (typeof modulusLength !== 'number' || modulusLength < 2048) {\n throw new TypeError(`${alg} requires key modulusLength to be 2048 bits or larger`);\n }\n }\n};\n","import { JOSENotSupported } from '../util/errors.js';\nexport default function subtleDsa(alg, algorithm) {\n const hash = `SHA-${alg.slice(-3)}`;\n switch (alg) {\n case 'HS256':\n case 'HS384':\n case 'HS512':\n return { hash, name: 'HMAC' };\n case 'PS256':\n case 'PS384':\n case 'PS512':\n return { hash, name: 'RSA-PSS', saltLength: alg.slice(-3) >> 3 };\n case 'RS256':\n case 'RS384':\n case 'RS512':\n return { hash, name: 'RSASSA-PKCS1-v1_5' };\n case 'ES256':\n case 'ES384':\n case 'ES512':\n return { hash, name: 'ECDSA', namedCurve: algorithm.namedCurve };\n case 'EdDSA':\n return { name: algorithm.name };\n default:\n throw new JOSENotSupported(`alg ${alg} is not supported either by JOSE or your javascript runtime`);\n }\n}\n","const isDisjoint = (...headers) => {\n const sources = headers.filter(Boolean);\n if (sources.length === 0 || sources.length === 1) {\n return true;\n }\n let acc;\n for (const header of sources) {\n const parameters = Object.keys(header);\n if (!acc || acc.size === 0) {\n acc = new Set(parameters);\n continue;\n }\n for (const parameter of parameters) {\n if (acc.has(parameter)) {\n return false;\n }\n acc.add(parameter);\n }\n }\n return true;\n};\nexport default isDisjoint;\n","import { withAlg as invalidKeyInput } from './invalid_key_input.js';\nimport isKeyLike, { types } from '../runtime/is_key_like.js';\nimport * as jwk from './is_jwk.js';\nconst tag = (key) => key?.[Symbol.toStringTag];\nconst jwkMatchesOp = (alg, key, usage) => {\n if (key.use !== undefined && key.use !== 'sig') {\n throw new TypeError('Invalid key for this operation, when present its use must be sig');\n }\n if (key.key_ops !== undefined && key.key_ops.includes?.(usage) !== true) {\n throw new TypeError(`Invalid key for this operation, when present its key_ops must include ${usage}`);\n }\n if (key.alg !== undefined && key.alg !== alg) {\n throw new TypeError(`Invalid key for this operation, when present its alg must be ${alg}`);\n }\n return true;\n};\nconst symmetricTypeCheck = (alg, key, usage, allowJwk) => {\n if (key instanceof Uint8Array)\n return;\n if (allowJwk && jwk.isJWK(key)) {\n if (jwk.isSecretJWK(key) && jwkMatchesOp(alg, key, usage))\n return;\n throw new TypeError(`JSON Web Key for symmetric algorithms must have JWK \"kty\" (Key Type) equal to \"oct\" and the JWK \"k\" (Key Value) present`);\n }\n if (!isKeyLike(key)) {\n throw new TypeError(invalidKeyInput(alg, key, ...types, 'Uint8Array', allowJwk ? 'JSON Web Key' : null));\n }\n if (key.type !== 'secret') {\n throw new TypeError(`${tag(key)} instances for symmetric algorithms must be of type \"secret\"`);\n }\n};\nconst asymmetricTypeCheck = (alg, key, usage, allowJwk) => {\n if (allowJwk && jwk.isJWK(key)) {\n switch (usage) {\n case 'sign':\n if (jwk.isPrivateJWK(key) && jwkMatchesOp(alg, key, usage))\n return;\n throw new TypeError(`JSON Web Key for this operation be a private JWK`);\n case 'verify':\n if (jwk.isPublicJWK(key) && jwkMatchesOp(alg, key, usage))\n return;\n throw new TypeError(`JSON Web Key for this operation be a public JWK`);\n }\n }\n if (!isKeyLike(key)) {\n throw new TypeError(invalidKeyInput(alg, key, ...types, allowJwk ? 'JSON Web Key' : null));\n }\n if (key.type === 'secret') {\n throw new TypeError(`${tag(key)} instances for asymmetric algorithms must not be of type \"secret\"`);\n }\n if (usage === 'sign' && key.type === 'public') {\n throw new TypeError(`${tag(key)} instances for asymmetric algorithm signing must be of type \"private\"`);\n }\n if (usage === 'decrypt' && key.type === 'public') {\n throw new TypeError(`${tag(key)} instances for asymmetric algorithm decryption must be of type \"private\"`);\n }\n if (key.algorithm && usage === 'verify' && key.type === 'private') {\n throw new TypeError(`${tag(key)} instances for asymmetric algorithm verifying must be of type \"public\"`);\n }\n if (key.algorithm && usage === 'encrypt' && key.type === 'private') {\n throw new TypeError(`${tag(key)} instances for asymmetric algorithm encryption must be of type \"public\"`);\n }\n};\nfunction checkKeyType(allowJwk, alg, key, usage) {\n const symmetric = alg.startsWith('HS') ||\n alg === 'dir' ||\n alg.startsWith('PBES2') ||\n /^A\\d{3}(?:GCM)?KW$/.test(alg);\n if (symmetric) {\n symmetricTypeCheck(alg, key, usage, allowJwk);\n }\n else {\n asymmetricTypeCheck(alg, key, usage, allowJwk);\n }\n}\nexport default checkKeyType.bind(undefined, false);\nexport const checkKeyTypeWithJwk = checkKeyType.bind(undefined, true);\n","import { JOSENotSupported } from '../util/errors.js';\nfunction validateCrit(Err, recognizedDefault, recognizedOption, protectedHeader, joseHeader) {\n if (joseHeader.crit !== undefined && protectedHeader?.crit === undefined) {\n throw new Err('\"crit\" (Critical) Header Parameter MUST be integrity protected');\n }\n if (!protectedHeader || protectedHeader.crit === undefined) {\n return new Set();\n }\n if (!Array.isArray(protectedHeader.crit) ||\n protectedHeader.crit.length === 0 ||\n protectedHeader.crit.some((input) => typeof input !== 'string' || input.length === 0)) {\n throw new Err('\"crit\" (Critical) Header Parameter MUST be an array of non-empty strings when present');\n }\n let recognized;\n if (recognizedOption !== undefined) {\n recognized = new Map([...Object.entries(recognizedOption), ...recognizedDefault.entries()]);\n }\n else {\n recognized = recognizedDefault;\n }\n for (const parameter of protectedHeader.crit) {\n if (!recognized.has(parameter)) {\n throw new JOSENotSupported(`Extension Header Parameter \"${parameter}\" is not recognized`);\n }\n if (joseHeader[parameter] === undefined) {\n throw new Err(`Extension Header Parameter \"${parameter}\" is missing`);\n }\n if (recognized.get(parameter) && protectedHeader[parameter] === undefined) {\n throw new Err(`Extension Header Parameter \"${parameter}\" MUST be integrity protected`);\n }\n }\n return new Set(protectedHeader.crit);\n}\nexport default validateCrit;\n","import { encode as base64url } from '../../runtime/base64url.js';\nimport sign from '../../runtime/sign.js';\nimport isDisjoint from '../../lib/is_disjoint.js';\nimport { JWSInvalid } from '../../util/errors.js';\nimport { encoder, decoder, concat } from '../../lib/buffer_utils.js';\nimport { checkKeyTypeWithJwk } from '../../lib/check_key_type.js';\nimport validateCrit from '../../lib/validate_crit.js';\nexport class FlattenedSign {\n constructor(payload) {\n if (!(payload instanceof Uint8Array)) {\n throw new TypeError('payload must be an instance of Uint8Array');\n }\n this._payload = payload;\n }\n setProtectedHeader(protectedHeader) {\n if (this._protectedHeader) {\n throw new TypeError('setProtectedHeader can only be called once');\n }\n this._protectedHeader = protectedHeader;\n return this;\n }\n setUnprotectedHeader(unprotectedHeader) {\n if (this._unprotectedHeader) {\n throw new TypeError('setUnprotectedHeader can only be called once');\n }\n this._unprotectedHeader = unprotectedHeader;\n return this;\n }\n async sign(key, options) {\n if (!this._protectedHeader && !this._unprotectedHeader) {\n throw new JWSInvalid('either setProtectedHeader or setUnprotectedHeader must be called before #sign()');\n }\n if (!isDisjoint(this._protectedHeader, this._unprotectedHeader)) {\n throw new JWSInvalid('JWS Protected and JWS Unprotected Header Parameter names must be disjoint');\n }\n const joseHeader = {\n ...this._protectedHeader,\n ...this._unprotectedHeader,\n };\n const extensions = validateCrit(JWSInvalid, new Map([['b64', true]]), options?.crit, this._protectedHeader, joseHeader);\n let b64 = true;\n if (extensions.has('b64')) {\n b64 = this._protectedHeader.b64;\n if (typeof b64 !== 'boolean') {\n throw new JWSInvalid('The \"b64\" (base64url-encode payload) Header Parameter must be a boolean');\n }\n }\n const { alg } = joseHeader;\n if (typeof alg !== 'string' || !alg) {\n throw new JWSInvalid('JWS \"alg\" (Algorithm) Header Parameter missing or invalid');\n }\n checkKeyTypeWithJwk(alg, key, 'sign');\n let payload = this._payload;\n if (b64) {\n payload = encoder.encode(base64url(payload));\n }\n let protectedHeader;\n if (this._protectedHeader) {\n protectedHeader = encoder.encode(base64url(JSON.stringify(this._protectedHeader)));\n }\n else {\n protectedHeader = encoder.encode('');\n }\n const data = concat(protectedHeader, encoder.encode('.'), payload);\n const signature = await sign(alg, key, data);\n const jws = {\n signature: base64url(signature),\n payload: '',\n };\n if (b64) {\n jws.payload = decoder.decode(payload);\n }\n if (this._unprotectedHeader) {\n jws.header = this._unprotectedHeader;\n }\n if (this._protectedHeader) {\n jws.protected = decoder.decode(protectedHeader);\n }\n return jws;\n }\n}\n","import { FlattenedSign } from '../flattened/sign.js';\nexport class CompactSign {\n constructor(payload) {\n this._flattened = new FlattenedSign(payload);\n }\n setProtectedHeader(protectedHeader) {\n this._flattened.setProtectedHeader(protectedHeader);\n return this;\n }\n async sign(key, options) {\n const jws = await this._flattened.sign(key, options);\n if (jws.payload === undefined) {\n throw new TypeError('use the flattened module for creating JWS with b64: false');\n }\n return `${jws.protected}.${jws.payload}.${jws.signature}`;\n }\n}\n","export default (date) => Math.floor(date.getTime() / 1000);\n","const minute = 60;\nconst hour = minute * 60;\nconst day = hour * 24;\nconst week = day * 7;\nconst year = day * 365.25;\nconst REGEX = /^(\\+|\\-)? ?(\\d+|\\d+\\.\\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)(?: (ago|from now))?$/i;\nexport default (str) => {\n const matched = REGEX.exec(str);\n if (!matched || (matched[4] && matched[1])) {\n throw new TypeError('Invalid time period format');\n }\n const value = parseFloat(matched[2]);\n const unit = matched[3].toLowerCase();\n let numericDate;\n switch (unit) {\n case 'sec':\n case 'secs':\n case 'second':\n case 'seconds':\n case 's':\n numericDate = Math.round(value);\n break;\n case 'minute':\n case 'minutes':\n case 'min':\n case 'mins':\n case 'm':\n numericDate = Math.round(value * minute);\n break;\n case 'hour':\n case 'hours':\n case 'hr':\n case 'hrs':\n case 'h':\n numericDate = Math.round(value * hour);\n break;\n case 'day':\n case 'days':\n case 'd':\n numericDate = Math.round(value * day);\n break;\n case 'week':\n case 'weeks':\n case 'w':\n numericDate = Math.round(value * week);\n break;\n default:\n numericDate = Math.round(value * year);\n break;\n }\n if (matched[1] === '-' || matched[4] === 'ago') {\n return -numericDate;\n }\n return numericDate;\n};\n","import epoch from '../lib/epoch.js';\nimport isObject from '../lib/is_object.js';\nimport secs from '../lib/secs.js';\nfunction validateInput(label, input) {\n if (!Number.isFinite(input)) {\n throw new TypeError(`Invalid ${label} input`);\n }\n return input;\n}\nexport class ProduceJWT {\n constructor(payload = {}) {\n if (!isObject(payload)) {\n throw new TypeError('JWT Claims Set MUST be an object');\n }\n this._payload = payload;\n }\n setIssuer(issuer) {\n this._payload = { ...this._payload, iss: issuer };\n return this;\n }\n setSubject(subject) {\n this._payload = { ...this._payload, sub: subject };\n return this;\n }\n setAudience(audience) {\n this._payload = { ...this._payload, aud: audience };\n return this;\n }\n setJti(jwtId) {\n this._payload = { ...this._payload, jti: jwtId };\n return this;\n }\n setNotBefore(input) {\n if (typeof input === 'number') {\n this._payload = { ...this._payload, nbf: validateInput('setNotBefore', input) };\n }\n else if (input instanceof Date) {\n this._payload = { ...this._payload, nbf: validateInput('setNotBefore', epoch(input)) };\n }\n else {\n this._payload = { ...this._payload, nbf: epoch(new Date()) + secs(input) };\n }\n return this;\n }\n setExpirationTime(input) {\n if (typeof input === 'number') {\n this._payload = { ...this._payload, exp: validateInput('setExpirationTime', input) };\n }\n else if (input instanceof Date) {\n this._payload = { ...this._payload, exp: validateInput('setExpirationTime', epoch(input)) };\n }\n else {\n this._payload = { ...this._payload, exp: epoch(new Date()) + secs(input) };\n }\n return this;\n }\n setIssuedAt(input) {\n if (typeof input === 'undefined') {\n this._payload = { ...this._payload, iat: epoch(new Date()) };\n }\n else if (input instanceof Date) {\n this._payload = { ...this._payload, iat: validateInput('setIssuedAt', epoch(input)) };\n }\n else if (typeof input === 'string') {\n this._payload = {\n ...this._payload,\n iat: validateInput('setIssuedAt', epoch(new Date()) + secs(input)),\n };\n }\n else {\n this._payload = { ...this._payload, iat: validateInput('setIssuedAt', input) };\n }\n return this;\n }\n}\n","import { CompactSign } from '../jws/compact/sign.js';\nimport { JWTInvalid } from '../util/errors.js';\nimport { encoder } from '../lib/buffer_utils.js';\nimport { ProduceJWT } from './produce.js';\nexport class SignJWT extends ProduceJWT {\n setProtectedHeader(protectedHeader) {\n this._protectedHeader = protectedHeader;\n return this;\n }\n async sign(key, options) {\n const sig = new CompactSign(encoder.encode(JSON.stringify(this._payload)));\n sig.setProtectedHeader(this._protectedHeader);\n if (Array.isArray(this._protectedHeader?.crit) &&\n this._protectedHeader.crit.includes('b64') &&\n this._protectedHeader.b64 === false) {\n throw new JWTInvalid('JWTs MUST NOT use unencoded payload');\n }\n return sig.sign(key, options);\n }\n}\n","/**\n * @import {\n * Break,\n * Blockquote,\n * Code,\n * Definition,\n * Emphasis,\n * Heading,\n * Html,\n * Image,\n * InlineCode,\n * Link,\n * ListItem,\n * List,\n * Nodes,\n * Paragraph,\n * PhrasingContent,\n * ReferenceType,\n * Root,\n * Strong,\n * Text,\n * ThematicBreak\n * } from 'mdast'\n * @import {\n * Encoding,\n * Event,\n * Token,\n * Value\n * } from 'micromark-util-types'\n * @import {Point} from 'unist'\n * @import {\n * CompileContext,\n * CompileData,\n * Config,\n * Extension,\n * Handle,\n * OnEnterError,\n * Options\n * } from './types.js'\n */\n\nimport { toString } from 'mdast-util-to-string';\nimport { parse, postprocess, preprocess } from 'micromark';\nimport { decodeNumericCharacterReference } from 'micromark-util-decode-numeric-character-reference';\nimport { decodeString } from 'micromark-util-decode-string';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nimport { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { stringifyPosition } from 'unist-util-stringify-position';\nconst own = {}.hasOwnProperty;\n\n/**\n * Turn markdown into a syntax tree.\n *\n * @overload\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @overload\n * @param {Value} value\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @param {Value} value\n * Markdown to parse.\n * @param {Encoding | Options | null | undefined} [encoding]\n * Character encoding for when `value` is `Buffer`.\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {Root}\n * mdast tree.\n */\nexport function fromMarkdown(value, encoding, options) {\n if (typeof encoding !== 'string') {\n options = encoding;\n encoding = undefined;\n }\n return compiler(options)(postprocess(parse(options).document().write(preprocess()(value, encoding, true))));\n}\n\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options | null | undefined} [options]\n */\nfunction compiler(options) {\n /** @type {Config} */\n const config = {\n transforms: [],\n canContainEols: ['emphasis', 'fragment', 'heading', 'paragraph', 'strong'],\n enter: {\n autolink: opener(link),\n autolinkProtocol: onenterdata,\n autolinkEmail: onenterdata,\n atxHeading: opener(heading),\n blockQuote: opener(blockQuote),\n characterEscape: onenterdata,\n characterReference: onenterdata,\n codeFenced: opener(codeFlow),\n codeFencedFenceInfo: buffer,\n codeFencedFenceMeta: buffer,\n codeIndented: opener(codeFlow, buffer),\n codeText: opener(codeText, buffer),\n codeTextData: onenterdata,\n data: onenterdata,\n codeFlowValue: onenterdata,\n definition: opener(definition),\n definitionDestinationString: buffer,\n definitionLabelString: buffer,\n definitionTitleString: buffer,\n emphasis: opener(emphasis),\n hardBreakEscape: opener(hardBreak),\n hardBreakTrailing: opener(hardBreak),\n htmlFlow: opener(html, buffer),\n htmlFlowData: onenterdata,\n htmlText: opener(html, buffer),\n htmlTextData: onenterdata,\n image: opener(image),\n label: buffer,\n link: opener(link),\n listItem: opener(listItem),\n listItemValue: onenterlistitemvalue,\n listOrdered: opener(list, onenterlistordered),\n listUnordered: opener(list),\n paragraph: opener(paragraph),\n reference: onenterreference,\n referenceString: buffer,\n resourceDestinationString: buffer,\n resourceTitleString: buffer,\n setextHeading: opener(heading),\n strong: opener(strong),\n thematicBreak: opener(thematicBreak)\n },\n exit: {\n atxHeading: closer(),\n atxHeadingSequence: onexitatxheadingsequence,\n autolink: closer(),\n autolinkEmail: onexitautolinkemail,\n autolinkProtocol: onexitautolinkprotocol,\n blockQuote: closer(),\n characterEscapeValue: onexitdata,\n characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n characterReferenceValue: onexitcharacterreferencevalue,\n characterReference: onexitcharacterreference,\n codeFenced: closer(onexitcodefenced),\n codeFencedFence: onexitcodefencedfence,\n codeFencedFenceInfo: onexitcodefencedfenceinfo,\n codeFencedFenceMeta: onexitcodefencedfencemeta,\n codeFlowValue: onexitdata,\n codeIndented: closer(onexitcodeindented),\n codeText: closer(onexitcodetext),\n codeTextData: onexitdata,\n data: onexitdata,\n definition: closer(),\n definitionDestinationString: onexitdefinitiondestinationstring,\n definitionLabelString: onexitdefinitionlabelstring,\n definitionTitleString: onexitdefinitiontitlestring,\n emphasis: closer(),\n hardBreakEscape: closer(onexithardbreak),\n hardBreakTrailing: closer(onexithardbreak),\n htmlFlow: closer(onexithtmlflow),\n htmlFlowData: onexitdata,\n htmlText: closer(onexithtmltext),\n htmlTextData: onexitdata,\n image: closer(onexitimage),\n label: onexitlabel,\n labelText: onexitlabeltext,\n lineEnding: onexitlineending,\n link: closer(onexitlink),\n listItem: closer(),\n listOrdered: closer(),\n listUnordered: closer(),\n paragraph: closer(),\n referenceString: onexitreferencestring,\n resourceDestinationString: onexitresourcedestinationstring,\n resourceTitleString: onexitresourcetitlestring,\n resource: onexitresource,\n setextHeading: closer(onexitsetextheading),\n setextHeadingLineSequence: onexitsetextheadinglinesequence,\n setextHeadingText: onexitsetextheadingtext,\n strong: closer(),\n thematicBreak: closer()\n }\n };\n configure(config, (options || {}).mdastExtensions || []);\n\n /** @type {CompileData} */\n const data = {};\n return compile;\n\n /**\n * Turn micromark events into an mdast tree.\n *\n * @param {Array<Event>} events\n * Events.\n * @returns {Root}\n * mdast tree.\n */\n function compile(events) {\n /** @type {Root} */\n let tree = {\n type: 'root',\n children: []\n };\n /** @type {Omit<CompileContext, 'sliceSerialize'>} */\n const context = {\n stack: [tree],\n tokenStack: [],\n config,\n enter,\n exit,\n buffer,\n resume,\n data\n };\n /** @type {Array<number>} */\n const listStack = [];\n let index = -1;\n while (++index < events.length) {\n // We preprocess lists to add `listItem` tokens, and to infer whether\n // items the list itself are spread out.\n if (events[index][1].type === \"listOrdered\" || events[index][1].type === \"listUnordered\") {\n if (events[index][0] === 'enter') {\n listStack.push(index);\n } else {\n const tail = listStack.pop();\n index = prepareList(events, tail, index);\n }\n }\n }\n index = -1;\n while (++index < events.length) {\n const handler = config[events[index][0]];\n if (own.call(handler, events[index][1].type)) {\n handler[events[index][1].type].call(Object.assign({\n sliceSerialize: events[index][2].sliceSerialize\n }, context), events[index][1]);\n }\n }\n\n // Handle tokens still being open.\n if (context.tokenStack.length > 0) {\n const tail = context.tokenStack[context.tokenStack.length - 1];\n const handler = tail[1] || defaultOnError;\n handler.call(context, undefined, tail[0]);\n }\n\n // Figure out `root` position.\n tree.position = {\n start: point(events.length > 0 ? events[0][1].start : {\n line: 1,\n column: 1,\n offset: 0\n }),\n end: point(events.length > 0 ? events[events.length - 2][1].end : {\n line: 1,\n column: 1,\n offset: 0\n })\n };\n\n // Call transforms.\n index = -1;\n while (++index < config.transforms.length) {\n tree = config.transforms[index](tree) || tree;\n }\n return tree;\n }\n\n /**\n * @param {Array<Event>} events\n * @param {number} start\n * @param {number} length\n * @returns {number}\n */\n function prepareList(events, start, length) {\n let index = start - 1;\n let containerBalance = -1;\n let listSpread = false;\n /** @type {Token | undefined} */\n let listItem;\n /** @type {number | undefined} */\n let lineIndex;\n /** @type {number | undefined} */\n let firstBlankLineIndex;\n /** @type {boolean | undefined} */\n let atMarker;\n while (++index <= length) {\n const event = events[index];\n switch (event[1].type) {\n case \"listUnordered\":\n case \"listOrdered\":\n case \"blockQuote\":\n {\n if (event[0] === 'enter') {\n containerBalance++;\n } else {\n containerBalance--;\n }\n atMarker = undefined;\n break;\n }\n case \"lineEndingBlank\":\n {\n if (event[0] === 'enter') {\n if (listItem && !atMarker && !containerBalance && !firstBlankLineIndex) {\n firstBlankLineIndex = index;\n }\n atMarker = undefined;\n }\n break;\n }\n case \"linePrefix\":\n case \"listItemValue\":\n case \"listItemMarker\":\n case \"listItemPrefix\":\n case \"listItemPrefixWhitespace\":\n {\n // Empty.\n\n break;\n }\n default:\n {\n atMarker = undefined;\n }\n }\n if (!containerBalance && event[0] === 'enter' && event[1].type === \"listItemPrefix\" || containerBalance === -1 && event[0] === 'exit' && (event[1].type === \"listUnordered\" || event[1].type === \"listOrdered\")) {\n if (listItem) {\n let tailIndex = index;\n lineIndex = undefined;\n while (tailIndex--) {\n const tailEvent = events[tailIndex];\n if (tailEvent[1].type === \"lineEnding\" || tailEvent[1].type === \"lineEndingBlank\") {\n if (tailEvent[0] === 'exit') continue;\n if (lineIndex) {\n events[lineIndex][1].type = \"lineEndingBlank\";\n listSpread = true;\n }\n tailEvent[1].type = \"lineEnding\";\n lineIndex = tailIndex;\n } else if (tailEvent[1].type === \"linePrefix\" || tailEvent[1].type === \"blockQuotePrefix\" || tailEvent[1].type === \"blockQuotePrefixWhitespace\" || tailEvent[1].type === \"blockQuoteMarker\" || tailEvent[1].type === \"listItemIndent\") {\n // Empty\n } else {\n break;\n }\n }\n if (firstBlankLineIndex && (!lineIndex || firstBlankLineIndex < lineIndex)) {\n listItem._spread = true;\n }\n\n // Fix position.\n listItem.end = Object.assign({}, lineIndex ? events[lineIndex][1].start : event[1].end);\n events.splice(lineIndex || index, 0, ['exit', listItem, event[2]]);\n index++;\n length++;\n }\n\n // Create a new list item.\n if (event[1].type === \"listItemPrefix\") {\n /** @type {Token} */\n const item = {\n type: 'listItem',\n _spread: false,\n start: Object.assign({}, event[1].start),\n // @ts-expect-error: we’ll add `end` in a second.\n end: undefined\n };\n listItem = item;\n events.splice(index, 0, ['enter', item, event[2]]);\n index++;\n length++;\n firstBlankLineIndex = undefined;\n atMarker = true;\n }\n }\n }\n events[start][1]._spread = listSpread;\n return length;\n }\n\n /**\n * Create an opener handle.\n *\n * @param {(token: Token) => Nodes} create\n * Create a node.\n * @param {Handle | undefined} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function opener(create, and) {\n return open;\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {undefined}\n */\n function open(token) {\n enter.call(this, create(token), token);\n if (and) and.call(this, token);\n }\n }\n\n /**\n * @type {CompileContext['buffer']}\n */\n function buffer() {\n this.stack.push({\n type: 'fragment',\n children: []\n });\n }\n\n /**\n * @type {CompileContext['enter']}\n */\n function enter(node, token, errorHandler) {\n const parent = this.stack[this.stack.length - 1];\n /** @type {Array<Nodes>} */\n const siblings = parent.children;\n siblings.push(node);\n this.stack.push(node);\n this.tokenStack.push([token, errorHandler || undefined]);\n node.position = {\n start: point(token.start),\n // @ts-expect-error: `end` will be patched later.\n end: undefined\n };\n }\n\n /**\n * Create a closer handle.\n *\n * @param {Handle | undefined} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function closer(and) {\n return close;\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {undefined}\n */\n function close(token) {\n if (and) and.call(this, token);\n exit.call(this, token);\n }\n }\n\n /**\n * @type {CompileContext['exit']}\n */\n function exit(token, onExitError) {\n const node = this.stack.pop();\n const open = this.tokenStack.pop();\n if (!open) {\n throw new Error('Cannot close `' + token.type + '` (' + stringifyPosition({\n start: token.start,\n end: token.end\n }) + '): it’s not open');\n } else if (open[0].type !== token.type) {\n if (onExitError) {\n onExitError.call(this, token, open[0]);\n } else {\n const handler = open[1] || defaultOnError;\n handler.call(this, token, open[0]);\n }\n }\n node.position.end = point(token.end);\n }\n\n /**\n * @type {CompileContext['resume']}\n */\n function resume() {\n return toString(this.stack.pop());\n }\n\n //\n // Handlers.\n //\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistordered() {\n this.data.expectingFirstListItemValue = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistitemvalue(token) {\n if (this.data.expectingFirstListItemValue) {\n const ancestor = this.stack[this.stack.length - 2];\n ancestor.start = Number.parseInt(this.sliceSerialize(token), 10);\n this.data.expectingFirstListItemValue = undefined;\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfenceinfo() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.lang = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfencemeta() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.meta = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfence() {\n // Exit if this is the closing fence.\n if (this.data.flowCodeInside) return;\n this.buffer();\n this.data.flowCodeInside = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefenced() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '');\n this.data.flowCodeInside = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodeindented() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data.replace(/(\\r?\\n|\\r)$/g, '');\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitionlabelstring(token) {\n const label = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.label = label;\n node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase();\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiontitlestring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.title = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiondestinationstring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.url = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitatxheadingsequence(token) {\n const node = this.stack[this.stack.length - 1];\n if (!node.depth) {\n const depth = this.sliceSerialize(token).length;\n node.depth = depth;\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadingtext() {\n this.data.setextHeadingSlurpLineEnding = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadinglinesequence(token) {\n const node = this.stack[this.stack.length - 1];\n node.depth = this.sliceSerialize(token).codePointAt(0) === 61 ? 1 : 2;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheading() {\n this.data.setextHeadingSlurpLineEnding = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterdata(token) {\n const node = this.stack[this.stack.length - 1];\n /** @type {Array<Nodes>} */\n const siblings = node.children;\n let tail = siblings[siblings.length - 1];\n if (!tail || tail.type !== 'text') {\n // Add a new text node.\n tail = text();\n tail.position = {\n start: point(token.start),\n // @ts-expect-error: we’ll add `end` later.\n end: undefined\n };\n siblings.push(tail);\n }\n this.stack.push(tail);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitdata(token) {\n const tail = this.stack.pop();\n tail.value += this.sliceSerialize(token);\n tail.position.end = point(token.end);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlineending(token) {\n const context = this.stack[this.stack.length - 1];\n // If we’re at a hard break, include the line ending in there.\n if (this.data.atHardBreak) {\n const tail = context.children[context.children.length - 1];\n tail.position.end = point(token.end);\n this.data.atHardBreak = undefined;\n return;\n }\n if (!this.data.setextHeadingSlurpLineEnding && config.canContainEols.includes(context.type)) {\n onenterdata.call(this, token);\n onexitdata.call(this, token);\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithardbreak() {\n this.data.atHardBreak = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmlflow() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmltext() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcodetext() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlink() {\n const node = this.stack[this.stack.length - 1];\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n\n // To do: clean.\n if (this.data.inReference) {\n /** @type {ReferenceType} */\n const referenceType = this.data.referenceType || 'shortcut';\n node.type += 'Reference';\n // @ts-expect-error: mutate.\n node.referenceType = referenceType;\n // @ts-expect-error: mutate.\n delete node.url;\n delete node.title;\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier;\n // @ts-expect-error: mutate.\n delete node.label;\n }\n this.data.referenceType = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitimage() {\n const node = this.stack[this.stack.length - 1];\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n\n // To do: clean.\n if (this.data.inReference) {\n /** @type {ReferenceType} */\n const referenceType = this.data.referenceType || 'shortcut';\n node.type += 'Reference';\n // @ts-expect-error: mutate.\n node.referenceType = referenceType;\n // @ts-expect-error: mutate.\n delete node.url;\n delete node.title;\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier;\n // @ts-expect-error: mutate.\n delete node.label;\n }\n this.data.referenceType = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabeltext(token) {\n const string = this.sliceSerialize(token);\n const ancestor = this.stack[this.stack.length - 2];\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n ancestor.label = decodeString(string);\n // @ts-expect-error: same as above.\n ancestor.identifier = normalizeIdentifier(string).toLowerCase();\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabel() {\n const fragment = this.stack[this.stack.length - 1];\n const value = this.resume();\n const node = this.stack[this.stack.length - 1];\n // Assume a reference.\n this.data.inReference = true;\n if (node.type === 'link') {\n /** @type {Array<PhrasingContent>} */\n const children = fragment.children;\n node.children = children;\n } else {\n node.alt = value;\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcedestinationstring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.url = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcetitlestring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.title = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresource() {\n this.data.inReference = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterreference() {\n this.data.referenceType = 'collapsed';\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitreferencestring(token) {\n const label = this.resume();\n const node = this.stack[this.stack.length - 1];\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n node.label = label;\n // @ts-expect-error: same as above.\n node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase();\n this.data.referenceType = 'full';\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcharacterreferencemarker(token) {\n this.data.characterReferenceType = token.type;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreferencevalue(token) {\n const data = this.sliceSerialize(token);\n const type = this.data.characterReferenceType;\n /** @type {string} */\n let value;\n if (type) {\n value = decodeNumericCharacterReference(data, type === \"characterReferenceMarkerNumeric\" ? 10 : 16);\n this.data.characterReferenceType = undefined;\n } else {\n const result = decodeNamedCharacterReference(data);\n value = result;\n }\n const tail = this.stack[this.stack.length - 1];\n tail.value += value;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreference(token) {\n const tail = this.stack.pop();\n tail.position.end = point(token.end);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkprotocol(token) {\n onexitdata.call(this, token);\n const node = this.stack[this.stack.length - 1];\n node.url = this.sliceSerialize(token);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkemail(token) {\n onexitdata.call(this, token);\n const node = this.stack[this.stack.length - 1];\n node.url = 'mailto:' + this.sliceSerialize(token);\n }\n\n //\n // Creaters.\n //\n\n /** @returns {Blockquote} */\n function blockQuote() {\n return {\n type: 'blockquote',\n children: []\n };\n }\n\n /** @returns {Code} */\n function codeFlow() {\n return {\n type: 'code',\n lang: null,\n meta: null,\n value: ''\n };\n }\n\n /** @returns {InlineCode} */\n function codeText() {\n return {\n type: 'inlineCode',\n value: ''\n };\n }\n\n /** @returns {Definition} */\n function definition() {\n return {\n type: 'definition',\n identifier: '',\n label: null,\n title: null,\n url: ''\n };\n }\n\n /** @returns {Emphasis} */\n function emphasis() {\n return {\n type: 'emphasis',\n children: []\n };\n }\n\n /** @returns {Heading} */\n function heading() {\n return {\n type: 'heading',\n // @ts-expect-error `depth` will be set later.\n depth: 0,\n children: []\n };\n }\n\n /** @returns {Break} */\n function hardBreak() {\n return {\n type: 'break'\n };\n }\n\n /** @returns {Html} */\n function html() {\n return {\n type: 'html',\n value: ''\n };\n }\n\n /** @returns {Image} */\n function image() {\n return {\n type: 'image',\n title: null,\n url: '',\n alt: null\n };\n }\n\n /** @returns {Link} */\n function link() {\n return {\n type: 'link',\n title: null,\n url: '',\n children: []\n };\n }\n\n /**\n * @param {Token} token\n * @returns {List}\n */\n function list(token) {\n return {\n type: 'list',\n ordered: token.type === 'listOrdered',\n start: null,\n spread: token._spread,\n children: []\n };\n }\n\n /**\n * @param {Token} token\n * @returns {ListItem}\n */\n function listItem(token) {\n return {\n type: 'listItem',\n spread: token._spread,\n checked: null,\n children: []\n };\n }\n\n /** @returns {Paragraph} */\n function paragraph() {\n return {\n type: 'paragraph',\n children: []\n };\n }\n\n /** @returns {Strong} */\n function strong() {\n return {\n type: 'strong',\n children: []\n };\n }\n\n /** @returns {Text} */\n function text() {\n return {\n type: 'text',\n value: ''\n };\n }\n\n /** @returns {ThematicBreak} */\n function thematicBreak() {\n return {\n type: 'thematicBreak'\n };\n }\n}\n\n/**\n * Copy a point-like value.\n *\n * @param {Point} d\n * Point-like value.\n * @returns {Point}\n * unist point.\n */\nfunction point(d) {\n return {\n line: d.line,\n column: d.column,\n offset: d.offset\n };\n}\n\n/**\n * @param {Config} combined\n * @param {Array<Array<Extension> | Extension>} extensions\n * @returns {undefined}\n */\nfunction configure(combined, extensions) {\n let index = -1;\n while (++index < extensions.length) {\n const value = extensions[index];\n if (Array.isArray(value)) {\n configure(combined, value);\n } else {\n extension(combined, value);\n }\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Extension} extension\n * @returns {undefined}\n */\nfunction extension(combined, extension) {\n /** @type {keyof Extension} */\n let key;\n for (key in extension) {\n if (own.call(extension, key)) {\n switch (key) {\n case 'canContainEols':\n {\n const right = extension[key];\n if (right) {\n combined[key].push(...right);\n }\n break;\n }\n case 'transforms':\n {\n const right = extension[key];\n if (right) {\n combined[key].push(...right);\n }\n break;\n }\n case 'enter':\n case 'exit':\n {\n const right = extension[key];\n if (right) {\n Object.assign(combined[key], right);\n }\n break;\n }\n // No default\n }\n }\n }\n}\n\n/** @type {OnEnterError} */\nfunction defaultOnError(left, right) {\n if (left) {\n throw new Error('Cannot close `' + left.type + '` (' + stringifyPosition({\n start: left.start,\n end: left.end\n }) + '): a different token (`' + right.type + '`, ' + stringifyPosition({\n start: right.start,\n end: right.end\n }) + ') is open');\n } else {\n throw new Error('Cannot close document, a token (`' + right.type + '`, ' + stringifyPosition({\n start: right.start,\n end: right.end\n }) + ') is still open');\n }\n}","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('./state.js').State} State\n */\n\n/**\n * @callback FootnoteBackContentTemplate\n * Generate content for the backreference dynamically.\n *\n * For the following markdown:\n *\n * ```markdown\n * Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n * [^remark]: things about remark\n * [^micromark]: things about micromark\n * ```\n *\n * This function will be called with:\n *\n * * `0` and `0` for the backreference from `things about micromark` to\n * `alpha`, as it is the first used definition, and the first call to it\n * * `0` and `1` for the backreference from `things about micromark` to\n * `bravo`, as it is the first used definition, and the second call to it\n * * `1` and `0` for the backreference from `things about remark` to\n * `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {Array<ElementContent> | ElementContent | string}\n * Content for the backreference when linking back from definitions to their\n * reference.\n *\n * @callback FootnoteBackLabelTemplate\n * Generate a back label dynamically.\n *\n * For the following markdown:\n *\n * ```markdown\n * Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n * [^remark]: things about remark\n * [^micromark]: things about micromark\n * ```\n *\n * This function will be called with:\n *\n * * `0` and `0` for the backreference from `things about micromark` to\n * `alpha`, as it is the first used definition, and the first call to it\n * * `0` and `1` for the backreference from `things about micromark` to\n * `bravo`, as it is the first used definition, and the second call to it\n * * `1` and `0` for the backreference from `things about remark` to\n * `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {string}\n * Back label to use when linking back from definitions to their reference.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Generate the default content that GitHub uses on backreferences.\n *\n * @param {number} _\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {Array<ElementContent>}\n * Content.\n */\nexport function defaultFootnoteBackContent(_, rereferenceIndex) {\n /** @type {Array<ElementContent>} */\n const result = [{type: 'text', value: '↩'}]\n\n if (rereferenceIndex > 1) {\n result.push({\n type: 'element',\n tagName: 'sup',\n properties: {},\n children: [{type: 'text', value: String(rereferenceIndex)}]\n })\n }\n\n return result\n}\n\n/**\n * Generate the default label that GitHub uses on backreferences.\n *\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {string}\n * Label.\n */\nexport function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n return (\n 'Back to reference ' +\n (referenceIndex + 1) +\n (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n )\n}\n\n/**\n * Generate a hast footer for called footnote definitions.\n *\n * @param {State} state\n * Info passed around.\n * @returns {Element | undefined}\n * `section` element or `undefined`.\n */\n// eslint-disable-next-line complexity\nexport function footer(state) {\n const clobberPrefix =\n typeof state.options.clobberPrefix === 'string'\n ? state.options.clobberPrefix\n : 'user-content-'\n const footnoteBackContent =\n state.options.footnoteBackContent || defaultFootnoteBackContent\n const footnoteBackLabel =\n state.options.footnoteBackLabel || defaultFootnoteBackLabel\n const footnoteLabel = state.options.footnoteLabel || 'Footnotes'\n const footnoteLabelTagName = state.options.footnoteLabelTagName || 'h2'\n const footnoteLabelProperties = state.options.footnoteLabelProperties || {\n className: ['sr-only']\n }\n /** @type {Array<ElementContent>} */\n const listItems = []\n let referenceIndex = -1\n\n while (++referenceIndex < state.footnoteOrder.length) {\n const definition = state.footnoteById.get(\n state.footnoteOrder[referenceIndex]\n )\n\n if (!definition) {\n continue\n }\n\n const content = state.all(definition)\n const id = String(definition.identifier).toUpperCase()\n const safeId = normalizeUri(id.toLowerCase())\n let rereferenceIndex = 0\n /** @type {Array<ElementContent>} */\n const backReferences = []\n const counts = state.footnoteCounts.get(id)\n\n // eslint-disable-next-line no-unmodified-loop-condition\n while (counts !== undefined && ++rereferenceIndex <= counts) {\n if (backReferences.length > 0) {\n backReferences.push({type: 'text', value: ' '})\n }\n\n let children =\n typeof footnoteBackContent === 'string'\n ? footnoteBackContent\n : footnoteBackContent(referenceIndex, rereferenceIndex)\n\n if (typeof children === 'string') {\n children = {type: 'text', value: children}\n }\n\n backReferences.push({\n type: 'element',\n tagName: 'a',\n properties: {\n href:\n '#' +\n clobberPrefix +\n 'fnref-' +\n safeId +\n (rereferenceIndex > 1 ? '-' + rereferenceIndex : ''),\n dataFootnoteBackref: '',\n ariaLabel:\n typeof footnoteBackLabel === 'string'\n ? footnoteBackLabel\n : footnoteBackLabel(referenceIndex, rereferenceIndex),\n className: ['data-footnote-backref']\n },\n children: Array.isArray(children) ? children : [children]\n })\n }\n\n const tail = content[content.length - 1]\n\n if (tail && tail.type === 'element' && tail.tagName === 'p') {\n const tailTail = tail.children[tail.children.length - 1]\n if (tailTail && tailTail.type === 'text') {\n tailTail.value += ' '\n } else {\n tail.children.push({type: 'text', value: ' '})\n }\n\n tail.children.push(...backReferences)\n } else {\n content.push(...backReferences)\n }\n\n /** @type {Element} */\n const listItem = {\n type: 'element',\n tagName: 'li',\n properties: {id: clobberPrefix + 'fn-' + safeId},\n children: state.wrap(content, true)\n }\n\n state.patch(definition, listItem)\n\n listItems.push(listItem)\n }\n\n if (listItems.length === 0) {\n return\n }\n\n return {\n type: 'element',\n tagName: 'section',\n properties: {dataFootnotes: true, className: ['footnotes']},\n children: [\n {\n type: 'element',\n tagName: footnoteLabelTagName,\n properties: {\n ...structuredClone(footnoteLabelProperties),\n id: 'footnote-label'\n },\n children: [{type: 'text', value: footnoteLabel}]\n },\n {type: 'text', value: '\\n'},\n {\n type: 'element',\n tagName: 'ol',\n properties: {},\n children: state.wrap(listItems, true)\n },\n {type: 'text', value: '\\n'}\n ]\n }\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `listItem` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {ListItem} node\n * mdast node.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @returns {Element}\n * hast node.\n */\nexport function listItem(state, node, parent) {\n const results = state.all(node)\n const loose = parent ? listLoose(parent) : listItemLoose(node)\n /** @type {Properties} */\n const properties = {}\n /** @type {Array<ElementContent>} */\n const children = []\n\n if (typeof node.checked === 'boolean') {\n const head = results[0]\n /** @type {Element} */\n let paragraph\n\n if (head && head.type === 'element' && head.tagName === 'p') {\n paragraph = head\n } else {\n paragraph = {type: 'element', tagName: 'p', properties: {}, children: []}\n results.unshift(paragraph)\n }\n\n if (paragraph.children.length > 0) {\n paragraph.children.unshift({type: 'text', value: ' '})\n }\n\n paragraph.children.unshift({\n type: 'element',\n tagName: 'input',\n properties: {type: 'checkbox', checked: node.checked, disabled: true},\n children: []\n })\n\n // According to github-markdown-css, this class hides bullet.\n // See: <https://github.com/sindresorhus/github-markdown-css>.\n properties.className = ['task-list-item']\n }\n\n let index = -1\n\n while (++index < results.length) {\n const child = results[index]\n\n // Add eols before nodes, except if this is a loose, first paragraph.\n if (\n loose ||\n index !== 0 ||\n child.type !== 'element' ||\n child.tagName !== 'p'\n ) {\n children.push({type: 'text', value: '\\n'})\n }\n\n if (child.type === 'element' && child.tagName === 'p' && !loose) {\n children.push(...child.children)\n } else {\n children.push(child)\n }\n }\n\n const tail = results[results.length - 1]\n\n // Add a final eol.\n if (tail && (loose || tail.type !== 'element' || tail.tagName !== 'p')) {\n children.push({type: 'text', value: '\\n'})\n }\n\n /** @type {Element} */\n const result = {type: 'element', tagName: 'li', properties, children}\n state.patch(node, result)\n return state.applyData(node, result)\n}\n\n/**\n * @param {Parents} node\n * @return {Boolean}\n */\nfunction listLoose(node) {\n let loose = false\n if (node.type === 'list') {\n loose = node.spread || false\n const children = node.children\n let index = -1\n\n while (!loose && ++index < children.length) {\n loose = listItemLoose(children[index])\n }\n }\n\n return loose\n}\n\n/**\n * @param {ListItem} node\n * @return {Boolean}\n */\nfunction listItemLoose(node) {\n const spread = node.spread\n\n return spread === null || spread === undefined\n ? node.children.length > 1\n : spread\n}\n","import {blockquote} from './blockquote.js'\nimport {hardBreak} from './break.js'\nimport {code} from './code.js'\nimport {strikethrough} from './delete.js'\nimport {emphasis} from './emphasis.js'\nimport {footnoteReference} from './footnote-reference.js'\nimport {heading} from './heading.js'\nimport {html} from './html.js'\nimport {imageReference} from './image-reference.js'\nimport {image} from './image.js'\nimport {inlineCode} from './inline-code.js'\nimport {linkReference} from './link-reference.js'\nimport {link} from './link.js'\nimport {listItem} from './list-item.js'\nimport {list} from './list.js'\nimport {paragraph} from './paragraph.js'\nimport {root} from './root.js'\nimport {strong} from './strong.js'\nimport {table} from './table.js'\nimport {tableRow} from './table-row.js'\nimport {tableCell} from './table-cell.js'\nimport {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\n/**\n * Default handlers for nodes.\n *\n * @satisfies {import('../state.js').Handlers}\n */\nexport const handlers = {\n blockquote,\n break: hardBreak,\n code,\n delete: strikethrough,\n emphasis,\n footnoteReference,\n heading,\n html,\n imageReference,\n image,\n inlineCode,\n linkReference,\n link,\n listItem,\n list,\n paragraph,\n // @ts-expect-error: root is different, but hard to type.\n root,\n strong,\n table,\n tableCell,\n tableRow,\n text,\n thematicBreak,\n toml: ignore,\n yaml: ignore,\n definition: ignore,\n footnoteDefinition: ignore\n}\n\n// Return nothing for nodes that are ignored.\nfunction ignore() {\n return undefined\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `blockquote` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Blockquote} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function blockquote(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'blockquote',\n properties: {},\n children: state.wrap(state.all(node), true)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').Break} Break\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `break` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Break} node\n * mdast node.\n * @returns {Array<Element | Text>}\n * hast element content.\n */\nexport function hardBreak(state, node) {\n /** @type {Element} */\n const result = {type: 'element', tagName: 'br', properties: {}, children: []}\n state.patch(node, result)\n return [state.applyData(node, result), {type: 'text', value: '\\n'}]\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Code} Code\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `code` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Code} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function code(state, node) {\n const value = node.value ? node.value + '\\n' : ''\n /** @type {Properties} */\n const properties = {}\n\n if (node.lang) {\n properties.className = ['language-' + node.lang]\n }\n\n // Create `<code>`.\n /** @type {Element} */\n let result = {\n type: 'element',\n tagName: 'code',\n properties,\n children: [{type: 'text', value}]\n }\n\n if (node.meta) {\n result.data = {meta: node.meta}\n }\n\n state.patch(node, result)\n result = state.applyData(node, result)\n\n // Create `<pre>`.\n result = {type: 'element', tagName: 'pre', properties: {}, children: [result]}\n state.patch(node, result)\n return result\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Delete} Delete\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `delete` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Delete} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function strikethrough(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'del',\n properties: {},\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `emphasis` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Emphasis} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function emphasis(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'em',\n properties: {},\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `footnoteReference` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {FootnoteReference} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function footnoteReference(state, node) {\n const clobberPrefix =\n typeof state.options.clobberPrefix === 'string'\n ? state.options.clobberPrefix\n : 'user-content-'\n const id = String(node.identifier).toUpperCase()\n const safeId = normalizeUri(id.toLowerCase())\n const index = state.footnoteOrder.indexOf(id)\n /** @type {number} */\n let counter\n\n let reuseCounter = state.footnoteCounts.get(id)\n\n if (reuseCounter === undefined) {\n reuseCounter = 0\n state.footnoteOrder.push(id)\n counter = state.footnoteOrder.length\n } else {\n counter = index + 1\n }\n\n reuseCounter += 1\n state.footnoteCounts.set(id, reuseCounter)\n\n /** @type {Element} */\n const link = {\n type: 'element',\n tagName: 'a',\n properties: {\n href: '#' + clobberPrefix + 'fn-' + safeId,\n id:\n clobberPrefix +\n 'fnref-' +\n safeId +\n (reuseCounter > 1 ? '-' + reuseCounter : ''),\n dataFootnoteRef: true,\n ariaDescribedBy: ['footnote-label']\n },\n children: [{type: 'text', value: String(counter)}]\n }\n state.patch(node, link)\n\n /** @type {Element} */\n const sup = {\n type: 'element',\n tagName: 'sup',\n properties: {},\n children: [link]\n }\n state.patch(node, sup)\n return state.applyData(node, sup)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `heading` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Heading} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function heading(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'h' + node.depth,\n properties: {},\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Html} Html\n * @typedef {import('../state.js').State} State\n * @typedef {import('../../index.js').Raw} Raw\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `html` node into hast (`raw` node in dangerous mode, otherwise\n * nothing).\n *\n * @param {State} state\n * Info passed around.\n * @param {Html} node\n * mdast node.\n * @returns {Element | Raw | undefined}\n * hast node.\n */\nexport function html(state, node) {\n if (state.options.allowDangerousHtml) {\n /** @type {Raw} */\n const result = {type: 'raw', value: node.value}\n state.patch(node, result)\n return state.applyData(node, result)\n }\n\n return undefined\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `imageReference` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {ImageReference} node\n * mdast node.\n * @returns {Array<ElementContent> | ElementContent}\n * hast node.\n */\nexport function imageReference(state, node) {\n const id = String(node.identifier).toUpperCase()\n const definition = state.definitionById.get(id)\n\n if (!definition) {\n return revert(state, node)\n }\n\n /** @type {Properties} */\n const properties = {src: normalizeUri(definition.url || ''), alt: node.alt}\n\n if (definition.title !== null && definition.title !== undefined) {\n properties.title = definition.title\n }\n\n /** @type {Element} */\n const result = {type: 'element', tagName: 'img', properties, children: []}\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Image} Image\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `image` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Image} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function image(state, node) {\n /** @type {Properties} */\n const properties = {src: normalizeUri(node.url)}\n\n if (node.alt !== null && node.alt !== undefined) {\n properties.alt = node.alt\n }\n\n if (node.title !== null && node.title !== undefined) {\n properties.title = node.title\n }\n\n /** @type {Element} */\n const result = {type: 'element', tagName: 'img', properties, children: []}\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `inlineCode` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {InlineCode} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function inlineCode(state, node) {\n /** @type {Text} */\n const text = {type: 'text', value: node.value.replace(/\\r?\\n|\\r/g, ' ')}\n state.patch(node, text)\n\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'code',\n properties: {},\n children: [text]\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `linkReference` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {LinkReference} node\n * mdast node.\n * @returns {Array<ElementContent> | ElementContent}\n * hast node.\n */\nexport function linkReference(state, node) {\n const id = String(node.identifier).toUpperCase()\n const definition = state.definitionById.get(id)\n\n if (!definition) {\n return revert(state, node)\n }\n\n /** @type {Properties} */\n const properties = {href: normalizeUri(definition.url || '')}\n\n if (definition.title !== null && definition.title !== undefined) {\n properties.title = definition.title\n }\n\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'a',\n properties,\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Link} Link\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `link` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Link} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function link(state, node) {\n /** @type {Properties} */\n const properties = {href: normalizeUri(node.url)}\n\n if (node.title !== null && node.title !== undefined) {\n properties.title = node.title\n }\n\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'a',\n properties,\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').List} List\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `list` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {List} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function list(state, node) {\n /** @type {Properties} */\n const properties = {}\n const results = state.all(node)\n let index = -1\n\n if (typeof node.start === 'number' && node.start !== 1) {\n properties.start = node.start\n }\n\n // Like GitHub, add a class for custom styling.\n while (++index < results.length) {\n const child = results[index]\n\n if (\n child.type === 'element' &&\n child.tagName === 'li' &&\n child.properties &&\n Array.isArray(child.properties.className) &&\n child.properties.className.includes('task-list-item')\n ) {\n properties.className = ['contains-task-list']\n break\n }\n }\n\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: node.ordered ? 'ol' : 'ul',\n properties,\n children: state.wrap(results, true)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `paragraph` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Paragraph} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function paragraph(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'p',\n properties: {},\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Parents} HastParents\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `root` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdastRoot} node\n * mdast node.\n * @returns {HastParents}\n * hast node.\n */\nexport function root(state, node) {\n /** @type {HastRoot} */\n const result = {type: 'root', children: state.wrap(state.all(node))}\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `strong` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Strong} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function strong(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'strong',\n properties: {},\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Table} Table\n * @typedef {import('../state.js').State} State\n */\n\nimport {pointEnd, pointStart} from 'unist-util-position'\n\n/**\n * Turn an mdast `table` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Table} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function table(state, node) {\n const rows = state.all(node)\n const firstRow = rows.shift()\n /** @type {Array<Element>} */\n const tableContent = []\n\n if (firstRow) {\n /** @type {Element} */\n const head = {\n type: 'element',\n tagName: 'thead',\n properties: {},\n children: state.wrap([firstRow], true)\n }\n state.patch(node.children[0], head)\n tableContent.push(head)\n }\n\n if (rows.length > 0) {\n /** @type {Element} */\n const body = {\n type: 'element',\n tagName: 'tbody',\n properties: {},\n children: state.wrap(rows, true)\n }\n\n const start = pointStart(node.children[1])\n const end = pointEnd(node.children[node.children.length - 1])\n if (start && end) body.position = {start, end}\n tableContent.push(body)\n }\n\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'table',\n properties: {},\n children: state.wrap(tableContent, true)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `tableCell` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {TableCell} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function tableCell(state, node) {\n // Note: this function is normally not called: see `table-row` for how rows\n // and their cells are compiled.\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'td', // Assume body cell.\n properties: {},\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('mdast').TableRow} TableRow\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `tableRow` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {TableRow} node\n * mdast node.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @returns {Element}\n * hast node.\n */\nexport function tableRow(state, node, parent) {\n const siblings = parent ? parent.children : undefined\n // Generate a body row when without parent.\n const rowIndex = siblings ? siblings.indexOf(node) : 1\n const tagName = rowIndex === 0 ? 'th' : 'td'\n // To do: option to use `style`?\n const align = parent && parent.type === 'table' ? parent.align : undefined\n const length = align ? align.length : node.children.length\n let cellIndex = -1\n /** @type {Array<ElementContent>} */\n const cells = []\n\n while (++cellIndex < length) {\n // Note: can also be undefined.\n const cell = node.children[cellIndex]\n /** @type {Properties} */\n const properties = {}\n const alignValue = align ? align[cellIndex] : undefined\n\n if (alignValue) {\n properties.align = alignValue\n }\n\n /** @type {Element} */\n let result = {type: 'element', tagName, properties, children: []}\n\n if (cell) {\n result.children = state.all(cell)\n state.patch(cell, result)\n result = state.applyData(cell, result)\n }\n\n cells.push(result)\n }\n\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'tr',\n properties: {},\n children: state.wrap(cells, true)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').Text} HastText\n * @typedef {import('mdast').Text} MdastText\n * @typedef {import('../state.js').State} State\n */\n\nimport {trimLines} from 'trim-lines'\n\n/**\n * Turn an mdast `text` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdastText} node\n * mdast node.\n * @returns {HastElement | HastText}\n * hast node.\n */\nexport function text(state, node) {\n /** @type {HastText} */\n const result = {type: 'text', value: trimLines(String(node.value))}\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `thematicBreak` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {ThematicBreak} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function thematicBreak(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'hr',\n properties: {},\n children: []\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Nodes} HastNodes\n * @typedef {import('mdast').Nodes} MdastNodes\n * @typedef {import('./state.js').Options} Options\n */\n\nimport {ok as assert} from 'devlop'\nimport {footer} from './footer.js'\nimport {createState} from './state.js'\n\n/**\n * Transform mdast to hast.\n *\n * ##### Notes\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most utilities ignore `raw` nodes but two notable ones don’t:\n *\n * * `hast-util-to-html` also has an option `allowDangerousHtml` which will\n * output the raw HTML.\n * This is typically discouraged as noted by the option name but is useful\n * if you completely trust authors\n * * `hast-util-raw` can handle the raw embedded HTML strings by parsing them\n * into standard hast nodes (`element`, `text`, etc).\n * This is a heavy task as it needs a full HTML parser, but it is the only\n * way to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `mdast-util-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n * <p id=x></p>\n * <script>alert(x) // `x` now refers to the DOM `p#x` element</script>\n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * Example: headings (DOM clobbering) in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value` (and doesn’t have `data.hName`,\n * `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n * node\n * * otherwise, create a `<div>` element (which could be changed with\n * `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @param {MdastNodes} tree\n * mdast tree.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {HastNodes}\n * hast tree.\n */\nexport function toHast(tree, options) {\n const state = createState(tree, options)\n const node = state.one(tree, undefined)\n const foot = footer(state)\n /** @type {HastNodes} */\n const result = Array.isArray(node)\n ? {type: 'root', children: node}\n : node || {type: 'root', children: []}\n\n if (foot) {\n // If there’s a footer, there were definitions, meaning block\n // content.\n // So `result` is a parent node.\n assert('children' in result)\n result.children.push({type: 'text', value: '\\n'}, foot)\n }\n\n return result\n}\n","/**\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('mdast').Nodes} Nodes\n * @typedef {import('mdast').Reference} Reference\n *\n * @typedef {import('./state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Return the content of a reference without definition as plain text.\n *\n * @param {State} state\n * Info passed around.\n * @param {Extract<Nodes, Reference>} node\n * Reference node (image, link).\n * @returns {Array<ElementContent>}\n * hast content.\n */\nexport function revert(state, node) {\n const subtype = node.referenceType\n let suffix = ']'\n\n if (subtype === 'collapsed') {\n suffix += '[]'\n } else if (subtype === 'full') {\n suffix += '[' + (node.label || node.identifier) + ']'\n }\n\n if (node.type === 'imageReference') {\n return [{type: 'text', value: '![' + node.alt + suffix}]\n }\n\n const contents = state.all(node)\n const head = contents[0]\n\n if (head && head.type === 'text') {\n head.value = '[' + head.value\n } else {\n contents.unshift({type: 'text', value: '['})\n }\n\n const tail = contents[contents.length - 1]\n\n if (tail && tail.type === 'text') {\n tail.value += suffix\n } else {\n contents.push({type: 'text', value: suffix})\n }\n\n return contents\n}\n","/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').ElementContent} HastElementContent\n * @typedef {import('hast').Nodes} HastNodes\n * @typedef {import('hast').Properties} HastProperties\n * @typedef {import('hast').RootContent} HastRootContent\n * @typedef {import('hast').Text} HastText\n *\n * @typedef {import('mdast').Definition} MdastDefinition\n * @typedef {import('mdast').FootnoteDefinition} MdastFootnoteDefinition\n * @typedef {import('mdast').Nodes} MdastNodes\n * @typedef {import('mdast').Parents} MdastParents\n *\n * @typedef {import('vfile').VFile} VFile\n *\n * @typedef {import('./footer.js').FootnoteBackContentTemplate} FootnoteBackContentTemplate\n * @typedef {import('./footer.js').FootnoteBackLabelTemplate} FootnoteBackLabelTemplate\n */\n\n/**\n * @callback Handler\n * Handle a node.\n * @param {State} state\n * Info passed around.\n * @param {any} node\n * mdast node to handle.\n * @param {MdastParents | undefined} parent\n * Parent of `node`.\n * @returns {Array<HastElementContent> | HastElementContent | undefined}\n * hast node.\n *\n * @typedef {Partial<Record<MdastNodes['type'], Handler>>} Handlers\n * Handle nodes.\n *\n * @typedef Options\n * Configuration (optional).\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n * Whether to persist raw HTML in markdown in the hast tree (default:\n * `false`).\n * @property {string | null | undefined} [clobberPrefix='user-content-']\n * Prefix to use before the `id` property on footnotes to prevent them from\n * *clobbering* (default: `'user-content-'`).\n *\n * Pass `''` for trusted markdown and when you are careful with\n * polyfilling.\n * You could pass a different prefix.\n *\n * DOM clobbering is this:\n *\n * ```html\n * <p id=\"x\"></p>\n * <script>alert(x) // `x` now refers to the `p#x` DOM element</script>\n * ```\n *\n * The above example shows that elements are made available by browsers, by\n * their ID, on the `window` object.\n * This is a security risk because you might be expecting some other variable\n * at that place.\n * It can also break polyfills.\n * Using a prefix solves these problems.\n * @property {VFile | null | undefined} [file]\n * Corresponding virtual file representing the input document (optional).\n * @property {FootnoteBackContentTemplate | string | null | undefined} [footnoteBackContent]\n * Content of the backreference back to references (default: `defaultFootnoteBackContent`).\n *\n * The default value is:\n *\n * ```js\n * function defaultFootnoteBackContent(_, rereferenceIndex) {\n * const result = [{type: 'text', value: '↩'}]\n *\n * if (rereferenceIndex > 1) {\n * result.push({\n * type: 'element',\n * tagName: 'sup',\n * properties: {},\n * children: [{type: 'text', value: String(rereferenceIndex)}]\n * })\n * }\n *\n * return result\n * }\n * ```\n *\n * This content is used in the `a` element of each backreference (the `↩`\n * links).\n * @property {FootnoteBackLabelTemplate | string | null | undefined} [footnoteBackLabel]\n * Label to describe the backreference back to references (default:\n * `defaultFootnoteBackLabel`).\n *\n * The default value is:\n *\n * ```js\n * function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n * return (\n * 'Back to reference ' +\n * (referenceIndex + 1) +\n * (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n * )\n * }\n * ```\n *\n * Change it when the markdown is not in English.\n *\n * This label is used in the `ariaLabel` property on each backreference\n * (the `↩` links).\n * It affects users of assistive technology.\n * @property {string | null | undefined} [footnoteLabel='Footnotes']\n * Textual label to use for the footnotes section (default: `'Footnotes'`).\n *\n * Change it when the markdown is not in English.\n *\n * This label is typically hidden visually (assuming a `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass different properties with the `footnoteLabelProperties` option.\n * @property {HastProperties | null | undefined} [footnoteLabelProperties={className: ['sr-only']}]\n * Properties to use on the footnote label (default: `{className:\n * ['sr-only']}`).\n *\n * Change it to show the label and add other properties.\n *\n * This label is typically hidden visually (assuming an `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass an empty string.\n * You can also add different properties.\n *\n * > **Note**: `id: 'footnote-label'` is always added, because footnote\n * > calls use it with `aria-describedby` to provide an accessible label.\n * @property {string | null | undefined} [footnoteLabelTagName='h2']\n * HTML tag name to use for the footnote label element (default: `'h2'`).\n *\n * Change it to match your document structure.\n *\n * This label is typically hidden visually (assuming a `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass different properties with the `footnoteLabelProperties` option.\n * @property {Handlers | null | undefined} [handlers]\n * Extra handlers for nodes (optional).\n * @property {Array<MdastNodes['type']> | null | undefined} [passThrough]\n * List of custom mdast node types to pass through (keep) in hast (note that\n * the node itself is passed, but eventual children are transformed)\n * (optional).\n * @property {Handler | null | undefined} [unknownHandler]\n * Handler for all unknown nodes (optional).\n *\n * @typedef State\n * Info passed around.\n * @property {(node: MdastNodes) => Array<HastElementContent>} all\n * Transform the children of an mdast parent to hast.\n * @property {<Type extends HastNodes>(from: MdastNodes, to: Type) => HastElement | Type} applyData\n * Honor the `data` of `from`, and generate an element instead of `node`.\n * @property {Map<string, MdastDefinition>} definitionById\n * Definitions by their identifier.\n * @property {Map<string, MdastFootnoteDefinition>} footnoteById\n * Footnote definitions by their identifier.\n * @property {Map<string, number>} footnoteCounts\n * Counts for how often the same footnote was called.\n * @property {Array<string>} footnoteOrder\n * Identifiers of order when footnote calls first appear in tree order.\n * @property {Handlers} handlers\n * Applied handlers.\n * @property {(node: MdastNodes, parent: MdastParents | undefined) => Array<HastElementContent> | HastElementContent | undefined} one\n * Transform an mdast node to hast.\n * @property {Options} options\n * Configuration.\n * @property {(from: MdastNodes, node: HastNodes) => undefined} patch\n * Copy a node’s positional info.\n * @property {<Type extends HastRootContent>(nodes: Array<Type>, loose?: boolean | undefined) => Array<HastText | Type>} wrap\n * Wrap `nodes` with line endings between each node, adds initial/final line endings when `loose`.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {visit} from 'unist-util-visit'\nimport {position} from 'unist-util-position'\nimport {handlers as defaultHandlers} from './handlers/index.js'\n\nconst own = {}.hasOwnProperty\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Create `state` from an mdast tree.\n *\n * @param {MdastNodes} tree\n * mdast node to transform.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {State}\n * `state` function.\n */\nexport function createState(tree, options) {\n const settings = options || emptyOptions\n /** @type {Map<string, MdastDefinition>} */\n const definitionById = new Map()\n /** @type {Map<string, MdastFootnoteDefinition>} */\n const footnoteById = new Map()\n /** @type {Map<string, number>} */\n const footnoteCounts = new Map()\n /** @type {Handlers} */\n // @ts-expect-error: the root handler returns a root.\n // Hard to type.\n const handlers = {...defaultHandlers, ...settings.handlers}\n\n /** @type {State} */\n const state = {\n all,\n applyData,\n definitionById,\n footnoteById,\n footnoteCounts,\n footnoteOrder: [],\n handlers,\n one,\n options: settings,\n patch,\n wrap\n }\n\n visit(tree, function (node) {\n if (node.type === 'definition' || node.type === 'footnoteDefinition') {\n const map = node.type === 'definition' ? definitionById : footnoteById\n const id = String(node.identifier).toUpperCase()\n\n // Mimick CM behavior of link definitions.\n // See: <https://github.com/syntax-tree/mdast-util-definitions/blob/9032189/lib/index.js#L20-L21>.\n if (!map.has(id)) {\n // @ts-expect-error: node type matches map.\n map.set(id, node)\n }\n }\n })\n\n return state\n\n /**\n * Transform an mdast node into a hast node.\n *\n * @param {MdastNodes} node\n * mdast node.\n * @param {MdastParents | undefined} [parent]\n * Parent of `node`.\n * @returns {Array<HastElementContent> | HastElementContent | undefined}\n * Resulting hast node.\n */\n function one(node, parent) {\n const type = node.type\n const handle = state.handlers[type]\n\n if (own.call(state.handlers, type) && handle) {\n return handle(state, node, parent)\n }\n\n if (state.options.passThrough && state.options.passThrough.includes(type)) {\n if ('children' in node) {\n const {children, ...shallow} = node\n const result = structuredClone(shallow)\n // @ts-expect-error: TS doesn’t understand…\n result.children = state.all(node)\n // @ts-expect-error: TS doesn’t understand…\n return result\n }\n\n // @ts-expect-error: it’s custom.\n return structuredClone(node)\n }\n\n const unknown = state.options.unknownHandler || defaultUnknownHandler\n\n return unknown(state, node, parent)\n }\n\n /**\n * Transform the children of an mdast node into hast nodes.\n *\n * @param {MdastNodes} parent\n * mdast node to compile\n * @returns {Array<HastElementContent>}\n * Resulting hast nodes.\n */\n function all(parent) {\n /** @type {Array<HastElementContent>} */\n const values = []\n\n if ('children' in parent) {\n const nodes = parent.children\n let index = -1\n while (++index < nodes.length) {\n const result = state.one(nodes[index], parent)\n\n // To do: see if we van clean this? Can we merge texts?\n if (result) {\n if (index && nodes[index - 1].type === 'break') {\n if (!Array.isArray(result) && result.type === 'text') {\n result.value = trimMarkdownSpaceStart(result.value)\n }\n\n if (!Array.isArray(result) && result.type === 'element') {\n const head = result.children[0]\n\n if (head && head.type === 'text') {\n head.value = trimMarkdownSpaceStart(head.value)\n }\n }\n }\n\n if (Array.isArray(result)) {\n values.push(...result)\n } else {\n values.push(result)\n }\n }\n }\n }\n\n return values\n }\n}\n\n/**\n * Copy a node’s positional info.\n *\n * @param {MdastNodes} from\n * mdast node to copy from.\n * @param {HastNodes} to\n * hast node to copy into.\n * @returns {undefined}\n * Nothing.\n */\nfunction patch(from, to) {\n if (from.position) to.position = position(from)\n}\n\n/**\n * Honor the `data` of `from` and maybe generate an element instead of `to`.\n *\n * @template {HastNodes} Type\n * Node type.\n * @param {MdastNodes} from\n * mdast node to use data from.\n * @param {Type} to\n * hast node to change.\n * @returns {HastElement | Type}\n * Nothing.\n */\nfunction applyData(from, to) {\n /** @type {HastElement | Type} */\n let result = to\n\n // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n if (from && from.data) {\n const hName = from.data.hName\n const hChildren = from.data.hChildren\n const hProperties = from.data.hProperties\n\n if (typeof hName === 'string') {\n // Transforming the node resulted in an element with a different name\n // than wanted:\n if (result.type === 'element') {\n result.tagName = hName\n }\n // Transforming the node resulted in a non-element, which happens for\n // raw, text, and root nodes (unless custom handlers are passed).\n // The intent of `hName` is to create an element, but likely also to keep\n // the content around (otherwise: pass `hChildren`).\n else {\n /** @type {Array<HastElementContent>} */\n // @ts-expect-error: assume no doctypes in `root`.\n const children = 'children' in result ? result.children : [result]\n result = {type: 'element', tagName: hName, properties: {}, children}\n }\n }\n\n if (result.type === 'element' && hProperties) {\n Object.assign(result.properties, structuredClone(hProperties))\n }\n\n if (\n 'children' in result &&\n result.children &&\n hChildren !== null &&\n hChildren !== undefined\n ) {\n result.children = hChildren\n }\n }\n\n return result\n}\n\n/**\n * Transform an unknown node.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdastNodes} node\n * Unknown mdast node.\n * @returns {HastElement | HastText}\n * Resulting hast node.\n */\nfunction defaultUnknownHandler(state, node) {\n const data = node.data || {}\n /** @type {HastElement | HastText} */\n const result =\n 'value' in node &&\n !(own.call(data, 'hProperties') || own.call(data, 'hChildren'))\n ? {type: 'text', value: node.value}\n : {\n type: 'element',\n tagName: 'div',\n properties: {},\n children: state.all(node)\n }\n\n state.patch(node, result)\n return state.applyData(node, result)\n}\n\n/**\n * Wrap `nodes` with line endings between each node.\n *\n * @template {HastRootContent} Type\n * Node type.\n * @param {Array<Type>} nodes\n * List of nodes to wrap.\n * @param {boolean | undefined} [loose=false]\n * Whether to add line endings at start and end (default: `false`).\n * @returns {Array<HastText | Type>}\n * Wrapped nodes.\n */\nexport function wrap(nodes, loose) {\n /** @type {Array<HastText | Type>} */\n const result = []\n let index = -1\n\n if (loose) {\n result.push({type: 'text', value: '\\n'})\n }\n\n while (++index < nodes.length) {\n if (index) result.push({type: 'text', value: '\\n'})\n result.push(nodes[index])\n }\n\n if (loose && nodes.length > 0) {\n result.push({type: 'text', value: '\\n'})\n }\n\n return result\n}\n\n/**\n * Trim spaces and tabs at the start of `value`.\n *\n * @param {string} value\n * Value to trim.\n * @returns {string}\n * Result.\n */\nfunction trimMarkdownSpaceStart(value) {\n let index = 0\n let code = value.charCodeAt(index)\n\n while (code === 9 || code === 32) {\n index++\n code = value.charCodeAt(index)\n }\n\n return value.slice(index)\n}\n","import {\n VOID, PRIMITIVE,\n ARRAY, OBJECT,\n DATE, REGEXP, MAP, SET,\n ERROR, BIGINT\n} from './types.js';\n\nconst env = typeof self === 'object' ? self : globalThis;\n\nconst deserializer = ($, _) => {\n const as = (out, index) => {\n $.set(index, out);\n return out;\n };\n\n const unpair = index => {\n if ($.has(index))\n return $.get(index);\n\n const [type, value] = _[index];\n switch (type) {\n case PRIMITIVE:\n case VOID:\n return as(value, index);\n case ARRAY: {\n const arr = as([], index);\n for (const index of value)\n arr.push(unpair(index));\n return arr;\n }\n case OBJECT: {\n const object = as({}, index);\n for (const [key, index] of value)\n object[unpair(key)] = unpair(index);\n return object;\n }\n case DATE:\n return as(new Date(value), index);\n case REGEXP: {\n const {source, flags} = value;\n return as(new RegExp(source, flags), index);\n }\n case MAP: {\n const map = as(new Map, index);\n for (const [key, index] of value)\n map.set(unpair(key), unpair(index));\n return map;\n }\n case SET: {\n const set = as(new Set, index);\n for (const index of value)\n set.add(unpair(index));\n return set;\n }\n case ERROR: {\n const {name, message} = value;\n return as(new env[name](message), index);\n }\n case BIGINT:\n return as(BigInt(value), index);\n case 'BigInt':\n return as(Object(BigInt(value)), index);\n case 'ArrayBuffer':\n return as(new Uint8Array(value).buffer, value);\n case 'DataView': {\n const { buffer } = new Uint8Array(value);\n return as(new DataView(buffer), value);\n }\n }\n return as(new env[type](value), index);\n };\n\n return unpair;\n};\n\n/**\n * @typedef {Array<string,any>} Record a type representation\n */\n\n/**\n * Returns a deserialized value from a serialized array of Records.\n * @param {Record[]} serialized a previously serialized value.\n * @returns {any}\n */\nexport const deserialize = serialized => deserializer(new Map, serialized)(0);\n","import {\n VOID, PRIMITIVE,\n ARRAY, OBJECT,\n DATE, REGEXP, MAP, SET,\n ERROR, BIGINT\n} from './types.js';\n\nconst EMPTY = '';\n\nconst {toString} = {};\nconst {keys} = Object;\n\nconst typeOf = value => {\n const type = typeof value;\n if (type !== 'object' || !value)\n return [PRIMITIVE, type];\n\n const asString = toString.call(value).slice(8, -1);\n switch (asString) {\n case 'Array':\n return [ARRAY, EMPTY];\n case 'Object':\n return [OBJECT, EMPTY];\n case 'Date':\n return [DATE, EMPTY];\n case 'RegExp':\n return [REGEXP, EMPTY];\n case 'Map':\n return [MAP, EMPTY];\n case 'Set':\n return [SET, EMPTY];\n case 'DataView':\n return [ARRAY, asString];\n }\n\n if (asString.includes('Array'))\n return [ARRAY, asString];\n\n if (asString.includes('Error'))\n return [ERROR, asString];\n\n return [OBJECT, asString];\n};\n\nconst shouldSkip = ([TYPE, type]) => (\n TYPE === PRIMITIVE &&\n (type === 'function' || type === 'symbol')\n);\n\nconst serializer = (strict, json, $, _) => {\n\n const as = (out, value) => {\n const index = _.push(out) - 1;\n $.set(value, index);\n return index;\n };\n\n const pair = value => {\n if ($.has(value))\n return $.get(value);\n\n let [TYPE, type] = typeOf(value);\n switch (TYPE) {\n case PRIMITIVE: {\n let entry = value;\n switch (type) {\n case 'bigint':\n TYPE = BIGINT;\n entry = value.toString();\n break;\n case 'function':\n case 'symbol':\n if (strict)\n throw new TypeError('unable to serialize ' + type);\n entry = null;\n break;\n case 'undefined':\n return as([VOID], value);\n }\n return as([TYPE, entry], value);\n }\n case ARRAY: {\n if (type) {\n let spread = value;\n if (type === 'DataView') {\n spread = new Uint8Array(value.buffer);\n }\n else if (type === 'ArrayBuffer') {\n spread = new Uint8Array(value);\n }\n return as([type, [...spread]], value);\n }\n\n const arr = [];\n const index = as([TYPE, arr], value);\n for (const entry of value)\n arr.push(pair(entry));\n return index;\n }\n case OBJECT: {\n if (type) {\n switch (type) {\n case 'BigInt':\n return as([type, value.toString()], value);\n case 'Boolean':\n case 'Number':\n case 'String':\n return as([type, value.valueOf()], value);\n }\n }\n\n if (json && ('toJSON' in value))\n return pair(value.toJSON());\n\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const key of keys(value)) {\n if (strict || !shouldSkip(typeOf(value[key])))\n entries.push([pair(key), pair(value[key])]);\n }\n return index;\n }\n case DATE:\n return as([TYPE, value.toISOString()], value);\n case REGEXP: {\n const {source, flags} = value;\n return as([TYPE, {source, flags}], value);\n }\n case MAP: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const [key, entry] of value) {\n if (strict || !(shouldSkip(typeOf(key)) || shouldSkip(typeOf(entry))))\n entries.push([pair(key), pair(entry)]);\n }\n return index;\n }\n case SET: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const entry of value) {\n if (strict || !shouldSkip(typeOf(entry)))\n entries.push(pair(entry));\n }\n return index;\n }\n }\n\n const {message} = value;\n return as([TYPE, {name: type, message}], value);\n };\n\n return pair;\n};\n\n/**\n * @typedef {Array<string,any>} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} value a serializable value.\n * @param {{json?: boolean, lossy?: boolean}?} options an object with a `lossy` or `json` property that,\n * if `true`, will not throw errors on incompatible types, and behave more\n * like JSON stringify would behave. Symbol and Function will be discarded.\n * @returns {Record[]}\n */\n export const serialize = (value, {json, lossy} = {}) => {\n const _ = [];\n return serializer(!(json || lossy), !!json, new Map, _)(value), _;\n};\n","import {deserialize} from './deserialize.js';\nimport {serialize} from './serialize.js';\n\n/**\n * @typedef {Array<string,any>} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} any a serializable value.\n * @param {{transfer?: any[], json?: boolean, lossy?: boolean}?} options an object with\n * a transfer option (ignored when polyfilled) and/or non standard fields that\n * fallback to the polyfill if present.\n * @returns {Record[]}\n */\nexport default typeof structuredClone === \"function\" ?\n /* c8 ignore start */\n (any, options) => (\n options && ('json' in options || 'lossy' in options) ?\n deserialize(serialize(any, options)) : structuredClone(any)\n ) :\n (any, options) => deserialize(serialize(any, options));\n /* c8 ignore stop */\n\nexport {deserialize, serialize};\n","export const VOID = -1;\nexport const PRIMITIVE = 0;\nexport const ARRAY = 1;\nexport const OBJECT = 2;\nexport const DATE = 3;\nexport const REGEXP = 4;\nexport const MAP = 5;\nexport const SET = 6;\nexport const ERROR = 7;\nexport const BIGINT = 8;\n// export const SYMBOL = 9;\n","/**\n * @typedef {import('mdast').Nodes} Nodes\n *\n * @typedef Options\n * Configuration (optional).\n * @property {boolean | null | undefined} [includeImageAlt=true]\n * Whether to use `alt` for `image`s (default: `true`).\n * @property {boolean | null | undefined} [includeHtml=true]\n * Whether to use `value` of HTML (default: `true`).\n */\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Get the text content of a node or list of nodes.\n *\n * Prefers the node’s plain-text fields, otherwise serializes its children,\n * and if the given value is an array, serialize the nodes in it.\n *\n * @param {unknown} [value]\n * Thing to serialize, typically `Node`.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {string}\n * Serialized `value`.\n */\nexport function toString(value, options) {\n const settings = options || emptyOptions\n const includeImageAlt =\n typeof settings.includeImageAlt === 'boolean'\n ? settings.includeImageAlt\n : true\n const includeHtml =\n typeof settings.includeHtml === 'boolean' ? settings.includeHtml : true\n\n return one(value, includeImageAlt, includeHtml)\n}\n\n/**\n * One node or several nodes.\n *\n * @param {unknown} value\n * Thing to serialize.\n * @param {boolean} includeImageAlt\n * Include image `alt`s.\n * @param {boolean} includeHtml\n * Include HTML.\n * @returns {string}\n * Serialized node.\n */\nfunction one(value, includeImageAlt, includeHtml) {\n if (node(value)) {\n if ('value' in value) {\n return value.type === 'html' && !includeHtml ? '' : value.value\n }\n\n if (includeImageAlt && 'alt' in value && value.alt) {\n return value.alt\n }\n\n if ('children' in value) {\n return all(value.children, includeImageAlt, includeHtml)\n }\n }\n\n if (Array.isArray(value)) {\n return all(value, includeImageAlt, includeHtml)\n }\n\n return ''\n}\n\n/**\n * Serialize a list of nodes.\n *\n * @param {Array<unknown>} values\n * Thing to serialize.\n * @param {boolean} includeImageAlt\n * Include image `alt`s.\n * @param {boolean} includeHtml\n * Include HTML.\n * @returns {string}\n * Serialized nodes.\n */\nfunction all(values, includeImageAlt, includeHtml) {\n /** @type {Array<string>} */\n const result = []\n let index = -1\n\n while (++index < values.length) {\n result[index] = one(values[index], includeImageAlt, includeHtml)\n }\n\n return result.join('')\n}\n\n/**\n * Check if `value` looks like a node.\n *\n * @param {unknown} value\n * Thing.\n * @returns {value is Nodes}\n * Whether `value` is a node.\n */\nfunction node(value) {\n return Boolean(value && typeof value === 'object')\n}\n","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const blankLine = {\n partial: true,\n tokenize: tokenizeBlankLine\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLine(effects, ok, nok) {\n return start;\n\n /**\n * Start of blank line.\n *\n * > 👉 **Note**: `␠` represents a space character.\n *\n * ```markdown\n * > | ␠␠␊\n * ^\n * > | ␊\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n return markdownSpace(code) ? factorySpace(effects, after, \"linePrefix\")(code) : after(code);\n }\n\n /**\n * At eof/eol, after optional whitespace.\n *\n * > 👉 **Note**: `␠` represents a space character.\n *\n * ```markdown\n * > | ␠␠␊\n * ^\n * > | ␊\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code);\n }\n}","/**\n * @import {Effects, State, TokenType} from 'micromark-util-types'\n */\n\nimport { markdownSpace } from 'micromark-util-character';\n\n// To do: implement `spaceOrTab`, `spaceOrTabMinMax`, `spaceOrTabWithOptions`.\n\n/**\n * Parse spaces and tabs.\n *\n * There is no `nok` parameter:\n *\n * * spaces in markdown are often optional, in which case this factory can be\n * used and `ok` will be switched to whether spaces were found or not\n * * one line ending or space can be detected with `markdownSpace(code)` right\n * before using `factorySpace`\n *\n * ###### Examples\n *\n * Where `␉` represents a tab (plus how much it expands) and `␠` represents a\n * single space.\n *\n * ```markdown\n * ␉\n * ␠␠␠␠\n * ␉␠\n * ```\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {TokenType} type\n * Type (`' \\t'`).\n * @param {number | undefined} [max=Infinity]\n * Max (exclusive).\n * @returns {State}\n * Start state.\n */\nexport function factorySpace(effects, ok, type, max) {\n const limit = max ? max - 1 : Number.POSITIVE_INFINITY;\n let size = 0;\n return start;\n\n /** @type {State} */\n function start(code) {\n if (markdownSpace(code)) {\n effects.enter(type);\n return prefix(code);\n }\n return ok(code);\n }\n\n /** @type {State} */\n function prefix(code) {\n if (markdownSpace(code) && size++ < limit) {\n effects.consume(code);\n return prefix;\n }\n effects.exit(type);\n return ok(code);\n }\n}","/**\n * @import {Code} from 'micromark-util-types'\n */\n\n/**\n * Check whether the character code represents an ASCII alpha (`a` through `z`,\n * case insensitive).\n *\n * An **ASCII alpha** is an ASCII upper alpha or ASCII lower alpha.\n *\n * An **ASCII upper alpha** is a character in the inclusive range U+0041 (`A`)\n * to U+005A (`Z`).\n *\n * An **ASCII lower alpha** is a character in the inclusive range U+0061 (`a`)\n * to U+007A (`z`).\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiAlpha = regexCheck(/[A-Za-z]/);\n\n/**\n * Check whether the character code represents an ASCII alphanumeric (`a`\n * through `z`, case insensitive, or `0` through `9`).\n *\n * An **ASCII alphanumeric** is an ASCII digit (see `asciiDigit`) or ASCII alpha\n * (see `asciiAlpha`).\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/);\n\n/**\n * Check whether the character code represents an ASCII atext.\n *\n * atext is an ASCII alphanumeric (see `asciiAlphanumeric`), or a character in\n * the inclusive ranges U+0023 NUMBER SIGN (`#`) to U+0027 APOSTROPHE (`'`),\n * U+002A ASTERISK (`*`), U+002B PLUS SIGN (`+`), U+002D DASH (`-`), U+002F\n * SLASH (`/`), U+003D EQUALS TO (`=`), U+003F QUESTION MARK (`?`), U+005E\n * CARET (`^`) to U+0060 GRAVE ACCENT (`` ` ``), or U+007B LEFT CURLY BRACE\n * (`{`) to U+007E TILDE (`~`).\n *\n * See:\n * **\\[RFC5322]**:\n * [Internet Message Format](https://tools.ietf.org/html/rfc5322).\n * P. Resnick.\n * IETF.\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiAtext = regexCheck(/[#-'*+\\--9=?A-Z^-~]/);\n\n/**\n * Check whether a character code is an ASCII control character.\n *\n * An **ASCII control** is a character in the inclusive range U+0000 NULL (NUL)\n * to U+001F (US), or U+007F (DEL).\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function asciiControl(code) {\n return (\n // Special whitespace codes (which have negative values), C0 and Control\n // character DEL\n code !== null && (code < 32 || code === 127)\n );\n}\n\n/**\n * Check whether the character code represents an ASCII digit (`0` through `9`).\n *\n * An **ASCII digit** is a character in the inclusive range U+0030 (`0`) to\n * U+0039 (`9`).\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiDigit = regexCheck(/\\d/);\n\n/**\n * Check whether the character code represents an ASCII hex digit (`a` through\n * `f`, case insensitive, or `0` through `9`).\n *\n * An **ASCII hex digit** is an ASCII digit (see `asciiDigit`), ASCII upper hex\n * digit, or an ASCII lower hex digit.\n *\n * An **ASCII upper hex digit** is a character in the inclusive range U+0041\n * (`A`) to U+0046 (`F`).\n *\n * An **ASCII lower hex digit** is a character in the inclusive range U+0061\n * (`a`) to U+0066 (`f`).\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiHexDigit = regexCheck(/[\\dA-Fa-f]/);\n\n/**\n * Check whether the character code represents ASCII punctuation.\n *\n * An **ASCII punctuation** is a character in the inclusive ranges U+0021\n * EXCLAMATION MARK (`!`) to U+002F SLASH (`/`), U+003A COLON (`:`) to U+0040 AT\n * SIGN (`@`), U+005B LEFT SQUARE BRACKET (`[`) to U+0060 GRAVE ACCENT\n * (`` ` ``), or U+007B LEFT CURLY BRACE (`{`) to U+007E TILDE (`~`).\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/);\n\n/**\n * Check whether a character code is a markdown line ending.\n *\n * A **markdown line ending** is the virtual characters M-0003 CARRIAGE RETURN\n * LINE FEED (CRLF), M-0004 LINE FEED (LF) and M-0005 CARRIAGE RETURN (CR).\n *\n * In micromark, the actual character U+000A LINE FEED (LF) and U+000D CARRIAGE\n * RETURN (CR) are replaced by these virtual characters depending on whether\n * they occurred together.\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function markdownLineEnding(code) {\n return code !== null && code < -2;\n}\n\n/**\n * Check whether a character code is a markdown line ending (see\n * `markdownLineEnding`) or markdown space (see `markdownSpace`).\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function markdownLineEndingOrSpace(code) {\n return code !== null && (code < 0 || code === 32);\n}\n\n/**\n * Check whether a character code is a markdown space.\n *\n * A **markdown space** is the concrete character U+0020 SPACE (SP) and the\n * virtual characters M-0001 VIRTUAL SPACE (VS) and M-0002 HORIZONTAL TAB (HT).\n *\n * In micromark, the actual character U+0009 CHARACTER TABULATION (HT) is\n * replaced by one M-0002 HORIZONTAL TAB (HT) and between 0 and 3 M-0001 VIRTUAL\n * SPACE (VS) characters, depending on the column at which the tab occurred.\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function markdownSpace(code) {\n return code === -2 || code === -1 || code === 32;\n}\n\n// Size note: removing ASCII from the regex and using `asciiPunctuation` here\n// In fact adds to the bundle size.\n/**\n * Check whether the character code represents Unicode punctuation.\n *\n * A **Unicode punctuation** is a character in the Unicode `Pc` (Punctuation,\n * Connector), `Pd` (Punctuation, Dash), `Pe` (Punctuation, Close), `Pf`\n * (Punctuation, Final quote), `Pi` (Punctuation, Initial quote), `Po`\n * (Punctuation, Other), or `Ps` (Punctuation, Open) categories, or an ASCII\n * punctuation (see `asciiPunctuation`).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const unicodePunctuation = regexCheck(/\\p{P}|\\p{S}/u);\n\n/**\n * Check whether the character code represents Unicode whitespace.\n *\n * Note that this does handle micromark specific markdown whitespace characters.\n * See `markdownLineEndingOrSpace` to check that.\n *\n * A **Unicode whitespace** is a character in the Unicode `Zs` (Separator,\n * Space) category, or U+0009 CHARACTER TABULATION (HT), U+000A LINE FEED (LF),\n * U+000C (FF), or U+000D CARRIAGE RETURN (CR) (**\\[UNICODE]**).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const unicodeWhitespace = regexCheck(/\\s/);\n\n/**\n * Create a code check from a regex.\n *\n * @param {RegExp} regex\n * Expression.\n * @returns {(code: Code) => boolean}\n * Check.\n */\nfunction regexCheck(regex) {\n return check;\n\n /**\n * Check whether a code matches the bound regex.\n *\n * @param {Code} code\n * Character code.\n * @returns {boolean}\n * Whether the character code matches the bound regex.\n */\n function check(code) {\n return code !== null && code > -1 && regex.test(String.fromCharCode(code));\n }\n}","/**\n * Like `Array#splice`, but smarter for giant arrays.\n *\n * `Array#splice` takes all items to be inserted as individual argument which\n * causes a stack overflow in V8 when trying to insert 100k items for instance.\n *\n * Otherwise, this does not return the removed items, and takes `items` as an\n * array instead of rest parameters.\n *\n * @template {unknown} T\n * Item type.\n * @param {Array<T>} list\n * List to operate on.\n * @param {number} start\n * Index to remove/insert at (can be negative).\n * @param {number} remove\n * Number of items to remove.\n * @param {Array<T>} items\n * Items to inject into `list`.\n * @returns {undefined}\n * Nothing.\n */\nexport function splice(list, start, remove, items) {\n const end = list.length;\n let chunkStart = 0;\n /** @type {Array<unknown>} */\n let parameters;\n\n // Make start between zero and `end` (included).\n if (start < 0) {\n start = -start > end ? 0 : end + start;\n } else {\n start = start > end ? end : start;\n }\n remove = remove > 0 ? remove : 0;\n\n // No need to chunk the items if there’s only a couple (10k) items.\n if (items.length < 10000) {\n parameters = Array.from(items);\n parameters.unshift(start, remove);\n // @ts-expect-error Hush, it’s fine.\n list.splice(...parameters);\n } else {\n // Delete `remove` items starting from `start`\n if (remove) list.splice(start, remove);\n\n // Insert the items in chunks to not cause stack overflows.\n while (chunkStart < items.length) {\n parameters = items.slice(chunkStart, chunkStart + 10000);\n parameters.unshift(start, 0);\n // @ts-expect-error Hush, it’s fine.\n list.splice(...parameters);\n chunkStart += 10000;\n start += 10000;\n }\n }\n}\n\n/**\n * Append `items` (an array) at the end of `list` (another array).\n * When `list` was empty, returns `items` instead.\n *\n * This prevents a potentially expensive operation when `list` is empty,\n * and adds items in batches to prevent V8 from hanging.\n *\n * @template {unknown} T\n * Item type.\n * @param {Array<T>} list\n * List to operate on.\n * @param {Array<T>} items\n * Items to add to `list`.\n * @returns {Array<T>}\n * Either `list` or `items`.\n */\nexport function push(list, items) {\n if (list.length > 0) {\n splice(list, list.length, 0, items);\n return list;\n }\n return items;\n}","/**\n * @import {\n * Extension,\n * Handles,\n * HtmlExtension,\n * NormalizedExtension\n * } from 'micromark-util-types'\n */\n\nimport {splice} from 'micromark-util-chunked'\n\nconst hasOwnProperty = {}.hasOwnProperty\n\n/**\n * Combine multiple syntax extensions into one.\n *\n * @param {ReadonlyArray<Extension>} extensions\n * List of syntax extensions.\n * @returns {NormalizedExtension}\n * A single combined extension.\n */\nexport function combineExtensions(extensions) {\n /** @type {NormalizedExtension} */\n const all = {}\n let index = -1\n\n while (++index < extensions.length) {\n syntaxExtension(all, extensions[index])\n }\n\n return all\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {NormalizedExtension} all\n * Extension to merge into.\n * @param {Extension} extension\n * Extension to merge.\n * @returns {undefined}\n * Nothing.\n */\nfunction syntaxExtension(all, extension) {\n /** @type {keyof Extension} */\n let hook\n\n for (hook in extension) {\n const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n /** @type {Record<string, unknown>} */\n const left = maybe || (all[hook] = {})\n /** @type {Record<string, unknown> | undefined} */\n const right = extension[hook]\n /** @type {string} */\n let code\n\n if (right) {\n for (code in right) {\n if (!hasOwnProperty.call(left, code)) left[code] = []\n const value = right[code]\n constructs(\n // @ts-expect-error Looks like a list.\n left[code],\n Array.isArray(value) ? value : value ? [value] : []\n )\n }\n }\n }\n}\n\n/**\n * Merge `list` into `existing` (both lists of constructs).\n * Mutates `existing`.\n *\n * @param {Array<unknown>} existing\n * List of constructs to merge into.\n * @param {Array<unknown>} list\n * List of constructs to merge.\n * @returns {undefined}\n * Nothing.\n */\nfunction constructs(existing, list) {\n let index = -1\n /** @type {Array<unknown>} */\n const before = []\n\n while (++index < list.length) {\n // @ts-expect-error Looks like an object.\n ;(list[index].add === 'after' ? existing : before).push(list[index])\n }\n\n splice(existing, 0, 0, before)\n}\n\n/**\n * Combine multiple HTML extensions into one.\n *\n * @param {ReadonlyArray<HtmlExtension>} htmlExtensions\n * List of HTML extensions.\n * @returns {HtmlExtension}\n * Single combined HTML extension.\n */\nexport function combineHtmlExtensions(htmlExtensions) {\n /** @type {HtmlExtension} */\n const handlers = {}\n let index = -1\n\n while (++index < htmlExtensions.length) {\n htmlExtension(handlers, htmlExtensions[index])\n }\n\n return handlers\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {HtmlExtension} all\n * Extension to merge into.\n * @param {HtmlExtension} extension\n * Extension to merge.\n * @returns {undefined}\n * Nothing.\n */\nfunction htmlExtension(all, extension) {\n /** @type {keyof HtmlExtension} */\n let hook\n\n for (hook in extension) {\n const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n const left = maybe || (all[hook] = {})\n const right = extension[hook]\n /** @type {keyof Handles} */\n let type\n\n if (right) {\n for (type in right) {\n // @ts-expect-error assume document vs regular handler are managed correctly.\n left[type] = right[type]\n }\n }\n }\n}\n","/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * Sort of like `String.fromCodePoint(Number.parseInt(value, base))`, but makes\n * non-characters and control characters safe.\n *\n * @param {string} value\n * Value to decode.\n * @param {number} base\n * Numeric base.\n * @returns {string}\n * Character.\n */\nexport function decodeNumericCharacterReference(value, base) {\n const code = Number.parseInt(value, base);\n if (\n // C0 except for HT, LF, FF, CR, space.\n code < 9 || code === 11 || code > 13 && code < 32 ||\n // Control character (DEL) of C0, and C1 controls.\n code > 126 && code < 160 ||\n // Lone high surrogates and low surrogates.\n code > 55_295 && code < 57_344 ||\n // Noncharacters.\n code > 64_975 && code < 65_008 || /* eslint-disable no-bitwise */\n (code & 65_535) === 65_535 || (code & 65_535) === 65_534 || /* eslint-enable no-bitwise */\n // Out of range\n code > 1_114_111) {\n return \"\\uFFFD\";\n }\n return String.fromCodePoint(code);\n}","import { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { decodeNumericCharacterReference } from 'micromark-util-decode-numeric-character-reference';\nconst characterEscapeOrReference = /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi;\n\n/**\n * Decode markdown strings (which occur in places such as fenced code info\n * strings, destinations, labels, and titles).\n *\n * The “string” content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n * Value to decode.\n * @returns {string}\n * Decoded value.\n */\nexport function decodeString(value) {\n return value.replace(characterEscapeOrReference, decode);\n}\n\n/**\n * @param {string} $0\n * Match.\n * @param {string} $1\n * Character escape.\n * @param {string} $2\n * Character reference.\n * @returns {string}\n * Decoded value\n */\nfunction decode($0, $1, $2) {\n if ($1) {\n // Escape.\n return $1;\n }\n\n // Reference.\n const head = $2.charCodeAt(0);\n if (head === 35) {\n const head = $2.charCodeAt(1);\n const hex = head === 120 || head === 88;\n return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10);\n }\n return decodeNamedCharacterReference($2) || $0;\n}","/**\n * Normalize an identifier (as found in references, definitions).\n *\n * Collapses markdown whitespace, trim, and then lower- and uppercase.\n *\n * Some characters are considered “uppercase”, such as U+03F4 (`ϴ`), but if their\n * lowercase counterpart (U+03B8 (`θ`)) is uppercased will result in a different\n * uppercase character (U+0398 (`Θ`)).\n * So, to get a canonical form, we perform both lower- and uppercase.\n *\n * Using uppercase last makes sure keys will never interact with default\n * prototypal values (such as `constructor`): nothing in the prototype of\n * `Object` is uppercase.\n *\n * @param {string} value\n * Identifier to normalize.\n * @returns {string}\n * Normalized identifier.\n */\nexport function normalizeIdentifier(value) {\n return value\n // Collapse markdown whitespace.\n .replace(/[\\t\\n\\r ]+/g, \" \")\n // Trim.\n .replace(/^ | $/g, '')\n // Some characters are considered “uppercase”, but if their lowercase\n // counterpart is uppercased will result in a different uppercase\n // character.\n // Hence, to get that form, we perform both lower- and uppercase.\n // Upper case makes sure keys will not interact with default prototypal\n // methods: no method is uppercase.\n .toLowerCase().toUpperCase();\n}","/**\n * @import {Event, Resolver, TokenizeContext} from 'micromark-util-types'\n */\n\n/**\n * Call all `resolveAll`s.\n *\n * @param {ReadonlyArray<{resolveAll?: Resolver | undefined}>} constructs\n * List of constructs, optionally with `resolveAll`s.\n * @param {Array<Event>} events\n * List of events.\n * @param {TokenizeContext} context\n * Context used by `tokenize`.\n * @returns {Array<Event>}\n * Changed events.\n */\nexport function resolveAll(constructs, events, context) {\n /** @type {Array<Resolver>} */\n const called = []\n let index = -1\n\n while (++index < constructs.length) {\n const resolve = constructs[index].resolveAll\n\n if (resolve && !called.includes(resolve)) {\n events = resolve(events, context)\n called.push(resolve)\n }\n }\n\n return events\n}\n","import { asciiAlphanumeric } from 'micromark-util-character';\nimport { encode } from 'micromark-util-encode';\n/**\n * Make a value safe for injection as a URL.\n *\n * This encodes unsafe characters with percent-encoding and skips already\n * encoded sequences (see `normalizeUri`).\n * Further unsafe characters are encoded as character references (see\n * `micromark-util-encode`).\n *\n * A regex of allowed protocols can be given, in which case the URL is\n * sanitized.\n * For example, `/^(https?|ircs?|mailto|xmpp)$/i` can be used for `a[href]`, or\n * `/^https?$/i` for `img[src]` (this is what `github.com` allows).\n * If the URL includes an unknown protocol (one not matched by `protocol`, such\n * as a dangerous example, `javascript:`), the value is ignored.\n *\n * @param {string | null | undefined} url\n * URI to sanitize.\n * @param {RegExp | null | undefined} [protocol]\n * Allowed protocols.\n * @returns {string}\n * Sanitized URI.\n */\nexport function sanitizeUri(url, protocol) {\n const value = encode(normalizeUri(url || ''));\n if (!protocol) {\n return value;\n }\n const colon = value.indexOf(':');\n const questionMark = value.indexOf('?');\n const numberSign = value.indexOf('#');\n const slash = value.indexOf('/');\n if (\n // If there is no protocol, it’s relative.\n colon < 0 ||\n // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n slash > -1 && colon > slash || questionMark > -1 && colon > questionMark || numberSign > -1 && colon > numberSign ||\n // It is a protocol, it should be allowed.\n protocol.test(value.slice(0, colon))) {\n return value;\n }\n return '';\n}\n\n/**\n * Normalize a URL.\n *\n * Encode unsafe characters with percent-encoding, skipping already encoded\n * sequences.\n *\n * @param {string} value\n * URI to normalize.\n * @returns {string}\n * Normalized URI.\n */\nexport function normalizeUri(value) {\n /** @type {Array<string>} */\n const result = [];\n let index = -1;\n let start = 0;\n let skip = 0;\n while (++index < value.length) {\n const code = value.charCodeAt(index);\n /** @type {string} */\n let replace = '';\n\n // A correct percent encoded value.\n if (code === 37 && asciiAlphanumeric(value.charCodeAt(index + 1)) && asciiAlphanumeric(value.charCodeAt(index + 2))) {\n skip = 2;\n }\n // ASCII.\n else if (code < 128) {\n if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code))) {\n replace = String.fromCharCode(code);\n }\n }\n // Astral.\n else if (code > 55_295 && code < 57_344) {\n const next = value.charCodeAt(index + 1);\n\n // A correct surrogate pair.\n if (code < 56_320 && next > 56_319 && next < 57_344) {\n replace = String.fromCharCode(code, next);\n skip = 1;\n }\n // Lone surrogate.\n else {\n replace = \"\\uFFFD\";\n }\n }\n // Unicode.\n else {\n replace = String.fromCharCode(code);\n }\n if (replace) {\n result.push(value.slice(start, index), encodeURIComponent(replace));\n start = index + skip + 1;\n replace = '';\n }\n if (skip) {\n index += skip;\n skip = 0;\n }\n }\n return result.join('') + value.slice(start);\n}","/**\n * @import {Chunk, Event, Token} from 'micromark-util-types'\n */\n\nimport { splice } from 'micromark-util-chunked';\nimport { SpliceBuffer } from './lib/splice-buffer.js';\n\n// Hidden API exposed for testing.\nexport { SpliceBuffer } from './lib/splice-buffer.js';\n\n/**\n * Tokenize subcontent.\n *\n * @param {Array<Event>} eventsArray\n * List of events.\n * @returns {boolean}\n * Whether subtokens were found.\n */\n// eslint-disable-next-line complexity\nexport function subtokenize(eventsArray) {\n /** @type {Record<string, number>} */\n const jumps = {};\n let index = -1;\n /** @type {Event} */\n let event;\n /** @type {number | undefined} */\n let lineIndex;\n /** @type {number} */\n let otherIndex;\n /** @type {Event} */\n let otherEvent;\n /** @type {Array<Event>} */\n let parameters;\n /** @type {Array<Event>} */\n let subevents;\n /** @type {boolean | undefined} */\n let more;\n const events = new SpliceBuffer(eventsArray);\n while (++index < events.length) {\n while (index in jumps) {\n index = jumps[index];\n }\n event = events.get(index);\n\n // Add a hook for the GFM tasklist extension, which needs to know if text\n // is in the first content of a list item.\n if (index && event[1].type === \"chunkFlow\" && events.get(index - 1)[1].type === \"listItemPrefix\") {\n subevents = event[1]._tokenizer.events;\n otherIndex = 0;\n if (otherIndex < subevents.length && subevents[otherIndex][1].type === \"lineEndingBlank\") {\n otherIndex += 2;\n }\n if (otherIndex < subevents.length && subevents[otherIndex][1].type === \"content\") {\n while (++otherIndex < subevents.length) {\n if (subevents[otherIndex][1].type === \"content\") {\n break;\n }\n if (subevents[otherIndex][1].type === \"chunkText\") {\n subevents[otherIndex][1]._isInFirstContentOfListItem = true;\n otherIndex++;\n }\n }\n }\n }\n\n // Enter.\n if (event[0] === 'enter') {\n if (event[1].contentType) {\n Object.assign(jumps, subcontent(events, index));\n index = jumps[index];\n more = true;\n }\n }\n // Exit.\n else if (event[1]._container) {\n otherIndex = index;\n lineIndex = undefined;\n while (otherIndex--) {\n otherEvent = events.get(otherIndex);\n if (otherEvent[1].type === \"lineEnding\" || otherEvent[1].type === \"lineEndingBlank\") {\n if (otherEvent[0] === 'enter') {\n if (lineIndex) {\n events.get(lineIndex)[1].type = \"lineEndingBlank\";\n }\n otherEvent[1].type = \"lineEnding\";\n lineIndex = otherIndex;\n }\n } else if (otherEvent[1].type === \"linePrefix\") {\n // Move past.\n } else {\n break;\n }\n }\n if (lineIndex) {\n // Fix position.\n event[1].end = {\n ...events.get(lineIndex)[1].start\n };\n\n // Switch container exit w/ line endings.\n parameters = events.slice(lineIndex, index);\n parameters.unshift(event);\n events.splice(lineIndex, index - lineIndex + 1, parameters);\n }\n }\n }\n\n // The changes to the `events` buffer must be copied back into the eventsArray\n splice(eventsArray, 0, Number.POSITIVE_INFINITY, events.slice(0));\n return !more;\n}\n\n/**\n * Tokenize embedded tokens.\n *\n * @param {SpliceBuffer<Event>} events\n * Events.\n * @param {number} eventIndex\n * Index.\n * @returns {Record<string, number>}\n * Gaps.\n */\nfunction subcontent(events, eventIndex) {\n const token = events.get(eventIndex)[1];\n const context = events.get(eventIndex)[2];\n let startPosition = eventIndex - 1;\n /** @type {Array<number>} */\n const startPositions = [];\n const tokenizer = token._tokenizer || context.parser[token.contentType](token.start);\n const childEvents = tokenizer.events;\n /** @type {Array<[number, number]>} */\n const jumps = [];\n /** @type {Record<string, number>} */\n const gaps = {};\n /** @type {Array<Chunk>} */\n let stream;\n /** @type {Token | undefined} */\n let previous;\n let index = -1;\n /** @type {Token | undefined} */\n let current = token;\n let adjust = 0;\n let start = 0;\n const breaks = [start];\n\n // Loop forward through the linked tokens to pass them in order to the\n // subtokenizer.\n while (current) {\n // Find the position of the event for this token.\n while (events.get(++startPosition)[1] !== current) {\n // Empty.\n }\n startPositions.push(startPosition);\n if (!current._tokenizer) {\n stream = context.sliceStream(current);\n if (!current.next) {\n stream.push(null);\n }\n if (previous) {\n tokenizer.defineSkip(current.start);\n }\n if (current._isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = true;\n }\n tokenizer.write(stream);\n if (current._isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = undefined;\n }\n }\n\n // Unravel the next token.\n previous = current;\n current = current.next;\n }\n\n // Now, loop back through all events (and linked tokens), to figure out which\n // parts belong where.\n current = token;\n while (++index < childEvents.length) {\n if (\n // Find a void token that includes a break.\n childEvents[index][0] === 'exit' && childEvents[index - 1][0] === 'enter' && childEvents[index][1].type === childEvents[index - 1][1].type && childEvents[index][1].start.line !== childEvents[index][1].end.line) {\n start = index + 1;\n breaks.push(start);\n // Help GC.\n current._tokenizer = undefined;\n current.previous = undefined;\n current = current.next;\n }\n }\n\n // Help GC.\n tokenizer.events = [];\n\n // If there’s one more token (which is the cases for lines that end in an\n // EOF), that’s perfect: the last point we found starts it.\n // If there isn’t then make sure any remaining content is added to it.\n if (current) {\n // Help GC.\n current._tokenizer = undefined;\n current.previous = undefined;\n } else {\n breaks.pop();\n }\n\n // Now splice the events from the subtokenizer into the current events,\n // moving back to front so that splice indices aren’t affected.\n index = breaks.length;\n while (index--) {\n const slice = childEvents.slice(breaks[index], breaks[index + 1]);\n const start = startPositions.pop();\n jumps.push([start, start + slice.length - 1]);\n events.splice(start, 2, slice);\n }\n jumps.reverse();\n index = -1;\n while (++index < jumps.length) {\n gaps[adjust + jumps[index][0]] = adjust + jumps[index][1];\n adjust += jumps[index][1] - jumps[index][0] - 1;\n }\n return gaps;\n}","/**\n * Some of the internal operations of micromark do lots of editing\n * operations on very large arrays. This runs into problems with two\n * properties of most circa-2020 JavaScript interpreters:\n *\n * - Array-length modifications at the high end of an array (push/pop) are\n * expected to be common and are implemented in (amortized) time\n * proportional to the number of elements added or removed, whereas\n * other operations (shift/unshift and splice) are much less efficient.\n * - Function arguments are passed on the stack, so adding tens of thousands\n * of elements to an array with `arr.push(...newElements)` will frequently\n * cause stack overflows. (see <https://stackoverflow.com/questions/22123769/rangeerror-maximum-call-stack-size-exceeded-why>)\n *\n * SpliceBuffers are an implementation of gap buffers, which are a\n * generalization of the \"queue made of two stacks\" idea. The splice buffer\n * maintains a cursor, and moving the cursor has cost proportional to the\n * distance the cursor moves, but inserting, deleting, or splicing in\n * new information at the cursor is as efficient as the push/pop operation.\n * This allows for an efficient sequence of splices (or pushes, pops, shifts,\n * or unshifts) as long such edits happen at the same part of the array or\n * generally sweep through the array from the beginning to the end.\n *\n * The interface for splice buffers also supports large numbers of inputs by\n * passing a single array argument rather passing multiple arguments on the\n * function call stack.\n *\n * @template T\n * Item type.\n */\nexport class SpliceBuffer {\n /**\n * @param {ReadonlyArray<T> | null | undefined} [initial]\n * Initial items (optional).\n * @returns\n * Splice buffer.\n */\n constructor(initial) {\n /** @type {Array<T>} */\n this.left = initial ? [...initial] : [];\n /** @type {Array<T>} */\n this.right = [];\n }\n\n /**\n * Array access;\n * does not move the cursor.\n *\n * @param {number} index\n * Index.\n * @return {T}\n * Item.\n */\n get(index) {\n if (index < 0 || index >= this.left.length + this.right.length) {\n throw new RangeError('Cannot access index `' + index + '` in a splice buffer of size `' + (this.left.length + this.right.length) + '`');\n }\n if (index < this.left.length) return this.left[index];\n return this.right[this.right.length - index + this.left.length - 1];\n }\n\n /**\n * The length of the splice buffer, one greater than the largest index in the\n * array.\n */\n get length() {\n return this.left.length + this.right.length;\n }\n\n /**\n * Remove and return `list[0]`;\n * moves the cursor to `0`.\n *\n * @returns {T | undefined}\n * Item, optional.\n */\n shift() {\n this.setCursor(0);\n return this.right.pop();\n }\n\n /**\n * Slice the buffer to get an array;\n * does not move the cursor.\n *\n * @param {number} start\n * Start.\n * @param {number | null | undefined} [end]\n * End (optional).\n * @returns {Array<T>}\n * Array of items.\n */\n slice(start, end) {\n /** @type {number} */\n const stop = end === null || end === undefined ? Number.POSITIVE_INFINITY : end;\n if (stop < this.left.length) {\n return this.left.slice(start, stop);\n }\n if (start > this.left.length) {\n return this.right.slice(this.right.length - stop + this.left.length, this.right.length - start + this.left.length).reverse();\n }\n return this.left.slice(start).concat(this.right.slice(this.right.length - stop + this.left.length).reverse());\n }\n\n /**\n * Mimics the behavior of Array.prototype.splice() except for the change of\n * interface necessary to avoid segfaults when patching in very large arrays.\n *\n * This operation moves cursor is moved to `start` and results in the cursor\n * placed after any inserted items.\n *\n * @param {number} start\n * Start;\n * zero-based index at which to start changing the array;\n * negative numbers count backwards from the end of the array and values\n * that are out-of bounds are clamped to the appropriate end of the array.\n * @param {number | null | undefined} [deleteCount=0]\n * Delete count (default: `0`);\n * maximum number of elements to delete, starting from start.\n * @param {Array<T> | null | undefined} [items=[]]\n * Items to include in place of the deleted items (default: `[]`).\n * @return {Array<T>}\n * Any removed items.\n */\n splice(start, deleteCount, items) {\n /** @type {number} */\n const count = deleteCount || 0;\n this.setCursor(Math.trunc(start));\n const removed = this.right.splice(this.right.length - count, Number.POSITIVE_INFINITY);\n if (items) chunkedPush(this.left, items);\n return removed.reverse();\n }\n\n /**\n * Remove and return the highest-numbered item in the array, so\n * `list[list.length - 1]`;\n * Moves the cursor to `length`.\n *\n * @returns {T | undefined}\n * Item, optional.\n */\n pop() {\n this.setCursor(Number.POSITIVE_INFINITY);\n return this.left.pop();\n }\n\n /**\n * Inserts a single item to the high-numbered side of the array;\n * moves the cursor to `length`.\n *\n * @param {T} item\n * Item.\n * @returns {undefined}\n * Nothing.\n */\n push(item) {\n this.setCursor(Number.POSITIVE_INFINITY);\n this.left.push(item);\n }\n\n /**\n * Inserts many items to the high-numbered side of the array.\n * Moves the cursor to `length`.\n *\n * @param {Array<T>} items\n * Items.\n * @returns {undefined}\n * Nothing.\n */\n pushMany(items) {\n this.setCursor(Number.POSITIVE_INFINITY);\n chunkedPush(this.left, items);\n }\n\n /**\n * Inserts a single item to the low-numbered side of the array;\n * Moves the cursor to `0`.\n *\n * @param {T} item\n * Item.\n * @returns {undefined}\n * Nothing.\n */\n unshift(item) {\n this.setCursor(0);\n this.right.push(item);\n }\n\n /**\n * Inserts many items to the low-numbered side of the array;\n * moves the cursor to `0`.\n *\n * @param {Array<T>} items\n * Items.\n * @returns {undefined}\n * Nothing.\n */\n unshiftMany(items) {\n this.setCursor(0);\n chunkedPush(this.right, items.reverse());\n }\n\n /**\n * Move the cursor to a specific position in the array. Requires\n * time proportional to the distance moved.\n *\n * If `n < 0`, the cursor will end up at the beginning.\n * If `n > length`, the cursor will end up at the end.\n *\n * @param {number} n\n * Position.\n * @return {undefined}\n * Nothing.\n */\n setCursor(n) {\n if (n === this.left.length || n > this.left.length && this.right.length === 0 || n < 0 && this.left.length === 0) return;\n if (n < this.left.length) {\n // Move cursor to the this.left\n const removed = this.left.splice(n, Number.POSITIVE_INFINITY);\n chunkedPush(this.right, removed.reverse());\n } else {\n // Move cursor to the this.right\n const removed = this.right.splice(this.left.length + this.right.length - n, Number.POSITIVE_INFINITY);\n chunkedPush(this.left, removed.reverse());\n }\n }\n}\n\n/**\n * Avoid stack overflow by pushing items onto the stack in segments\n *\n * @template T\n * Item type.\n * @param {Array<T>} list\n * List to inject into.\n * @param {ReadonlyArray<T>} right\n * Items to inject.\n * @return {undefined}\n * Nothing.\n */\nfunction chunkedPush(list, right) {\n /** @type {number} */\n let chunkStart = 0;\n if (right.length < 10000) {\n list.push(...right);\n } else {\n while (chunkStart < right.length) {\n list.push(...right.slice(chunkStart, chunkStart + 10000));\n chunkStart += 10000;\n }\n }\n}","/**\n * @import {\n * Code,\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const thematicBreak = {\n name: 'thematicBreak',\n tokenize: tokenizeThematicBreak\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeThematicBreak(effects, ok, nok) {\n let size = 0;\n /** @type {NonNullable<Code>} */\n let marker;\n return start;\n\n /**\n * Start of thematic break.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"thematicBreak\");\n // To do: parse indent like `markdown-rs`.\n return before(code);\n }\n\n /**\n * After optional whitespace, at marker.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n marker = code;\n return atBreak(code);\n }\n\n /**\n * After something, before something else.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === marker) {\n effects.enter(\"thematicBreakSequence\");\n return sequence(code);\n }\n if (size >= 3 && (code === null || markdownLineEnding(code))) {\n effects.exit(\"thematicBreak\");\n return ok(code);\n }\n return nok(code);\n }\n\n /**\n * In sequence.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function sequence(code) {\n if (code === marker) {\n effects.consume(code);\n size++;\n return sequence;\n }\n effects.exit(\"thematicBreakSequence\");\n return markdownSpace(code) ? factorySpace(effects, atBreak, \"whitespace\")(code) : atBreak(code);\n }\n}","/**\n * @import {\n * Code,\n * Construct,\n * Exiter,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { asciiDigit, markdownSpace } from 'micromark-util-character';\nimport { blankLine } from './blank-line.js';\nimport { thematicBreak } from './thematic-break.js';\n\n/** @type {Construct} */\nexport const list = {\n continuation: {\n tokenize: tokenizeListContinuation\n },\n exit: tokenizeListEnd,\n name: 'list',\n tokenize: tokenizeListStart\n};\n\n/** @type {Construct} */\nconst listItemPrefixWhitespaceConstruct = {\n partial: true,\n tokenize: tokenizeListItemPrefixWhitespace\n};\n\n/** @type {Construct} */\nconst indentConstruct = {\n partial: true,\n tokenize: tokenizeIndent\n};\n\n// To do: `markdown-rs` parses list items on their own and later stitches them\n// together.\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeListStart(effects, ok, nok) {\n const self = this;\n const tail = self.events[self.events.length - 1];\n let initialSize = tail && tail[1].type === \"linePrefix\" ? tail[2].sliceSerialize(tail[1], true).length : 0;\n let size = 0;\n return start;\n\n /** @type {State} */\n function start(code) {\n const kind = self.containerState.type || (code === 42 || code === 43 || code === 45 ? \"listUnordered\" : \"listOrdered\");\n if (kind === \"listUnordered\" ? !self.containerState.marker || code === self.containerState.marker : asciiDigit(code)) {\n if (!self.containerState.type) {\n self.containerState.type = kind;\n effects.enter(kind, {\n _container: true\n });\n }\n if (kind === \"listUnordered\") {\n effects.enter(\"listItemPrefix\");\n return code === 42 || code === 45 ? effects.check(thematicBreak, nok, atMarker)(code) : atMarker(code);\n }\n if (!self.interrupt || code === 49) {\n effects.enter(\"listItemPrefix\");\n effects.enter(\"listItemValue\");\n return inside(code);\n }\n }\n return nok(code);\n }\n\n /** @type {State} */\n function inside(code) {\n if (asciiDigit(code) && ++size < 10) {\n effects.consume(code);\n return inside;\n }\n if ((!self.interrupt || size < 2) && (self.containerState.marker ? code === self.containerState.marker : code === 41 || code === 46)) {\n effects.exit(\"listItemValue\");\n return atMarker(code);\n }\n return nok(code);\n }\n\n /**\n * @type {State}\n **/\n function atMarker(code) {\n effects.enter(\"listItemMarker\");\n effects.consume(code);\n effects.exit(\"listItemMarker\");\n self.containerState.marker = self.containerState.marker || code;\n return effects.check(blankLine,\n // Can’t be empty when interrupting.\n self.interrupt ? nok : onBlank, effects.attempt(listItemPrefixWhitespaceConstruct, endOfPrefix, otherPrefix));\n }\n\n /** @type {State} */\n function onBlank(code) {\n self.containerState.initialBlankLine = true;\n initialSize++;\n return endOfPrefix(code);\n }\n\n /** @type {State} */\n function otherPrefix(code) {\n if (markdownSpace(code)) {\n effects.enter(\"listItemPrefixWhitespace\");\n effects.consume(code);\n effects.exit(\"listItemPrefixWhitespace\");\n return endOfPrefix;\n }\n return nok(code);\n }\n\n /** @type {State} */\n function endOfPrefix(code) {\n self.containerState.size = initialSize + self.sliceSerialize(effects.exit(\"listItemPrefix\"), true).length;\n return ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeListContinuation(effects, ok, nok) {\n const self = this;\n self.containerState._closeFlow = undefined;\n return effects.check(blankLine, onBlank, notBlank);\n\n /** @type {State} */\n function onBlank(code) {\n self.containerState.furtherBlankLines = self.containerState.furtherBlankLines || self.containerState.initialBlankLine;\n\n // We have a blank line.\n // Still, try to consume at most the items size.\n return factorySpace(effects, ok, \"listItemIndent\", self.containerState.size + 1)(code);\n }\n\n /** @type {State} */\n function notBlank(code) {\n if (self.containerState.furtherBlankLines || !markdownSpace(code)) {\n self.containerState.furtherBlankLines = undefined;\n self.containerState.initialBlankLine = undefined;\n return notInCurrentItem(code);\n }\n self.containerState.furtherBlankLines = undefined;\n self.containerState.initialBlankLine = undefined;\n return effects.attempt(indentConstruct, ok, notInCurrentItem)(code);\n }\n\n /** @type {State} */\n function notInCurrentItem(code) {\n // While we do continue, we signal that the flow should be closed.\n self.containerState._closeFlow = true;\n // As we’re closing flow, we’re no longer interrupting.\n self.interrupt = undefined;\n // Always populated by defaults.\n\n return factorySpace(effects, effects.attempt(list, ok, nok), \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeIndent(effects, ok, nok) {\n const self = this;\n return factorySpace(effects, afterPrefix, \"listItemIndent\", self.containerState.size + 1);\n\n /** @type {State} */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1];\n return tail && tail[1].type === \"listItemIndent\" && tail[2].sliceSerialize(tail[1], true).length === self.containerState.size ? ok(code) : nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Exiter}\n */\nfunction tokenizeListEnd(effects) {\n effects.exit(this.containerState.type);\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeListItemPrefixWhitespace(effects, ok, nok) {\n const self = this;\n\n // Always populated by defaults.\n\n return factorySpace(effects, afterPrefix, \"listItemPrefixWhitespace\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4 + 1);\n\n /** @type {State} */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1];\n return !markdownSpace(code) && tail && tail[1].type === \"listItemPrefixWhitespace\" ? ok(code) : nok(code);\n }\n}","/**\n * @import {\n * Construct,\n * Exiter,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const blockQuote = {\n continuation: {\n tokenize: tokenizeBlockQuoteContinuation\n },\n exit,\n name: 'blockQuote',\n tokenize: tokenizeBlockQuoteStart\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlockQuoteStart(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * Start of block quote.\n *\n * ```markdown\n * > | > a\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (code === 62) {\n const state = self.containerState;\n if (!state.open) {\n effects.enter(\"blockQuote\", {\n _container: true\n });\n state.open = true;\n }\n effects.enter(\"blockQuotePrefix\");\n effects.enter(\"blockQuoteMarker\");\n effects.consume(code);\n effects.exit(\"blockQuoteMarker\");\n return after;\n }\n return nok(code);\n }\n\n /**\n * After `>`, before optional whitespace.\n *\n * ```markdown\n * > | > a\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (markdownSpace(code)) {\n effects.enter(\"blockQuotePrefixWhitespace\");\n effects.consume(code);\n effects.exit(\"blockQuotePrefixWhitespace\");\n effects.exit(\"blockQuotePrefix\");\n return ok;\n }\n effects.exit(\"blockQuotePrefix\");\n return ok(code);\n }\n}\n\n/**\n * Start of block quote continuation.\n *\n * ```markdown\n * | > a\n * > | > b\n * ^\n * ```\n *\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlockQuoteContinuation(effects, ok, nok) {\n const self = this;\n return contStart;\n\n /**\n * Start of block quote continuation.\n *\n * Also used to parse the first block quote opening.\n *\n * ```markdown\n * | > a\n * > | > b\n * ^\n * ```\n *\n * @type {State}\n */\n function contStart(code) {\n if (markdownSpace(code)) {\n // Always populated by defaults.\n\n return factorySpace(effects, contBefore, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code);\n }\n return contBefore(code);\n }\n\n /**\n * At `>`, after optional whitespace.\n *\n * Also used to parse the first block quote opening.\n *\n * ```markdown\n * | > a\n * > | > b\n * ^\n * ```\n *\n * @type {State}\n */\n function contBefore(code) {\n return effects.attempt(blockQuote, ok, nok)(code);\n }\n}\n\n/** @type {Exiter} */\nfunction exit(effects) {\n effects.exit(\"blockQuote\");\n}","/**\n * @import {Effects, State, TokenType} from 'micromark-util-types'\n */\n\nimport { asciiControl, markdownLineEndingOrSpace, markdownLineEnding } from 'micromark-util-character';\n/**\n * Parse destinations.\n *\n * ###### Examples\n *\n * ```markdown\n * <a>\n * <a\\>b>\n * <a b>\n * <a)>\n * a\n * a\\)b\n * a(b)c\n * a(b)\n * ```\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {State} nok\n * State switched to when unsuccessful.\n * @param {TokenType} type\n * Type for whole (`<a>` or `b`).\n * @param {TokenType} literalType\n * Type when enclosed (`<a>`).\n * @param {TokenType} literalMarkerType\n * Type for enclosing (`<` and `>`).\n * @param {TokenType} rawType\n * Type when not enclosed (`b`).\n * @param {TokenType} stringType\n * Type for the value (`a` or `b`).\n * @param {number | undefined} [max=Infinity]\n * Depth of nested parens (inclusive).\n * @returns {State}\n * Start state.\n */\nexport function factoryDestination(effects, ok, nok, type, literalType, literalMarkerType, rawType, stringType, max) {\n const limit = max || Number.POSITIVE_INFINITY;\n let balance = 0;\n return start;\n\n /**\n * Start of destination.\n *\n * ```markdown\n * > | <aa>\n * ^\n * > | aa\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (code === 60) {\n effects.enter(type);\n effects.enter(literalType);\n effects.enter(literalMarkerType);\n effects.consume(code);\n effects.exit(literalMarkerType);\n return enclosedBefore;\n }\n\n // ASCII control, space, closing paren.\n if (code === null || code === 32 || code === 41 || asciiControl(code)) {\n return nok(code);\n }\n effects.enter(type);\n effects.enter(rawType);\n effects.enter(stringType);\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return raw(code);\n }\n\n /**\n * After `<`, at an enclosed destination.\n *\n * ```markdown\n * > | <aa>\n * ^\n * ```\n *\n * @type {State}\n */\n function enclosedBefore(code) {\n if (code === 62) {\n effects.enter(literalMarkerType);\n effects.consume(code);\n effects.exit(literalMarkerType);\n effects.exit(literalType);\n effects.exit(type);\n return ok;\n }\n effects.enter(stringType);\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return enclosed(code);\n }\n\n /**\n * In enclosed destination.\n *\n * ```markdown\n * > | <aa>\n * ^\n * ```\n *\n * @type {State}\n */\n function enclosed(code) {\n if (code === 62) {\n effects.exit(\"chunkString\");\n effects.exit(stringType);\n return enclosedBefore(code);\n }\n if (code === null || code === 60 || markdownLineEnding(code)) {\n return nok(code);\n }\n effects.consume(code);\n return code === 92 ? enclosedEscape : enclosed;\n }\n\n /**\n * After `\\`, at a special character.\n *\n * ```markdown\n * > | <a\\*a>\n * ^\n * ```\n *\n * @type {State}\n */\n function enclosedEscape(code) {\n if (code === 60 || code === 62 || code === 92) {\n effects.consume(code);\n return enclosed;\n }\n return enclosed(code);\n }\n\n /**\n * In raw destination.\n *\n * ```markdown\n * > | aa\n * ^\n * ```\n *\n * @type {State}\n */\n function raw(code) {\n if (!balance && (code === null || code === 41 || markdownLineEndingOrSpace(code))) {\n effects.exit(\"chunkString\");\n effects.exit(stringType);\n effects.exit(rawType);\n effects.exit(type);\n return ok(code);\n }\n if (balance < limit && code === 40) {\n effects.consume(code);\n balance++;\n return raw;\n }\n if (code === 41) {\n effects.consume(code);\n balance--;\n return raw;\n }\n\n // ASCII control (but *not* `\\0`) and space and `(`.\n // Note: in `markdown-rs`, `\\0` exists in codes, in `micromark-js` it\n // doesn’t.\n if (code === null || code === 32 || code === 40 || asciiControl(code)) {\n return nok(code);\n }\n effects.consume(code);\n return code === 92 ? rawEscape : raw;\n }\n\n /**\n * After `\\`, at special character.\n *\n * ```markdown\n * > | a\\*a\n * ^\n * ```\n *\n * @type {State}\n */\n function rawEscape(code) {\n if (code === 40 || code === 41 || code === 92) {\n effects.consume(code);\n return raw;\n }\n return raw(code);\n }\n}","/**\n * @import {\n * Effects,\n * State,\n * TokenizeContext,\n * TokenType\n * } from 'micromark-util-types'\n */\n\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/**\n * Parse labels.\n *\n * > 👉 **Note**: labels in markdown are capped at 999 characters in the string.\n *\n * ###### Examples\n *\n * ```markdown\n * [a]\n * [a\n * b]\n * [a\\]b]\n * ```\n *\n * @this {TokenizeContext}\n * Tokenize context.\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {State} nok\n * State switched to when unsuccessful.\n * @param {TokenType} type\n * Type of the whole label (`[a]`).\n * @param {TokenType} markerType\n * Type for the markers (`[` and `]`).\n * @param {TokenType} stringType\n * Type for the identifier (`a`).\n * @returns {State}\n * Start state.\n */\nexport function factoryLabel(effects, ok, nok, type, markerType, stringType) {\n const self = this;\n let size = 0;\n /** @type {boolean} */\n let seen;\n return start;\n\n /**\n * Start of label.\n *\n * ```markdown\n * > | [a]\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(type);\n effects.enter(markerType);\n effects.consume(code);\n effects.exit(markerType);\n effects.enter(stringType);\n return atBreak;\n }\n\n /**\n * In label, at something, before something else.\n *\n * ```markdown\n * > | [a]\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (size > 999 || code === null || code === 91 || code === 93 && !seen ||\n // To do: remove in the future once we’ve switched from\n // `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n // which doesn’t need this.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n code === 94 && !size && '_hiddenFootnoteSupport' in self.parser.constructs) {\n return nok(code);\n }\n if (code === 93) {\n effects.exit(stringType);\n effects.enter(markerType);\n effects.consume(code);\n effects.exit(markerType);\n effects.exit(type);\n return ok;\n }\n\n // To do: indent? Link chunks and EOLs together?\n if (markdownLineEnding(code)) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return atBreak;\n }\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return labelInside(code);\n }\n\n /**\n * In label, in text.\n *\n * ```markdown\n * > | [a]\n * ^\n * ```\n *\n * @type {State}\n */\n function labelInside(code) {\n if (code === null || code === 91 || code === 93 || markdownLineEnding(code) || size++ > 999) {\n effects.exit(\"chunkString\");\n return atBreak(code);\n }\n effects.consume(code);\n if (!seen) seen = !markdownSpace(code);\n return code === 92 ? labelEscape : labelInside;\n }\n\n /**\n * After `\\`, at a special character.\n *\n * ```markdown\n * > | [a\\*a]\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEscape(code) {\n if (code === 91 || code === 92 || code === 93) {\n effects.consume(code);\n size++;\n return labelInside;\n }\n return labelInside(code);\n }\n}","/**\n * @import {\n * Code,\n * Effects,\n * State,\n * TokenType\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/**\n * Parse titles.\n *\n * ###### Examples\n *\n * ```markdown\n * \"a\"\n * 'b'\n * (c)\n * \"a\n * b\"\n * 'a\n * b'\n * (a\\)b)\n * ```\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {State} nok\n * State switched to when unsuccessful.\n * @param {TokenType} type\n * Type of the whole title (`\"a\"`, `'b'`, `(c)`).\n * @param {TokenType} markerType\n * Type for the markers (`\"`, `'`, `(`, and `)`).\n * @param {TokenType} stringType\n * Type for the value (`a`).\n * @returns {State}\n * Start state.\n */\nexport function factoryTitle(effects, ok, nok, type, markerType, stringType) {\n /** @type {NonNullable<Code>} */\n let marker;\n return start;\n\n /**\n * Start of title.\n *\n * ```markdown\n * > | \"a\"\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (code === 34 || code === 39 || code === 40) {\n effects.enter(type);\n effects.enter(markerType);\n effects.consume(code);\n effects.exit(markerType);\n marker = code === 40 ? 41 : code;\n return begin;\n }\n return nok(code);\n }\n\n /**\n * After opening marker.\n *\n * This is also used at the closing marker.\n *\n * ```markdown\n * > | \"a\"\n * ^\n * ```\n *\n * @type {State}\n */\n function begin(code) {\n if (code === marker) {\n effects.enter(markerType);\n effects.consume(code);\n effects.exit(markerType);\n effects.exit(type);\n return ok;\n }\n effects.enter(stringType);\n return atBreak(code);\n }\n\n /**\n * At something, before something else.\n *\n * ```markdown\n * > | \"a\"\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === marker) {\n effects.exit(stringType);\n return begin(marker);\n }\n if (code === null) {\n return nok(code);\n }\n\n // Note: blank lines can’t exist in content.\n if (markdownLineEnding(code)) {\n // To do: use `space_or_tab_eol_with_options`, connect.\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return factorySpace(effects, atBreak, \"linePrefix\");\n }\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return inside(code);\n }\n\n /**\n *\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker || code === null || markdownLineEnding(code)) {\n effects.exit(\"chunkString\");\n return atBreak(code);\n }\n effects.consume(code);\n return code === 92 ? escape : inside;\n }\n\n /**\n * After `\\`, at a special character.\n *\n * ```markdown\n * > | \"a\\*b\"\n * ^\n * ```\n *\n * @type {State}\n */\n function escape(code) {\n if (code === marker || code === 92) {\n effects.consume(code);\n return inside;\n }\n return inside(code);\n }\n}","/**\n * @import {Effects, State} from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/**\n * Parse spaces and tabs.\n *\n * There is no `nok` parameter:\n *\n * * line endings or spaces in markdown are often optional, in which case this\n * factory can be used and `ok` will be switched to whether spaces were found\n * or not\n * * one line ending or space can be detected with\n * `markdownLineEndingOrSpace(code)` right before using `factoryWhitespace`\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @returns {State}\n * Start state.\n */\nexport function factoryWhitespace(effects, ok) {\n /** @type {boolean} */\n let seen;\n return start;\n\n /** @type {State} */\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n seen = true;\n return start;\n }\n if (markdownSpace(code)) {\n return factorySpace(effects, start, seen ? \"linePrefix\" : \"lineSuffix\")(code);\n }\n return ok(code);\n }\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factoryDestination } from 'micromark-factory-destination';\nimport { factoryLabel } from 'micromark-factory-label';\nimport { factorySpace } from 'micromark-factory-space';\nimport { factoryTitle } from 'micromark-factory-title';\nimport { factoryWhitespace } from 'micromark-factory-whitespace';\nimport { markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\n/** @type {Construct} */\nexport const definition = {\n name: 'definition',\n tokenize: tokenizeDefinition\n};\n\n/** @type {Construct} */\nconst titleBefore = {\n partial: true,\n tokenize: tokenizeTitleBefore\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeDefinition(effects, ok, nok) {\n const self = this;\n /** @type {string} */\n let identifier;\n return start;\n\n /**\n * At start of a definition.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Do not interrupt paragraphs (but do follow definitions).\n // To do: do `interrupt` the way `markdown-rs` does.\n // To do: parse whitespace the way `markdown-rs` does.\n effects.enter(\"definition\");\n return before(code);\n }\n\n /**\n * After optional whitespace, at `[`.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n // To do: parse whitespace the way `markdown-rs` does.\n\n return factoryLabel.call(self, effects, labelAfter,\n // Note: we don’t need to reset the way `markdown-rs` does.\n nok, \"definitionLabel\", \"definitionLabelMarker\", \"definitionLabelString\")(code);\n }\n\n /**\n * After label.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function labelAfter(code) {\n identifier = normalizeIdentifier(self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1));\n if (code === 58) {\n effects.enter(\"definitionMarker\");\n effects.consume(code);\n effects.exit(\"definitionMarker\");\n return markerAfter;\n }\n return nok(code);\n }\n\n /**\n * After marker.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function markerAfter(code) {\n // Note: whitespace is optional.\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, destinationBefore)(code) : destinationBefore(code);\n }\n\n /**\n * Before destination.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function destinationBefore(code) {\n return factoryDestination(effects, destinationAfter,\n // Note: we don’t need to reset the way `markdown-rs` does.\n nok, \"definitionDestination\", \"definitionDestinationLiteral\", \"definitionDestinationLiteralMarker\", \"definitionDestinationRaw\", \"definitionDestinationString\")(code);\n }\n\n /**\n * After destination.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function destinationAfter(code) {\n return effects.attempt(titleBefore, after, after)(code);\n }\n\n /**\n * After definition.\n *\n * ```markdown\n * > | [a]: b\n * ^\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return markdownSpace(code) ? factorySpace(effects, afterWhitespace, \"whitespace\")(code) : afterWhitespace(code);\n }\n\n /**\n * After definition, after optional whitespace.\n *\n * ```markdown\n * > | [a]: b\n * ^\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function afterWhitespace(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"definition\");\n\n // Note: we don’t care about uniqueness.\n // It’s likely that that doesn’t happen very frequently.\n // It is more likely that it wastes precious time.\n self.parser.defined.push(identifier);\n\n // To do: `markdown-rs` interrupt.\n // // You’d be interrupting.\n // tokenizer.interrupt = true\n return ok(code);\n }\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeTitleBefore(effects, ok, nok) {\n return titleBefore;\n\n /**\n * After destination, at whitespace.\n *\n * ```markdown\n * > | [a]: b\n * ^\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function titleBefore(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, beforeMarker)(code) : nok(code);\n }\n\n /**\n * At title.\n *\n * ```markdown\n * | [a]: b\n * > | \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeMarker(code) {\n return factoryTitle(effects, titleAfter, nok, \"definitionTitle\", \"definitionTitleMarker\", \"definitionTitleString\")(code);\n }\n\n /**\n * After title.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function titleAfter(code) {\n return markdownSpace(code) ? factorySpace(effects, titleAfterOptionalWhitespace, \"whitespace\")(code) : titleAfterOptionalWhitespace(code);\n }\n\n /**\n * After title, after optional whitespace.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function titleAfterOptionalWhitespace(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code);\n }\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const codeIndented = {\n name: 'codeIndented',\n tokenize: tokenizeCodeIndented\n};\n\n/** @type {Construct} */\nconst furtherStart = {\n partial: true,\n tokenize: tokenizeFurtherStart\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCodeIndented(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * Start of code (indented).\n *\n * > **Parsing note**: it is not needed to check if this first line is a\n * > filled line (that it has a non-whitespace character), because blank lines\n * > are parsed already, so we never run into that.\n *\n * ```markdown\n * > | aaa\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: manually check if interrupting like `markdown-rs`.\n\n effects.enter(\"codeIndented\");\n // To do: use an improved `space_or_tab` function like `markdown-rs`,\n // so that we can drop the next state.\n return factorySpace(effects, afterPrefix, \"linePrefix\", 4 + 1)(code);\n }\n\n /**\n * At start, after 1 or 4 spaces.\n *\n * ```markdown\n * > | aaa\n * ^\n * ```\n *\n * @type {State}\n */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1];\n return tail && tail[1].type === \"linePrefix\" && tail[2].sliceSerialize(tail[1], true).length >= 4 ? atBreak(code) : nok(code);\n }\n\n /**\n * At a break.\n *\n * ```markdown\n * > | aaa\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === null) {\n return after(code);\n }\n if (markdownLineEnding(code)) {\n return effects.attempt(furtherStart, atBreak, after)(code);\n }\n effects.enter(\"codeFlowValue\");\n return inside(code);\n }\n\n /**\n * In code content.\n *\n * ```markdown\n * > | aaa\n * ^^^^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"codeFlowValue\");\n return atBreak(code);\n }\n effects.consume(code);\n return inside;\n }\n\n /** @type {State} */\n function after(code) {\n effects.exit(\"codeIndented\");\n // To do: allow interrupting like `markdown-rs`.\n // Feel free to interrupt.\n // tokenizer.interrupt = false\n return ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeFurtherStart(effects, ok, nok) {\n const self = this;\n return furtherStart;\n\n /**\n * At eol, trying to parse another indent.\n *\n * ```markdown\n * > | aaa\n * ^\n * | bbb\n * ```\n *\n * @type {State}\n */\n function furtherStart(code) {\n // To do: improve `lazy` / `pierce` handling.\n // If this is a lazy line, it can’t be code.\n if (self.parser.lazy[self.now().line]) {\n return nok(code);\n }\n if (markdownLineEnding(code)) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return furtherStart;\n }\n\n // To do: the code here in `micromark-js` is a bit different from\n // `markdown-rs` because there it can attempt spaces.\n // We can’t yet.\n //\n // To do: use an improved `space_or_tab` function like `markdown-rs`,\n // so that we can drop the next state.\n return factorySpace(effects, afterPrefix, \"linePrefix\", 4 + 1)(code);\n }\n\n /**\n * At start, after 1 or 4 spaces.\n *\n * ```markdown\n * > | aaa\n * ^\n * ```\n *\n * @type {State}\n */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1];\n return tail && tail[1].type === \"linePrefix\" && tail[2].sliceSerialize(tail[1], true).length >= 4 ? ok(code) : markdownLineEnding(code) ? furtherStart(code) : nok(code);\n }\n}","/**\n * @import {\n * Construct,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer,\n * Token\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\nimport { splice } from 'micromark-util-chunked';\n/** @type {Construct} */\nexport const headingAtx = {\n name: 'headingAtx',\n resolve: resolveHeadingAtx,\n tokenize: tokenizeHeadingAtx\n};\n\n/** @type {Resolver} */\nfunction resolveHeadingAtx(events, context) {\n let contentEnd = events.length - 2;\n let contentStart = 3;\n /** @type {Token} */\n let content;\n /** @type {Token} */\n let text;\n\n // Prefix whitespace, part of the opening.\n if (events[contentStart][1].type === \"whitespace\") {\n contentStart += 2;\n }\n\n // Suffix whitespace, part of the closing.\n if (contentEnd - 2 > contentStart && events[contentEnd][1].type === \"whitespace\") {\n contentEnd -= 2;\n }\n if (events[contentEnd][1].type === \"atxHeadingSequence\" && (contentStart === contentEnd - 1 || contentEnd - 4 > contentStart && events[contentEnd - 2][1].type === \"whitespace\")) {\n contentEnd -= contentStart + 1 === contentEnd ? 2 : 4;\n }\n if (contentEnd > contentStart) {\n content = {\n type: \"atxHeadingText\",\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end\n };\n text = {\n type: \"chunkText\",\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end,\n contentType: \"text\"\n };\n splice(events, contentStart, contentEnd - contentStart + 1, [['enter', content, context], ['enter', text, context], ['exit', text, context], ['exit', content, context]]);\n }\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHeadingAtx(effects, ok, nok) {\n let size = 0;\n return start;\n\n /**\n * Start of a heading (atx).\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse indent like `markdown-rs`.\n effects.enter(\"atxHeading\");\n return before(code);\n }\n\n /**\n * After optional whitespace, at `#`.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n effects.enter(\"atxHeadingSequence\");\n return sequenceOpen(code);\n }\n\n /**\n * In opening sequence.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === 35 && size++ < 6) {\n effects.consume(code);\n return sequenceOpen;\n }\n\n // Always at least one `#`.\n if (code === null || markdownLineEndingOrSpace(code)) {\n effects.exit(\"atxHeadingSequence\");\n return atBreak(code);\n }\n return nok(code);\n }\n\n /**\n * After something, before something else.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === 35) {\n effects.enter(\"atxHeadingSequence\");\n return sequenceFurther(code);\n }\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"atxHeading\");\n // To do: interrupt like `markdown-rs`.\n // // Feel free to interrupt.\n // tokenizer.interrupt = false\n return ok(code);\n }\n if (markdownSpace(code)) {\n return factorySpace(effects, atBreak, \"whitespace\")(code);\n }\n\n // To do: generate `data` tokens, add the `text` token later.\n // Needs edit map, see: `markdown.rs`.\n effects.enter(\"atxHeadingText\");\n return data(code);\n }\n\n /**\n * In further sequence (after whitespace).\n *\n * Could be normal “visible” hashes in the heading or a final sequence.\n *\n * ```markdown\n * > | ## aa ##\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceFurther(code) {\n if (code === 35) {\n effects.consume(code);\n return sequenceFurther;\n }\n effects.exit(\"atxHeadingSequence\");\n return atBreak(code);\n }\n\n /**\n * In text.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function data(code) {\n if (code === null || code === 35 || markdownLineEndingOrSpace(code)) {\n effects.exit(\"atxHeadingText\");\n return atBreak(code);\n }\n effects.consume(code);\n return data;\n }\n}","/**\n * @import {\n * Code,\n * Construct,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const setextUnderline = {\n name: 'setextUnderline',\n resolveTo: resolveToSetextUnderline,\n tokenize: tokenizeSetextUnderline\n};\n\n/** @type {Resolver} */\nfunction resolveToSetextUnderline(events, context) {\n // To do: resolve like `markdown-rs`.\n let index = events.length;\n /** @type {number | undefined} */\n let content;\n /** @type {number | undefined} */\n let text;\n /** @type {number | undefined} */\n let definition;\n\n // Find the opening of the content.\n // It’ll always exist: we don’t tokenize if it isn’t there.\n while (index--) {\n if (events[index][0] === 'enter') {\n if (events[index][1].type === \"content\") {\n content = index;\n break;\n }\n if (events[index][1].type === \"paragraph\") {\n text = index;\n }\n }\n // Exit\n else {\n if (events[index][1].type === \"content\") {\n // Remove the content end (if needed we’ll add it later)\n events.splice(index, 1);\n }\n if (!definition && events[index][1].type === \"definition\") {\n definition = index;\n }\n }\n }\n const heading = {\n type: \"setextHeading\",\n start: {\n ...events[text][1].start\n },\n end: {\n ...events[events.length - 1][1].end\n }\n };\n\n // Change the paragraph to setext heading text.\n events[text][1].type = \"setextHeadingText\";\n\n // If we have definitions in the content, we’ll keep on having content,\n // but we need move it.\n if (definition) {\n events.splice(text, 0, ['enter', heading, context]);\n events.splice(definition + 1, 0, ['exit', events[content][1], context]);\n events[content][1].end = {\n ...events[definition][1].end\n };\n } else {\n events[content][1] = heading;\n }\n\n // Add the heading exit at the end.\n events.push(['exit', heading, context]);\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeSetextUnderline(effects, ok, nok) {\n const self = this;\n /** @type {NonNullable<Code>} */\n let marker;\n return start;\n\n /**\n * At start of heading (setext) underline.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n let index = self.events.length;\n /** @type {boolean | undefined} */\n let paragraph;\n // Find an opening.\n while (index--) {\n // Skip enter/exit of line ending, line prefix, and content.\n // We can now either have a definition or a paragraph.\n if (self.events[index][1].type !== \"lineEnding\" && self.events[index][1].type !== \"linePrefix\" && self.events[index][1].type !== \"content\") {\n paragraph = self.events[index][1].type === \"paragraph\";\n break;\n }\n }\n\n // To do: handle lazy/pierce like `markdown-rs`.\n // To do: parse indent like `markdown-rs`.\n if (!self.parser.lazy[self.now().line] && (self.interrupt || paragraph)) {\n effects.enter(\"setextHeadingLine\");\n marker = code;\n return before(code);\n }\n return nok(code);\n }\n\n /**\n * After optional whitespace, at `-` or `=`.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n effects.enter(\"setextHeadingLineSequence\");\n return inside(code);\n }\n\n /**\n * In sequence.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker) {\n effects.consume(code);\n return inside;\n }\n effects.exit(\"setextHeadingLineSequence\");\n return markdownSpace(code) ? factorySpace(effects, after, \"lineSuffix\")(code) : after(code);\n }\n\n /**\n * After sequence, after optional whitespace.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"setextHeadingLine\");\n return ok(code);\n }\n return nok(code);\n }\n}","/**\n * List of lowercase HTML “block” tag names.\n *\n * The list, when parsing HTML (flow), results in more relaxed rules (condition\n * 6).\n * Because they are known blocks, the HTML-like syntax doesn’t have to be\n * strictly parsed.\n * For tag names not in this list, a more strict algorithm (condition 7) is used\n * to detect whether the HTML-like syntax is seen as HTML (flow) or not.\n *\n * This is copied from:\n * <https://spec.commonmark.org/0.30/#html-blocks>.\n *\n * > 👉 **Note**: `search` was added in `CommonMark@0.31`.\n */\nexport const htmlBlockNames = [\n 'address',\n 'article',\n 'aside',\n 'base',\n 'basefont',\n 'blockquote',\n 'body',\n 'caption',\n 'center',\n 'col',\n 'colgroup',\n 'dd',\n 'details',\n 'dialog',\n 'dir',\n 'div',\n 'dl',\n 'dt',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'frame',\n 'frameset',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hr',\n 'html',\n 'iframe',\n 'legend',\n 'li',\n 'link',\n 'main',\n 'menu',\n 'menuitem',\n 'nav',\n 'noframes',\n 'ol',\n 'optgroup',\n 'option',\n 'p',\n 'param',\n 'search',\n 'section',\n 'summary',\n 'table',\n 'tbody',\n 'td',\n 'tfoot',\n 'th',\n 'thead',\n 'title',\n 'tr',\n 'track',\n 'ul'\n]\n\n/**\n * List of lowercase HTML “raw” tag names.\n *\n * The list, when parsing HTML (flow), results in HTML that can include lines\n * without exiting, until a closing tag also in this list is found (condition\n * 1).\n *\n * This module is copied from:\n * <https://spec.commonmark.org/0.30/#html-blocks>.\n *\n * > 👉 **Note**: `textarea` was added in `CommonMark@0.30`.\n */\nexport const htmlRawNames = ['pre', 'script', 'style', 'textarea']\n","/**\n * @import {\n * Code,\n * Construct,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { asciiAlphanumeric, asciiAlpha, markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\nimport { htmlBlockNames, htmlRawNames } from 'micromark-util-html-tag-name';\nimport { blankLine } from './blank-line.js';\n\n/** @type {Construct} */\nexport const htmlFlow = {\n concrete: true,\n name: 'htmlFlow',\n resolveTo: resolveToHtmlFlow,\n tokenize: tokenizeHtmlFlow\n};\n\n/** @type {Construct} */\nconst blankLineBefore = {\n partial: true,\n tokenize: tokenizeBlankLineBefore\n};\nconst nonLazyContinuationStart = {\n partial: true,\n tokenize: tokenizeNonLazyContinuationStart\n};\n\n/** @type {Resolver} */\nfunction resolveToHtmlFlow(events) {\n let index = events.length;\n while (index--) {\n if (events[index][0] === 'enter' && events[index][1].type === \"htmlFlow\") {\n break;\n }\n }\n if (index > 1 && events[index - 2][1].type === \"linePrefix\") {\n // Add the prefix start to the HTML token.\n events[index][1].start = events[index - 2][1].start;\n // Add the prefix start to the HTML line token.\n events[index + 1][1].start = events[index - 2][1].start;\n // Remove the line prefix.\n events.splice(index - 2, 2);\n }\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlFlow(effects, ok, nok) {\n const self = this;\n /** @type {number} */\n let marker;\n /** @type {boolean} */\n let closingTag;\n /** @type {string} */\n let buffer;\n /** @type {number} */\n let index;\n /** @type {Code} */\n let markerB;\n return start;\n\n /**\n * Start of HTML (flow).\n *\n * ```markdown\n * > | <x />\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse indent like `markdown-rs`.\n return before(code);\n }\n\n /**\n * At `<`, after optional whitespace.\n *\n * ```markdown\n * > | <x />\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n effects.enter(\"htmlFlow\");\n effects.enter(\"htmlFlowData\");\n effects.consume(code);\n return open;\n }\n\n /**\n * After `<`, at tag name or other stuff.\n *\n * ```markdown\n * > | <x />\n * ^\n * > | <!doctype>\n * ^\n * > | <!--xxx-->\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 33) {\n effects.consume(code);\n return declarationOpen;\n }\n if (code === 47) {\n effects.consume(code);\n closingTag = true;\n return tagCloseStart;\n }\n if (code === 63) {\n effects.consume(code);\n marker = 3;\n // To do:\n // tokenizer.concrete = true\n // To do: use `markdown-rs` style interrupt.\n // While we’re in an instruction instead of a declaration, we’re on a `?`\n // right now, so we do need to search for `>`, similar to declarations.\n return self.interrupt ? ok : continuationDeclarationInside;\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n // Always the case.\n effects.consume(code);\n buffer = String.fromCharCode(code);\n return tagName;\n }\n return nok(code);\n }\n\n /**\n * After `<!`, at declaration, comment, or CDATA.\n *\n * ```markdown\n * > | <!doctype>\n * ^\n * > | <!--xxx-->\n * ^\n * > | <![CDATA[>&<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code);\n marker = 2;\n return commentOpenInside;\n }\n if (code === 91) {\n effects.consume(code);\n marker = 5;\n index = 0;\n return cdataOpenInside;\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code);\n marker = 4;\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuationDeclarationInside;\n }\n return nok(code);\n }\n\n /**\n * After `<!-`, inside a comment, at another `-`.\n *\n * ```markdown\n * > | <!--xxx-->\n * ^\n * ```\n *\n * @type {State}\n */\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code);\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuationDeclarationInside;\n }\n return nok(code);\n }\n\n /**\n * After `<![`, inside CDATA, expecting `CDATA[`.\n *\n * ```markdown\n * > | <![CDATA[>&<]]>\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function cdataOpenInside(code) {\n const value = \"CDATA[\";\n if (code === value.charCodeAt(index++)) {\n effects.consume(code);\n if (index === value.length) {\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuation;\n }\n return cdataOpenInside;\n }\n return nok(code);\n }\n\n /**\n * After `</`, in closing tag, at tag name.\n *\n * ```markdown\n * > | </x>\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseStart(code) {\n if (asciiAlpha(code)) {\n // Always the case.\n effects.consume(code);\n buffer = String.fromCharCode(code);\n return tagName;\n }\n return nok(code);\n }\n\n /**\n * In tag name.\n *\n * ```markdown\n * > | <ab>\n * ^^\n * > | </ab>\n * ^^\n * ```\n *\n * @type {State}\n */\n function tagName(code) {\n if (code === null || code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n const slash = code === 47;\n const name = buffer.toLowerCase();\n if (!slash && !closingTag && htmlRawNames.includes(name)) {\n marker = 1;\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok(code) : continuation(code);\n }\n if (htmlBlockNames.includes(buffer.toLowerCase())) {\n marker = 6;\n if (slash) {\n effects.consume(code);\n return basicSelfClosing;\n }\n\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok(code) : continuation(code);\n }\n marker = 7;\n // Do not support complete HTML when interrupting.\n return self.interrupt && !self.parser.lazy[self.now().line] ? nok(code) : closingTag ? completeClosingTagAfter(code) : completeAttributeNameBefore(code);\n }\n\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code);\n buffer += String.fromCharCode(code);\n return tagName;\n }\n return nok(code);\n }\n\n /**\n * After closing slash of a basic tag name.\n *\n * ```markdown\n * > | <div/>\n * ^\n * ```\n *\n * @type {State}\n */\n function basicSelfClosing(code) {\n if (code === 62) {\n effects.consume(code);\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuation;\n }\n return nok(code);\n }\n\n /**\n * After closing slash of a complete tag name.\n *\n * ```markdown\n * > | <x/>\n * ^\n * ```\n *\n * @type {State}\n */\n function completeClosingTagAfter(code) {\n if (markdownSpace(code)) {\n effects.consume(code);\n return completeClosingTagAfter;\n }\n return completeEnd(code);\n }\n\n /**\n * At an attribute name.\n *\n * At first, this state is used after a complete tag name, after whitespace,\n * where it expects optional attributes or the end of the tag.\n * It is also reused after attributes, when expecting more optional\n * attributes.\n *\n * ```markdown\n * > | <a />\n * ^\n * > | <a :b>\n * ^\n * > | <a _b>\n * ^\n * > | <a b>\n * ^\n * > | <a >\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeNameBefore(code) {\n if (code === 47) {\n effects.consume(code);\n return completeEnd;\n }\n\n // ASCII alphanumerical and `:` and `_`.\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code);\n return completeAttributeName;\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return completeAttributeNameBefore;\n }\n return completeEnd(code);\n }\n\n /**\n * In attribute name.\n *\n * ```markdown\n * > | <a :b>\n * ^\n * > | <a _b>\n * ^\n * > | <a b>\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeName(code) {\n // ASCII alphanumerical and `-`, `.`, `:`, and `_`.\n if (code === 45 || code === 46 || code === 58 || code === 95 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return completeAttributeName;\n }\n return completeAttributeNameAfter(code);\n }\n\n /**\n * After attribute name, at an optional initializer, the end of the tag, or\n * whitespace.\n *\n * ```markdown\n * > | <a b>\n * ^\n * > | <a b=c>\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code);\n return completeAttributeValueBefore;\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return completeAttributeNameAfter;\n }\n return completeAttributeNameBefore(code);\n }\n\n /**\n * Before unquoted, double quoted, or single quoted attribute value, allowing\n * whitespace.\n *\n * ```markdown\n * > | <a b=c>\n * ^\n * > | <a b=\"c\">\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueBefore(code) {\n if (code === null || code === 60 || code === 61 || code === 62 || code === 96) {\n return nok(code);\n }\n if (code === 34 || code === 39) {\n effects.consume(code);\n markerB = code;\n return completeAttributeValueQuoted;\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return completeAttributeValueBefore;\n }\n return completeAttributeValueUnquoted(code);\n }\n\n /**\n * In double or single quoted attribute value.\n *\n * ```markdown\n * > | <a b=\"c\">\n * ^\n * > | <a b='c'>\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueQuoted(code) {\n if (code === markerB) {\n effects.consume(code);\n markerB = null;\n return completeAttributeValueQuotedAfter;\n }\n if (code === null || markdownLineEnding(code)) {\n return nok(code);\n }\n effects.consume(code);\n return completeAttributeValueQuoted;\n }\n\n /**\n * In unquoted attribute value.\n *\n * ```markdown\n * > | <a b=c>\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueUnquoted(code) {\n if (code === null || code === 34 || code === 39 || code === 47 || code === 60 || code === 61 || code === 62 || code === 96 || markdownLineEndingOrSpace(code)) {\n return completeAttributeNameAfter(code);\n }\n effects.consume(code);\n return completeAttributeValueUnquoted;\n }\n\n /**\n * After double or single quoted attribute value, before whitespace or the\n * end of the tag.\n *\n * ```markdown\n * > | <a b=\"c\">\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownSpace(code)) {\n return completeAttributeNameBefore(code);\n }\n return nok(code);\n }\n\n /**\n * In certain circumstances of a complete tag where only an `>` is allowed.\n *\n * ```markdown\n * > | <a b=\"c\">\n * ^\n * ```\n *\n * @type {State}\n */\n function completeEnd(code) {\n if (code === 62) {\n effects.consume(code);\n return completeAfter;\n }\n return nok(code);\n }\n\n /**\n * After `>` in a complete tag.\n *\n * ```markdown\n * > | <x>\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n // // Do not form containers.\n // tokenizer.concrete = true\n return continuation(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return completeAfter;\n }\n return nok(code);\n }\n\n /**\n * In continuation of any HTML kind.\n *\n * ```markdown\n * > | <!--xxx-->\n * ^\n * ```\n *\n * @type {State}\n */\n function continuation(code) {\n if (code === 45 && marker === 2) {\n effects.consume(code);\n return continuationCommentInside;\n }\n if (code === 60 && marker === 1) {\n effects.consume(code);\n return continuationRawTagOpen;\n }\n if (code === 62 && marker === 4) {\n effects.consume(code);\n return continuationClose;\n }\n if (code === 63 && marker === 3) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n if (code === 93 && marker === 5) {\n effects.consume(code);\n return continuationCdataInside;\n }\n if (markdownLineEnding(code) && (marker === 6 || marker === 7)) {\n effects.exit(\"htmlFlowData\");\n return effects.check(blankLineBefore, continuationAfter, continuationStart)(code);\n }\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"htmlFlowData\");\n return continuationStart(code);\n }\n effects.consume(code);\n return continuation;\n }\n\n /**\n * In continuation, at eol.\n *\n * ```markdown\n * > | <x>\n * ^\n * | asd\n * ```\n *\n * @type {State}\n */\n function continuationStart(code) {\n return effects.check(nonLazyContinuationStart, continuationStartNonLazy, continuationAfter)(code);\n }\n\n /**\n * In continuation, at eol, before non-lazy content.\n *\n * ```markdown\n * > | <x>\n * ^\n * | asd\n * ```\n *\n * @type {State}\n */\n function continuationStartNonLazy(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return continuationBefore;\n }\n\n /**\n * In continuation, before non-lazy content.\n *\n * ```markdown\n * | <x>\n * > | asd\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n return continuationStart(code);\n }\n effects.enter(\"htmlFlowData\");\n return continuation(code);\n }\n\n /**\n * In comment continuation, after one `-`, expecting another.\n *\n * ```markdown\n * > | <!--xxx-->\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationCommentInside(code) {\n if (code === 45) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n return continuation(code);\n }\n\n /**\n * In raw continuation, after `<`, at `/`.\n *\n * ```markdown\n * > | <script>console.log(1)</script>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationRawTagOpen(code) {\n if (code === 47) {\n effects.consume(code);\n buffer = '';\n return continuationRawEndTag;\n }\n return continuation(code);\n }\n\n /**\n * In raw continuation, after `</`, in a raw tag name.\n *\n * ```markdown\n * > | <script>console.log(1)</script>\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function continuationRawEndTag(code) {\n if (code === 62) {\n const name = buffer.toLowerCase();\n if (htmlRawNames.includes(name)) {\n effects.consume(code);\n return continuationClose;\n }\n return continuation(code);\n }\n if (asciiAlpha(code) && buffer.length < 8) {\n // Always the case.\n effects.consume(code);\n buffer += String.fromCharCode(code);\n return continuationRawEndTag;\n }\n return continuation(code);\n }\n\n /**\n * In cdata continuation, after `]`, expecting `]>`.\n *\n * ```markdown\n * > | <![CDATA[>&<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationCdataInside(code) {\n if (code === 93) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n return continuation(code);\n }\n\n /**\n * In declaration or instruction continuation, at `>`.\n *\n * ```markdown\n * > | <!-->\n * ^\n * > | <?>\n * ^\n * > | <!q>\n * ^\n * > | <!--ab-->\n * ^\n * > | <![CDATA[>&<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationDeclarationInside(code) {\n if (code === 62) {\n effects.consume(code);\n return continuationClose;\n }\n\n // More dashes.\n if (code === 45 && marker === 2) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n return continuation(code);\n }\n\n /**\n * In closed continuation: everything we get until the eol/eof is part of it.\n *\n * ```markdown\n * > | <!doctype>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationClose(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"htmlFlowData\");\n return continuationAfter(code);\n }\n effects.consume(code);\n return continuationClose;\n }\n\n /**\n * Done.\n *\n * ```markdown\n * > | <!doctype>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationAfter(code) {\n effects.exit(\"htmlFlow\");\n // // Feel free to interrupt.\n // tokenizer.interrupt = false\n // // No longer concrete.\n // tokenizer.concrete = false\n return ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuationStart(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * At eol, before continuation.\n *\n * ```markdown\n * > | * ```js\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return after;\n }\n return nok(code);\n }\n\n /**\n * A continuation.\n *\n * ```markdown\n * | * ```js\n * > | b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLineBefore(effects, ok, nok) {\n return start;\n\n /**\n * Before eol, expecting blank line.\n *\n * ```markdown\n * > | <div>\n * ^\n * |\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return effects.attempt(blankLine, ok, nok);\n }\n}","/**\n * @import {\n * Code,\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nconst nonLazyContinuation = {\n partial: true,\n tokenize: tokenizeNonLazyContinuation\n};\n\n/** @type {Construct} */\nexport const codeFenced = {\n concrete: true,\n name: 'codeFenced',\n tokenize: tokenizeCodeFenced\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCodeFenced(effects, ok, nok) {\n const self = this;\n /** @type {Construct} */\n const closeStart = {\n partial: true,\n tokenize: tokenizeCloseStart\n };\n let initialPrefix = 0;\n let sizeOpen = 0;\n /** @type {NonNullable<Code>} */\n let marker;\n return start;\n\n /**\n * Start of code.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse whitespace like `markdown-rs`.\n return beforeSequenceOpen(code);\n }\n\n /**\n * In opening fence, after prefix, at sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeSequenceOpen(code) {\n const tail = self.events[self.events.length - 1];\n initialPrefix = tail && tail[1].type === \"linePrefix\" ? tail[2].sliceSerialize(tail[1], true).length : 0;\n marker = code;\n effects.enter(\"codeFenced\");\n effects.enter(\"codeFencedFence\");\n effects.enter(\"codeFencedFenceSequence\");\n return sequenceOpen(code);\n }\n\n /**\n * In opening fence sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === marker) {\n sizeOpen++;\n effects.consume(code);\n return sequenceOpen;\n }\n if (sizeOpen < 3) {\n return nok(code);\n }\n effects.exit(\"codeFencedFenceSequence\");\n return markdownSpace(code) ? factorySpace(effects, infoBefore, \"whitespace\")(code) : infoBefore(code);\n }\n\n /**\n * In opening fence, after the sequence (and optional whitespace), before info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function infoBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"codeFencedFence\");\n return self.interrupt ? ok(code) : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code);\n }\n effects.enter(\"codeFencedFenceInfo\");\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return info(code);\n }\n\n /**\n * In info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function info(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"chunkString\");\n effects.exit(\"codeFencedFenceInfo\");\n return infoBefore(code);\n }\n if (markdownSpace(code)) {\n effects.exit(\"chunkString\");\n effects.exit(\"codeFencedFenceInfo\");\n return factorySpace(effects, metaBefore, \"whitespace\")(code);\n }\n if (code === 96 && code === marker) {\n return nok(code);\n }\n effects.consume(code);\n return info;\n }\n\n /**\n * In opening fence, after info and whitespace, before meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function metaBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n return infoBefore(code);\n }\n effects.enter(\"codeFencedFenceMeta\");\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return meta(code);\n }\n\n /**\n * In meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function meta(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"chunkString\");\n effects.exit(\"codeFencedFenceMeta\");\n return infoBefore(code);\n }\n if (code === 96 && code === marker) {\n return nok(code);\n }\n effects.consume(code);\n return meta;\n }\n\n /**\n * At eol/eof in code, before a non-lazy closing fence or content.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function atNonLazyBreak(code) {\n return effects.attempt(closeStart, after, contentBefore)(code);\n }\n\n /**\n * Before code content, not a closing fence, at eol.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentBefore(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return contentStart;\n }\n\n /**\n * Before code content, not a closing fence.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentStart(code) {\n return initialPrefix > 0 && markdownSpace(code) ? factorySpace(effects, beforeContentChunk, \"linePrefix\", initialPrefix + 1)(code) : beforeContentChunk(code);\n }\n\n /**\n * Before code content, after optional prefix.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeContentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n return effects.check(nonLazyContinuation, atNonLazyBreak, after)(code);\n }\n effects.enter(\"codeFlowValue\");\n return contentChunk(code);\n }\n\n /**\n * In code content.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^^^^^^^^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"codeFlowValue\");\n return beforeContentChunk(code);\n }\n effects.consume(code);\n return contentChunk;\n }\n\n /**\n * After code.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n effects.exit(\"codeFenced\");\n return ok(code);\n }\n\n /**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\n function tokenizeCloseStart(effects, ok, nok) {\n let size = 0;\n return startBefore;\n\n /**\n *\n *\n * @type {State}\n */\n function startBefore(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return start;\n }\n\n /**\n * Before closing fence, at optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Always populated by defaults.\n\n // To do: `enter` here or in next state?\n effects.enter(\"codeFencedFence\");\n return markdownSpace(code) ? factorySpace(effects, beforeSequenceClose, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code) : beforeSequenceClose(code);\n }\n\n /**\n * In closing fence, after optional whitespace, at sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeSequenceClose(code) {\n if (code === marker) {\n effects.enter(\"codeFencedFenceSequence\");\n return sequenceClose(code);\n }\n return nok(code);\n }\n\n /**\n * In closing fence sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n if (code === marker) {\n size++;\n effects.consume(code);\n return sequenceClose;\n }\n if (size >= sizeOpen) {\n effects.exit(\"codeFencedFenceSequence\");\n return markdownSpace(code) ? factorySpace(effects, sequenceCloseAfter, \"whitespace\")(code) : sequenceCloseAfter(code);\n }\n return nok(code);\n }\n\n /**\n * After closing fence sequence, after optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceCloseAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"codeFencedFence\");\n return ok(code);\n }\n return nok(code);\n }\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuation(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n *\n *\n * @type {State}\n */\n function start(code) {\n if (code === null) {\n return nok(code);\n }\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return lineStart;\n }\n\n /**\n *\n *\n * @type {State}\n */\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code);\n }\n}","/**\n * @import {\n * Code,\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { asciiAlphanumeric, asciiDigit, asciiHexDigit } from 'micromark-util-character';\n/** @type {Construct} */\nexport const characterReference = {\n name: 'characterReference',\n tokenize: tokenizeCharacterReference\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterReference(effects, ok, nok) {\n const self = this;\n let size = 0;\n /** @type {number} */\n let max;\n /** @type {(code: Code) => boolean} */\n let test;\n return start;\n\n /**\n * Start of character reference.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"characterReference\");\n effects.enter(\"characterReferenceMarker\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarker\");\n return open;\n }\n\n /**\n * After `&`, at `#` for numeric references or alphanumeric for named\n * references.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 35) {\n effects.enter(\"characterReferenceMarkerNumeric\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarkerNumeric\");\n return numeric;\n }\n effects.enter(\"characterReferenceValue\");\n max = 31;\n test = asciiAlphanumeric;\n return value(code);\n }\n\n /**\n * After `#`, at `x` for hexadecimals or digit for decimals.\n *\n * ```markdown\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function numeric(code) {\n if (code === 88 || code === 120) {\n effects.enter(\"characterReferenceMarkerHexadecimal\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarkerHexadecimal\");\n effects.enter(\"characterReferenceValue\");\n max = 6;\n test = asciiHexDigit;\n return value;\n }\n effects.enter(\"characterReferenceValue\");\n max = 7;\n test = asciiDigit;\n return value(code);\n }\n\n /**\n * After markers (`&#x`, `&#`, or `&`), in value, before `;`.\n *\n * The character reference kind defines what and how many characters are\n * allowed.\n *\n * ```markdown\n * > | a&b\n * ^^^\n * > | a{b\n * ^^^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function value(code) {\n if (code === 59 && size) {\n const token = effects.exit(\"characterReferenceValue\");\n if (test === asciiAlphanumeric && !decodeNamedCharacterReference(self.sliceSerialize(token))) {\n return nok(code);\n }\n\n // To do: `markdown-rs` uses a different name:\n // `CharacterReferenceMarkerSemi`.\n effects.enter(\"characterReferenceMarker\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarker\");\n effects.exit(\"characterReference\");\n return ok;\n }\n if (test(code) && size++ < max) {\n effects.consume(code);\n return value;\n }\n return nok(code);\n }\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { asciiPunctuation } from 'micromark-util-character';\n/** @type {Construct} */\nexport const characterEscape = {\n name: 'characterEscape',\n tokenize: tokenizeCharacterEscape\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n return start;\n\n /**\n * Start of character escape.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"characterEscape\");\n effects.enter(\"escapeMarker\");\n effects.consume(code);\n effects.exit(\"escapeMarker\");\n return inside;\n }\n\n /**\n * After `\\`, at punctuation.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n // ASCII punctuation.\n if (asciiPunctuation(code)) {\n effects.enter(\"characterEscapeValue\");\n effects.consume(code);\n effects.exit(\"characterEscapeValue\");\n effects.exit(\"characterEscape\");\n return ok;\n }\n return nok(code);\n }\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const lineEnding = {\n name: 'lineEnding',\n tokenize: tokenizeLineEnding\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLineEnding(effects, ok) {\n return start;\n\n /** @type {State} */\n function start(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return factorySpace(effects, ok, \"linePrefix\");\n }\n}","/**\n * @import {\n * Construct,\n * Event,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer,\n * Token\n * } from 'micromark-util-types'\n */\n\nimport { factoryDestination } from 'micromark-factory-destination';\nimport { factoryLabel } from 'micromark-factory-label';\nimport { factoryTitle } from 'micromark-factory-title';\nimport { factoryWhitespace } from 'micromark-factory-whitespace';\nimport { markdownLineEndingOrSpace } from 'micromark-util-character';\nimport { push, splice } from 'micromark-util-chunked';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/** @type {Construct} */\nexport const labelEnd = {\n name: 'labelEnd',\n resolveAll: resolveAllLabelEnd,\n resolveTo: resolveToLabelEnd,\n tokenize: tokenizeLabelEnd\n};\n\n/** @type {Construct} */\nconst resourceConstruct = {\n tokenize: tokenizeResource\n};\n/** @type {Construct} */\nconst referenceFullConstruct = {\n tokenize: tokenizeReferenceFull\n};\n/** @type {Construct} */\nconst referenceCollapsedConstruct = {\n tokenize: tokenizeReferenceCollapsed\n};\n\n/** @type {Resolver} */\nfunction resolveAllLabelEnd(events) {\n let index = -1;\n /** @type {Array<Event>} */\n const newEvents = [];\n while (++index < events.length) {\n const token = events[index][1];\n newEvents.push(events[index]);\n if (token.type === \"labelImage\" || token.type === \"labelLink\" || token.type === \"labelEnd\") {\n // Remove the marker.\n const offset = token.type === \"labelImage\" ? 4 : 2;\n token.type = \"data\";\n index += offset;\n }\n }\n\n // If the events are equal, we don't have to copy newEvents to events\n if (events.length !== newEvents.length) {\n splice(events, 0, events.length, newEvents);\n }\n return events;\n}\n\n/** @type {Resolver} */\nfunction resolveToLabelEnd(events, context) {\n let index = events.length;\n let offset = 0;\n /** @type {Token} */\n let token;\n /** @type {number | undefined} */\n let open;\n /** @type {number | undefined} */\n let close;\n /** @type {Array<Event>} */\n let media;\n\n // Find an opening.\n while (index--) {\n token = events[index][1];\n if (open) {\n // If we see another link, or inactive link label, we’ve been here before.\n if (token.type === \"link\" || token.type === \"labelLink\" && token._inactive) {\n break;\n }\n\n // Mark other link openings as inactive, as we can’t have links in\n // links.\n if (events[index][0] === 'enter' && token.type === \"labelLink\") {\n token._inactive = true;\n }\n } else if (close) {\n if (events[index][0] === 'enter' && (token.type === \"labelImage\" || token.type === \"labelLink\") && !token._balanced) {\n open = index;\n if (token.type !== \"labelLink\") {\n offset = 2;\n break;\n }\n }\n } else if (token.type === \"labelEnd\") {\n close = index;\n }\n }\n const group = {\n type: events[open][1].type === \"labelLink\" ? \"link\" : \"image\",\n start: {\n ...events[open][1].start\n },\n end: {\n ...events[events.length - 1][1].end\n }\n };\n const label = {\n type: \"label\",\n start: {\n ...events[open][1].start\n },\n end: {\n ...events[close][1].end\n }\n };\n const text = {\n type: \"labelText\",\n start: {\n ...events[open + offset + 2][1].end\n },\n end: {\n ...events[close - 2][1].start\n }\n };\n media = [['enter', group, context], ['enter', label, context]];\n\n // Opening marker.\n media = push(media, events.slice(open + 1, open + offset + 3));\n\n // Text open.\n media = push(media, [['enter', text, context]]);\n\n // Always populated by defaults.\n\n // Between.\n media = push(media, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + offset + 4, close - 3), context));\n\n // Text close, marker close, label close.\n media = push(media, [['exit', text, context], events[close - 2], events[close - 1], ['exit', label, context]]);\n\n // Reference, resource, or so.\n media = push(media, events.slice(close + 1));\n\n // Media close.\n media = push(media, [['exit', group, context]]);\n splice(events, open, events.length, media);\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelEnd(effects, ok, nok) {\n const self = this;\n let index = self.events.length;\n /** @type {Token} */\n let labelStart;\n /** @type {boolean} */\n let defined;\n\n // Find an opening.\n while (index--) {\n if ((self.events[index][1].type === \"labelImage\" || self.events[index][1].type === \"labelLink\") && !self.events[index][1]._balanced) {\n labelStart = self.events[index][1];\n break;\n }\n }\n return start;\n\n /**\n * Start of label end.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // If there is not an okay opening.\n if (!labelStart) {\n return nok(code);\n }\n\n // If the corresponding label (link) start is marked as inactive,\n // it means we’d be wrapping a link, like this:\n //\n // ```markdown\n // > | a [b [c](d) e](f) g.\n // ^\n // ```\n //\n // We can’t have that, so it’s just balanced brackets.\n if (labelStart._inactive) {\n return labelEndNok(code);\n }\n defined = self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })));\n effects.enter(\"labelEnd\");\n effects.enter(\"labelMarker\");\n effects.consume(code);\n effects.exit(\"labelMarker\");\n effects.exit(\"labelEnd\");\n return after;\n }\n\n /**\n * After `]`.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // Note: `markdown-rs` also parses GFM footnotes here, which for us is in\n // an extension.\n\n // Resource (`[asd](fgh)`)?\n if (code === 40) {\n return effects.attempt(resourceConstruct, labelEndOk, defined ? labelEndOk : labelEndNok)(code);\n }\n\n // Full (`[asd][fgh]`) or collapsed (`[asd][]`) reference?\n if (code === 91) {\n return effects.attempt(referenceFullConstruct, labelEndOk, defined ? referenceNotFull : labelEndNok)(code);\n }\n\n // Shortcut (`[asd]`) reference?\n return defined ? labelEndOk(code) : labelEndNok(code);\n }\n\n /**\n * After `]`, at `[`, but not at a full reference.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceNotFull(code) {\n return effects.attempt(referenceCollapsedConstruct, labelEndOk, labelEndNok)(code);\n }\n\n /**\n * Done, we found something.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndOk(code) {\n // Note: `markdown-rs` does a bunch of stuff here.\n return ok(code);\n }\n\n /**\n * Done, it’s nothing.\n *\n * There was an okay opening, but we didn’t match anything.\n *\n * ```markdown\n * > | [a](b c\n * ^\n * > | [a][b c\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndNok(code) {\n labelStart._balanced = true;\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeResource(effects, ok, nok) {\n return resourceStart;\n\n /**\n * At a resource.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceStart(code) {\n effects.enter(\"resource\");\n effects.enter(\"resourceMarker\");\n effects.consume(code);\n effects.exit(\"resourceMarker\");\n return resourceBefore;\n }\n\n /**\n * In resource, after `(`, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBefore(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceOpen)(code) : resourceOpen(code);\n }\n\n /**\n * In resource, after optional whitespace, at `)` or a destination.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceOpen(code) {\n if (code === 41) {\n return resourceEnd(code);\n }\n return factoryDestination(effects, resourceDestinationAfter, resourceDestinationMissing, \"resourceDestination\", \"resourceDestinationLiteral\", \"resourceDestinationLiteralMarker\", \"resourceDestinationRaw\", \"resourceDestinationString\", 32)(code);\n }\n\n /**\n * In resource, after destination, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationAfter(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceBetween)(code) : resourceEnd(code);\n }\n\n /**\n * At invalid destination.\n *\n * ```markdown\n * > | [a](<<) b\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationMissing(code) {\n return nok(code);\n }\n\n /**\n * In resource, after destination and whitespace, at `(` or title.\n *\n * ```markdown\n * > | [a](b ) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBetween(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(effects, resourceTitleAfter, nok, \"resourceTitle\", \"resourceTitleMarker\", \"resourceTitleString\")(code);\n }\n return resourceEnd(code);\n }\n\n /**\n * In resource, after title, at optional whitespace.\n *\n * ```markdown\n * > | [a](b \"c\") d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceTitleAfter(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceEnd)(code) : resourceEnd(code);\n }\n\n /**\n * In resource, at `)`.\n *\n * ```markdown\n * > | [a](b) d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceEnd(code) {\n if (code === 41) {\n effects.enter(\"resourceMarker\");\n effects.consume(code);\n effects.exit(\"resourceMarker\");\n effects.exit(\"resource\");\n return ok;\n }\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceFull(effects, ok, nok) {\n const self = this;\n return referenceFull;\n\n /**\n * In a reference (full), at the `[`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFull(code) {\n return factoryLabel.call(self, effects, referenceFullAfter, referenceFullMissing, \"reference\", \"referenceMarker\", \"referenceString\")(code);\n }\n\n /**\n * In a reference (full), after `]`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullAfter(code) {\n return self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1))) ? ok(code) : nok(code);\n }\n\n /**\n * In reference (full) that was missing.\n *\n * ```markdown\n * > | [a][b d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullMissing(code) {\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceCollapsed(effects, ok, nok) {\n return referenceCollapsedStart;\n\n /**\n * In reference (collapsed), at `[`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedStart(code) {\n // We only attempt a collapsed label if there’s a `[`.\n\n effects.enter(\"reference\");\n effects.enter(\"referenceMarker\");\n effects.consume(code);\n effects.exit(\"referenceMarker\");\n return referenceCollapsedOpen;\n }\n\n /**\n * In reference (collapsed), at `]`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedOpen(code) {\n if (code === 93) {\n effects.enter(\"referenceMarker\");\n effects.consume(code);\n effects.exit(\"referenceMarker\");\n effects.exit(\"reference\");\n return ok;\n }\n return nok(code);\n }\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { labelEnd } from './label-end.js';\n\n/** @type {Construct} */\nexport const labelStartImage = {\n name: 'labelStartImage',\n resolveAll: labelEnd.resolveAll,\n tokenize: tokenizeLabelStartImage\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * Start of label (image) start.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"labelImage\");\n effects.enter(\"labelImageMarker\");\n effects.consume(code);\n effects.exit(\"labelImageMarker\");\n return open;\n }\n\n /**\n * After `!`, at `[`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 91) {\n effects.enter(\"labelMarker\");\n effects.consume(code);\n effects.exit(\"labelMarker\");\n effects.exit(\"labelImage\");\n return after;\n }\n return nok(code);\n }\n\n /**\n * After `![`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * This is needed in because, when GFM footnotes are enabled, images never\n * form when started with a `^`.\n * Instead, links form:\n *\n * ```markdown\n * ![^a](b)\n *\n * ![^a][b]\n *\n * [b]: c\n * ```\n *\n * ```html\n * <p>!<a href=\\\"b\\\">^a</a></p>\n * <p>!<a href=\\\"c\\\">^a</a></p>\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // To do: use a new field to do this, this is still needed for\n // `micromark-extension-gfm-footnote`, but the `label-start-link`\n // behavior isn’t.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs ? nok(code) : ok(code);\n }\n}","/**\n * @import {Code} from 'micromark-util-types'\n */\n\nimport { markdownLineEndingOrSpace, unicodePunctuation, unicodeWhitespace } from 'micromark-util-character';\n/**\n * Classify whether a code represents whitespace, punctuation, or something\n * else.\n *\n * Used for attention (emphasis, strong), whose sequences can open or close\n * based on the class of surrounding characters.\n *\n * > 👉 **Note**: eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n * Code.\n * @returns {typeof constants.characterGroupWhitespace | typeof constants.characterGroupPunctuation | undefined}\n * Group.\n */\nexport function classifyCharacter(code) {\n if (code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) {\n return 1;\n }\n if (unicodePunctuation(code)) {\n return 2;\n }\n}","/**\n * @import {\n * Code,\n * Construct,\n * Event,\n * Point,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer,\n * Token\n * } from 'micromark-util-types'\n */\n\nimport { push, splice } from 'micromark-util-chunked';\nimport { classifyCharacter } from 'micromark-util-classify-character';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/** @type {Construct} */\nexport const attention = {\n name: 'attention',\n resolveAll: resolveAllAttention,\n tokenize: tokenizeAttention\n};\n\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\n// eslint-disable-next-line complexity\nfunction resolveAllAttention(events, context) {\n let index = -1;\n /** @type {number} */\n let open;\n /** @type {Token} */\n let group;\n /** @type {Token} */\n let text;\n /** @type {Token} */\n let openingSequence;\n /** @type {Token} */\n let closingSequence;\n /** @type {number} */\n let use;\n /** @type {Array<Event>} */\n let nextEvents;\n /** @type {number} */\n let offset;\n\n // Walk through all events.\n //\n // Note: performance of this is fine on an mb of normal markdown, but it’s\n // a bottleneck for malicious stuff.\n while (++index < events.length) {\n // Find a token that can close.\n if (events[index][0] === 'enter' && events[index][1].type === 'attentionSequence' && events[index][1]._close) {\n open = index;\n\n // Now walk back to find an opener.\n while (open--) {\n // Find a token that can open the closer.\n if (events[open][0] === 'exit' && events[open][1].type === 'attentionSequence' && events[open][1]._open &&\n // If the markers are the same:\n context.sliceSerialize(events[open][1]).charCodeAt(0) === context.sliceSerialize(events[index][1]).charCodeAt(0)) {\n // If the opening can close or the closing can open,\n // and the close size *is not* a multiple of three,\n // but the sum of the opening and closing size *is* multiple of three,\n // then don’t match.\n if ((events[open][1]._close || events[index][1]._open) && (events[index][1].end.offset - events[index][1].start.offset) % 3 && !((events[open][1].end.offset - events[open][1].start.offset + events[index][1].end.offset - events[index][1].start.offset) % 3)) {\n continue;\n }\n\n // Number of markers to use from the sequence.\n use = events[open][1].end.offset - events[open][1].start.offset > 1 && events[index][1].end.offset - events[index][1].start.offset > 1 ? 2 : 1;\n const start = {\n ...events[open][1].end\n };\n const end = {\n ...events[index][1].start\n };\n movePoint(start, -use);\n movePoint(end, use);\n openingSequence = {\n type: use > 1 ? \"strongSequence\" : \"emphasisSequence\",\n start,\n end: {\n ...events[open][1].end\n }\n };\n closingSequence = {\n type: use > 1 ? \"strongSequence\" : \"emphasisSequence\",\n start: {\n ...events[index][1].start\n },\n end\n };\n text = {\n type: use > 1 ? \"strongText\" : \"emphasisText\",\n start: {\n ...events[open][1].end\n },\n end: {\n ...events[index][1].start\n }\n };\n group = {\n type: use > 1 ? \"strong\" : \"emphasis\",\n start: {\n ...openingSequence.start\n },\n end: {\n ...closingSequence.end\n }\n };\n events[open][1].end = {\n ...openingSequence.start\n };\n events[index][1].start = {\n ...closingSequence.end\n };\n nextEvents = [];\n\n // If there are more markers in the opening, add them before.\n if (events[open][1].end.offset - events[open][1].start.offset) {\n nextEvents = push(nextEvents, [['enter', events[open][1], context], ['exit', events[open][1], context]]);\n }\n\n // Opening.\n nextEvents = push(nextEvents, [['enter', group, context], ['enter', openingSequence, context], ['exit', openingSequence, context], ['enter', text, context]]);\n\n // Always populated by defaults.\n\n // Between.\n nextEvents = push(nextEvents, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + 1, index), context));\n\n // Closing.\n nextEvents = push(nextEvents, [['exit', text, context], ['enter', closingSequence, context], ['exit', closingSequence, context], ['exit', group, context]]);\n\n // If there are more markers in the closing, add them after.\n if (events[index][1].end.offset - events[index][1].start.offset) {\n offset = 2;\n nextEvents = push(nextEvents, [['enter', events[index][1], context], ['exit', events[index][1], context]]);\n } else {\n offset = 0;\n }\n splice(events, open - 1, index - open + 3, nextEvents);\n index = open + nextEvents.length - offset - 2;\n break;\n }\n }\n }\n }\n\n // Remove remaining sequences.\n index = -1;\n while (++index < events.length) {\n if (events[index][1].type === 'attentionSequence') {\n events[index][1].type = 'data';\n }\n }\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeAttention(effects, ok) {\n const attentionMarkers = this.parser.constructs.attentionMarkers.null;\n const previous = this.previous;\n const before = classifyCharacter(previous);\n\n /** @type {NonNullable<Code>} */\n let marker;\n return start;\n\n /**\n * Before a sequence.\n *\n * ```markdown\n * > | **\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n marker = code;\n effects.enter('attentionSequence');\n return inside(code);\n }\n\n /**\n * In a sequence.\n *\n * ```markdown\n * > | **\n * ^^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker) {\n effects.consume(code);\n return inside;\n }\n const token = effects.exit('attentionSequence');\n\n // To do: next major: move this to resolver, just like `markdown-rs`.\n const after = classifyCharacter(code);\n\n // Always populated by defaults.\n\n const open = !after || after === 2 && before || attentionMarkers.includes(code);\n const close = !before || before === 2 && after || attentionMarkers.includes(previous);\n token._open = Boolean(marker === 42 ? open : open && (before || !close));\n token._close = Boolean(marker === 42 ? close : close && (after || !open));\n return ok(code);\n }\n}\n\n/**\n * Move a point a bit.\n *\n * Note: `move` only works inside lines! It’s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n * Point.\n * @param {number} offset\n * Amount to move.\n * @returns {undefined}\n * Nothing.\n */\nfunction movePoint(point, offset) {\n point.column += offset;\n point.offset += offset;\n point._bufferIndex += offset;\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { asciiAlphanumeric, asciiAlpha, asciiAtext, asciiControl } from 'micromark-util-character';\n/** @type {Construct} */\nexport const autolink = {\n name: 'autolink',\n tokenize: tokenizeAutolink\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeAutolink(effects, ok, nok) {\n let size = 0;\n return start;\n\n /**\n * Start of an autolink.\n *\n * ```markdown\n * > | a<https://example.com>b\n * ^\n * > | a<user@example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"autolink\");\n effects.enter(\"autolinkMarker\");\n effects.consume(code);\n effects.exit(\"autolinkMarker\");\n effects.enter(\"autolinkProtocol\");\n return open;\n }\n\n /**\n * After `<`, at protocol or atext.\n *\n * ```markdown\n * > | a<https://example.com>b\n * ^\n * > | a<user@example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (asciiAlpha(code)) {\n effects.consume(code);\n return schemeOrEmailAtext;\n }\n if (code === 64) {\n return nok(code);\n }\n return emailAtext(code);\n }\n\n /**\n * At second byte of protocol or atext.\n *\n * ```markdown\n * > | a<https://example.com>b\n * ^\n * > | a<user@example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeOrEmailAtext(code) {\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) {\n // Count the previous alphabetical from `open` too.\n size = 1;\n return schemeInsideOrEmailAtext(code);\n }\n return emailAtext(code);\n }\n\n /**\n * In ambiguous protocol or atext.\n *\n * ```markdown\n * > | a<https://example.com>b\n * ^\n * > | a<user@example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeInsideOrEmailAtext(code) {\n if (code === 58) {\n effects.consume(code);\n size = 0;\n return urlInside;\n }\n\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if ((code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) && size++ < 32) {\n effects.consume(code);\n return schemeInsideOrEmailAtext;\n }\n size = 0;\n return emailAtext(code);\n }\n\n /**\n * After protocol, in URL.\n *\n * ```markdown\n * > | a<https://example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function urlInside(code) {\n if (code === 62) {\n effects.exit(\"autolinkProtocol\");\n effects.enter(\"autolinkMarker\");\n effects.consume(code);\n effects.exit(\"autolinkMarker\");\n effects.exit(\"autolink\");\n return ok;\n }\n\n // ASCII control, space, or `<`.\n if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n return nok(code);\n }\n effects.consume(code);\n return urlInside;\n }\n\n /**\n * In email atext.\n *\n * ```markdown\n * > | a<user.name@example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailAtext(code) {\n if (code === 64) {\n effects.consume(code);\n return emailAtSignOrDot;\n }\n if (asciiAtext(code)) {\n effects.consume(code);\n return emailAtext;\n }\n return nok(code);\n }\n\n /**\n * In label, after at-sign or dot.\n *\n * ```markdown\n * > | a<user.name@example.com>b\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function emailAtSignOrDot(code) {\n return asciiAlphanumeric(code) ? emailLabel(code) : nok(code);\n }\n\n /**\n * In label, where `.` and `>` are allowed.\n *\n * ```markdown\n * > | a<user.name@example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailLabel(code) {\n if (code === 46) {\n effects.consume(code);\n size = 0;\n return emailAtSignOrDot;\n }\n if (code === 62) {\n // Exit, then change the token type.\n effects.exit(\"autolinkProtocol\").type = \"autolinkEmail\";\n effects.enter(\"autolinkMarker\");\n effects.consume(code);\n effects.exit(\"autolinkMarker\");\n effects.exit(\"autolink\");\n return ok;\n }\n return emailValue(code);\n }\n\n /**\n * In label, where `.` and `>` are *not* allowed.\n *\n * Though, this is also used in `emailLabel` to parse other values.\n *\n * ```markdown\n * > | a<user.name@ex-ample.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailValue(code) {\n // ASCII alphanumeric or `-`.\n if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n const next = code === 45 ? emailValue : emailLabel;\n effects.consume(code);\n return next;\n }\n return nok(code);\n }\n}","/**\n * @import {\n * Code,\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { asciiAlphanumeric, asciiAlpha, markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const htmlText = {\n name: 'htmlText',\n tokenize: tokenizeHtmlText\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlText(effects, ok, nok) {\n const self = this;\n /** @type {NonNullable<Code> | undefined} */\n let marker;\n /** @type {number} */\n let index;\n /** @type {State} */\n let returnState;\n return start;\n\n /**\n * Start of HTML (text).\n *\n * ```markdown\n * > | a <b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"htmlText\");\n effects.enter(\"htmlTextData\");\n effects.consume(code);\n return open;\n }\n\n /**\n * After `<`, at tag name or other stuff.\n *\n * ```markdown\n * > | a <b> c\n * ^\n * > | a <!doctype> c\n * ^\n * > | a <!--b--> c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 33) {\n effects.consume(code);\n return declarationOpen;\n }\n if (code === 47) {\n effects.consume(code);\n return tagCloseStart;\n }\n if (code === 63) {\n effects.consume(code);\n return instruction;\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code);\n return tagOpen;\n }\n return nok(code);\n }\n\n /**\n * After `<!`, at declaration, comment, or CDATA.\n *\n * ```markdown\n * > | a <!doctype> c\n * ^\n * > | a <!--b--> c\n * ^\n * > | a <![CDATA[>&<]]> c\n * ^\n * ```\n *\n * @type {State}\n */\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code);\n return commentOpenInside;\n }\n if (code === 91) {\n effects.consume(code);\n index = 0;\n return cdataOpenInside;\n }\n if (asciiAlpha(code)) {\n effects.consume(code);\n return declaration;\n }\n return nok(code);\n }\n\n /**\n * In a comment, after `<!-`, at another `-`.\n *\n * ```markdown\n * > | a <!--b--> c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code);\n return commentEnd;\n }\n return nok(code);\n }\n\n /**\n * In comment.\n *\n * ```markdown\n * > | a <!--b--> c\n * ^\n * ```\n *\n * @type {State}\n */\n function comment(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 45) {\n effects.consume(code);\n return commentClose;\n }\n if (markdownLineEnding(code)) {\n returnState = comment;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return comment;\n }\n\n /**\n * In comment, after `-`.\n *\n * ```markdown\n * > | a <!--b--> c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentClose(code) {\n if (code === 45) {\n effects.consume(code);\n return commentEnd;\n }\n return comment(code);\n }\n\n /**\n * In comment, after `--`.\n *\n * ```markdown\n * > | a <!--b--> c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentEnd(code) {\n return code === 62 ? end(code) : code === 45 ? commentClose(code) : comment(code);\n }\n\n /**\n * After `<![`, in CDATA, expecting `CDATA[`.\n *\n * ```markdown\n * > | a <![CDATA[>&<]]> b\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function cdataOpenInside(code) {\n const value = \"CDATA[\";\n if (code === value.charCodeAt(index++)) {\n effects.consume(code);\n return index === value.length ? cdata : cdataOpenInside;\n }\n return nok(code);\n }\n\n /**\n * In CDATA.\n *\n * ```markdown\n * > | a <![CDATA[>&<]]> b\n * ^^^\n * ```\n *\n * @type {State}\n */\n function cdata(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 93) {\n effects.consume(code);\n return cdataClose;\n }\n if (markdownLineEnding(code)) {\n returnState = cdata;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return cdata;\n }\n\n /**\n * In CDATA, after `]`, at another `]`.\n *\n * ```markdown\n * > | a <![CDATA[>&<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataClose(code) {\n if (code === 93) {\n effects.consume(code);\n return cdataEnd;\n }\n return cdata(code);\n }\n\n /**\n * In CDATA, after `]]`, at `>`.\n *\n * ```markdown\n * > | a <![CDATA[>&<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataEnd(code) {\n if (code === 62) {\n return end(code);\n }\n if (code === 93) {\n effects.consume(code);\n return cdataEnd;\n }\n return cdata(code);\n }\n\n /**\n * In declaration.\n *\n * ```markdown\n * > | a <!b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function declaration(code) {\n if (code === null || code === 62) {\n return end(code);\n }\n if (markdownLineEnding(code)) {\n returnState = declaration;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return declaration;\n }\n\n /**\n * In instruction.\n *\n * ```markdown\n * > | a <?b?> c\n * ^\n * ```\n *\n * @type {State}\n */\n function instruction(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 63) {\n effects.consume(code);\n return instructionClose;\n }\n if (markdownLineEnding(code)) {\n returnState = instruction;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return instruction;\n }\n\n /**\n * In instruction, after `?`, at `>`.\n *\n * ```markdown\n * > | a <?b?> c\n * ^\n * ```\n *\n * @type {State}\n */\n function instructionClose(code) {\n return code === 62 ? end(code) : instruction(code);\n }\n\n /**\n * After `</`, in closing tag, at tag name.\n *\n * ```markdown\n * > | a </b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseStart(code) {\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code);\n return tagClose;\n }\n return nok(code);\n }\n\n /**\n * After `</x`, in a tag name.\n *\n * ```markdown\n * > | a </b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagClose(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagClose;\n }\n return tagCloseBetween(code);\n }\n\n /**\n * In closing tag, after tag name.\n *\n * ```markdown\n * > | a </b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseBetween(code) {\n if (markdownLineEnding(code)) {\n returnState = tagCloseBetween;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagCloseBetween;\n }\n return end(code);\n }\n\n /**\n * After `<x`, in opening tag name.\n *\n * ```markdown\n * > | a <b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpen(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagOpen;\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n return nok(code);\n }\n\n /**\n * In opening tag, after tag name.\n *\n * ```markdown\n * > | a <b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenBetween(code) {\n if (code === 47) {\n effects.consume(code);\n return end;\n }\n\n // ASCII alphabetical and `:` and `_`.\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code);\n return tagOpenAttributeName;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenBetween;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenBetween;\n }\n return end(code);\n }\n\n /**\n * In attribute name.\n *\n * ```markdown\n * > | a <b c> d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeName(code) {\n // ASCII alphabetical and `-`, `.`, `:`, and `_`.\n if (code === 45 || code === 46 || code === 58 || code === 95 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagOpenAttributeName;\n }\n return tagOpenAttributeNameAfter(code);\n }\n\n /**\n * After attribute name, before initializer, the end of the tag, or\n * whitespace.\n *\n * ```markdown\n * > | a <b c> d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code);\n return tagOpenAttributeValueBefore;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeNameAfter;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenAttributeNameAfter;\n }\n return tagOpenBetween(code);\n }\n\n /**\n * Before unquoted, double quoted, or single quoted attribute value, allowing\n * whitespace.\n *\n * ```markdown\n * > | a <b c=d> e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueBefore(code) {\n if (code === null || code === 60 || code === 61 || code === 62 || code === 96) {\n return nok(code);\n }\n if (code === 34 || code === 39) {\n effects.consume(code);\n marker = code;\n return tagOpenAttributeValueQuoted;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueBefore;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenAttributeValueBefore;\n }\n effects.consume(code);\n return tagOpenAttributeValueUnquoted;\n }\n\n /**\n * In double or single quoted attribute value.\n *\n * ```markdown\n * > | a <b c=\"d\"> e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code);\n marker = undefined;\n return tagOpenAttributeValueQuotedAfter;\n }\n if (code === null) {\n return nok(code);\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueQuoted;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return tagOpenAttributeValueQuoted;\n }\n\n /**\n * In unquoted attribute value.\n *\n * ```markdown\n * > | a <b c=d> e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueUnquoted(code) {\n if (code === null || code === 34 || code === 39 || code === 60 || code === 61 || code === 96) {\n return nok(code);\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n effects.consume(code);\n return tagOpenAttributeValueUnquoted;\n }\n\n /**\n * After double or single quoted attribute value, before whitespace or the end\n * of the tag.\n *\n * ```markdown\n * > | a <b c=\"d\"> e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n return nok(code);\n }\n\n /**\n * In certain circumstances of a tag where only an `>` is allowed.\n *\n * ```markdown\n * > | a <b c=\"d\"> e\n * ^\n * ```\n *\n * @type {State}\n */\n function end(code) {\n if (code === 62) {\n effects.consume(code);\n effects.exit(\"htmlTextData\");\n effects.exit(\"htmlText\");\n return ok;\n }\n return nok(code);\n }\n\n /**\n * At eol.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * > | a <!--a\n * ^\n * | b-->\n * ```\n *\n * @type {State}\n */\n function lineEndingBefore(code) {\n effects.exit(\"htmlTextData\");\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return lineEndingAfter;\n }\n\n /**\n * After eol, at optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a <!--a\n * > | b-->\n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfter(code) {\n // Always populated by defaults.\n\n return markdownSpace(code) ? factorySpace(effects, lineEndingAfterPrefix, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code) : lineEndingAfterPrefix(code);\n }\n\n /**\n * After eol, after optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a <!--a\n * > | b-->\n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfterPrefix(code) {\n effects.enter(\"htmlTextData\");\n return returnState(code);\n }\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { labelEnd } from './label-end.js';\n\n/** @type {Construct} */\nexport const labelStartLink = {\n name: 'labelStartLink',\n resolveAll: labelEnd.resolveAll,\n tokenize: tokenizeLabelStartLink\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * Start of label (link) start.\n *\n * ```markdown\n * > | a [b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"labelLink\");\n effects.enter(\"labelMarker\");\n effects.consume(code);\n effects.exit(\"labelMarker\");\n effects.exit(\"labelLink\");\n return after;\n }\n\n /** @type {State} */\n function after(code) {\n // To do: this isn’t needed in `micromark-extension-gfm-footnote`,\n // remove.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs ? nok(code) : ok(code);\n }\n}","/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const hardBreakEscape = {\n name: 'hardBreakEscape',\n tokenize: tokenizeHardBreakEscape\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n return start;\n\n /**\n * Start of a hard break (escape).\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"hardBreakEscape\");\n effects.consume(code);\n return after;\n }\n\n /**\n * After `\\`, at eol.\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (markdownLineEnding(code)) {\n effects.exit(\"hardBreakEscape\");\n return ok(code);\n }\n return nok(code);\n }\n}","/**\n * @import {\n * Construct,\n * Previous,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer,\n * Token\n * } from 'micromark-util-types'\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const codeText = {\n name: 'codeText',\n previous,\n resolve: resolveCodeText,\n tokenize: tokenizeCodeText\n};\n\n// To do: next major: don’t resolve, like `markdown-rs`.\n/** @type {Resolver} */\nfunction resolveCodeText(events) {\n let tailExitIndex = events.length - 4;\n let headEnterIndex = 3;\n /** @type {number} */\n let index;\n /** @type {number | undefined} */\n let enter;\n\n // If we start and end with an EOL or a space.\n if ((events[headEnterIndex][1].type === \"lineEnding\" || events[headEnterIndex][1].type === 'space') && (events[tailExitIndex][1].type === \"lineEnding\" || events[tailExitIndex][1].type === 'space')) {\n index = headEnterIndex;\n\n // And we have data.\n while (++index < tailExitIndex) {\n if (events[index][1].type === \"codeTextData\") {\n // Then we have padding.\n events[headEnterIndex][1].type = \"codeTextPadding\";\n events[tailExitIndex][1].type = \"codeTextPadding\";\n headEnterIndex += 2;\n tailExitIndex -= 2;\n break;\n }\n }\n }\n\n // Merge adjacent spaces and data.\n index = headEnterIndex - 1;\n tailExitIndex++;\n while (++index <= tailExitIndex) {\n if (enter === undefined) {\n if (index !== tailExitIndex && events[index][1].type !== \"lineEnding\") {\n enter = index;\n }\n } else if (index === tailExitIndex || events[index][1].type === \"lineEnding\") {\n events[enter][1].type = \"codeTextData\";\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end;\n events.splice(enter + 2, index - enter - 2);\n tailExitIndex -= index - enter - 2;\n index = enter + 2;\n }\n enter = undefined;\n }\n }\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Previous}\n */\nfunction previous(code) {\n // If there is a previous code, there will always be a tail.\n return code !== 96 || this.events[this.events.length - 1][1].type === \"characterEscape\";\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCodeText(effects, ok, nok) {\n const self = this;\n let sizeOpen = 0;\n /** @type {number} */\n let size;\n /** @type {Token} */\n let token;\n return start;\n\n /**\n * Start of code (text).\n *\n * ```markdown\n * > | `a`\n * ^\n * > | \\`a`\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"codeText\");\n effects.enter(\"codeTextSequence\");\n return sequenceOpen(code);\n }\n\n /**\n * In opening sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === 96) {\n effects.consume(code);\n sizeOpen++;\n return sequenceOpen;\n }\n effects.exit(\"codeTextSequence\");\n return between(code);\n }\n\n /**\n * Between something and something else.\n *\n * ```markdown\n * > | `a`\n * ^^\n * ```\n *\n * @type {State}\n */\n function between(code) {\n // EOF.\n if (code === null) {\n return nok(code);\n }\n\n // To do: next major: don’t do spaces in resolve, but when compiling,\n // like `markdown-rs`.\n // Tabs don’t work, and virtual spaces don’t make sense.\n if (code === 32) {\n effects.enter('space');\n effects.consume(code);\n effects.exit('space');\n return between;\n }\n\n // Closing fence? Could also be data.\n if (code === 96) {\n token = effects.enter(\"codeTextSequence\");\n size = 0;\n return sequenceClose(code);\n }\n if (markdownLineEnding(code)) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return between;\n }\n\n // Data.\n effects.enter(\"codeTextData\");\n return data(code);\n }\n\n /**\n * In data.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function data(code) {\n if (code === null || code === 32 || code === 96 || markdownLineEnding(code)) {\n effects.exit(\"codeTextData\");\n return between(code);\n }\n effects.consume(code);\n return data;\n }\n\n /**\n * In closing sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n // More.\n if (code === 96) {\n effects.consume(code);\n size++;\n return sequenceClose;\n }\n\n // Done!\n if (size === sizeOpen) {\n effects.exit(\"codeTextSequence\");\n effects.exit(\"codeText\");\n return ok(code);\n }\n\n // More or less accents: mark as data.\n token.type = \"codeTextData\";\n return data(code);\n }\n}","/**\n * @import {Extension} from 'micromark-util-types'\n */\n\nimport { attention, autolink, blockQuote, characterEscape, characterReference, codeFenced, codeIndented, codeText, definition, hardBreakEscape, headingAtx, htmlFlow, htmlText, labelEnd, labelStartImage, labelStartLink, lineEnding, list, setextUnderline, thematicBreak } from 'micromark-core-commonmark';\nimport { resolver as resolveText } from './initialize/text.js';\n\n/** @satisfies {Extension['document']} */\nexport const document = {\n [42]: list,\n [43]: list,\n [45]: list,\n [48]: list,\n [49]: list,\n [50]: list,\n [51]: list,\n [52]: list,\n [53]: list,\n [54]: list,\n [55]: list,\n [56]: list,\n [57]: list,\n [62]: blockQuote\n};\n\n/** @satisfies {Extension['contentInitial']} */\nexport const contentInitial = {\n [91]: definition\n};\n\n/** @satisfies {Extension['flowInitial']} */\nexport const flowInitial = {\n [-2]: codeIndented,\n [-1]: codeIndented,\n [32]: codeIndented\n};\n\n/** @satisfies {Extension['flow']} */\nexport const flow = {\n [35]: headingAtx,\n [42]: thematicBreak,\n [45]: [setextUnderline, thematicBreak],\n [60]: htmlFlow,\n [61]: setextUnderline,\n [95]: thematicBreak,\n [96]: codeFenced,\n [126]: codeFenced\n};\n\n/** @satisfies {Extension['string']} */\nexport const string = {\n [38]: characterReference,\n [92]: characterEscape\n};\n\n/** @satisfies {Extension['text']} */\nexport const text = {\n [-5]: lineEnding,\n [-4]: lineEnding,\n [-3]: lineEnding,\n [33]: labelStartImage,\n [38]: characterReference,\n [42]: attention,\n [60]: [autolink, htmlText],\n [91]: labelStartLink,\n [92]: [hardBreakEscape, characterEscape],\n [93]: labelEnd,\n [95]: attention,\n [96]: codeText\n};\n\n/** @satisfies {Extension['insideSpan']} */\nexport const insideSpan = {\n null: [attention, resolveText]\n};\n\n/** @satisfies {Extension['attentionMarkers']} */\nexport const attentionMarkers = {\n null: [42, 95]\n};\n\n/** @satisfies {Extension['disable']} */\nexport const disable = {\n null: []\n};","/**\n * @import {\n * Chunk,\n * Code,\n * ConstructRecord,\n * Construct,\n * Effects,\n * InitialConstruct,\n * ParseContext,\n * Point,\n * State,\n * TokenizeContext,\n * Token\n * } from 'micromark-util-types'\n */\n\n/**\n * @callback Restore\n * Restore the state.\n * @returns {undefined}\n * Nothing.\n *\n * @typedef Info\n * Info.\n * @property {Restore} restore\n * Restore.\n * @property {number} from\n * From.\n *\n * @callback ReturnHandle\n * Handle a successful run.\n * @param {Construct} construct\n * Construct.\n * @param {Info} info\n * Info.\n * @returns {undefined}\n * Nothing.\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\nimport { push, splice } from 'micromark-util-chunked';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/**\n * Create a tokenizer.\n * Tokenizers deal with one type of data (e.g., containers, flow, text).\n * The parser is the object dealing with it all.\n * `initialize` works like other constructs, except that only its `tokenize`\n * function is used, in which case it doesn’t receive an `ok` or `nok`.\n * `from` can be given to set the point before the first character, although\n * when further lines are indented, they must be set with `defineSkip`.\n *\n * @param {ParseContext} parser\n * Parser.\n * @param {InitialConstruct} initialize\n * Construct.\n * @param {Omit<Point, '_bufferIndex' | '_index'> | undefined} [from]\n * Point (optional).\n * @returns {TokenizeContext}\n * Context.\n */\nexport function createTokenizer(parser, initialize, from) {\n /** @type {Point} */\n let point = {\n _bufferIndex: -1,\n _index: 0,\n line: from && from.line || 1,\n column: from && from.column || 1,\n offset: from && from.offset || 0\n };\n /** @type {Record<string, number>} */\n const columnStart = {};\n /** @type {Array<Construct>} */\n const resolveAllConstructs = [];\n /** @type {Array<Chunk>} */\n let chunks = [];\n /** @type {Array<Token>} */\n let stack = [];\n /** @type {boolean | undefined} */\n let consumed = true;\n\n /**\n * Tools used for tokenizing.\n *\n * @type {Effects}\n */\n const effects = {\n attempt: constructFactory(onsuccessfulconstruct),\n check: constructFactory(onsuccessfulcheck),\n consume,\n enter,\n exit,\n interrupt: constructFactory(onsuccessfulcheck, {\n interrupt: true\n })\n };\n\n /**\n * State and tools for resolving and serializing.\n *\n * @type {TokenizeContext}\n */\n const context = {\n code: null,\n containerState: {},\n defineSkip,\n events: [],\n now,\n parser,\n previous: null,\n sliceSerialize,\n sliceStream,\n write\n };\n\n /**\n * The state function.\n *\n * @type {State | undefined}\n */\n let state = initialize.tokenize.call(context, effects);\n\n /**\n * Track which character we expect to be consumed, to catch bugs.\n *\n * @type {Code}\n */\n let expectedCode;\n if (initialize.resolveAll) {\n resolveAllConstructs.push(initialize);\n }\n return context;\n\n /** @type {TokenizeContext['write']} */\n function write(slice) {\n chunks = push(chunks, slice);\n main();\n\n // Exit if we’re not done, resolve might change stuff.\n if (chunks[chunks.length - 1] !== null) {\n return [];\n }\n addResult(initialize, 0);\n\n // Otherwise, resolve, and exit.\n context.events = resolveAll(resolveAllConstructs, context.events, context);\n return context.events;\n }\n\n //\n // Tools.\n //\n\n /** @type {TokenizeContext['sliceSerialize']} */\n function sliceSerialize(token, expandTabs) {\n return serializeChunks(sliceStream(token), expandTabs);\n }\n\n /** @type {TokenizeContext['sliceStream']} */\n function sliceStream(token) {\n return sliceChunks(chunks, token);\n }\n\n /** @type {TokenizeContext['now']} */\n function now() {\n // This is a hot path, so we clone manually instead of `Object.assign({}, point)`\n const {\n _bufferIndex,\n _index,\n line,\n column,\n offset\n } = point;\n return {\n _bufferIndex,\n _index,\n line,\n column,\n offset\n };\n }\n\n /** @type {TokenizeContext['defineSkip']} */\n function defineSkip(value) {\n columnStart[value.line] = value.column;\n accountForPotentialSkip();\n }\n\n //\n // State management.\n //\n\n /**\n * Main loop (note that `_index` and `_bufferIndex` in `point` are modified by\n * `consume`).\n * Here is where we walk through the chunks, which either include strings of\n * several characters, or numerical character codes.\n * The reason to do this in a loop instead of a call is so the stack can\n * drain.\n *\n * @returns {undefined}\n * Nothing.\n */\n function main() {\n /** @type {number} */\n let chunkIndex;\n while (point._index < chunks.length) {\n const chunk = chunks[point._index];\n\n // If we’re in a buffer chunk, loop through it.\n if (typeof chunk === 'string') {\n chunkIndex = point._index;\n if (point._bufferIndex < 0) {\n point._bufferIndex = 0;\n }\n while (point._index === chunkIndex && point._bufferIndex < chunk.length) {\n go(chunk.charCodeAt(point._bufferIndex));\n }\n } else {\n go(chunk);\n }\n }\n }\n\n /**\n * Deal with one code.\n *\n * @param {Code} code\n * Code.\n * @returns {undefined}\n * Nothing.\n */\n function go(code) {\n consumed = undefined;\n expectedCode = code;\n state = state(code);\n }\n\n /** @type {Effects['consume']} */\n function consume(code) {\n if (markdownLineEnding(code)) {\n point.line++;\n point.column = 1;\n point.offset += code === -3 ? 2 : 1;\n accountForPotentialSkip();\n } else if (code !== -1) {\n point.column++;\n point.offset++;\n }\n\n // Not in a string chunk.\n if (point._bufferIndex < 0) {\n point._index++;\n } else {\n point._bufferIndex++;\n\n // At end of string chunk.\n if (point._bufferIndex ===\n // Points w/ non-negative `_bufferIndex` reference\n // strings.\n /** @type {string} */\n chunks[point._index].length) {\n point._bufferIndex = -1;\n point._index++;\n }\n }\n\n // Expose the previous character.\n context.previous = code;\n\n // Mark as consumed.\n consumed = true;\n }\n\n /** @type {Effects['enter']} */\n function enter(type, fields) {\n /** @type {Token} */\n // @ts-expect-error Patch instead of assign required fields to help GC.\n const token = fields || {};\n token.type = type;\n token.start = now();\n context.events.push(['enter', token, context]);\n stack.push(token);\n return token;\n }\n\n /** @type {Effects['exit']} */\n function exit(type) {\n const token = stack.pop();\n token.end = now();\n context.events.push(['exit', token, context]);\n return token;\n }\n\n /**\n * Use results.\n *\n * @type {ReturnHandle}\n */\n function onsuccessfulconstruct(construct, info) {\n addResult(construct, info.from);\n }\n\n /**\n * Discard results.\n *\n * @type {ReturnHandle}\n */\n function onsuccessfulcheck(_, info) {\n info.restore();\n }\n\n /**\n * Factory to attempt/check/interrupt.\n *\n * @param {ReturnHandle} onreturn\n * Callback.\n * @param {{interrupt?: boolean | undefined} | undefined} [fields]\n * Fields.\n */\n function constructFactory(onreturn, fields) {\n return hook;\n\n /**\n * Handle either an object mapping codes to constructs, a list of\n * constructs, or a single construct.\n *\n * @param {Array<Construct> | ConstructRecord | Construct} constructs\n * Constructs.\n * @param {State} returnState\n * State.\n * @param {State | undefined} [bogusState]\n * State.\n * @returns {State}\n * State.\n */\n function hook(constructs, returnState, bogusState) {\n /** @type {ReadonlyArray<Construct>} */\n let listOfConstructs;\n /** @type {number} */\n let constructIndex;\n /** @type {Construct} */\n let currentConstruct;\n /** @type {Info} */\n let info;\n return Array.isArray(constructs) ? /* c8 ignore next 1 */\n handleListOfConstructs(constructs) : 'tokenize' in constructs ?\n // Looks like a construct.\n handleListOfConstructs([(/** @type {Construct} */constructs)]) : handleMapOfConstructs(constructs);\n\n /**\n * Handle a list of construct.\n *\n * @param {ConstructRecord} map\n * Constructs.\n * @returns {State}\n * State.\n */\n function handleMapOfConstructs(map) {\n return start;\n\n /** @type {State} */\n function start(code) {\n const left = code !== null && map[code];\n const all = code !== null && map.null;\n const list = [\n // To do: add more extension tests.\n /* c8 ignore next 2 */\n ...(Array.isArray(left) ? left : left ? [left] : []), ...(Array.isArray(all) ? all : all ? [all] : [])];\n return handleListOfConstructs(list)(code);\n }\n }\n\n /**\n * Handle a list of construct.\n *\n * @param {ReadonlyArray<Construct>} list\n * Constructs.\n * @returns {State}\n * State.\n */\n function handleListOfConstructs(list) {\n listOfConstructs = list;\n constructIndex = 0;\n if (list.length === 0) {\n return bogusState;\n }\n return handleConstruct(list[constructIndex]);\n }\n\n /**\n * Handle a single construct.\n *\n * @param {Construct} construct\n * Construct.\n * @returns {State}\n * State.\n */\n function handleConstruct(construct) {\n return start;\n\n /** @type {State} */\n function start(code) {\n // To do: not needed to store if there is no bogus state, probably?\n // Currently doesn’t work because `inspect` in document does a check\n // w/o a bogus, which doesn’t make sense. But it does seem to help perf\n // by not storing.\n info = store();\n currentConstruct = construct;\n if (!construct.partial) {\n context.currentConstruct = construct;\n }\n\n // Always populated by defaults.\n\n if (construct.name && context.parser.constructs.disable.null.includes(construct.name)) {\n return nok(code);\n }\n return construct.tokenize.call(\n // If we do have fields, create an object w/ `context` as its\n // prototype.\n // This allows a “live binding”, which is needed for `interrupt`.\n fields ? Object.assign(Object.create(context), fields) : context, effects, ok, nok)(code);\n }\n }\n\n /** @type {State} */\n function ok(code) {\n consumed = true;\n onreturn(currentConstruct, info);\n return returnState;\n }\n\n /** @type {State} */\n function nok(code) {\n consumed = true;\n info.restore();\n if (++constructIndex < listOfConstructs.length) {\n return handleConstruct(listOfConstructs[constructIndex]);\n }\n return bogusState;\n }\n }\n }\n\n /**\n * @param {Construct} construct\n * Construct.\n * @param {number} from\n * From.\n * @returns {undefined}\n * Nothing.\n */\n function addResult(construct, from) {\n if (construct.resolveAll && !resolveAllConstructs.includes(construct)) {\n resolveAllConstructs.push(construct);\n }\n if (construct.resolve) {\n splice(context.events, from, context.events.length - from, construct.resolve(context.events.slice(from), context));\n }\n if (construct.resolveTo) {\n context.events = construct.resolveTo(context.events, context);\n }\n }\n\n /**\n * Store state.\n *\n * @returns {Info}\n * Info.\n */\n function store() {\n const startPoint = now();\n const startPrevious = context.previous;\n const startCurrentConstruct = context.currentConstruct;\n const startEventsIndex = context.events.length;\n const startStack = Array.from(stack);\n return {\n from: startEventsIndex,\n restore\n };\n\n /**\n * Restore state.\n *\n * @returns {undefined}\n * Nothing.\n */\n function restore() {\n point = startPoint;\n context.previous = startPrevious;\n context.currentConstruct = startCurrentConstruct;\n context.events.length = startEventsIndex;\n stack = startStack;\n accountForPotentialSkip();\n }\n }\n\n /**\n * Move the current point a bit forward in the line when it’s on a column\n * skip.\n *\n * @returns {undefined}\n * Nothing.\n */\n function accountForPotentialSkip() {\n if (point.line in columnStart && point.column < 2) {\n point.column = columnStart[point.line];\n point.offset += columnStart[point.line] - 1;\n }\n }\n}\n\n/**\n * Get the chunks from a slice of chunks in the range of a token.\n *\n * @param {ReadonlyArray<Chunk>} chunks\n * Chunks.\n * @param {Pick<Token, 'end' | 'start'>} token\n * Token.\n * @returns {Array<Chunk>}\n * Chunks.\n */\nfunction sliceChunks(chunks, token) {\n const startIndex = token.start._index;\n const startBufferIndex = token.start._bufferIndex;\n const endIndex = token.end._index;\n const endBufferIndex = token.end._bufferIndex;\n /** @type {Array<Chunk>} */\n let view;\n if (startIndex === endIndex) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)];\n } else {\n view = chunks.slice(startIndex, endIndex);\n if (startBufferIndex > -1) {\n const head = view[0];\n if (typeof head === 'string') {\n view[0] = head.slice(startBufferIndex);\n } else {\n view.shift();\n }\n }\n if (endBufferIndex > 0) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view.push(chunks[endIndex].slice(0, endBufferIndex));\n }\n }\n return view;\n}\n\n/**\n * Get the string value of a slice of chunks.\n *\n * @param {ReadonlyArray<Chunk>} chunks\n * Chunks.\n * @param {boolean | undefined} [expandTabs=false]\n * Whether to expand tabs (default: `false`).\n * @returns {string}\n * Result.\n */\nfunction serializeChunks(chunks, expandTabs) {\n let index = -1;\n /** @type {Array<string>} */\n const result = [];\n /** @type {boolean | undefined} */\n let atTab;\n while (++index < chunks.length) {\n const chunk = chunks[index];\n /** @type {string} */\n let value;\n if (typeof chunk === 'string') {\n value = chunk;\n } else switch (chunk) {\n case -5:\n {\n value = \"\\r\";\n break;\n }\n case -4:\n {\n value = \"\\n\";\n break;\n }\n case -3:\n {\n value = \"\\r\" + \"\\n\";\n break;\n }\n case -2:\n {\n value = expandTabs ? \" \" : \"\\t\";\n break;\n }\n case -1:\n {\n if (!expandTabs && atTab) continue;\n value = \" \";\n break;\n }\n default:\n {\n // Currently only replacement character.\n value = String.fromCharCode(chunk);\n }\n }\n atTab = chunk === -2;\n result.push(value);\n }\n return result.join('');\n}","/**\n * @import {\n * InitialConstruct,\n * Initializer,\n * State,\n * TokenizeContext,\n * Token\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {InitialConstruct} */\nexport const content = {\n tokenize: initializeContent\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Initializer}\n * Content.\n */\nfunction initializeContent(effects) {\n const contentStart = effects.attempt(this.parser.constructs.contentInitial, afterContentStartConstruct, paragraphInitial);\n /** @type {Token} */\n let previous;\n return contentStart;\n\n /** @type {State} */\n function afterContentStartConstruct(code) {\n if (code === null) {\n effects.consume(code);\n return;\n }\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return factorySpace(effects, contentStart, \"linePrefix\");\n }\n\n /** @type {State} */\n function paragraphInitial(code) {\n effects.enter(\"paragraph\");\n return lineStart(code);\n }\n\n /** @type {State} */\n function lineStart(code) {\n const token = effects.enter(\"chunkText\", {\n contentType: \"text\",\n previous\n });\n if (previous) {\n previous.next = token;\n }\n previous = token;\n return data(code);\n }\n\n /** @type {State} */\n function data(code) {\n if (code === null) {\n effects.exit(\"chunkText\");\n effects.exit(\"paragraph\");\n effects.consume(code);\n return;\n }\n if (markdownLineEnding(code)) {\n effects.consume(code);\n effects.exit(\"chunkText\");\n return lineStart;\n }\n\n // Data.\n effects.consume(code);\n return data;\n }\n}","/**\n * @import {\n * Construct,\n * ContainerState,\n * InitialConstruct,\n * Initializer,\n * Point,\n * State,\n * TokenizeContext,\n * Tokenizer,\n * Token\n * } from 'micromark-util-types'\n */\n\n/**\n * @typedef {[Construct, ContainerState]} StackItem\n * Construct and its state.\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\nimport { splice } from 'micromark-util-chunked';\n/** @type {InitialConstruct} */\nexport const document = {\n tokenize: initializeDocument\n};\n\n/** @type {Construct} */\nconst containerConstruct = {\n tokenize: tokenizeContainer\n};\n\n/**\n * @this {TokenizeContext}\n * Self.\n * @type {Initializer}\n * Initializer.\n */\nfunction initializeDocument(effects) {\n const self = this;\n /** @type {Array<StackItem>} */\n const stack = [];\n let continued = 0;\n /** @type {TokenizeContext | undefined} */\n let childFlow;\n /** @type {Token | undefined} */\n let childToken;\n /** @type {number} */\n let lineStartOffset;\n return start;\n\n /** @type {State} */\n function start(code) {\n // First we iterate through the open blocks, starting with the root\n // document, and descending through last children down to the last open\n // block.\n // Each block imposes a condition that the line must satisfy if the block is\n // to remain open.\n // For example, a block quote requires a `>` character.\n // A paragraph requires a non-blank line.\n // In this phase we may match all or just some of the open blocks.\n // But we cannot close unmatched blocks yet, because we may have a lazy\n // continuation line.\n if (continued < stack.length) {\n const item = stack[continued];\n self.containerState = item[1];\n return effects.attempt(item[0].continuation, documentContinue, checkNewContainers)(code);\n }\n\n // Done.\n return checkNewContainers(code);\n }\n\n /** @type {State} */\n function documentContinue(code) {\n continued++;\n\n // Note: this field is called `_closeFlow` but it also closes containers.\n // Perhaps a good idea to rename it but it’s already used in the wild by\n // extensions.\n if (self.containerState._closeFlow) {\n self.containerState._closeFlow = undefined;\n if (childFlow) {\n closeFlow();\n }\n\n // Note: this algorithm for moving events around is similar to the\n // algorithm when dealing with lazy lines in `writeToChild`.\n const indexBeforeExits = self.events.length;\n let indexBeforeFlow = indexBeforeExits;\n /** @type {Point | undefined} */\n let point;\n\n // Find the flow chunk.\n while (indexBeforeFlow--) {\n if (self.events[indexBeforeFlow][0] === 'exit' && self.events[indexBeforeFlow][1].type === \"chunkFlow\") {\n point = self.events[indexBeforeFlow][1].end;\n break;\n }\n }\n exitContainers(continued);\n\n // Fix positions.\n let index = indexBeforeExits;\n while (index < self.events.length) {\n self.events[index][1].end = {\n ...point\n };\n index++;\n }\n\n // Inject the exits earlier (they’re still also at the end).\n splice(self.events, indexBeforeFlow + 1, 0, self.events.slice(indexBeforeExits));\n\n // Discard the duplicate exits.\n self.events.length = index;\n return checkNewContainers(code);\n }\n return start(code);\n }\n\n /** @type {State} */\n function checkNewContainers(code) {\n // Next, after consuming the continuation markers for existing blocks, we\n // look for new block starts (e.g. `>` for a block quote).\n // If we encounter a new block start, we close any blocks unmatched in\n // step 1 before creating the new block as a child of the last matched\n // block.\n if (continued === stack.length) {\n // No need to `check` whether there’s a container, of `exitContainers`\n // would be moot.\n // We can instead immediately `attempt` to parse one.\n if (!childFlow) {\n return documentContinued(code);\n }\n\n // If we have concrete content, such as block HTML or fenced code,\n // we can’t have containers “pierce” into them, so we can immediately\n // start.\n if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {\n return flowStart(code);\n }\n\n // If we do have flow, it could still be a blank line,\n // but we’d be interrupting it w/ a new container if there’s a current\n // construct.\n // To do: next major: remove `_gfmTableDynamicInterruptHack` (no longer\n // needed in micromark-extension-gfm-table@1.0.6).\n self.interrupt = Boolean(childFlow.currentConstruct && !childFlow._gfmTableDynamicInterruptHack);\n }\n\n // Check if there is a new container.\n self.containerState = {};\n return effects.check(containerConstruct, thereIsANewContainer, thereIsNoNewContainer)(code);\n }\n\n /** @type {State} */\n function thereIsANewContainer(code) {\n if (childFlow) closeFlow();\n exitContainers(continued);\n return documentContinued(code);\n }\n\n /** @type {State} */\n function thereIsNoNewContainer(code) {\n self.parser.lazy[self.now().line] = continued !== stack.length;\n lineStartOffset = self.now().offset;\n return flowStart(code);\n }\n\n /** @type {State} */\n function documentContinued(code) {\n // Try new containers.\n self.containerState = {};\n return effects.attempt(containerConstruct, containerContinue, flowStart)(code);\n }\n\n /** @type {State} */\n function containerContinue(code) {\n continued++;\n stack.push([self.currentConstruct, self.containerState]);\n // Try another.\n return documentContinued(code);\n }\n\n /** @type {State} */\n function flowStart(code) {\n if (code === null) {\n if (childFlow) closeFlow();\n exitContainers(0);\n effects.consume(code);\n return;\n }\n childFlow = childFlow || self.parser.flow(self.now());\n effects.enter(\"chunkFlow\", {\n _tokenizer: childFlow,\n contentType: \"flow\",\n previous: childToken\n });\n return flowContinue(code);\n }\n\n /** @type {State} */\n function flowContinue(code) {\n if (code === null) {\n writeToChild(effects.exit(\"chunkFlow\"), true);\n exitContainers(0);\n effects.consume(code);\n return;\n }\n if (markdownLineEnding(code)) {\n effects.consume(code);\n writeToChild(effects.exit(\"chunkFlow\"));\n // Get ready for the next line.\n continued = 0;\n self.interrupt = undefined;\n return start;\n }\n effects.consume(code);\n return flowContinue;\n }\n\n /**\n * @param {Token} token\n * Token.\n * @param {boolean | undefined} [endOfFile]\n * Whether the token is at the end of the file (default: `false`).\n * @returns {undefined}\n * Nothing.\n */\n function writeToChild(token, endOfFile) {\n const stream = self.sliceStream(token);\n if (endOfFile) stream.push(null);\n token.previous = childToken;\n if (childToken) childToken.next = token;\n childToken = token;\n childFlow.defineSkip(token.start);\n childFlow.write(stream);\n\n // Alright, so we just added a lazy line:\n //\n // ```markdown\n // > a\n // b.\n //\n // Or:\n //\n // > ~~~c\n // d\n //\n // Or:\n //\n // > | e |\n // f\n // ```\n //\n // The construct in the second example (fenced code) does not accept lazy\n // lines, so it marked itself as done at the end of its first line, and\n // then the content construct parses `d`.\n // Most constructs in markdown match on the first line: if the first line\n // forms a construct, a non-lazy line can’t “unmake” it.\n //\n // The construct in the third example is potentially a GFM table, and\n // those are *weird*.\n // It *could* be a table, from the first line, if the following line\n // matches a condition.\n // In this case, that second line is lazy, which “unmakes” the first line\n // and turns the whole into one content block.\n //\n // We’ve now parsed the non-lazy and the lazy line, and can figure out\n // whether the lazy line started a new flow block.\n // If it did, we exit the current containers between the two flow blocks.\n if (self.parser.lazy[token.start.line]) {\n let index = childFlow.events.length;\n while (index--) {\n if (\n // The token starts before the line ending…\n childFlow.events[index][1].start.offset < lineStartOffset && (\n // …and either is not ended yet…\n !childFlow.events[index][1].end ||\n // …or ends after it.\n childFlow.events[index][1].end.offset > lineStartOffset)) {\n // Exit: there’s still something open, which means it’s a lazy line\n // part of something.\n return;\n }\n }\n\n // Note: this algorithm for moving events around is similar to the\n // algorithm when closing flow in `documentContinue`.\n const indexBeforeExits = self.events.length;\n let indexBeforeFlow = indexBeforeExits;\n /** @type {boolean | undefined} */\n let seen;\n /** @type {Point | undefined} */\n let point;\n\n // Find the previous chunk (the one before the lazy line).\n while (indexBeforeFlow--) {\n if (self.events[indexBeforeFlow][0] === 'exit' && self.events[indexBeforeFlow][1].type === \"chunkFlow\") {\n if (seen) {\n point = self.events[indexBeforeFlow][1].end;\n break;\n }\n seen = true;\n }\n }\n exitContainers(continued);\n\n // Fix positions.\n index = indexBeforeExits;\n while (index < self.events.length) {\n self.events[index][1].end = {\n ...point\n };\n index++;\n }\n\n // Inject the exits earlier (they’re still also at the end).\n splice(self.events, indexBeforeFlow + 1, 0, self.events.slice(indexBeforeExits));\n\n // Discard the duplicate exits.\n self.events.length = index;\n }\n }\n\n /**\n * @param {number} size\n * Size.\n * @returns {undefined}\n * Nothing.\n */\n function exitContainers(size) {\n let index = stack.length;\n\n // Exit open containers.\n while (index-- > size) {\n const entry = stack[index];\n self.containerState = entry[1];\n entry[0].exit.call(self, effects);\n }\n stack.length = size;\n }\n function closeFlow() {\n childFlow.write([null]);\n childToken = undefined;\n childFlow = undefined;\n self.containerState._closeFlow = undefined;\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n * Tokenizer.\n */\nfunction tokenizeContainer(effects, ok, nok) {\n // Always populated by defaults.\n\n return factorySpace(effects, effects.attempt(this.parser.constructs.document, ok, nok), \"linePrefix\", this.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4);\n}","/**\n * @import {\n * Construct,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer,\n * Token\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\nimport { subtokenize } from 'micromark-util-subtokenize';\n/**\n * No name because it must not be turned off.\n * @type {Construct}\n */\nexport const content = {\n resolve: resolveContent,\n tokenize: tokenizeContent\n};\n\n/** @type {Construct} */\nconst continuationConstruct = {\n partial: true,\n tokenize: tokenizeContinuation\n};\n\n/**\n * Content is transparent: it’s parsed right now. That way, definitions are also\n * parsed right now: before text in paragraphs (specifically, media) are parsed.\n *\n * @type {Resolver}\n */\nfunction resolveContent(events) {\n subtokenize(events);\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeContent(effects, ok) {\n /** @type {Token | undefined} */\n let previous;\n return chunkStart;\n\n /**\n * Before a content chunk.\n *\n * ```markdown\n * > | abc\n * ^\n * ```\n *\n * @type {State}\n */\n function chunkStart(code) {\n effects.enter(\"content\");\n previous = effects.enter(\"chunkContent\", {\n contentType: \"content\"\n });\n return chunkInside(code);\n }\n\n /**\n * In a content chunk.\n *\n * ```markdown\n * > | abc\n * ^^^\n * ```\n *\n * @type {State}\n */\n function chunkInside(code) {\n if (code === null) {\n return contentEnd(code);\n }\n\n // To do: in `markdown-rs`, each line is parsed on its own, and everything\n // is stitched together resolving.\n if (markdownLineEnding(code)) {\n return effects.check(continuationConstruct, contentContinue, contentEnd)(code);\n }\n\n // Data.\n effects.consume(code);\n return chunkInside;\n }\n\n /**\n *\n *\n * @type {State}\n */\n function contentEnd(code) {\n effects.exit(\"chunkContent\");\n effects.exit(\"content\");\n return ok(code);\n }\n\n /**\n *\n *\n * @type {State}\n */\n function contentContinue(code) {\n effects.consume(code);\n effects.exit(\"chunkContent\");\n previous.next = effects.enter(\"chunkContent\", {\n contentType: \"content\",\n previous\n });\n previous = previous.next;\n return chunkInside;\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeContinuation(effects, ok, nok) {\n const self = this;\n return startLookahead;\n\n /**\n *\n *\n * @type {State}\n */\n function startLookahead(code) {\n effects.exit(\"chunkContent\");\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return factorySpace(effects, prefixed, \"linePrefix\");\n }\n\n /**\n *\n *\n * @type {State}\n */\n function prefixed(code) {\n if (code === null || markdownLineEnding(code)) {\n return nok(code);\n }\n\n // Always populated by defaults.\n\n const tail = self.events[self.events.length - 1];\n if (!self.parser.constructs.disable.null.includes('codeIndented') && tail && tail[1].type === \"linePrefix\" && tail[2].sliceSerialize(tail[1], true).length >= 4) {\n return ok(code);\n }\n return effects.interrupt(self.parser.constructs.flow, nok, ok)(code);\n }\n}","/**\n * @import {\n * InitialConstruct,\n * Initializer,\n * State,\n * TokenizeContext\n * } from 'micromark-util-types'\n */\n\nimport { blankLine, content } from 'micromark-core-commonmark';\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {InitialConstruct} */\nexport const flow = {\n tokenize: initializeFlow\n};\n\n/**\n * @this {TokenizeContext}\n * Self.\n * @type {Initializer}\n * Initializer.\n */\nfunction initializeFlow(effects) {\n const self = this;\n const initial = effects.attempt(\n // Try to parse a blank line.\n blankLine, atBlankEnding,\n // Try to parse initial flow (essentially, only code).\n effects.attempt(this.parser.constructs.flowInitial, afterConstruct, factorySpace(effects, effects.attempt(this.parser.constructs.flow, afterConstruct, effects.attempt(content, afterConstruct)), \"linePrefix\")));\n return initial;\n\n /** @type {State} */\n function atBlankEnding(code) {\n if (code === null) {\n effects.consume(code);\n return;\n }\n effects.enter(\"lineEndingBlank\");\n effects.consume(code);\n effects.exit(\"lineEndingBlank\");\n self.currentConstruct = undefined;\n return initial;\n }\n\n /** @type {State} */\n function afterConstruct(code) {\n if (code === null) {\n effects.consume(code);\n return;\n }\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n self.currentConstruct = undefined;\n return initial;\n }\n}","/**\n * @import {\n * Code,\n * InitialConstruct,\n * Initializer,\n * Resolver,\n * State,\n * TokenizeContext\n * } from 'micromark-util-types'\n */\n\nexport const resolver = {\n resolveAll: createResolver()\n};\nexport const string = initializeFactory('string');\nexport const text = initializeFactory('text');\n\n/**\n * @param {'string' | 'text'} field\n * Field.\n * @returns {InitialConstruct}\n * Construct.\n */\nfunction initializeFactory(field) {\n return {\n resolveAll: createResolver(field === 'text' ? resolveAllLineSuffixes : undefined),\n tokenize: initializeText\n };\n\n /**\n * @this {TokenizeContext}\n * Context.\n * @type {Initializer}\n */\n function initializeText(effects) {\n const self = this;\n const constructs = this.parser.constructs[field];\n const text = effects.attempt(constructs, start, notText);\n return start;\n\n /** @type {State} */\n function start(code) {\n return atBreak(code) ? text(code) : notText(code);\n }\n\n /** @type {State} */\n function notText(code) {\n if (code === null) {\n effects.consume(code);\n return;\n }\n effects.enter(\"data\");\n effects.consume(code);\n return data;\n }\n\n /** @type {State} */\n function data(code) {\n if (atBreak(code)) {\n effects.exit(\"data\");\n return text(code);\n }\n\n // Data.\n effects.consume(code);\n return data;\n }\n\n /**\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether the code is a break.\n */\n function atBreak(code) {\n if (code === null) {\n return true;\n }\n const list = constructs[code];\n let index = -1;\n if (list) {\n // Always populated by defaults.\n\n while (++index < list.length) {\n const item = list[index];\n if (!item.previous || item.previous.call(self, self.previous)) {\n return true;\n }\n }\n }\n return false;\n }\n }\n}\n\n/**\n * @param {Resolver | undefined} [extraResolver]\n * Resolver.\n * @returns {Resolver}\n * Resolver.\n */\nfunction createResolver(extraResolver) {\n return resolveAllText;\n\n /** @type {Resolver} */\n function resolveAllText(events, context) {\n let index = -1;\n /** @type {number | undefined} */\n let enter;\n\n // A rather boring computation (to merge adjacent `data` events) which\n // improves mm performance by 29%.\n while (++index <= events.length) {\n if (enter === undefined) {\n if (events[index] && events[index][1].type === \"data\") {\n enter = index;\n index++;\n }\n } else if (!events[index] || events[index][1].type !== \"data\") {\n // Don’t do anything if there is one data token.\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end;\n events.splice(enter + 2, index - enter - 2);\n index = enter + 2;\n }\n enter = undefined;\n }\n }\n return extraResolver ? extraResolver(events, context) : events;\n }\n}\n\n/**\n * A rather ugly set of instructions which again looks at chunks in the input\n * stream.\n * The reason to do this here is that it is *much* faster to parse in reverse.\n * And that we can’t hook into `null` to split the line suffix before an EOF.\n * To do: figure out if we can make this into a clean utility, or even in core.\n * As it will be useful for GFMs literal autolink extension (and maybe even\n * tables?)\n *\n * @type {Resolver}\n */\nfunction resolveAllLineSuffixes(events, context) {\n let eventIndex = 0; // Skip first.\n\n while (++eventIndex <= events.length) {\n if ((eventIndex === events.length || events[eventIndex][1].type === \"lineEnding\") && events[eventIndex - 1][1].type === \"data\") {\n const data = events[eventIndex - 1][1];\n const chunks = context.sliceStream(data);\n let index = chunks.length;\n let bufferIndex = -1;\n let size = 0;\n /** @type {boolean | undefined} */\n let tabs;\n while (index--) {\n const chunk = chunks[index];\n if (typeof chunk === 'string') {\n bufferIndex = chunk.length;\n while (chunk.charCodeAt(bufferIndex - 1) === 32) {\n size++;\n bufferIndex--;\n }\n if (bufferIndex) break;\n bufferIndex = -1;\n }\n // Number\n else if (chunk === -2) {\n tabs = true;\n size++;\n } else if (chunk === -1) {\n // Empty\n } else {\n // Replacement character, exit.\n index++;\n break;\n }\n }\n if (size) {\n const token = {\n type: eventIndex === events.length || tabs || size < 2 ? \"lineSuffix\" : \"hardBreakTrailing\",\n start: {\n _bufferIndex: index ? bufferIndex : data.start._bufferIndex + bufferIndex,\n _index: data.start._index + index,\n line: data.end.line,\n column: data.end.column - size,\n offset: data.end.offset - size\n },\n end: {\n ...data.end\n }\n };\n data.end = {\n ...token.start\n };\n if (data.start.offset === data.end.offset) {\n Object.assign(data, token);\n } else {\n events.splice(eventIndex, 0, ['enter', token, context], ['exit', token, context]);\n eventIndex += 2;\n }\n }\n eventIndex++;\n }\n }\n return events;\n}","/**\n * @import {\n * Create,\n * FullNormalizedExtension,\n * InitialConstruct,\n * ParseContext,\n * ParseOptions\n * } from 'micromark-util-types'\n */\n\nimport { combineExtensions } from 'micromark-util-combine-extensions';\nimport { content } from './initialize/content.js';\nimport { document } from './initialize/document.js';\nimport { flow } from './initialize/flow.js';\nimport { string, text } from './initialize/text.js';\nimport * as defaultConstructs from './constructs.js';\nimport { createTokenizer } from './create-tokenizer.js';\n\n/**\n * @param {ParseOptions | null | undefined} [options]\n * Configuration (optional).\n * @returns {ParseContext}\n * Parser.\n */\nexport function parse(options) {\n const settings = options || {};\n const constructs = /** @type {FullNormalizedExtension} */\n combineExtensions([defaultConstructs, ...(settings.extensions || [])]);\n\n /** @type {ParseContext} */\n const parser = {\n constructs,\n content: create(content),\n defined: [],\n document: create(document),\n flow: create(flow),\n lazy: {},\n string: create(string),\n text: create(text)\n };\n return parser;\n\n /**\n * @param {InitialConstruct} initial\n * Construct to start with.\n * @returns {Create}\n * Create a tokenizer.\n */\n function create(initial) {\n return creator;\n /** @type {Create} */\n function creator(from) {\n return createTokenizer(parser, initial, from);\n }\n }\n}","/**\n * @import {Event} from 'micromark-util-types'\n */\n\nimport { subtokenize } from 'micromark-util-subtokenize';\n\n/**\n * @param {Array<Event>} events\n * Events.\n * @returns {Array<Event>}\n * Events.\n */\nexport function postprocess(events) {\n while (!subtokenize(events)) {\n // Empty\n }\n return events;\n}","/**\n * @import {Chunk, Code, Encoding, Value} from 'micromark-util-types'\n */\n\n/**\n * @callback Preprocessor\n * Preprocess a value.\n * @param {Value} value\n * Value.\n * @param {Encoding | null | undefined} [encoding]\n * Encoding when `value` is a typed array (optional).\n * @param {boolean | null | undefined} [end=false]\n * Whether this is the last chunk (default: `false`).\n * @returns {Array<Chunk>}\n * Chunks.\n */\n\nconst search = /[\\0\\t\\n\\r]/g;\n\n/**\n * @returns {Preprocessor}\n * Preprocess a value.\n */\nexport function preprocess() {\n let column = 1;\n let buffer = '';\n /** @type {boolean | undefined} */\n let start = true;\n /** @type {boolean | undefined} */\n let atCarriageReturn;\n return preprocessor;\n\n /** @type {Preprocessor} */\n // eslint-disable-next-line complexity\n function preprocessor(value, encoding, end) {\n /** @type {Array<Chunk>} */\n const chunks = [];\n /** @type {RegExpMatchArray | null} */\n let match;\n /** @type {number} */\n let next;\n /** @type {number} */\n let startPosition;\n /** @type {number} */\n let endPosition;\n /** @type {Code} */\n let code;\n value = buffer + (typeof value === 'string' ? value.toString() : new TextDecoder(encoding || undefined).decode(value));\n startPosition = 0;\n buffer = '';\n if (start) {\n // To do: `markdown-rs` actually parses BOMs (byte order mark).\n if (value.charCodeAt(0) === 65279) {\n startPosition++;\n }\n start = undefined;\n }\n while (startPosition < value.length) {\n search.lastIndex = startPosition;\n match = search.exec(value);\n endPosition = match && match.index !== undefined ? match.index : value.length;\n code = value.charCodeAt(endPosition);\n if (!match) {\n buffer = value.slice(startPosition);\n break;\n }\n if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n chunks.push(-3);\n atCarriageReturn = undefined;\n } else {\n if (atCarriageReturn) {\n chunks.push(-5);\n atCarriageReturn = undefined;\n }\n if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition));\n column += endPosition - startPosition;\n }\n switch (code) {\n case 0:\n {\n chunks.push(65533);\n column++;\n break;\n }\n case 9:\n {\n next = Math.ceil(column / 4) * 4;\n chunks.push(-2);\n while (column++ < next) chunks.push(-1);\n break;\n }\n case 10:\n {\n chunks.push(-4);\n column = 1;\n break;\n }\n default:\n {\n atCarriageReturn = true;\n column = 1;\n }\n }\n }\n startPosition = endPosition + 1;\n }\n if (end) {\n if (atCarriageReturn) chunks.push(-5);\n if (buffer) chunks.push(buffer);\n chunks.push(null);\n }\n return chunks;\n }\n}","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n */\n\nimport {Schema} from './schema.js'\n\n/**\n * @param {Schema[]} definitions\n * @param {string} [space]\n * @returns {Schema}\n */\nexport function merge(definitions, space) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n let index = -1\n\n while (++index < definitions.length) {\n Object.assign(property, definitions[index].property)\n Object.assign(normal, definitions[index].normal)\n }\n\n return new Schema(property, normal, space)\n}\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n *\n * @typedef {Record<string, string>} Attributes\n *\n * @typedef {Object} Definition\n * @property {Record<string, number|null>} properties\n * @property {(attributes: Attributes, property: string) => string} transform\n * @property {string} [space]\n * @property {Attributes} [attributes]\n * @property {Array<string>} [mustUseProperty]\n */\n\nimport {normalize} from '../normalize.js'\nimport {Schema} from './schema.js'\nimport {DefinedInfo} from './defined-info.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * @param {Definition} definition\n * @returns {Schema}\n */\nexport function create(definition) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n /** @type {string} */\n let prop\n\n for (prop in definition.properties) {\n if (own.call(definition.properties, prop)) {\n const value = definition.properties[prop]\n const info = new DefinedInfo(\n prop,\n definition.transform(definition.attributes || {}, prop),\n value,\n definition.space\n )\n\n if (\n definition.mustUseProperty &&\n definition.mustUseProperty.includes(prop)\n ) {\n info.mustUseProperty = true\n }\n\n property[prop] = info\n\n normal[normalize(prop)] = prop\n normal[normalize(info.attribute)] = prop\n }\n }\n\n return new Schema(property, normal, definition.space)\n}\n","import {create} from './util/create.js'\n\nexport const xlink = create({\n space: 'xlink',\n transform(_, prop) {\n return 'xlink:' + prop.slice(5).toLowerCase()\n },\n properties: {\n xLinkActuate: null,\n xLinkArcRole: null,\n xLinkHref: null,\n xLinkRole: null,\n xLinkShow: null,\n xLinkTitle: null,\n xLinkType: null\n }\n})\n","import {create} from './util/create.js'\n\nexport const xml = create({\n space: 'xml',\n transform(_, prop) {\n return 'xml:' + prop.slice(3).toLowerCase()\n },\n properties: {xmlLang: null, xmlBase: null, xmlSpace: null}\n})\n","import {caseSensitiveTransform} from './case-sensitive-transform.js'\n\n/**\n * @param {Record<string, string>} attributes\n * @param {string} property\n * @returns {string}\n */\nexport function caseInsensitiveTransform(attributes, property) {\n return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n","import {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const xmlns = create({\n space: 'xmlns',\n attributes: {xmlnsxlink: 'xmlns:xlink'},\n transform: caseInsensitiveTransform,\n properties: {xmlns: null, xmlnsXLink: null}\n})\n","import {booleanish, number, spaceSeparated} from './util/types.js'\nimport {create} from './util/create.js'\n\nexport const aria = create({\n transform(_, prop) {\n return prop === 'role' ? prop : 'aria-' + prop.slice(4).toLowerCase()\n },\n properties: {\n ariaActiveDescendant: null,\n ariaAtomic: booleanish,\n ariaAutoComplete: null,\n ariaBusy: booleanish,\n ariaChecked: booleanish,\n ariaColCount: number,\n ariaColIndex: number,\n ariaColSpan: number,\n ariaControls: spaceSeparated,\n ariaCurrent: null,\n ariaDescribedBy: spaceSeparated,\n ariaDetails: null,\n ariaDisabled: booleanish,\n ariaDropEffect: spaceSeparated,\n ariaErrorMessage: null,\n ariaExpanded: booleanish,\n ariaFlowTo: spaceSeparated,\n ariaGrabbed: booleanish,\n ariaHasPopup: null,\n ariaHidden: booleanish,\n ariaInvalid: null,\n ariaKeyShortcuts: null,\n ariaLabel: null,\n ariaLabelledBy: spaceSeparated,\n ariaLevel: number,\n ariaLive: null,\n ariaModal: booleanish,\n ariaMultiLine: booleanish,\n ariaMultiSelectable: booleanish,\n ariaOrientation: null,\n ariaOwns: spaceSeparated,\n ariaPlaceholder: null,\n ariaPosInSet: number,\n ariaPressed: booleanish,\n ariaReadOnly: booleanish,\n ariaRelevant: null,\n ariaRequired: booleanish,\n ariaRoleDescription: spaceSeparated,\n ariaRowCount: number,\n ariaRowIndex: number,\n ariaRowSpan: number,\n ariaSelected: booleanish,\n ariaSetSize: number,\n ariaSort: null,\n ariaValueMax: number,\n ariaValueMin: number,\n ariaValueNow: number,\n ariaValueText: null,\n role: null\n }\n})\n","import {\n boolean,\n overloadedBoolean,\n booleanish,\n number,\n spaceSeparated,\n commaSeparated\n} from './util/types.js'\nimport {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const html = create({\n space: 'html',\n attributes: {\n acceptcharset: 'accept-charset',\n classname: 'class',\n htmlfor: 'for',\n httpequiv: 'http-equiv'\n },\n transform: caseInsensitiveTransform,\n mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n properties: {\n // Standard Properties.\n abbr: null,\n accept: commaSeparated,\n acceptCharset: spaceSeparated,\n accessKey: spaceSeparated,\n action: null,\n allow: null,\n allowFullScreen: boolean,\n allowPaymentRequest: boolean,\n allowUserMedia: boolean,\n alt: null,\n as: null,\n async: boolean,\n autoCapitalize: null,\n autoComplete: spaceSeparated,\n autoFocus: boolean,\n autoPlay: boolean,\n blocking: spaceSeparated,\n capture: null,\n charSet: null,\n checked: boolean,\n cite: null,\n className: spaceSeparated,\n cols: number,\n colSpan: null,\n content: null,\n contentEditable: booleanish,\n controls: boolean,\n controlsList: spaceSeparated,\n coords: number | commaSeparated,\n crossOrigin: null,\n data: null,\n dateTime: null,\n decoding: null,\n default: boolean,\n defer: boolean,\n dir: null,\n dirName: null,\n disabled: boolean,\n download: overloadedBoolean,\n draggable: booleanish,\n encType: null,\n enterKeyHint: null,\n fetchPriority: null,\n form: null,\n formAction: null,\n formEncType: null,\n formMethod: null,\n formNoValidate: boolean,\n formTarget: null,\n headers: spaceSeparated,\n height: number,\n hidden: boolean,\n high: number,\n href: null,\n hrefLang: null,\n htmlFor: spaceSeparated,\n httpEquiv: spaceSeparated,\n id: null,\n imageSizes: null,\n imageSrcSet: null,\n inert: boolean,\n inputMode: null,\n integrity: null,\n is: null,\n isMap: boolean,\n itemId: null,\n itemProp: spaceSeparated,\n itemRef: spaceSeparated,\n itemScope: boolean,\n itemType: spaceSeparated,\n kind: null,\n label: null,\n lang: null,\n language: null,\n list: null,\n loading: null,\n loop: boolean,\n low: number,\n manifest: null,\n max: null,\n maxLength: number,\n media: null,\n method: null,\n min: null,\n minLength: number,\n multiple: boolean,\n muted: boolean,\n name: null,\n nonce: null,\n noModule: boolean,\n noValidate: boolean,\n onAbort: null,\n onAfterPrint: null,\n onAuxClick: null,\n onBeforeMatch: null,\n onBeforePrint: null,\n onBeforeToggle: null,\n onBeforeUnload: null,\n onBlur: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onContextLost: null,\n onContextMenu: null,\n onContextRestored: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFormData: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLanguageChange: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadEnd: null,\n onLoadStart: null,\n onMessage: null,\n onMessageError: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRejectionHandled: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onScrollEnd: null,\n onSecurityPolicyViolation: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onSlotChange: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnhandledRejection: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onWheel: null,\n open: boolean,\n optimum: number,\n pattern: null,\n ping: spaceSeparated,\n placeholder: null,\n playsInline: boolean,\n popover: null,\n popoverTarget: null,\n popoverTargetAction: null,\n poster: null,\n preload: null,\n readOnly: boolean,\n referrerPolicy: null,\n rel: spaceSeparated,\n required: boolean,\n reversed: boolean,\n rows: number,\n rowSpan: number,\n sandbox: spaceSeparated,\n scope: null,\n scoped: boolean,\n seamless: boolean,\n selected: boolean,\n shadowRootClonable: boolean,\n shadowRootDelegatesFocus: boolean,\n shadowRootMode: null,\n shape: null,\n size: number,\n sizes: null,\n slot: null,\n span: number,\n spellCheck: booleanish,\n src: null,\n srcDoc: null,\n srcLang: null,\n srcSet: null,\n start: number,\n step: null,\n style: null,\n tabIndex: number,\n target: null,\n title: null,\n translate: null,\n type: null,\n typeMustMatch: boolean,\n useMap: null,\n value: booleanish,\n width: number,\n wrap: null,\n writingSuggestions: null,\n\n // Legacy.\n // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n align: null, // Several. Use CSS `text-align` instead,\n aLink: null, // `<body>`. Use CSS `a:active {color}` instead\n archive: spaceSeparated, // `<object>`. List of URIs to archives\n axis: null, // `<td>` and `<th>`. Use `scope` on `<th>`\n background: null, // `<body>`. Use CSS `background-image` instead\n bgColor: null, // `<body>` and table elements. Use CSS `background-color` instead\n border: number, // `<table>`. Use CSS `border-width` instead,\n borderColor: null, // `<table>`. Use CSS `border-color` instead,\n bottomMargin: number, // `<body>`\n cellPadding: null, // `<table>`\n cellSpacing: null, // `<table>`\n char: null, // Several table elements. When `align=char`, sets the character to align on\n charOff: null, // Several table elements. When `char`, offsets the alignment\n classId: null, // `<object>`\n clear: null, // `<br>`. Use CSS `clear` instead\n code: null, // `<object>`\n codeBase: null, // `<object>`\n codeType: null, // `<object>`\n color: null, // `<font>` and `<hr>`. Use CSS instead\n compact: boolean, // Lists. Use CSS to reduce space between items instead\n declare: boolean, // `<object>`\n event: null, // `<script>`\n face: null, // `<font>`. Use CSS instead\n frame: null, // `<table>`\n frameBorder: null, // `<iframe>`. Use CSS `border` instead\n hSpace: number, // `<img>` and `<object>`\n leftMargin: number, // `<body>`\n link: null, // `<body>`. Use CSS `a:link {color: *}` instead\n longDesc: null, // `<frame>`, `<iframe>`, and `<img>`. Use an `<a>`\n lowSrc: null, // `<img>`. Use a `<picture>`\n marginHeight: number, // `<body>`\n marginWidth: number, // `<body>`\n noResize: boolean, // `<frame>`\n noHref: boolean, // `<area>`. Use no href instead of an explicit `nohref`\n noShade: boolean, // `<hr>`. Use background-color and height instead of borders\n noWrap: boolean, // `<td>` and `<th>`\n object: null, // `<applet>`\n profile: null, // `<head>`\n prompt: null, // `<isindex>`\n rev: null, // `<link>`\n rightMargin: number, // `<body>`\n rules: null, // `<table>`\n scheme: null, // `<meta>`\n scrolling: booleanish, // `<frame>`. Use overflow in the child context\n standby: null, // `<object>`\n summary: null, // `<table>`\n text: null, // `<body>`. Use CSS `color` instead\n topMargin: number, // `<body>`\n valueType: null, // `<param>`\n version: null, // `<html>`. Use a doctype.\n vAlign: null, // Several. Use CSS `vertical-align` instead\n vLink: null, // `<body>`. Use CSS `a:visited {color}` instead\n vSpace: number, // `<img>` and `<object>`\n\n // Non-standard Properties.\n allowTransparency: null,\n autoCorrect: null,\n autoSave: null,\n disablePictureInPicture: boolean,\n disableRemotePlayback: boolean,\n prefix: null,\n property: null,\n results: number,\n security: null,\n unselectable: null\n }\n})\n","import {\n boolean,\n number,\n spaceSeparated,\n commaSeparated,\n commaOrSpaceSeparated\n} from './util/types.js'\nimport {create} from './util/create.js'\nimport {caseSensitiveTransform} from './util/case-sensitive-transform.js'\n\nexport const svg = create({\n space: 'svg',\n attributes: {\n accentHeight: 'accent-height',\n alignmentBaseline: 'alignment-baseline',\n arabicForm: 'arabic-form',\n baselineShift: 'baseline-shift',\n capHeight: 'cap-height',\n className: 'class',\n clipPath: 'clip-path',\n clipRule: 'clip-rule',\n colorInterpolation: 'color-interpolation',\n colorInterpolationFilters: 'color-interpolation-filters',\n colorProfile: 'color-profile',\n colorRendering: 'color-rendering',\n crossOrigin: 'crossorigin',\n dataType: 'datatype',\n dominantBaseline: 'dominant-baseline',\n enableBackground: 'enable-background',\n fillOpacity: 'fill-opacity',\n fillRule: 'fill-rule',\n floodColor: 'flood-color',\n floodOpacity: 'flood-opacity',\n fontFamily: 'font-family',\n fontSize: 'font-size',\n fontSizeAdjust: 'font-size-adjust',\n fontStretch: 'font-stretch',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n glyphName: 'glyph-name',\n glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n glyphOrientationVertical: 'glyph-orientation-vertical',\n hrefLang: 'hreflang',\n horizAdvX: 'horiz-adv-x',\n horizOriginX: 'horiz-origin-x',\n horizOriginY: 'horiz-origin-y',\n imageRendering: 'image-rendering',\n letterSpacing: 'letter-spacing',\n lightingColor: 'lighting-color',\n markerEnd: 'marker-end',\n markerMid: 'marker-mid',\n markerStart: 'marker-start',\n navDown: 'nav-down',\n navDownLeft: 'nav-down-left',\n navDownRight: 'nav-down-right',\n navLeft: 'nav-left',\n navNext: 'nav-next',\n navPrev: 'nav-prev',\n navRight: 'nav-right',\n navUp: 'nav-up',\n navUpLeft: 'nav-up-left',\n navUpRight: 'nav-up-right',\n onAbort: 'onabort',\n onActivate: 'onactivate',\n onAfterPrint: 'onafterprint',\n onBeforePrint: 'onbeforeprint',\n onBegin: 'onbegin',\n onCancel: 'oncancel',\n onCanPlay: 'oncanplay',\n onCanPlayThrough: 'oncanplaythrough',\n onChange: 'onchange',\n onClick: 'onclick',\n onClose: 'onclose',\n onCopy: 'oncopy',\n onCueChange: 'oncuechange',\n onCut: 'oncut',\n onDblClick: 'ondblclick',\n onDrag: 'ondrag',\n onDragEnd: 'ondragend',\n onDragEnter: 'ondragenter',\n onDragExit: 'ondragexit',\n onDragLeave: 'ondragleave',\n onDragOver: 'ondragover',\n onDragStart: 'ondragstart',\n onDrop: 'ondrop',\n onDurationChange: 'ondurationchange',\n onEmptied: 'onemptied',\n onEnd: 'onend',\n onEnded: 'onended',\n onError: 'onerror',\n onFocus: 'onfocus',\n onFocusIn: 'onfocusin',\n onFocusOut: 'onfocusout',\n onHashChange: 'onhashchange',\n onInput: 'oninput',\n onInvalid: 'oninvalid',\n onKeyDown: 'onkeydown',\n onKeyPress: 'onkeypress',\n onKeyUp: 'onkeyup',\n onLoad: 'onload',\n onLoadedData: 'onloadeddata',\n onLoadedMetadata: 'onloadedmetadata',\n onLoadStart: 'onloadstart',\n onMessage: 'onmessage',\n onMouseDown: 'onmousedown',\n onMouseEnter: 'onmouseenter',\n onMouseLeave: 'onmouseleave',\n onMouseMove: 'onmousemove',\n onMouseOut: 'onmouseout',\n onMouseOver: 'onmouseover',\n onMouseUp: 'onmouseup',\n onMouseWheel: 'onmousewheel',\n onOffline: 'onoffline',\n onOnline: 'ononline',\n onPageHide: 'onpagehide',\n onPageShow: 'onpageshow',\n onPaste: 'onpaste',\n onPause: 'onpause',\n onPlay: 'onplay',\n onPlaying: 'onplaying',\n onPopState: 'onpopstate',\n onProgress: 'onprogress',\n onRateChange: 'onratechange',\n onRepeat: 'onrepeat',\n onReset: 'onreset',\n onResize: 'onresize',\n onScroll: 'onscroll',\n onSeeked: 'onseeked',\n onSeeking: 'onseeking',\n onSelect: 'onselect',\n onShow: 'onshow',\n onStalled: 'onstalled',\n onStorage: 'onstorage',\n onSubmit: 'onsubmit',\n onSuspend: 'onsuspend',\n onTimeUpdate: 'ontimeupdate',\n onToggle: 'ontoggle',\n onUnload: 'onunload',\n onVolumeChange: 'onvolumechange',\n onWaiting: 'onwaiting',\n onZoom: 'onzoom',\n overlinePosition: 'overline-position',\n overlineThickness: 'overline-thickness',\n paintOrder: 'paint-order',\n panose1: 'panose-1',\n pointerEvents: 'pointer-events',\n referrerPolicy: 'referrerpolicy',\n renderingIntent: 'rendering-intent',\n shapeRendering: 'shape-rendering',\n stopColor: 'stop-color',\n stopOpacity: 'stop-opacity',\n strikethroughPosition: 'strikethrough-position',\n strikethroughThickness: 'strikethrough-thickness',\n strokeDashArray: 'stroke-dasharray',\n strokeDashOffset: 'stroke-dashoffset',\n strokeLineCap: 'stroke-linecap',\n strokeLineJoin: 'stroke-linejoin',\n strokeMiterLimit: 'stroke-miterlimit',\n strokeOpacity: 'stroke-opacity',\n strokeWidth: 'stroke-width',\n tabIndex: 'tabindex',\n textAnchor: 'text-anchor',\n textDecoration: 'text-decoration',\n textRendering: 'text-rendering',\n transformOrigin: 'transform-origin',\n typeOf: 'typeof',\n underlinePosition: 'underline-position',\n underlineThickness: 'underline-thickness',\n unicodeBidi: 'unicode-bidi',\n unicodeRange: 'unicode-range',\n unitsPerEm: 'units-per-em',\n vAlphabetic: 'v-alphabetic',\n vHanging: 'v-hanging',\n vIdeographic: 'v-ideographic',\n vMathematical: 'v-mathematical',\n vectorEffect: 'vector-effect',\n vertAdvY: 'vert-adv-y',\n vertOriginX: 'vert-origin-x',\n vertOriginY: 'vert-origin-y',\n wordSpacing: 'word-spacing',\n writingMode: 'writing-mode',\n xHeight: 'x-height',\n // These were camelcased in Tiny. Now lowercased in SVG 2\n playbackOrder: 'playbackorder',\n timelineBegin: 'timelinebegin'\n },\n transform: caseSensitiveTransform,\n properties: {\n about: commaOrSpaceSeparated,\n accentHeight: number,\n accumulate: null,\n additive: null,\n alignmentBaseline: null,\n alphabetic: number,\n amplitude: number,\n arabicForm: null,\n ascent: number,\n attributeName: null,\n attributeType: null,\n azimuth: number,\n bandwidth: null,\n baselineShift: null,\n baseFrequency: null,\n baseProfile: null,\n bbox: null,\n begin: null,\n bias: number,\n by: null,\n calcMode: null,\n capHeight: number,\n className: spaceSeparated,\n clip: null,\n clipPath: null,\n clipPathUnits: null,\n clipRule: null,\n color: null,\n colorInterpolation: null,\n colorInterpolationFilters: null,\n colorProfile: null,\n colorRendering: null,\n content: null,\n contentScriptType: null,\n contentStyleType: null,\n crossOrigin: null,\n cursor: null,\n cx: null,\n cy: null,\n d: null,\n dataType: null,\n defaultAction: null,\n descent: number,\n diffuseConstant: number,\n direction: null,\n display: null,\n dur: null,\n divisor: number,\n dominantBaseline: null,\n download: boolean,\n dx: null,\n dy: null,\n edgeMode: null,\n editable: null,\n elevation: number,\n enableBackground: null,\n end: null,\n event: null,\n exponent: number,\n externalResourcesRequired: null,\n fill: null,\n fillOpacity: number,\n fillRule: null,\n filter: null,\n filterRes: null,\n filterUnits: null,\n floodColor: null,\n floodOpacity: null,\n focusable: null,\n focusHighlight: null,\n fontFamily: null,\n fontSize: null,\n fontSizeAdjust: null,\n fontStretch: null,\n fontStyle: null,\n fontVariant: null,\n fontWeight: null,\n format: null,\n fr: null,\n from: null,\n fx: null,\n fy: null,\n g1: commaSeparated,\n g2: commaSeparated,\n glyphName: commaSeparated,\n glyphOrientationHorizontal: null,\n glyphOrientationVertical: null,\n glyphRef: null,\n gradientTransform: null,\n gradientUnits: null,\n handler: null,\n hanging: number,\n hatchContentUnits: null,\n hatchUnits: null,\n height: null,\n href: null,\n hrefLang: null,\n horizAdvX: number,\n horizOriginX: number,\n horizOriginY: number,\n id: null,\n ideographic: number,\n imageRendering: null,\n initialVisibility: null,\n in: null,\n in2: null,\n intercept: number,\n k: number,\n k1: number,\n k2: number,\n k3: number,\n k4: number,\n kernelMatrix: commaOrSpaceSeparated,\n kernelUnitLength: null,\n keyPoints: null, // SEMI_COLON_SEPARATED\n keySplines: null, // SEMI_COLON_SEPARATED\n keyTimes: null, // SEMI_COLON_SEPARATED\n kerning: null,\n lang: null,\n lengthAdjust: null,\n letterSpacing: null,\n lightingColor: null,\n limitingConeAngle: number,\n local: null,\n markerEnd: null,\n markerMid: null,\n markerStart: null,\n markerHeight: null,\n markerUnits: null,\n markerWidth: null,\n mask: null,\n maskContentUnits: null,\n maskUnits: null,\n mathematical: null,\n max: null,\n media: null,\n mediaCharacterEncoding: null,\n mediaContentEncodings: null,\n mediaSize: number,\n mediaTime: null,\n method: null,\n min: null,\n mode: null,\n name: null,\n navDown: null,\n navDownLeft: null,\n navDownRight: null,\n navLeft: null,\n navNext: null,\n navPrev: null,\n navRight: null,\n navUp: null,\n navUpLeft: null,\n navUpRight: null,\n numOctaves: null,\n observer: null,\n offset: null,\n onAbort: null,\n onActivate: null,\n onAfterPrint: null,\n onBeforePrint: null,\n onBegin: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnd: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFocusIn: null,\n onFocusOut: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadStart: null,\n onMessage: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onMouseWheel: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRepeat: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onShow: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onZoom: null,\n opacity: null,\n operator: null,\n order: null,\n orient: null,\n orientation: null,\n origin: null,\n overflow: null,\n overlay: null,\n overlinePosition: number,\n overlineThickness: number,\n paintOrder: null,\n panose1: null,\n path: null,\n pathLength: number,\n patternContentUnits: null,\n patternTransform: null,\n patternUnits: null,\n phase: null,\n ping: spaceSeparated,\n pitch: null,\n playbackOrder: null,\n pointerEvents: null,\n points: null,\n pointsAtX: number,\n pointsAtY: number,\n pointsAtZ: number,\n preserveAlpha: null,\n preserveAspectRatio: null,\n primitiveUnits: null,\n propagate: null,\n property: commaOrSpaceSeparated,\n r: null,\n radius: null,\n referrerPolicy: null,\n refX: null,\n refY: null,\n rel: commaOrSpaceSeparated,\n rev: commaOrSpaceSeparated,\n renderingIntent: null,\n repeatCount: null,\n repeatDur: null,\n requiredExtensions: commaOrSpaceSeparated,\n requiredFeatures: commaOrSpaceSeparated,\n requiredFonts: commaOrSpaceSeparated,\n requiredFormats: commaOrSpaceSeparated,\n resource: null,\n restart: null,\n result: null,\n rotate: null,\n rx: null,\n ry: null,\n scale: null,\n seed: null,\n shapeRendering: null,\n side: null,\n slope: null,\n snapshotTime: null,\n specularConstant: number,\n specularExponent: number,\n spreadMethod: null,\n spacing: null,\n startOffset: null,\n stdDeviation: null,\n stemh: null,\n stemv: null,\n stitchTiles: null,\n stopColor: null,\n stopOpacity: null,\n strikethroughPosition: number,\n strikethroughThickness: number,\n string: null,\n stroke: null,\n strokeDashArray: commaOrSpaceSeparated,\n strokeDashOffset: null,\n strokeLineCap: null,\n strokeLineJoin: null,\n strokeMiterLimit: number,\n strokeOpacity: number,\n strokeWidth: null,\n style: null,\n surfaceScale: number,\n syncBehavior: null,\n syncBehaviorDefault: null,\n syncMaster: null,\n syncTolerance: null,\n syncToleranceDefault: null,\n systemLanguage: commaOrSpaceSeparated,\n tabIndex: number,\n tableValues: null,\n target: null,\n targetX: number,\n targetY: number,\n textAnchor: null,\n textDecoration: null,\n textRendering: null,\n textLength: null,\n timelineBegin: null,\n title: null,\n transformBehavior: null,\n type: null,\n typeOf: commaOrSpaceSeparated,\n to: null,\n transform: null,\n transformOrigin: null,\n u1: null,\n u2: null,\n underlinePosition: number,\n underlineThickness: number,\n unicode: null,\n unicodeBidi: null,\n unicodeRange: null,\n unitsPerEm: number,\n values: null,\n vAlphabetic: number,\n vMathematical: number,\n vectorEffect: null,\n vHanging: number,\n vIdeographic: number,\n version: null,\n vertAdvY: number,\n vertOriginX: number,\n vertOriginY: number,\n viewBox: null,\n viewTarget: null,\n visibility: null,\n width: null,\n widths: null,\n wordSpacing: null,\n writingMode: null,\n x: null,\n x1: null,\n x2: null,\n xChannelSelector: null,\n xHeight: number,\n y: null,\n y1: null,\n y2: null,\n yChannelSelector: null,\n z: null,\n zoomAndPan: null\n }\n})\n","/**\n * @typedef {import('./lib/util/info.js').Info} Info\n * @typedef {import('./lib/util/schema.js').Schema} Schema\n */\n\nimport {merge} from './lib/util/merge.js'\nimport {xlink} from './lib/xlink.js'\nimport {xml} from './lib/xml.js'\nimport {xmlns} from './lib/xmlns.js'\nimport {aria} from './lib/aria.js'\nimport {html as htmlBase} from './lib/html.js'\nimport {svg as svgBase} from './lib/svg.js'\n\nexport {find} from './lib/find.js'\nexport {hastToReact} from './lib/hast-to-react.js'\nexport {normalize} from './lib/normalize.js'\nexport const html = merge([xml, xlink, xmlns, aria, htmlBase], 'html')\nexport const svg = merge([xml, xlink, xmlns, aria, svgBase], 'svg')\n","/**\n * @typedef {import('./util/schema.js').Schema} Schema\n */\n\nimport {normalize} from './normalize.js'\nimport {DefinedInfo} from './util/defined-info.js'\nimport {Info} from './util/info.js'\n\nconst valid = /^data[-\\w.:]+$/i\nconst dash = /-[a-z]/g\nconst cap = /[A-Z]/g\n\n/**\n * @param {Schema} schema\n * @param {string} value\n * @returns {Info}\n */\nexport function find(schema, value) {\n const normal = normalize(value)\n let prop = value\n let Type = Info\n\n if (normal in schema.normal) {\n return schema.property[schema.normal[normal]]\n }\n\n if (normal.length > 4 && normal.slice(0, 4) === 'data' && valid.test(value)) {\n // Attribute or property.\n if (value.charAt(4) === '-') {\n // Turn it into a property.\n const rest = value.slice(5).replace(dash, camelcase)\n prop = 'data' + rest.charAt(0).toUpperCase() + rest.slice(1)\n } else {\n // Turn it into an attribute.\n const rest = value.slice(4)\n\n if (!dash.test(rest)) {\n let dashes = rest.replace(cap, kebab)\n\n if (dashes.charAt(0) !== '-') {\n dashes = '-' + dashes\n }\n\n value = 'data' + dashes\n }\n }\n\n Type = DefinedInfo\n }\n\n return new Type(prop, value)\n}\n\n/**\n * @param {string} $0\n * @returns {string}\n */\nfunction kebab($0) {\n return '-' + $0.toLowerCase()\n}\n\n/**\n * @param {string} $0\n * @returns {string}\n */\nfunction camelcase($0) {\n return $0.charAt(1).toUpperCase()\n}\n","/**\n * `hast` is close to `React`, but differs in a couple of cases.\n *\n * To get a React property from a hast property, check if it is in\n * `hastToReact`, if it is, then use the corresponding value,\n * otherwise, use the hast property.\n *\n * @type {Record<string, string>}\n */\nexport const hastToReact = {\n classId: 'classID',\n dataType: 'datatype',\n itemId: 'itemID',\n strokeDashArray: 'strokeDasharray',\n strokeDashOffset: 'strokeDashoffset',\n strokeLineCap: 'strokeLinecap',\n strokeLineJoin: 'strokeLinejoin',\n strokeMiterLimit: 'strokeMiterlimit',\n typeOf: 'typeof',\n xLinkActuate: 'xlinkActuate',\n xLinkArcRole: 'xlinkArcrole',\n xLinkHref: 'xlinkHref',\n xLinkRole: 'xlinkRole',\n xLinkShow: 'xlinkShow',\n xLinkTitle: 'xlinkTitle',\n xLinkType: 'xlinkType',\n xmlnsXLink: 'xmlnsXlink'\n}\n","/**\n * @param {string} value\n * @returns {string}\n */\nexport function normalize(value) {\n return value.toLowerCase()\n}\n","/**\n * @param {Record<string, string>} attributes\n * @param {string} attribute\n * @returns {string}\n */\nexport function caseSensitiveTransform(attributes, attribute) {\n return attribute in attributes ? attributes[attribute] : attribute\n}\n","import {Info} from './info.js'\nimport * as types from './types.js'\n\n/** @type {Array<keyof types>} */\n// @ts-expect-error: hush.\nconst checks = Object.keys(types)\n\nexport class DefinedInfo extends Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n * @param {number|null} [mask]\n * @param {string} [space]\n */\n constructor(property, attribute, mask, space) {\n let index = -1\n\n super(property, attribute)\n\n mark(this, 'space', space)\n\n if (typeof mask === 'number') {\n while (++index < checks.length) {\n const check = checks[index]\n mark(this, checks[index], (mask & types[check]) === types[check])\n }\n }\n }\n}\n\nDefinedInfo.prototype.defined = true\n\n/**\n * @param {DefinedInfo} values\n * @param {string} key\n * @param {unknown} value\n */\nfunction mark(values, key, value) {\n if (value) {\n // @ts-expect-error: assume `value` matches the expected value of `key`.\n values[key] = value\n }\n}\n","export class Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n */\n constructor(property, attribute) {\n /** @type {string} */\n this.property = property\n /** @type {string} */\n this.attribute = attribute\n }\n}\n\n/** @type {string|null} */\nInfo.prototype.space = null\nInfo.prototype.boolean = false\nInfo.prototype.booleanish = false\nInfo.prototype.overloadedBoolean = false\nInfo.prototype.number = false\nInfo.prototype.commaSeparated = false\nInfo.prototype.spaceSeparated = false\nInfo.prototype.commaOrSpaceSeparated = false\nInfo.prototype.mustUseProperty = false\nInfo.prototype.defined = false\n","/**\n * @typedef {import('./info.js').Info} Info\n * @typedef {Record<string, Info>} Properties\n * @typedef {Record<string, string>} Normal\n */\n\nexport class Schema {\n /**\n * @constructor\n * @param {Properties} property\n * @param {Normal} normal\n * @param {string} [space]\n */\n constructor(property, normal, space) {\n this.property = property\n this.normal = normal\n if (space) {\n this.space = space\n }\n }\n}\n\n/** @type {Properties} */\nSchema.prototype.property = {}\n/** @type {Normal} */\nSchema.prototype.normal = {}\n/** @type {string|null} */\nSchema.prototype.space = null\n","let powers = 0\n\nexport const boolean = increment()\nexport const booleanish = increment()\nexport const overloadedBoolean = increment()\nexport const number = increment()\nexport const spaceSeparated = increment()\nexport const commaSeparated = increment()\nexport const commaOrSpaceSeparated = increment()\n\nfunction increment() {\n return 2 ** ++powers\n}\n","const token = '%[a-f0-9]{2}';\nconst singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nconst multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tconst left = components.slice(0, split);\n\tconst right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch {\n\t\tlet tokens = input.match(singleMatcher) || [];\n\n\t\tfor (let i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tconst replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD',\n\t};\n\n\tlet match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch {\n\t\t\tconst result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tconst entries = Object.keys(replaceMap);\n\n\tfor (const key of entries) {\n\t\t// Replace all decoded components\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nexport default function decodeUriComponent(encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n}\n","export default function splitOnFirst(string, separator) {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (string === '' || separator === '') {\n\t\treturn [];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n}\n","export function includeKeys(object, predicate) {\n\tconst result = {};\n\n\tif (Array.isArray(predicate)) {\n\t\tfor (const key of predicate) {\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(object, key);\n\t\t\tif (descriptor?.enumerable) {\n\t\t\t\tObject.defineProperty(result, key, descriptor);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// `Reflect.ownKeys()` is required to retrieve symbol properties\n\t\tfor (const key of Reflect.ownKeys(object)) {\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(object, key);\n\t\t\tif (descriptor.enumerable) {\n\t\t\t\tconst value = object[key];\n\t\t\t\tif (predicate(key, value, object)) {\n\t\t\t\t\tObject.defineProperty(result, key, descriptor);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function excludeKeys(object, predicate) {\n\tif (Array.isArray(predicate)) {\n\t\tconst set = new Set(predicate);\n\t\treturn includeKeys(object, key => !set.has(key));\n\t}\n\n\treturn includeKeys(object, (key, value, object) => !predicate(key, value, object));\n}\n","import decodeComponent from 'decode-uri-component';\nimport splitOnFirst from 'split-on-first';\nimport {includeKeys} from 'filter-obj';\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\n// eslint-disable-next-line unicorn/prefer-code-point\nconst strictUriEncode = string => encodeURIComponent(string).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result, [encode(key, options), '[', index, ']'].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\t[encode(key, options), '[]'].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[]=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'colon-list-separator': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\t[encode(key, options), ':list='].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), ':list=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSep = options.arrayFormat === 'bracket-separator'\n\t\t\t\t? '[]='\n\t\t\t\t: '=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), keyValueSep, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\tencode(key, options),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], value];\n\t\t\t};\n\t\t}\n\n\t\tcase 'colon-list-separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], value];\n\t\t\t};\n\t\t}\n\n\t\tcase 'comma':\n\t\tcase 'separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : (value === null ? value : decode(value, options));\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket-separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null\n\t\t\t\t\t? []\n\t\t\t\t\t: value.split(options.arrayFormatSeparator).map(item => decode(item, options));\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], ...arrayValue];\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...[accumulator[key]].flat(), value];\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nexport function extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nexport function parse(query, options) {\n\toptions = {\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false,\n\t\t...options,\n\t};\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst returnValue = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn returnValue;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn returnValue;\n\t}\n\n\tfor (const parameter of query.split('&')) {\n\t\tif (parameter === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst parameter_ = options.decode ? parameter.replace(/\\+/g, ' ') : parameter;\n\n\t\tlet [key, value] = splitOnFirst(parameter_, '=');\n\n\t\tif (key === undefined) {\n\t\t\tkey = parameter_;\n\t\t}\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : (['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options));\n\t\tformatter(decode(key, options), value, returnValue);\n\t}\n\n\tfor (const [key, value] of Object.entries(returnValue)) {\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const [key2, value2] of Object.entries(value)) {\n\t\t\t\tvalue[key2] = parseValue(value2, options);\n\t\t\t}\n\t\t} else {\n\t\t\treturnValue[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn returnValue;\n\t}\n\n\t// TODO: Remove the use of `reduce`.\n\t// eslint-disable-next-line unicorn/no-array-reduce\n\treturn (options.sort === true ? Object.keys(returnValue).sort() : Object.keys(returnValue).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = returnValue[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexport function stringify(object, options) {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = {encode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',', ...options};\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key]))\n\t\t|| (options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const [key, value] of Object.entries(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = value;\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n}\n\nexport function parseUrl(url, options) {\n\toptions = {\n\t\tdecode: true,\n\t\t...options,\n\t};\n\n\tlet [url_, hash] = splitOnFirst(url, '#');\n\n\tif (url_ === undefined) {\n\t\turl_ = url;\n\t}\n\n\treturn {\n\t\turl: url_?.split('?')?.[0] ?? '',\n\t\tquery: parse(extract(url), options),\n\t\t...(options && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}),\n\t};\n}\n\nexport function stringifyUrl(object, options) {\n\toptions = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true,\n\t\t...options,\n\t};\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = extract(object.url);\n\n\tconst query = {\n\t\t...parse(queryFromUrl, {sort: false}),\n\t\t...object.query,\n\t};\n\n\tlet queryString = stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\tconst urlObjectForFragmentEncode = new URL(url);\n\t\turlObjectForFragmentEncode.hash = object.fragmentIdentifier;\n\t\thash = options[encodeFragmentIdentifier] ? urlObjectForFragmentEncode.hash : `#${object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n}\n\nexport function pick(input, filter, options) {\n\toptions = {\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false,\n\t\t...options,\n\t};\n\n\tconst {url, query, fragmentIdentifier} = parseUrl(input, options);\n\n\treturn stringifyUrl({\n\t\turl,\n\t\tquery: includeKeys(query, filter),\n\t\tfragmentIdentifier,\n\t}, options);\n}\n\nexport function exclude(input, filter, options) {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn pick(input, exclusionFilter, options);\n}\n","import * as queryString from './base.js';\n\nexport default queryString;\n","let i18nInstance;\nexport function setI18n(instance) {\n i18nInstance = instance;\n}\nexport function getI18n() {\n return i18nInstance;\n}","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","import e from\"void-elements\";var t=/\\s([^'\"/\\s><]+?)[\\s/>]|([^\\s=]+)=\\s?(\".*?\"|'.*?')/g;function n(n){var r={type:\"tag\",name:\"\",voidElement:!1,attrs:{},children:[]},i=n.match(/<\\/?([^\\s]+?)[/\\s>]/);if(i&&(r.name=i[1],(e[i[1]]||\"/\"===n.charAt(n.length-2))&&(r.voidElement=!0),r.name.startsWith(\"!--\"))){var s=n.indexOf(\"--\\x3e\");return{type:\"comment\",comment:-1!==s?n.slice(4,s):\"\"}}for(var a=new RegExp(t),c=null;null!==(c=a.exec(n));)if(c[0].trim())if(c[1]){var o=c[1].trim(),l=[o,\"\"];o.indexOf(\"=\")>-1&&(l=o.split(\"=\")),r.attrs[l[0]]=l[1],a.lastIndex--}else c[2]&&(r.attrs[c[2]]=c[3].trim().substring(1,c[3].length-1));return r}var r=/<[a-zA-Z0-9\\-\\!\\/](?:\"[^\"]*\"|'[^']*'|[^'\">])*>/g,i=/^\\s*$/,s=Object.create(null);function a(e,t){switch(t.type){case\"text\":return e+t.content;case\"tag\":return e+=\"<\"+t.name+(t.attrs?function(e){var t=[];for(var n in e)t.push(n+'=\"'+e[n]+'\"');return t.length?\" \"+t.join(\" \"):\"\"}(t.attrs):\"\")+(t.voidElement?\"/>\":\">\"),t.voidElement?e:e+t.children.reduce(a,\"\")+\"</\"+t.name+\">\";case\"comment\":return e+\"\\x3c!--\"+t.comment+\"--\\x3e\"}}var c={parse:function(e,t){t||(t={}),t.components||(t.components=s);var a,c=[],o=[],l=-1,m=!1;if(0!==e.indexOf(\"<\")){var u=e.indexOf(\"<\");c.push({type:\"text\",content:-1===u?e:e.substring(0,u)})}return e.replace(r,function(r,s){if(m){if(r!==\"</\"+a.name+\">\")return;m=!1}var u,f=\"/\"!==r.charAt(1),h=r.startsWith(\"\\x3c!--\"),p=s+r.length,d=e.charAt(p);if(h){var v=n(r);return l<0?(c.push(v),c):((u=o[l]).children.push(v),c)}if(f&&(l++,\"tag\"===(a=n(r)).type&&t.components[a.name]&&(a.type=\"component\",m=!0),a.voidElement||m||!d||\"<\"===d||a.children.push({type:\"text\",content:e.slice(p,e.indexOf(\"<\",p))}),0===l&&c.push(a),(u=o[l-1])&&u.children.push(a),o[l]=a),(!f||a.voidElement)&&(l>-1&&(a.voidElement||a.name===r.slice(2,-1))&&(l--,a=-1===l?c:o[l]),!m&&\"<\"!==d&&d)){u=-1===l?c:o[l].children;var x=e.indexOf(\"<\",p),g=e.slice(p,-1===x?void 0:x);i.test(g)&&(g=\" \"),(x>-1&&l+u.length>=0||\" \"!==g)&&u.push({type:\"text\",content:g})}}),c},stringify:function(e){return e.reduce(function(e,t){return e+a(\"\",t)},\"\")}};export default c;\n//# sourceMappingURL=html-parse-stringify.module.js.map\n","export function warn() {\n if (console && console.warn) {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (typeof args[0] === 'string') args[0] = `react-i18next:: ${args[0]}`;\n console.warn(...args);\n }\n}\nconst alreadyWarned = {};\nexport function warnOnce() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === 'string' && alreadyWarned[args[0]]) return;\n if (typeof args[0] === 'string') alreadyWarned[args[0]] = new Date();\n warn(...args);\n}\nconst loadedClb = (i18n, cb) => () => {\n if (i18n.isInitialized) {\n cb();\n } else {\n const initialized = () => {\n setTimeout(() => {\n i18n.off('initialized', initialized);\n }, 0);\n cb();\n };\n i18n.on('initialized', initialized);\n }\n};\nexport function loadNamespaces(i18n, ns, cb) {\n i18n.loadNamespaces(ns, loadedClb(i18n, cb));\n}\nexport function loadLanguages(i18n, lng, ns, cb) {\n if (typeof ns === 'string') ns = [ns];\n ns.forEach(n => {\n if (i18n.options.ns.indexOf(n) < 0) i18n.options.ns.push(n);\n });\n i18n.loadLanguages(lng, loadedClb(i18n, cb));\n}\nfunction oldI18nextHasLoadedNamespace(ns, i18n) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const lng = i18n.languages[0];\n const fallbackLng = i18n.options ? i18n.options.fallbackLng : false;\n const lastLng = i18n.languages[i18n.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n const loadNotPending = (l, n) => {\n const loadState = i18n.services.backendConnector.state[`${l}|${n}`];\n return loadState === -1 || loadState === 2;\n };\n if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18n.services.backendConnector.backend && i18n.isLanguageChangingTo && !loadNotPending(i18n.isLanguageChangingTo, ns)) return false;\n if (i18n.hasResourceBundle(lng, ns)) return true;\n if (!i18n.services.backendConnector.backend || i18n.options.resources && !i18n.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n}\nexport function hasLoadedNamespace(ns, i18n) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (!i18n.languages || !i18n.languages.length) {\n warnOnce('i18n.languages were undefined or empty', i18n.languages);\n return true;\n }\n const isNewerI18next = i18n.options.ignoreJSONStructure !== undefined;\n if (!isNewerI18next) {\n return oldI18nextHasLoadedNamespace(ns, i18n, options);\n }\n return i18n.hasLoadedNamespace(ns, {\n lng: options.lng,\n precheck: (i18nInstance, loadNotPending) => {\n if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18nInstance.services.backendConnector.backend && i18nInstance.isLanguageChangingTo && !loadNotPending(i18nInstance.isLanguageChangingTo, ns)) return false;\n }\n });\n}\nexport function getDisplayName(Component) {\n return Component.displayName || Component.name || (typeof Component === 'string' && Component.length > 0 ? Component : 'Unknown');\n}","const matchHtmlEntity = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g;\nconst htmlEntities = {\n '&': '&',\n '&': '&',\n '<': '<',\n '<': '<',\n '>': '>',\n '>': '>',\n ''': \"'\",\n ''': \"'\",\n '"': '\"',\n '"': '\"',\n ' ': ' ',\n ' ': ' ',\n '©': '©',\n '©': '©',\n '®': '®',\n '®': '®',\n '…': '…',\n '…': '…',\n '/': '/',\n '/': '/'\n};\nconst unescapeHtmlEntity = m => htmlEntities[m];\nexport const unescape = text => text.replace(matchHtmlEntity, unescapeHtmlEntity);","import { unescape } from './unescape.js';\nlet defaultOptions = {\n bindI18n: 'languageChanged',\n bindI18nStore: '',\n transEmptyNodeValue: '',\n transSupportBasicHtmlNodes: true,\n transWrapTextNodes: '',\n transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],\n useSuspense: true,\n unescape\n};\nexport function setDefaults() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n defaultOptions = {\n ...defaultOptions,\n ...options\n };\n}\nexport function getDefaults() {\n return defaultOptions;\n}","import _extends from \"@babel/runtime/helpers/extends\";\nimport React, { isValidElement, cloneElement, createElement, Children } from 'react';\nimport HTML from 'html-parse-stringify';\nimport { warn, warnOnce } from './utils.js';\nimport { getDefaults } from './defaults.js';\nimport { getI18n } from './i18nInstance.js';\nfunction hasChildren(node, checkLength) {\n if (!node) return false;\n const base = node.props ? node.props.children : node.children;\n if (checkLength) return base.length > 0;\n return !!base;\n}\nfunction getChildren(node) {\n if (!node) return [];\n const children = node.props ? node.props.children : node.children;\n return node.props && node.props.i18nIsDynamicList ? getAsArray(children) : children;\n}\nfunction hasValidReactChildren(children) {\n if (Object.prototype.toString.call(children) !== '[object Array]') return false;\n return children.every(child => isValidElement(child));\n}\nfunction getAsArray(data) {\n return Array.isArray(data) ? data : [data];\n}\nfunction mergeProps(source, target) {\n const newTarget = {\n ...target\n };\n newTarget.props = Object.assign(source.props, target.props);\n return newTarget;\n}\nexport function nodesToString(children, i18nOptions) {\n if (!children) return '';\n let stringNode = '';\n const childrenArray = getAsArray(children);\n const keepArray = i18nOptions.transSupportBasicHtmlNodes && i18nOptions.transKeepBasicHtmlNodesFor ? i18nOptions.transKeepBasicHtmlNodesFor : [];\n childrenArray.forEach((child, childIndex) => {\n if (typeof child === 'string') {\n stringNode += `${child}`;\n } else if (isValidElement(child)) {\n const childPropsCount = Object.keys(child.props).length;\n const shouldKeepChild = keepArray.indexOf(child.type) > -1;\n const childChildren = child.props.children;\n if (!childChildren && shouldKeepChild && childPropsCount === 0) {\n stringNode += `<${child.type}/>`;\n } else if (!childChildren && (!shouldKeepChild || childPropsCount !== 0)) {\n stringNode += `<${childIndex}></${childIndex}>`;\n } else if (child.props.i18nIsDynamicList) {\n stringNode += `<${childIndex}></${childIndex}>`;\n } else if (shouldKeepChild && childPropsCount === 1 && typeof childChildren === 'string') {\n stringNode += `<${child.type}>${childChildren}</${child.type}>`;\n } else {\n const content = nodesToString(childChildren, i18nOptions);\n stringNode += `<${childIndex}>${content}</${childIndex}>`;\n }\n } else if (child === null) {\n warn(`Trans: the passed in value is invalid - seems you passed in a null child.`);\n } else if (typeof child === 'object') {\n const {\n format,\n ...clone\n } = child;\n const keys = Object.keys(clone);\n if (keys.length === 1) {\n const value = format ? `${keys[0]}, ${format}` : keys[0];\n stringNode += `{{${value}}}`;\n } else {\n warn(`react-i18next: the passed in object contained more than one variable - the object should look like {{ value, format }} where format is optional.`, child);\n }\n } else {\n warn(`Trans: the passed in value is invalid - seems you passed in a variable like {number} - please pass in variables for interpolation as full objects like {{number}}.`, child);\n }\n });\n return stringNode;\n}\nfunction renderNodes(children, targetString, i18n, i18nOptions, combinedTOpts, shouldUnescape) {\n if (targetString === '') return [];\n const keepArray = i18nOptions.transKeepBasicHtmlNodesFor || [];\n const emptyChildrenButNeedsHandling = targetString && new RegExp(keepArray.map(keep => `<${keep}`).join('|')).test(targetString);\n if (!children && !emptyChildrenButNeedsHandling && !shouldUnescape) return [targetString];\n const data = {};\n function getData(childs) {\n const childrenArray = getAsArray(childs);\n childrenArray.forEach(child => {\n if (typeof child === 'string') return;\n if (hasChildren(child)) getData(getChildren(child));else if (typeof child === 'object' && !isValidElement(child)) Object.assign(data, child);\n });\n }\n getData(children);\n const ast = HTML.parse(`<0>${targetString}</0>`);\n const opts = {\n ...data,\n ...combinedTOpts\n };\n function renderInner(child, node, rootReactNode) {\n const childs = getChildren(child);\n const mappedChildren = mapAST(childs, node.children, rootReactNode);\n return hasValidReactChildren(childs) && mappedChildren.length === 0 || child.props && child.props.i18nIsDynamicList ? childs : mappedChildren;\n }\n function pushTranslatedJSX(child, inner, mem, i, isVoid) {\n if (child.dummy) {\n child.children = inner;\n mem.push(cloneElement(child, {\n key: i\n }, isVoid ? undefined : inner));\n } else {\n mem.push(...Children.map([child], c => {\n const props = {\n ...c.props\n };\n delete props.i18nIsDynamicList;\n return React.createElement(c.type, _extends({}, props, {\n key: i,\n ref: c.ref\n }, isVoid ? {} : {\n children: inner\n }));\n }));\n }\n }\n function mapAST(reactNode, astNode, rootReactNode) {\n const reactNodes = getAsArray(reactNode);\n const astNodes = getAsArray(astNode);\n return astNodes.reduce((mem, node, i) => {\n const translationContent = node.children && node.children[0] && node.children[0].content && i18n.services.interpolator.interpolate(node.children[0].content, opts, i18n.language);\n if (node.type === 'tag') {\n let tmp = reactNodes[parseInt(node.name, 10)];\n if (rootReactNode.length === 1 && !tmp) tmp = rootReactNode[0][node.name];\n if (!tmp) tmp = {};\n const child = Object.keys(node.attrs).length !== 0 ? mergeProps({\n props: node.attrs\n }, tmp) : tmp;\n const isElement = isValidElement(child);\n const isValidTranslationWithChildren = isElement && hasChildren(node, true) && !node.voidElement;\n const isEmptyTransWithHTML = emptyChildrenButNeedsHandling && typeof child === 'object' && child.dummy && !isElement;\n const isKnownComponent = typeof children === 'object' && children !== null && Object.hasOwnProperty.call(children, node.name);\n if (typeof child === 'string') {\n const value = i18n.services.interpolator.interpolate(child, opts, i18n.language);\n mem.push(value);\n } else if (hasChildren(child) || isValidTranslationWithChildren) {\n const inner = renderInner(child, node, rootReactNode);\n pushTranslatedJSX(child, inner, mem, i);\n } else if (isEmptyTransWithHTML) {\n const inner = mapAST(reactNodes, node.children, rootReactNode);\n pushTranslatedJSX(child, inner, mem, i);\n } else if (Number.isNaN(parseFloat(node.name))) {\n if (isKnownComponent) {\n const inner = renderInner(child, node, rootReactNode);\n pushTranslatedJSX(child, inner, mem, i, node.voidElement);\n } else if (i18nOptions.transSupportBasicHtmlNodes && keepArray.indexOf(node.name) > -1) {\n if (node.voidElement) {\n mem.push(createElement(node.name, {\n key: `${node.name}-${i}`\n }));\n } else {\n const inner = mapAST(reactNodes, node.children, rootReactNode);\n mem.push(createElement(node.name, {\n key: `${node.name}-${i}`\n }, inner));\n }\n } else if (node.voidElement) {\n mem.push(`<${node.name} />`);\n } else {\n const inner = mapAST(reactNodes, node.children, rootReactNode);\n mem.push(`<${node.name}>${inner}</${node.name}>`);\n }\n } else if (typeof child === 'object' && !isElement) {\n const content = node.children[0] ? translationContent : null;\n if (content) mem.push(content);\n } else {\n pushTranslatedJSX(child, translationContent, mem, i, node.children.length !== 1 || !translationContent);\n }\n } else if (node.type === 'text') {\n const wrapTextNodes = i18nOptions.transWrapTextNodes;\n const content = shouldUnescape ? i18nOptions.unescape(i18n.services.interpolator.interpolate(node.content, opts, i18n.language)) : i18n.services.interpolator.interpolate(node.content, opts, i18n.language);\n if (wrapTextNodes) {\n mem.push(createElement(wrapTextNodes, {\n key: `${node.name}-${i}`\n }, content));\n } else {\n mem.push(content);\n }\n }\n return mem;\n }, []);\n }\n const result = mapAST([{\n dummy: true,\n children: children || []\n }], ast, getAsArray(children || []));\n return getChildren(result[0]);\n}\nexport function Trans(_ref) {\n let {\n children,\n count,\n parent,\n i18nKey,\n context,\n tOptions = {},\n values,\n defaults,\n components,\n ns,\n i18n: i18nFromProps,\n t: tFromProps,\n shouldUnescape,\n ...additionalProps\n } = _ref;\n const i18n = i18nFromProps || getI18n();\n if (!i18n) {\n warnOnce('You will need to pass in an i18next instance by using i18nextReactModule');\n return children;\n }\n const t = tFromProps || i18n.t.bind(i18n) || (k => k);\n if (context) tOptions.context = context;\n const reactI18nextOptions = {\n ...getDefaults(),\n ...(i18n.options && i18n.options.react)\n };\n let namespaces = ns || t.ns || i18n.options && i18n.options.defaultNS;\n namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation'];\n const nodeAsString = nodesToString(children, reactI18nextOptions);\n const defaultValue = defaults || nodeAsString || reactI18nextOptions.transEmptyNodeValue || i18nKey;\n const {\n hashTransKey\n } = reactI18nextOptions;\n const key = i18nKey || (hashTransKey ? hashTransKey(nodeAsString || defaultValue) : nodeAsString || defaultValue);\n if (i18n.options && i18n.options.interpolation && i18n.options.interpolation.defaultVariables) {\n values = values && Object.keys(values).length > 0 ? {\n ...values,\n ...i18n.options.interpolation.defaultVariables\n } : {\n ...i18n.options.interpolation.defaultVariables\n };\n }\n const interpolationOverride = values ? tOptions.interpolation : {\n interpolation: {\n ...tOptions.interpolation,\n prefix: '#$?',\n suffix: '?$#'\n }\n };\n const combinedTOpts = {\n ...tOptions,\n count,\n ...values,\n ...interpolationOverride,\n defaultValue,\n ns: namespaces\n };\n const translation = key ? t(key, combinedTOpts) : defaultValue;\n if (components) {\n Object.keys(components).forEach(c => {\n const comp = components[c];\n if (typeof comp.type === 'function' || !comp.props || !comp.props.children || translation.indexOf(`${c}/>`) < 0 && translation.indexOf(`${c} />`) < 0) return;\n function Componentized() {\n return React.createElement(React.Fragment, null, comp);\n }\n components[c] = React.createElement(Componentized, null);\n });\n }\n const content = renderNodes(components || children, translation, i18n, reactI18nextOptions, combinedTOpts, shouldUnescape);\n const useAsParent = parent !== undefined ? parent : reactI18nextOptions.defaultTransParent;\n return useAsParent ? createElement(useAsParent, additionalProps, content) : content;\n}","import { setDefaults } from './defaults.js';\nimport { setI18n } from './i18nInstance.js';\nexport const initReactI18next = {\n type: '3rdParty',\n init(instance) {\n setDefaults(instance.options.react);\n setI18n(instance);\n }\n};","import { createContext } from 'react';\nimport { getDefaults, setDefaults } from './defaults.js';\nimport { getI18n, setI18n } from './i18nInstance.js';\nimport { initReactI18next } from './initReactI18next.js';\nexport { getDefaults, setDefaults, getI18n, setI18n, initReactI18next };\nexport const I18nContext = createContext();\nexport class ReportNamespaces {\n constructor() {\n this.usedNamespaces = {};\n }\n addUsedNamespaces(namespaces) {\n namespaces.forEach(ns => {\n if (!this.usedNamespaces[ns]) this.usedNamespaces[ns] = true;\n });\n }\n getUsedNamespaces() {\n return Object.keys(this.usedNamespaces);\n }\n}\nexport function composeInitialProps(ForComponent) {\n return ctx => new Promise(resolve => {\n const i18nInitialProps = getInitialProps();\n if (ForComponent.getInitialProps) {\n ForComponent.getInitialProps(ctx).then(componentsInitialProps => {\n resolve({\n ...componentsInitialProps,\n ...i18nInitialProps\n });\n });\n } else {\n resolve(i18nInitialProps);\n }\n });\n}\nexport function getInitialProps() {\n const i18n = getI18n();\n const namespaces = i18n.reportNamespaces ? i18n.reportNamespaces.getUsedNamespaces() : [];\n const ret = {};\n const initialI18nStore = {};\n i18n.languages.forEach(l => {\n initialI18nStore[l] = {};\n namespaces.forEach(ns => {\n initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};\n });\n });\n ret.initialI18nStore = initialI18nStore;\n ret.initialLanguage = i18n.language;\n return ret;\n}","import { useContext } from 'react';\nimport { nodesToString, Trans as TransWithoutContext } from './TransWithoutContext.js';\nimport { getI18n, I18nContext } from './context.js';\nexport { nodesToString };\nexport function Trans(_ref) {\n let {\n children,\n count,\n parent,\n i18nKey,\n context,\n tOptions = {},\n values,\n defaults,\n components,\n ns,\n i18n: i18nFromProps,\n t: tFromProps,\n shouldUnescape,\n ...additionalProps\n } = _ref;\n const {\n i18n: i18nFromContext,\n defaultNS: defaultNSFromContext\n } = useContext(I18nContext) || {};\n const i18n = i18nFromProps || i18nFromContext || getI18n();\n const t = tFromProps || i18n && i18n.t.bind(i18n);\n return TransWithoutContext({\n children,\n count,\n parent,\n i18nKey,\n context,\n tOptions,\n values,\n defaults,\n components,\n ns: ns || t && t.ns || defaultNSFromContext || i18n && i18n.options && i18n.options.defaultNS,\n i18n,\n t: tFromProps,\n shouldUnescape,\n ...additionalProps\n });\n}","import { useState, useEffect, useContext, useRef } from 'react';\nimport { getI18n, getDefaults, ReportNamespaces, I18nContext } from './context.js';\nimport { warnOnce, loadNamespaces, loadLanguages, hasLoadedNamespace } from './utils.js';\nconst usePrevious = (value, ignore) => {\n const ref = useRef();\n useEffect(() => {\n ref.current = ignore ? ref.current : value;\n }, [value, ignore]);\n return ref.current;\n};\nexport function useTranslation(ns) {\n let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n i18n: i18nFromProps\n } = props;\n const {\n i18n: i18nFromContext,\n defaultNS: defaultNSFromContext\n } = useContext(I18nContext) || {};\n const i18n = i18nFromProps || i18nFromContext || getI18n();\n if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();\n if (!i18n) {\n warnOnce('You will need to pass in an i18next instance by using initReactI18next');\n const notReadyT = (k, optsOrDefaultValue) => {\n if (typeof optsOrDefaultValue === 'string') return optsOrDefaultValue;\n if (optsOrDefaultValue && typeof optsOrDefaultValue === 'object' && typeof optsOrDefaultValue.defaultValue === 'string') return optsOrDefaultValue.defaultValue;\n return Array.isArray(k) ? k[k.length - 1] : k;\n };\n const retNotReady = [notReadyT, {}, false];\n retNotReady.t = notReadyT;\n retNotReady.i18n = {};\n retNotReady.ready = false;\n return retNotReady;\n }\n if (i18n.options.react && i18n.options.react.wait !== undefined) warnOnce('It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.');\n const i18nOptions = {\n ...getDefaults(),\n ...i18n.options.react,\n ...props\n };\n const {\n useSuspense,\n keyPrefix\n } = i18nOptions;\n let namespaces = ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS;\n namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation'];\n if (i18n.reportNamespaces.addUsedNamespaces) i18n.reportNamespaces.addUsedNamespaces(namespaces);\n const ready = (i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every(n => hasLoadedNamespace(n, i18n, i18nOptions));\n function getT() {\n return i18n.getFixedT(props.lng || null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n }\n const [t, setT] = useState(getT);\n let joinedNS = namespaces.join();\n if (props.lng) joinedNS = `${props.lng}${joinedNS}`;\n const previousJoinedNS = usePrevious(joinedNS);\n const isMounted = useRef(true);\n useEffect(() => {\n const {\n bindI18n,\n bindI18nStore\n } = i18nOptions;\n isMounted.current = true;\n if (!ready && !useSuspense) {\n if (props.lng) {\n loadLanguages(i18n, props.lng, namespaces, () => {\n if (isMounted.current) setT(getT);\n });\n } else {\n loadNamespaces(i18n, namespaces, () => {\n if (isMounted.current) setT(getT);\n });\n }\n }\n if (ready && previousJoinedNS && previousJoinedNS !== joinedNS && isMounted.current) {\n setT(getT);\n }\n function boundReset() {\n if (isMounted.current) setT(getT);\n }\n if (bindI18n && i18n) i18n.on(bindI18n, boundReset);\n if (bindI18nStore && i18n) i18n.store.on(bindI18nStore, boundReset);\n return () => {\n isMounted.current = false;\n if (bindI18n && i18n) bindI18n.split(' ').forEach(e => i18n.off(e, boundReset));\n if (bindI18nStore && i18n) bindI18nStore.split(' ').forEach(e => i18n.store.off(e, boundReset));\n };\n }, [i18n, joinedNS]);\n const isInitial = useRef(true);\n useEffect(() => {\n if (isMounted.current && !isInitial.current) {\n setT(getT);\n }\n isInitial.current = false;\n }, [i18n, keyPrefix]);\n const ret = [t, i18n, ready];\n ret.t = t;\n ret.i18n = i18n;\n ret.ready = ready;\n if (ready) return ret;\n if (!ready && !useSuspense) return ret;\n throw new Promise(resolve => {\n if (props.lng) {\n loadLanguages(i18n, props.lng, namespaces, () => resolve());\n } else {\n loadNamespaces(i18n, namespaces, () => resolve());\n }\n });\n}","import { createElement, forwardRef as forwardRefReact } from 'react';\nimport { useTranslation } from './useTranslation.js';\nimport { getDisplayName } from './utils.js';\nexport function withTranslation(ns) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return function Extend(WrappedComponent) {\n function I18nextWithTranslation(_ref) {\n let {\n forwardedRef,\n ...rest\n } = _ref;\n const [t, i18n, ready] = useTranslation(ns, {\n ...rest,\n keyPrefix: options.keyPrefix\n });\n const passDownProps = {\n ...rest,\n t,\n i18n,\n tReady: ready\n };\n if (options.withRef && forwardedRef) {\n passDownProps.ref = forwardedRef;\n } else if (!options.withRef && forwardedRef) {\n passDownProps.forwardedRef = forwardedRef;\n }\n return createElement(WrappedComponent, passDownProps);\n }\n I18nextWithTranslation.displayName = `withI18nextTranslation(${getDisplayName(WrappedComponent)})`;\n I18nextWithTranslation.WrappedComponent = WrappedComponent;\n const forwardRef = (props, ref) => createElement(I18nextWithTranslation, Object.assign({}, props, {\n forwardedRef: ref\n }));\n return options.withRef ? forwardRefReact(forwardRef) : I18nextWithTranslation;\n };\n}","import { useTranslation } from './useTranslation.js';\nexport function Translation(props) {\n const {\n ns,\n children,\n ...options\n } = props;\n const [t, i18n, ready] = useTranslation(ns, options);\n return children(t, {\n i18n,\n lng: i18n.language\n }, ready);\n}","import { createElement, useMemo } from 'react';\nimport { I18nContext } from './context.js';\nexport function I18nextProvider(_ref) {\n let {\n i18n,\n defaultNS,\n children\n } = _ref;\n const value = useMemo(() => ({\n i18n,\n defaultNS\n }), [i18n, defaultNS]);\n return createElement(I18nContext.Provider, {\n value\n }, children);\n}","import { useContext } from 'react';\nimport { getI18n, I18nContext } from './context.js';\nexport function useSSR(initialI18nStore, initialLanguage) {\n let props = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const {\n i18n: i18nFromProps\n } = props;\n const {\n i18n: i18nFromContext\n } = useContext(I18nContext) || {};\n const i18n = i18nFromProps || i18nFromContext || getI18n();\n if (i18n.options && i18n.options.isClone) return;\n if (initialI18nStore && !i18n.initializedStoreOnce) {\n i18n.services.resourceStore.data = initialI18nStore;\n i18n.options.ns = Object.values(initialI18nStore).reduce((mem, lngResources) => {\n Object.keys(lngResources).forEach(ns => {\n if (mem.indexOf(ns) < 0) mem.push(ns);\n });\n return mem;\n }, i18n.options.ns);\n i18n.initializedStoreOnce = true;\n i18n.isInitialized = true;\n }\n if (initialLanguage && !i18n.initializedLanguageOnce) {\n i18n.changeLanguage(initialLanguage);\n i18n.initializedLanguageOnce = true;\n }\n}","import { createElement } from 'react';\nimport { useSSR } from './useSSR.js';\nimport { composeInitialProps } from './context.js';\nimport { getDisplayName } from './utils.js';\nexport function withSSR() {\n return function Extend(WrappedComponent) {\n function I18nextWithSSR(_ref) {\n let {\n initialI18nStore,\n initialLanguage,\n ...rest\n } = _ref;\n useSSR(initialI18nStore, initialLanguage);\n return createElement(WrappedComponent, {\n ...rest\n });\n }\n I18nextWithSSR.getInitialProps = composeInitialProps(WrappedComponent);\n I18nextWithSSR.displayName = `withI18nextSSR(${getDisplayName(WrappedComponent)})`;\n I18nextWithSSR.WrappedComponent = WrappedComponent;\n return I18nextWithSSR;\n };\n}","export { Trans } from './Trans.js';\nexport { Trans as TransWithoutContext } from './TransWithoutContext.js';\nexport { useTranslation } from './useTranslation.js';\nexport { withTranslation } from './withTranslation.js';\nexport { Translation } from './Translation.js';\nexport { I18nextProvider } from './I18nextProvider.js';\nexport { withSSR } from './withSSR.js';\nexport { useSSR } from './useSSR.js';\nexport { initReactI18next } from './initReactI18next.js';\nexport { setDefaults, getDefaults } from './defaults.js';\nexport { setI18n, getI18n } from './i18nInstance.js';\nexport { I18nContext, composeInitialProps, getInitialProps } from './context.js';\nexport const date = () => '';\nexport const time = () => '';\nexport const number = () => '';\nexport const select = () => '';\nexport const plural = () => '';\nexport const selectOrdinal = () => '';","'use client';\nimport React from 'react';\n\n/**\n * @internal\n */\nconst SkeletonThemeContext = React.createContext({});\n\n/* eslint-disable react/no-array-index-key */\nconst defaultEnableAnimation = true;\n// For performance & cleanliness, don't add any inline styles unless we have to\nfunction styleOptionsToCssProperties({ baseColor, highlightColor, width, height, borderRadius, circle, direction, duration, enableAnimation = defaultEnableAnimation, }) {\n const style = {};\n if (direction === 'rtl')\n style['--animation-direction'] = 'reverse';\n if (typeof duration === 'number')\n style['--animation-duration'] = `${duration}s`;\n if (!enableAnimation)\n style['--pseudo-element-display'] = 'none';\n if (typeof width === 'string' || typeof width === 'number')\n style.width = width;\n if (typeof height === 'string' || typeof height === 'number')\n style.height = height;\n if (typeof borderRadius === 'string' || typeof borderRadius === 'number')\n style.borderRadius = borderRadius;\n if (circle)\n style.borderRadius = '50%';\n if (typeof baseColor !== 'undefined')\n style['--base-color'] = baseColor;\n if (typeof highlightColor !== 'undefined')\n style['--highlight-color'] = highlightColor;\n return style;\n}\nfunction Skeleton({ count = 1, wrapper: Wrapper, className: customClassName, containerClassName, containerTestId, circle = false, style: styleProp, ...originalPropsStyleOptions }) {\n var _a, _b, _c;\n const contextStyleOptions = React.useContext(SkeletonThemeContext);\n const propsStyleOptions = { ...originalPropsStyleOptions };\n // DO NOT overwrite style options from the context if `propsStyleOptions`\n // has properties explicity set to undefined\n for (const [key, value] of Object.entries(originalPropsStyleOptions)) {\n if (typeof value === 'undefined') {\n delete propsStyleOptions[key];\n }\n }\n // Props take priority over context\n const styleOptions = {\n ...contextStyleOptions,\n ...propsStyleOptions,\n circle,\n };\n // `styleProp` has the least priority out of everything\n const style = {\n ...styleProp,\n ...styleOptionsToCssProperties(styleOptions),\n };\n let className = 'react-loading-skeleton';\n if (customClassName)\n className += ` ${customClassName}`;\n const inline = (_a = styleOptions.inline) !== null && _a !== void 0 ? _a : false;\n const elements = [];\n const countCeil = Math.ceil(count);\n for (let i = 0; i < countCeil; i++) {\n let thisStyle = style;\n if (countCeil > count && i === countCeil - 1) {\n // count is not an integer and we've reached the last iteration of\n // the loop, so add a \"fractional\" skeleton.\n //\n // For example, if count is 3.5, we've already added 3 full\n // skeletons, so now we add one more skeleton that is 0.5 times the\n // original width.\n const width = (_b = thisStyle.width) !== null && _b !== void 0 ? _b : '100%'; // 100% is the default since that's what's in the CSS\n const fractionalPart = count % 1;\n const fractionalWidth = typeof width === 'number'\n ? width * fractionalPart\n : `calc(${width} * ${fractionalPart})`;\n thisStyle = { ...thisStyle, width: fractionalWidth };\n }\n const skeletonSpan = (React.createElement(\"span\", { className: className, style: thisStyle, key: i }, \"\\u200C\"));\n if (inline) {\n elements.push(skeletonSpan);\n }\n else {\n // Without the <br />, the skeleton lines will all run together if\n // `width` is specified\n elements.push(React.createElement(React.Fragment, { key: i },\n skeletonSpan,\n React.createElement(\"br\", null)));\n }\n }\n return (React.createElement(\"span\", { className: containerClassName, \"data-testid\": containerTestId, \"aria-live\": \"polite\", \"aria-busy\": (_c = styleOptions.enableAnimation) !== null && _c !== void 0 ? _c : defaultEnableAnimation }, Wrapper\n ? elements.map((el, i) => React.createElement(Wrapper, { key: i }, el))\n : elements));\n}\n\nfunction SkeletonTheme({ children, ...styleOptions }) {\n return (React.createElement(SkeletonThemeContext.Provider, { value: styleOptions }, children));\n}\n\nexport { SkeletonTheme, Skeleton as default };\n","/**\n * @import {Element, ElementContent, Nodes, Parents, Root} from 'hast'\n * @import {ComponentProps, ElementType, ReactElement} from 'react'\n * @import {Options as RemarkRehypeOptions} from 'remark-rehype'\n * @import {BuildVisitor} from 'unist-util-visit'\n * @import {PluggableList} from 'unified'\n */\n\n/**\n * @callback AllowElement\n * Filter elements.\n * @param {Readonly<Element>} element\n * Element to check.\n * @param {number} index\n * Index of `element` in `parent`.\n * @param {Readonly<Parents> | undefined} parent\n * Parent of `element`.\n * @returns {boolean | null | undefined}\n * Whether to allow `element` (default: `false`).\n */\n\n/**\n * @typedef ExtraProps\n * Extra fields we pass.\n * @property {Element | undefined} [node]\n * passed when `passNode` is on.\n */\n\n/**\n * @typedef {{\n * [Key in Extract<ElementType, string>]?: ElementType<ComponentProps<Key> & ExtraProps>\n * }} Components\n * Map tag names to components.\n */\n\n/**\n * @typedef Deprecation\n * Deprecation.\n * @property {string} from\n * Old field.\n * @property {string} id\n * ID in readme.\n * @property {keyof Options} [to]\n * New field.\n */\n\n/**\n * @typedef Options\n * Configuration.\n * @property {AllowElement | null | undefined} [allowElement]\n * Filter elements (optional);\n * `allowedElements` / `disallowedElements` is used first.\n * @property {ReadonlyArray<string> | null | undefined} [allowedElements]\n * Tag names to allow (default: all tag names);\n * cannot combine w/ `disallowedElements`.\n * @property {string | null | undefined} [children]\n * Markdown.\n * @property {string | null | undefined} [className]\n * Wrap in a `div` with this class name.\n * @property {Components | null | undefined} [components]\n * Map tag names to components.\n * @property {ReadonlyArray<string> | null | undefined} [disallowedElements]\n * Tag names to disallow (default: `[]`);\n * cannot combine w/ `allowedElements`.\n * @property {PluggableList | null | undefined} [rehypePlugins]\n * List of rehype plugins to use.\n * @property {PluggableList | null | undefined} [remarkPlugins]\n * List of remark plugins to use.\n * @property {Readonly<RemarkRehypeOptions> | null | undefined} [remarkRehypeOptions]\n * Options to pass through to `remark-rehype`.\n * @property {boolean | null | undefined} [skipHtml=false]\n * Ignore HTML in markdown completely (default: `false`).\n * @property {boolean | null | undefined} [unwrapDisallowed=false]\n * Extract (unwrap) what’s in disallowed elements (default: `false`);\n * normally when say `strong` is not allowed, it and it’s children are dropped,\n * with `unwrapDisallowed` the element itself is replaced by its children.\n * @property {UrlTransform | null | undefined} [urlTransform]\n * Change URLs (default: `defaultUrlTransform`)\n */\n\n/**\n * @callback UrlTransform\n * Transform all URLs.\n * @param {string} url\n * URL.\n * @param {string} key\n * Property name (example: `'href'`).\n * @param {Readonly<Element>} node\n * Node.\n * @returns {string | null | undefined}\n * Transformed URL (optional).\n */\n\nimport {unreachable} from 'devlop'\nimport {toJsxRuntime} from 'hast-util-to-jsx-runtime'\nimport {urlAttributes} from 'html-url-attributes'\nimport {Fragment, jsx, jsxs} from 'react/jsx-runtime'\nimport remarkParse from 'remark-parse'\nimport remarkRehype from 'remark-rehype'\nimport {unified} from 'unified'\nimport {visit} from 'unist-util-visit'\nimport {VFile} from 'vfile'\n\nconst changelog =\n 'https://github.com/remarkjs/react-markdown/blob/main/changelog.md'\n\n/** @type {PluggableList} */\nconst emptyPlugins = []\n/** @type {Readonly<RemarkRehypeOptions>} */\nconst emptyRemarkRehypeOptions = {allowDangerousHtml: true}\nconst safeProtocol = /^(https?|ircs?|mailto|xmpp)$/i\n\n// Mutable because we `delete` any time it’s used and a message is sent.\n/** @type {ReadonlyArray<Readonly<Deprecation>>} */\nconst deprecations = [\n {from: 'astPlugins', id: 'remove-buggy-html-in-markdown-parser'},\n {from: 'allowDangerousHtml', id: 'remove-buggy-html-in-markdown-parser'},\n {\n from: 'allowNode',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n to: 'allowElement'\n },\n {\n from: 'allowedTypes',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n to: 'allowedElements'\n },\n {\n from: 'disallowedTypes',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n to: 'disallowedElements'\n },\n {from: 'escapeHtml', id: 'remove-buggy-html-in-markdown-parser'},\n {from: 'includeElementIndex', id: '#remove-includeelementindex'},\n {\n from: 'includeNodeIndex',\n id: 'change-includenodeindex-to-includeelementindex'\n },\n {from: 'linkTarget', id: 'remove-linktarget'},\n {from: 'plugins', id: 'change-plugins-to-remarkplugins', to: 'remarkPlugins'},\n {from: 'rawSourcePos', id: '#remove-rawsourcepos'},\n {from: 'renderers', id: 'change-renderers-to-components', to: 'components'},\n {from: 'source', id: 'change-source-to-children', to: 'children'},\n {from: 'sourcePos', id: '#remove-sourcepos'},\n {from: 'transformImageUri', id: '#add-urltransform', to: 'urlTransform'},\n {from: 'transformLinkUri', id: '#add-urltransform', to: 'urlTransform'}\n]\n\n/**\n * Component to render markdown.\n *\n * @param {Readonly<Options>} options\n * Props.\n * @returns {ReactElement}\n * React element.\n */\nexport function Markdown(options) {\n const allowedElements = options.allowedElements\n const allowElement = options.allowElement\n const children = options.children || ''\n const className = options.className\n const components = options.components\n const disallowedElements = options.disallowedElements\n const rehypePlugins = options.rehypePlugins || emptyPlugins\n const remarkPlugins = options.remarkPlugins || emptyPlugins\n const remarkRehypeOptions = options.remarkRehypeOptions\n ? {...options.remarkRehypeOptions, ...emptyRemarkRehypeOptions}\n : emptyRemarkRehypeOptions\n const skipHtml = options.skipHtml\n const unwrapDisallowed = options.unwrapDisallowed\n const urlTransform = options.urlTransform || defaultUrlTransform\n\n const processor = unified()\n .use(remarkParse)\n .use(remarkPlugins)\n .use(remarkRehype, remarkRehypeOptions)\n .use(rehypePlugins)\n\n const file = new VFile()\n\n if (typeof children === 'string') {\n file.value = children\n } else {\n unreachable(\n 'Unexpected value `' +\n children +\n '` for `children` prop, expected `string`'\n )\n }\n\n if (allowedElements && disallowedElements) {\n unreachable(\n 'Unexpected combined `allowedElements` and `disallowedElements`, expected one or the other'\n )\n }\n\n for (const deprecation of deprecations) {\n if (Object.hasOwn(options, deprecation.from)) {\n unreachable(\n 'Unexpected `' +\n deprecation.from +\n '` prop, ' +\n (deprecation.to\n ? 'use `' + deprecation.to + '` instead'\n : 'remove it') +\n ' (see <' +\n changelog +\n '#' +\n deprecation.id +\n '> for more info)'\n )\n }\n }\n\n const mdastTree = processor.parse(file)\n /** @type {Nodes} */\n let hastTree = processor.runSync(mdastTree, file)\n\n // Wrap in `div` if there’s a class name.\n if (className) {\n hastTree = {\n type: 'element',\n tagName: 'div',\n properties: {className},\n // Assume no doctypes.\n children: /** @type {Array<ElementContent>} */ (\n hastTree.type === 'root' ? hastTree.children : [hastTree]\n )\n }\n }\n\n visit(hastTree, transform)\n\n return toJsxRuntime(hastTree, {\n Fragment,\n // @ts-expect-error\n // React components are allowed to return numbers,\n // but not according to the types in hast-util-to-jsx-runtime\n components,\n ignoreInvalidStyle: true,\n jsx,\n jsxs,\n passKeys: true,\n passNode: true\n })\n\n /** @type {BuildVisitor<Root>} */\n function transform(node, index, parent) {\n if (node.type === 'raw' && parent && typeof index === 'number') {\n if (skipHtml) {\n parent.children.splice(index, 1)\n } else {\n parent.children[index] = {type: 'text', value: node.value}\n }\n\n return index\n }\n\n if (node.type === 'element') {\n /** @type {string} */\n let key\n\n for (key in urlAttributes) {\n if (\n Object.hasOwn(urlAttributes, key) &&\n Object.hasOwn(node.properties, key)\n ) {\n const value = node.properties[key]\n const test = urlAttributes[key]\n if (test === null || test.includes(node.tagName)) {\n node.properties[key] = urlTransform(String(value || ''), key, node)\n }\n }\n }\n }\n\n if (node.type === 'element') {\n let remove = allowedElements\n ? !allowedElements.includes(node.tagName)\n : disallowedElements\n ? disallowedElements.includes(node.tagName)\n : false\n\n if (!remove && allowElement && typeof index === 'number') {\n remove = !allowElement(node, index, parent)\n }\n\n if (remove && parent && typeof index === 'number') {\n if (unwrapDisallowed && node.children) {\n parent.children.splice(index, 1, ...node.children)\n } else {\n parent.children.splice(index, 1)\n }\n\n return index\n }\n }\n }\n}\n\n/**\n * Make a URL safe.\n *\n * @satisfies {UrlTransform}\n * @param {string} value\n * URL.\n * @returns {string}\n * Safe URL.\n */\nexport function defaultUrlTransform(value) {\n // Same as:\n // <https://github.com/micromark/micromark/blob/929275e/packages/micromark-util-sanitize-uri/dev/index.js#L34>\n // But without the `encode` part.\n const colon = value.indexOf(':')\n const questionMark = value.indexOf('?')\n const numberSign = value.indexOf('#')\n const slash = value.indexOf('/')\n\n if (\n // If there is no protocol, it’s relative.\n colon === -1 ||\n // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n (slash !== -1 && colon > slash) ||\n (questionMark !== -1 && colon > questionMark) ||\n (numberSign !== -1 && colon > numberSign) ||\n // It is a protocol, it should be allowed.\n safeProtocol.test(value.slice(0, colon))\n ) {\n return value\n }\n\n return ''\n}\n","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').Options} FromMarkdownOptions\n * @typedef {import('unified').Parser<Root>} Parser\n * @typedef {import('unified').Processor<Root>} Processor\n */\n\n/**\n * @typedef {Omit<FromMarkdownOptions, 'extensions' | 'mdastExtensions'>} Options\n */\n\nimport {fromMarkdown} from 'mdast-util-from-markdown'\n\n/**\n * Aadd support for parsing from markdown.\n *\n * @param {Readonly<Options> | null | undefined} [options]\n * Configuration (optional).\n * @returns {undefined}\n * Nothing.\n */\nexport default function remarkParse(options) {\n /** @type {Processor} */\n // @ts-expect-error: TS in JSDoc generates wrong types if `this` is typed regularly.\n const self = this\n\n self.parser = parser\n\n /**\n * @type {Parser}\n */\n function parser(doc) {\n return fromMarkdown(doc, {\n ...self.data('settings'),\n ...options,\n // Note: these options are not in the readme.\n // The goal is for them to be set by plugins on `data` instead of being\n // passed by users.\n extensions: self.data('micromarkExtensions') || [],\n mdastExtensions: self.data('fromMarkdownExtensions') || []\n })\n }\n}\n","// Include `data` fields in mdast and `raw` nodes in hast.\n/// <reference types=\"mdast-util-to-hast\" />\n\n/**\n * @import {Root as HastRoot} from 'hast'\n * @import {Root as MdastRoot} from 'mdast'\n * @import {Options as ToHastOptions} from 'mdast-util-to-hast'\n * @import {Processor} from 'unified'\n * @import {VFile} from 'vfile'\n */\n\n/**\n * @typedef {Omit<ToHastOptions, 'file'>} Options\n *\n * @callback TransformBridge\n * Bridge-mode.\n *\n * Runs the destination with the new hast tree.\n * Discards result.\n * @param {MdastRoot} tree\n * Tree.\n * @param {VFile} file\n * File.\n * @returns {Promise<undefined>}\n * Nothing.\n *\n * @callback TransformMutate\n * Mutate-mode.\n *\n * Further transformers run on the hast tree.\n * @param {MdastRoot} tree\n * Tree.\n * @param {VFile} file\n * File.\n * @returns {HastRoot}\n * Tree (hast).\n */\n\nimport {toHast} from 'mdast-util-to-hast'\n\n/**\n * Turn markdown into HTML.\n *\n * ##### Notes\n *\n * ###### Signature\n *\n * * if a processor is given, runs the (rehype) plugins used on it with a\n * hast tree, then discards the result (*bridge mode*)\n * * otherwise, returns a hast tree, the plugins used after `remarkRehype`\n * are rehype plugins (*mutate mode*)\n *\n * > 👉 **Note**: It’s highly unlikely that you want to pass a `processor`.\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most plugins ignore `raw` nodes but two notable ones don’t:\n *\n * * `rehype-stringify` also has an option `allowDangerousHtml` which will\n * output the raw HTML.\n * This is typically discouraged as noted by the option name but is useful if\n * you completely trust authors\n * * `rehype-raw` can handle the raw embedded HTML strings by parsing them\n * into standard hast nodes (`element`, `text`, etc).\n * This is a heavy task as it needs a full HTML parser, but it is the only way\n * to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `remark-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n * <p id=x></p>\n * <script>alert(x) // `x` now refers to the DOM `p#x` element</script>\n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * *Example: headings (DOM clobbering)* in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value` (and doesn’t have `data.hName`,\n * `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n * node\n * * otherwise, create a `<div>` element (which could be changed with\n * `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @overload\n * @param {Processor} processor\n * @param {Readonly<Options> | null | undefined} [options]\n * @returns {TransformBridge}\n *\n * @overload\n * @param {Readonly<Options> | null | undefined} [options]\n * @returns {TransformMutate}\n *\n * @param {Readonly<Options> | Processor | null | undefined} [destination]\n * Processor or configuration (optional).\n * @param {Readonly<Options> | null | undefined} [options]\n * When a processor was given, configuration (optional).\n * @returns {TransformBridge | TransformMutate}\n * Transform.\n */\nexport default function remarkRehype(destination, options) {\n if (destination && 'run' in destination) {\n /**\n * @type {TransformBridge}\n */\n return async function (tree, file) {\n // Cast because root in -> root out.\n const hastTree = /** @type {HastRoot} */ (\n toHast(tree, {file, ...options})\n )\n await destination.run(hastTree, file)\n }\n }\n\n /**\n * @type {TransformMutate}\n */\n return function (tree, file) {\n // Cast because root in -> root out.\n // To do: in the future, disallow ` || options` fallback.\n // With `unified-engine`, `destination` can be `undefined` but\n // `options` will be the file set.\n // We should not pass that as `options`.\n return /** @type {HastRoot} */ (\n toHast(tree, {file, ...(destination || options)})\n )\n }\n}\n","/**\n * Parse space-separated tokens to an array of strings.\n *\n * @param {string} value\n * Space-separated tokens.\n * @returns {Array<string>}\n * List of tokens.\n */\nexport function parse(value) {\n const input = String(value || '').trim()\n return input ? input.split(/[ \\t\\n\\r\\f]+/g) : []\n}\n\n/**\n * Serialize an array of strings as space separated-tokens.\n *\n * @param {Array<string|number>} values\n * List of tokens.\n * @returns {string}\n * Space-separated tokens.\n */\nexport function stringify(values) {\n return values.join(' ').trim()\n}\n","const tab = 9 /* `\\t` */\nconst space = 32 /* ` ` */\n\n/**\n * Remove initial and final spaces and tabs at the line breaks in `value`.\n * Does not trim initial and final spaces and tabs of the value itself.\n *\n * @param {string} value\n * Value to trim.\n * @returns {string}\n * Trimmed value.\n */\nexport function trimLines(value) {\n const source = String(value)\n const search = /\\r?\\n|\\r/g\n let match = search.exec(source)\n let last = 0\n /** @type {Array<string>} */\n const lines = []\n\n while (match) {\n lines.push(\n trimLine(source.slice(last, match.index), last > 0, true),\n match[0]\n )\n\n last = match.index + match[0].length\n match = search.exec(source)\n }\n\n lines.push(trimLine(source.slice(last), last > 0, false))\n\n return lines.join('')\n}\n\n/**\n * @param {string} value\n * Line to trim.\n * @param {boolean} start\n * Whether to trim the start of the line.\n * @param {boolean} end\n * Whether to trim the end of the line.\n * @returns {string}\n * Trimmed line.\n */\nfunction trimLine(value, start, end) {\n let startIndex = 0\n let endIndex = value.length\n\n if (start) {\n let code = value.codePointAt(startIndex)\n\n while (code === tab || code === space) {\n startIndex++\n code = value.codePointAt(startIndex)\n }\n }\n\n if (end) {\n let code = value.codePointAt(endIndex - 1)\n\n while (code === tab || code === space) {\n endIndex--\n code = value.codePointAt(endIndex - 1)\n }\n }\n\n return endIndex > startIndex ? value.slice(startIndex, endIndex) : ''\n}\n","/**\n * Throw a given error.\n *\n * @param {Error|null|undefined} [error]\n * Maybe error.\n * @returns {asserts error is null|undefined}\n */\nexport function bail(error) {\n if (error) {\n throw error\n }\n}\n","export default function isPlainObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n}\n","// To do: remove `void`s\n// To do: remove `null` from output of our APIs, allow it as user APIs.\n\n/**\n * @typedef {(error?: Error | null | undefined, ...output: Array<any>) => void} Callback\n * Callback.\n *\n * @typedef {(...input: Array<any>) => any} Middleware\n * Ware.\n *\n * @typedef Pipeline\n * Pipeline.\n * @property {Run} run\n * Run the pipeline.\n * @property {Use} use\n * Add middleware.\n *\n * @typedef {(...input: Array<any>) => void} Run\n * Call all middleware.\n *\n * Calls `done` on completion with either an error or the output of the\n * last middleware.\n *\n * > 👉 **Note**: as the length of input defines whether async functions get a\n * > `next` function,\n * > it’s recommended to keep `input` at one value normally.\n\n *\n * @typedef {(fn: Middleware) => Pipeline} Use\n * Add middleware.\n */\n\n/**\n * Create new middleware.\n *\n * @returns {Pipeline}\n * Pipeline.\n */\nexport function trough() {\n /** @type {Array<Middleware>} */\n const fns = []\n /** @type {Pipeline} */\n const pipeline = {run, use}\n\n return pipeline\n\n /** @type {Run} */\n function run(...values) {\n let middlewareIndex = -1\n /** @type {Callback} */\n const callback = values.pop()\n\n if (typeof callback !== 'function') {\n throw new TypeError('Expected function as last argument, not ' + callback)\n }\n\n next(null, ...values)\n\n /**\n * Run the next `fn`, or we’re done.\n *\n * @param {Error | null | undefined} error\n * @param {Array<any>} output\n */\n function next(error, ...output) {\n const fn = fns[++middlewareIndex]\n let index = -1\n\n if (error) {\n callback(error)\n return\n }\n\n // Copy non-nullish input into values.\n while (++index < values.length) {\n if (output[index] === null || output[index] === undefined) {\n output[index] = values[index]\n }\n }\n\n // Save the newly created `output` for the next call.\n values = output\n\n // Next or done.\n if (fn) {\n wrap(fn, next)(...output)\n } else {\n callback(null, ...output)\n }\n }\n }\n\n /** @type {Use} */\n function use(middelware) {\n if (typeof middelware !== 'function') {\n throw new TypeError(\n 'Expected `middelware` to be a function, not ' + middelware\n )\n }\n\n fns.push(middelware)\n return pipeline\n }\n}\n\n/**\n * Wrap `middleware` into a uniform interface.\n *\n * You can pass all input to the resulting function.\n * `callback` is then called with the output of `middleware`.\n *\n * If `middleware` accepts more arguments than the later given in input,\n * an extra `done` function is passed to it after that input,\n * which must be called by `middleware`.\n *\n * The first value in `input` is the main input value.\n * All other input values are the rest input values.\n * The values given to `callback` are the input values,\n * merged with every non-nullish output value.\n *\n * * if `middleware` throws an error,\n * returns a promise that is rejected,\n * or calls the given `done` function with an error,\n * `callback` is called with that error\n * * if `middleware` returns a value or returns a promise that is resolved,\n * that value is the main output value\n * * if `middleware` calls `done`,\n * all non-nullish values except for the first one (the error) overwrite the\n * output values\n *\n * @param {Middleware} middleware\n * Function to wrap.\n * @param {Callback} callback\n * Callback called with the output of `middleware`.\n * @returns {Run}\n * Wrapped middleware.\n */\nexport function wrap(middleware, callback) {\n /** @type {boolean} */\n let called\n\n return wrapped\n\n /**\n * Call `middleware`.\n * @this {any}\n * @param {Array<any>} parameters\n * @returns {void}\n */\n function wrapped(...parameters) {\n const fnExpectsCallback = middleware.length > parameters.length\n /** @type {any} */\n let result\n\n if (fnExpectsCallback) {\n parameters.push(done)\n }\n\n try {\n result = middleware.apply(this, parameters)\n } catch (error) {\n const exception = /** @type {Error} */ (error)\n\n // Well, this is quite the pickle.\n // `middleware` received a callback and called it synchronously, but that\n // threw an error.\n // The only thing left to do is to throw the thing instead.\n if (fnExpectsCallback && called) {\n throw exception\n }\n\n return done(exception)\n }\n\n if (!fnExpectsCallback) {\n if (result && result.then && typeof result.then === 'function') {\n result.then(then, done)\n } else if (result instanceof Error) {\n done(result)\n } else {\n then(result)\n }\n }\n }\n\n /**\n * Call `callback`, only once.\n *\n * @type {Callback}\n */\n function done(error, ...output) {\n if (!called) {\n called = true\n callback(error, ...output)\n }\n }\n\n /**\n * Call `done` with one value.\n *\n * @param {any} [value]\n */\n function then(value) {\n done(null, value)\n }\n}\n","export const CallableInstance =\n /**\n * @type {new <Parameters extends Array<unknown>, Result>(property: string | symbol) => (...parameters: Parameters) => Result}\n */\n (\n /** @type {unknown} */\n (\n /**\n * @this {Function}\n * @param {string | symbol} property\n * @returns {(...parameters: Array<unknown>) => unknown}\n */\n function (property) {\n const self = this\n const constr = self.constructor\n const proto = /** @type {Record<string | symbol, Function>} */ (\n // Prototypes do exist.\n // type-coverage:ignore-next-line\n constr.prototype\n )\n const value = proto[property]\n /** @type {(...parameters: Array<unknown>) => unknown} */\n const apply = function () {\n return value.apply(apply, arguments)\n }\n\n Object.setPrototypeOf(apply, proto)\n\n // Not needed for us in `unified`: we only call this on the `copy`\n // function,\n // and we don't need to add its fields (`length`, `name`)\n // over.\n // See also: GH-246.\n // const names = Object.getOwnPropertyNames(value)\n //\n // for (const p of names) {\n // const descriptor = Object.getOwnPropertyDescriptor(value, p)\n // if (descriptor) Object.defineProperty(apply, p, descriptor)\n // }\n\n return apply\n }\n )\n )\n","/**\n * @typedef {import('trough').Pipeline} Pipeline\n *\n * @typedef {import('unist').Node} Node\n *\n * @typedef {import('vfile').Compatible} Compatible\n * @typedef {import('vfile').Value} Value\n *\n * @typedef {import('../index.js').CompileResultMap} CompileResultMap\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Settings} Settings\n */\n\n/**\n * @typedef {CompileResultMap[keyof CompileResultMap]} CompileResults\n * Acceptable results from compilers.\n *\n * To register custom results, add them to\n * {@linkcode CompileResultMap}.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The node that the compiler receives (default: `Node`).\n * @template {CompileResults} [Result=CompileResults]\n * The thing that the compiler yields (default: `CompileResults`).\n * @callback Compiler\n * A **compiler** handles the compiling of a syntax tree to something else\n * (in most cases, text) (TypeScript type).\n *\n * It is used in the stringify phase and called with a {@linkcode Node}\n * and {@linkcode VFile} representation of the document to compile.\n * It should return the textual representation of the given tree (typically\n * `string`).\n *\n * > **Note**: unified typically compiles by serializing: most compilers\n * > return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@linkcode CompileResultMap}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n * @param {Tree} tree\n * Tree to compile.\n * @param {VFile} file\n * File associated with `tree`.\n * @returns {Result}\n * New content: compiled text (`string` or `Uint8Array`, for `file.value`) or\n * something else (for `file.result`).\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The node that the parser yields (default: `Node`)\n * @callback Parser\n * A **parser** handles the parsing of text to a syntax tree.\n *\n * It is used in the parse phase and is called with a `string` and\n * {@linkcode VFile} of the document to parse.\n * It must return the syntax tree representation of the given file\n * ({@linkcode Node}).\n * @param {string} document\n * Document to parse.\n * @param {VFile} file\n * File associated with `document`.\n * @returns {Tree}\n * Node representing the given file.\n */\n\n/**\n * @typedef {(\n * Plugin<Array<any>, any, any> |\n * PluginTuple<Array<any>, any, any> |\n * Preset\n * )} Pluggable\n * Union of the different ways to add plugins and settings.\n */\n\n/**\n * @typedef {Array<Pluggable>} PluggableList\n * List of plugins and presets.\n */\n\n// Note: we can’t use `callback` yet as it messes up `this`:\n// <https://github.com/microsoft/TypeScript/issues/55197>.\n/**\n * @template {Array<unknown>} [PluginParameters=[]]\n * Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=Node]\n * Value that is expected as input (default: `Node`).\n *\n * * If the plugin returns a {@linkcode Transformer}, this\n * should be the node it expects.\n * * If the plugin sets a {@linkcode Parser}, this should be\n * `string`.\n * * If the plugin sets a {@linkcode Compiler}, this should be the\n * node it expects.\n * @template [Output=Input]\n * Value that is yielded as output (default: `Input`).\n *\n * * If the plugin returns a {@linkcode Transformer}, this\n * should be the node that that yields.\n * * If the plugin sets a {@linkcode Parser}, this should be the\n * node that it yields.\n * * If the plugin sets a {@linkcode Compiler}, this should be\n * result it yields.\n * @typedef {(\n * (this: Processor, ...parameters: PluginParameters) =>\n * Input extends string ? // Parser.\n * Output extends Node | undefined ? undefined | void : never :\n * Output extends CompileResults ? // Compiler.\n * Input extends Node | undefined ? undefined | void : never :\n * Transformer<\n * Input extends Node ? Input : Node,\n * Output extends Node ? Output : Node\n * > | undefined | void\n * )} Plugin\n * Single plugin.\n *\n * Plugins configure the processors they are applied on in the following\n * ways:\n *\n * * they change the processor, such as the parser, the compiler, or by\n * configuring data\n * * they specify how to handle trees and files\n *\n * In practice, they are functions that can receive options and configure the\n * processor (`this`).\n *\n * > **Note**: plugins are called when the processor is *frozen*, not when\n * > they are applied.\n */\n\n/**\n * Tuple of a plugin and its configuration.\n *\n * The first item is a plugin, the rest are its parameters.\n *\n * @template {Array<unknown>} [TupleParameters=[]]\n * Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=undefined]\n * Value that is expected as input (optional).\n *\n * * If the plugin returns a {@linkcode Transformer}, this\n * should be the node it expects.\n * * If the plugin sets a {@linkcode Parser}, this should be\n * `string`.\n * * If the plugin sets a {@linkcode Compiler}, this should be the\n * node it expects.\n * @template [Output=undefined] (optional).\n * Value that is yielded as output.\n *\n * * If the plugin returns a {@linkcode Transformer}, this\n * should be the node that that yields.\n * * If the plugin sets a {@linkcode Parser}, this should be the\n * node that it yields.\n * * If the plugin sets a {@linkcode Compiler}, this should be\n * result it yields.\n * @typedef {(\n * [\n * plugin: Plugin<TupleParameters, Input, Output>,\n * ...parameters: TupleParameters\n * ]\n * )} PluginTuple\n */\n\n/**\n * @typedef Preset\n * Sharable configuration.\n *\n * They can contain plugins and settings.\n * @property {PluggableList | undefined} [plugins]\n * List of plugins and presets (optional).\n * @property {Settings | undefined} [settings]\n * Shared settings for parsers and compilers (optional).\n */\n\n/**\n * @template {VFile} [File=VFile]\n * The file that the callback receives (default: `VFile`).\n * @callback ProcessCallback\n * Callback called when the process is done.\n *\n * Called with either an error or a result.\n * @param {Error | undefined} [error]\n * Fatal error (optional).\n * @param {File | undefined} [file]\n * Processed file (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The tree that the callback receives (default: `Node`).\n * @callback RunCallback\n * Callback called when transformers are done.\n *\n * Called with either an error or results.\n * @param {Error | undefined} [error]\n * Fatal error (optional).\n * @param {Tree | undefined} [tree]\n * Transformed tree (optional).\n * @param {VFile | undefined} [file]\n * File (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Output=Node]\n * Node type that the transformer yields (default: `Node`).\n * @callback TransformCallback\n * Callback passed to transforms.\n *\n * If the signature of a `transformer` accepts a third argument, the\n * transformer may perform asynchronous operations, and must call it.\n * @param {Error | undefined} [error]\n * Fatal error to stop the process (optional).\n * @param {Output | undefined} [tree]\n * New, changed, tree (optional).\n * @param {VFile | undefined} [file]\n * New, changed, file (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Input=Node]\n * Node type that the transformer expects (default: `Node`).\n * @template {Node} [Output=Input]\n * Node type that the transformer yields (default: `Input`).\n * @callback Transformer\n * Transformers handle syntax trees and files.\n *\n * They are functions that are called each time a syntax tree and file are\n * passed through the run phase.\n * When an error occurs in them (either because it’s thrown, returned,\n * rejected, or passed to `next`), the process stops.\n *\n * The run phase is handled by [`trough`][trough], see its documentation for\n * the exact semantics of these functions.\n *\n * > **Note**: you should likely ignore `next`: don’t accept it.\n * > it supports callback-style async work.\n * > But promises are likely easier to reason about.\n *\n * [trough]: https://github.com/wooorm/trough#function-fninput-next\n * @param {Input} tree\n * Tree to handle.\n * @param {VFile} file\n * File to handle.\n * @param {TransformCallback<Output>} next\n * Callback.\n * @returns {(\n * Promise<Output | undefined | void> |\n * Promise<never> | // For some reason this is needed separately.\n * Output |\n * Error |\n * undefined |\n * void\n * )}\n * If you accept `next`, nothing.\n * Otherwise:\n *\n * * `Error` — fatal error to stop the process\n * * `Promise<undefined>` or `undefined` — the next transformer keeps using\n * same tree\n * * `Promise<Node>` or `Node` — new, changed, tree\n */\n\n/**\n * @template {Node | undefined} ParseTree\n * Output of `parse`.\n * @template {Node | undefined} HeadTree\n * Input for `run`.\n * @template {Node | undefined} TailTree\n * Output for `run`.\n * @template {Node | undefined} CompileTree\n * Input of `stringify`.\n * @template {CompileResults | undefined} CompileResult\n * Output of `stringify`.\n * @template {Node | string | undefined} Input\n * Input of plugin.\n * @template Output\n * Output of plugin (optional).\n * @typedef {(\n * Input extends string\n * ? Output extends Node | undefined\n * ? // Parser.\n * Processor<\n * Output extends undefined ? ParseTree : Output,\n * HeadTree,\n * TailTree,\n * CompileTree,\n * CompileResult\n * >\n * : // Unknown.\n * Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n * : Output extends CompileResults\n * ? Input extends Node | undefined\n * ? // Compiler.\n * Processor<\n * ParseTree,\n * HeadTree,\n * TailTree,\n * Input extends undefined ? CompileTree : Input,\n * Output extends undefined ? CompileResult : Output\n * >\n * : // Unknown.\n * Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n * : Input extends Node | undefined\n * ? Output extends Node | undefined\n * ? // Transform.\n * Processor<\n * ParseTree,\n * HeadTree extends undefined ? Input : HeadTree,\n * Output extends undefined ? TailTree : Output,\n * CompileTree,\n * CompileResult\n * >\n * : // Unknown.\n * Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n * : // Unknown.\n * Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n * )} UsePlugin\n * Create a processor based on the input/output of a {@link Plugin plugin}.\n */\n\n/**\n * @template {CompileResults | undefined} Result\n * Node type that the transformer yields.\n * @typedef {(\n * Result extends Value | undefined ?\n * VFile :\n * VFile & {result: Result}\n * )} VFileWithOutput\n * Type to generate a {@linkcode VFile} corresponding to a compiler result.\n *\n * If a result that is not acceptable on a `VFile` is used, that will\n * be stored on the `result` field of {@linkcode VFile}.\n */\n\nimport {bail} from 'bail'\nimport extend from 'extend'\nimport {ok as assert} from 'devlop'\nimport isPlainObj from 'is-plain-obj'\nimport {trough} from 'trough'\nimport {VFile} from 'vfile'\nimport {CallableInstance} from './callable-instance.js'\n\n// To do: next major: drop `Compiler`, `Parser`: prefer lowercase.\n\n// To do: we could start yielding `never` in TS when a parser is missing and\n// `parse` is called.\n// Currently, we allow directly setting `processor.parser`, which is untyped.\n\nconst own = {}.hasOwnProperty\n\n/**\n * @template {Node | undefined} [ParseTree=undefined]\n * Output of `parse` (optional).\n * @template {Node | undefined} [HeadTree=undefined]\n * Input for `run` (optional).\n * @template {Node | undefined} [TailTree=undefined]\n * Output for `run` (optional).\n * @template {Node | undefined} [CompileTree=undefined]\n * Input of `stringify` (optional).\n * @template {CompileResults | undefined} [CompileResult=undefined]\n * Output of `stringify` (optional).\n * @extends {CallableInstance<[], Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>>}\n */\nexport class Processor extends CallableInstance {\n /**\n * Create a processor.\n */\n constructor() {\n // If `Processor()` is called (w/o new), `copy` is called instead.\n super('copy')\n\n /**\n * Compiler to use (deprecated).\n *\n * @deprecated\n * Use `compiler` instead.\n * @type {(\n * Compiler<\n * CompileTree extends undefined ? Node : CompileTree,\n * CompileResult extends undefined ? CompileResults : CompileResult\n * > |\n * undefined\n * )}\n */\n this.Compiler = undefined\n\n /**\n * Parser to use (deprecated).\n *\n * @deprecated\n * Use `parser` instead.\n * @type {(\n * Parser<ParseTree extends undefined ? Node : ParseTree> |\n * undefined\n * )}\n */\n this.Parser = undefined\n\n // Note: the following fields are considered private.\n // However, they are needed for tests, and TSC generates an untyped\n // `private freezeIndex` field for, which trips `type-coverage` up.\n // Instead, we use `@deprecated` to visualize that they shouldn’t be used.\n /**\n * Internal list of configured plugins.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Array<PluginTuple<Array<unknown>>>}\n */\n this.attachers = []\n\n /**\n * Compiler to use.\n *\n * @type {(\n * Compiler<\n * CompileTree extends undefined ? Node : CompileTree,\n * CompileResult extends undefined ? CompileResults : CompileResult\n * > |\n * undefined\n * )}\n */\n this.compiler = undefined\n\n /**\n * Internal state to track where we are while freezing.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {number}\n */\n this.freezeIndex = -1\n\n /**\n * Internal state to track whether we’re frozen.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {boolean | undefined}\n */\n this.frozen = undefined\n\n /**\n * Internal state.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Data}\n */\n this.namespace = {}\n\n /**\n * Parser to use.\n *\n * @type {(\n * Parser<ParseTree extends undefined ? Node : ParseTree> |\n * undefined\n * )}\n */\n this.parser = undefined\n\n /**\n * Internal list of configured transformers.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Pipeline}\n */\n this.transformers = trough()\n }\n\n /**\n * Copy a processor.\n *\n * @deprecated\n * This is a private internal method and should not be used.\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n * New *unfrozen* processor ({@linkcode Processor}) that is\n * configured to work the same as its ancestor.\n * When the descendant processor is configured in the future it does not\n * affect the ancestral processor.\n */\n copy() {\n // Cast as the type parameters will be the same after attaching.\n const destination =\n /** @type {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>} */ (\n new Processor()\n )\n let index = -1\n\n while (++index < this.attachers.length) {\n const attacher = this.attachers[index]\n destination.use(...attacher)\n }\n\n destination.data(extend(true, {}, this.namespace))\n\n return destination\n }\n\n /**\n * Configure the processor with info available to all plugins.\n * Information is stored in an object.\n *\n * Typically, options can be given to a specific plugin, but sometimes it\n * makes sense to have information shared with several plugins.\n * For example, a list of HTML elements that are self-closing, which is\n * needed during all phases.\n *\n * > **Note**: setting information cannot occur on *frozen* processors.\n * > Call the processor first to create a new unfrozen processor.\n *\n * > **Note**: to register custom data in TypeScript, augment the\n * > {@linkcode Data} interface.\n *\n * @example\n * This example show how to get and set info:\n *\n * ```js\n * import {unified} from 'unified'\n *\n * const processor = unified().data('alpha', 'bravo')\n *\n * processor.data('alpha') // => 'bravo'\n *\n * processor.data() // => {alpha: 'bravo'}\n *\n * processor.data({charlie: 'delta'})\n *\n * processor.data() // => {charlie: 'delta'}\n * ```\n *\n * @template {keyof Data} Key\n *\n * @overload\n * @returns {Data}\n *\n * @overload\n * @param {Data} dataset\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n *\n * @overload\n * @param {Key} key\n * @returns {Data[Key]}\n *\n * @overload\n * @param {Key} key\n * @param {Data[Key]} value\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n *\n * @param {Data | Key} [key]\n * Key to get or set, or entire dataset to set, or nothing to get the\n * entire dataset (optional).\n * @param {Data[Key]} [value]\n * Value to set (optional).\n * @returns {unknown}\n * The current processor when setting, the value at `key` when getting, or\n * the entire dataset when getting without key.\n */\n data(key, value) {\n if (typeof key === 'string') {\n // Set `key`.\n if (arguments.length === 2) {\n assertUnfrozen('data', this.frozen)\n this.namespace[key] = value\n return this\n }\n\n // Get `key`.\n return (own.call(this.namespace, key) && this.namespace[key]) || undefined\n }\n\n // Set space.\n if (key) {\n assertUnfrozen('data', this.frozen)\n this.namespace = key\n return this\n }\n\n // Get space.\n return this.namespace\n }\n\n /**\n * Freeze a processor.\n *\n * Frozen processors are meant to be extended and not to be configured\n * directly.\n *\n * When a processor is frozen it cannot be unfrozen.\n * New processors working the same way can be created by calling the\n * processor.\n *\n * It’s possible to freeze processors explicitly by calling `.freeze()`.\n * Processors freeze automatically when `.parse()`, `.run()`, `.runSync()`,\n * `.stringify()`, `.process()`, or `.processSync()` are called.\n *\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n * The current processor.\n */\n freeze() {\n if (this.frozen) {\n return this\n }\n\n // Cast so that we can type plugins easier.\n // Plugins are supposed to be usable on different processors, not just on\n // this exact processor.\n const self = /** @type {Processor} */ (/** @type {unknown} */ (this))\n\n while (++this.freezeIndex < this.attachers.length) {\n const [attacher, ...options] = this.attachers[this.freezeIndex]\n\n if (options[0] === false) {\n continue\n }\n\n if (options[0] === true) {\n options[0] = undefined\n }\n\n const transformer = attacher.call(self, ...options)\n\n if (typeof transformer === 'function') {\n this.transformers.use(transformer)\n }\n }\n\n this.frozen = true\n this.freezeIndex = Number.POSITIVE_INFINITY\n\n return this\n }\n\n /**\n * Parse text to a syntax tree.\n *\n * > **Note**: `parse` freezes the processor if not already *frozen*.\n *\n * > **Note**: `parse` performs the parse phase, not the run phase or other\n * > phases.\n *\n * @param {Compatible | undefined} [file]\n * file to parse (optional); typically `string` or `VFile`; any value\n * accepted as `x` in `new VFile(x)`.\n * @returns {ParseTree extends undefined ? Node : ParseTree}\n * Syntax tree representing `file`.\n */\n parse(file) {\n this.freeze()\n const realFile = vfile(file)\n const parser = this.parser || this.Parser\n assertParser('parse', parser)\n return parser(String(realFile), realFile)\n }\n\n /**\n * Process the given file as configured on the processor.\n *\n * > **Note**: `process` freezes the processor if not already *frozen*.\n *\n * > **Note**: `process` performs the parse, run, and stringify phases.\n *\n * @overload\n * @param {Compatible | undefined} file\n * @param {ProcessCallback<VFileWithOutput<CompileResult>>} done\n * @returns {undefined}\n *\n * @overload\n * @param {Compatible | undefined} [file]\n * @returns {Promise<VFileWithOutput<CompileResult>>}\n *\n * @param {Compatible | undefined} [file]\n * File (optional); typically `string` or `VFile`]; any value accepted as\n * `x` in `new VFile(x)`.\n * @param {ProcessCallback<VFileWithOutput<CompileResult>> | undefined} [done]\n * Callback (optional).\n * @returns {Promise<VFile> | undefined}\n * Nothing if `done` is given.\n * Otherwise a promise, rejected with a fatal error or resolved with the\n * processed file.\n *\n * The parsed, transformed, and compiled value is available at\n * `file.value` (see note).\n *\n * > **Note**: unified typically compiles by serializing: most\n * > compilers return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@linkcode CompileResultMap}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n process(file, done) {\n const self = this\n\n this.freeze()\n assertParser('process', this.parser || this.Parser)\n assertCompiler('process', this.compiler || this.Compiler)\n\n return done ? executor(undefined, done) : new Promise(executor)\n\n // Note: `void`s needed for TS.\n /**\n * @param {((file: VFileWithOutput<CompileResult>) => undefined | void) | undefined} resolve\n * @param {(error: Error | undefined) => undefined | void} reject\n * @returns {undefined}\n */\n function executor(resolve, reject) {\n const realFile = vfile(file)\n // Assume `ParseTree` (the result of the parser) matches `HeadTree` (the\n // input of the first transform).\n const parseTree =\n /** @type {HeadTree extends undefined ? Node : HeadTree} */ (\n /** @type {unknown} */ (self.parse(realFile))\n )\n\n self.run(parseTree, realFile, function (error, tree, file) {\n if (error || !tree || !file) {\n return realDone(error)\n }\n\n // Assume `TailTree` (the output of the last transform) matches\n // `CompileTree` (the input of the compiler).\n const compileTree =\n /** @type {CompileTree extends undefined ? Node : CompileTree} */ (\n /** @type {unknown} */ (tree)\n )\n\n const compileResult = self.stringify(compileTree, file)\n\n if (looksLikeAValue(compileResult)) {\n file.value = compileResult\n } else {\n file.result = compileResult\n }\n\n realDone(error, /** @type {VFileWithOutput<CompileResult>} */ (file))\n })\n\n /**\n * @param {Error | undefined} error\n * @param {VFileWithOutput<CompileResult> | undefined} [file]\n * @returns {undefined}\n */\n function realDone(error, file) {\n if (error || !file) {\n reject(error)\n } else if (resolve) {\n resolve(file)\n } else {\n assert(done, '`done` is defined if `resolve` is not')\n done(undefined, file)\n }\n }\n }\n }\n\n /**\n * Process the given file as configured on the processor.\n *\n * An error is thrown if asynchronous transforms are configured.\n *\n * > **Note**: `processSync` freezes the processor if not already *frozen*.\n *\n * > **Note**: `processSync` performs the parse, run, and stringify phases.\n *\n * @param {Compatible | undefined} [file]\n * File (optional); typically `string` or `VFile`; any value accepted as\n * `x` in `new VFile(x)`.\n * @returns {VFileWithOutput<CompileResult>}\n * The processed file.\n *\n * The parsed, transformed, and compiled value is available at\n * `file.value` (see note).\n *\n * > **Note**: unified typically compiles by serializing: most\n * > compilers return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@linkcode CompileResultMap}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n processSync(file) {\n /** @type {boolean} */\n let complete = false\n /** @type {VFileWithOutput<CompileResult> | undefined} */\n let result\n\n this.freeze()\n assertParser('processSync', this.parser || this.Parser)\n assertCompiler('processSync', this.compiler || this.Compiler)\n\n this.process(file, realDone)\n assertDone('processSync', 'process', complete)\n assert(result, 'we either bailed on an error or have a tree')\n\n return result\n\n /**\n * @type {ProcessCallback<VFileWithOutput<CompileResult>>}\n */\n function realDone(error, file) {\n complete = true\n bail(error)\n result = file\n }\n }\n\n /**\n * Run *transformers* on a syntax tree.\n *\n * > **Note**: `run` freezes the processor if not already *frozen*.\n *\n * > **Note**: `run` performs the run phase, not other phases.\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} done\n * @returns {undefined}\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {Compatible | undefined} file\n * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} done\n * @returns {undefined}\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {Compatible | undefined} [file]\n * @returns {Promise<TailTree extends undefined ? Node : TailTree>}\n *\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * Tree to transform and inspect.\n * @param {(\n * RunCallback<TailTree extends undefined ? Node : TailTree> |\n * Compatible\n * )} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} [done]\n * Callback (optional).\n * @returns {Promise<TailTree extends undefined ? Node : TailTree> | undefined}\n * Nothing if `done` is given.\n * Otherwise, a promise rejected with a fatal error or resolved with the\n * transformed tree.\n */\n run(tree, file, done) {\n assertNode(tree)\n this.freeze()\n\n const transformers = this.transformers\n\n if (!done && typeof file === 'function') {\n done = file\n file = undefined\n }\n\n return done ? executor(undefined, done) : new Promise(executor)\n\n // Note: `void`s needed for TS.\n /**\n * @param {(\n * ((tree: TailTree extends undefined ? Node : TailTree) => undefined | void) |\n * undefined\n * )} resolve\n * @param {(error: Error) => undefined | void} reject\n * @returns {undefined}\n */\n function executor(resolve, reject) {\n assert(\n typeof file !== 'function',\n '`file` can’t be a `done` anymore, we checked'\n )\n const realFile = vfile(file)\n transformers.run(tree, realFile, realDone)\n\n /**\n * @param {Error | undefined} error\n * @param {Node} outputTree\n * @param {VFile} file\n * @returns {undefined}\n */\n function realDone(error, outputTree, file) {\n const resultingTree =\n /** @type {TailTree extends undefined ? Node : TailTree} */ (\n outputTree || tree\n )\n\n if (error) {\n reject(error)\n } else if (resolve) {\n resolve(resultingTree)\n } else {\n assert(done, '`done` is defined if `resolve` is not')\n done(undefined, resultingTree, file)\n }\n }\n }\n }\n\n /**\n * Run *transformers* on a syntax tree.\n *\n * An error is thrown if asynchronous transforms are configured.\n *\n * > **Note**: `runSync` freezes the processor if not already *frozen*.\n *\n * > **Note**: `runSync` performs the run phase, not other phases.\n *\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * Tree to transform and inspect.\n * @param {Compatible | undefined} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @returns {TailTree extends undefined ? Node : TailTree}\n * Transformed tree.\n */\n runSync(tree, file) {\n /** @type {boolean} */\n let complete = false\n /** @type {(TailTree extends undefined ? Node : TailTree) | undefined} */\n let result\n\n this.run(tree, file, realDone)\n\n assertDone('runSync', 'run', complete)\n assert(result, 'we either bailed on an error or have a tree')\n return result\n\n /**\n * @type {RunCallback<TailTree extends undefined ? Node : TailTree>}\n */\n function realDone(error, tree) {\n bail(error)\n result = tree\n complete = true\n }\n }\n\n /**\n * Compile a syntax tree.\n *\n * > **Note**: `stringify` freezes the processor if not already *frozen*.\n *\n * > **Note**: `stringify` performs the stringify phase, not the run phase\n * > or other phases.\n *\n * @param {CompileTree extends undefined ? Node : CompileTree} tree\n * Tree to compile.\n * @param {Compatible | undefined} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @returns {CompileResult extends undefined ? Value : CompileResult}\n * Textual representation of the tree (see note).\n *\n * > **Note**: unified typically compiles by serializing: most compilers\n * > return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you’re using a compiler that doesn’t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@linkcode CompileResultMap}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n stringify(tree, file) {\n this.freeze()\n const realFile = vfile(file)\n const compiler = this.compiler || this.Compiler\n assertCompiler('stringify', compiler)\n assertNode(tree)\n\n return compiler(tree, realFile)\n }\n\n /**\n * Configure the processor to use a plugin, a list of usable values, or a\n * preset.\n *\n * If the processor is already using a plugin, the previous plugin\n * configuration is changed based on the options that are passed in.\n * In other words, the plugin is not added a second time.\n *\n * > **Note**: `use` cannot be called on *frozen* processors.\n * > Call the processor first to create a new unfrozen processor.\n *\n * @example\n * There are many ways to pass plugins to `.use()`.\n * This example gives an overview:\n *\n * ```js\n * import {unified} from 'unified'\n *\n * unified()\n * // Plugin with options:\n * .use(pluginA, {x: true, y: true})\n * // Passing the same plugin again merges configuration (to `{x: true, y: false, z: true}`):\n * .use(pluginA, {y: false, z: true})\n * // Plugins:\n * .use([pluginB, pluginC])\n * // Two plugins, the second with options:\n * .use([pluginD, [pluginE, {}]])\n * // Preset with plugins and settings:\n * .use({plugins: [pluginF, [pluginG, {}]], settings: {position: false}})\n * // Settings only:\n * .use({settings: {position: false}})\n * ```\n *\n * @template {Array<unknown>} [Parameters=[]]\n * @template {Node | string | undefined} [Input=undefined]\n * @template [Output=Input]\n *\n * @overload\n * @param {Preset | null | undefined} [preset]\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n *\n * @overload\n * @param {PluggableList} list\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n *\n * @overload\n * @param {Plugin<Parameters, Input, Output>} plugin\n * @param {...(Parameters | [boolean])} parameters\n * @returns {UsePlugin<ParseTree, HeadTree, TailTree, CompileTree, CompileResult, Input, Output>}\n *\n * @param {PluggableList | Plugin | Preset | null | undefined} value\n * Usable value.\n * @param {...unknown} parameters\n * Parameters, when a plugin is given as a usable value.\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n * Current processor.\n */\n use(value, ...parameters) {\n const attachers = this.attachers\n const namespace = this.namespace\n\n assertUnfrozen('use', this.frozen)\n\n if (value === null || value === undefined) {\n // Empty.\n } else if (typeof value === 'function') {\n addPlugin(value, parameters)\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n addList(value)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n\n return this\n\n /**\n * @param {Pluggable} value\n * @returns {undefined}\n */\n function add(value) {\n if (typeof value === 'function') {\n addPlugin(value, [])\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n const [plugin, ...parameters] =\n /** @type {PluginTuple<Array<unknown>>} */ (value)\n addPlugin(plugin, parameters)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n }\n\n /**\n * @param {Preset} result\n * @returns {undefined}\n */\n function addPreset(result) {\n if (!('plugins' in result) && !('settings' in result)) {\n throw new Error(\n 'Expected usable value but received an empty preset, which is probably a mistake: presets typically come with `plugins` and sometimes with `settings`, but this has neither'\n )\n }\n\n addList(result.plugins)\n\n if (result.settings) {\n namespace.settings = extend(true, namespace.settings, result.settings)\n }\n }\n\n /**\n * @param {PluggableList | null | undefined} plugins\n * @returns {undefined}\n */\n function addList(plugins) {\n let index = -1\n\n if (plugins === null || plugins === undefined) {\n // Empty.\n } else if (Array.isArray(plugins)) {\n while (++index < plugins.length) {\n const thing = plugins[index]\n add(thing)\n }\n } else {\n throw new TypeError('Expected a list of plugins, not `' + plugins + '`')\n }\n }\n\n /**\n * @param {Plugin} plugin\n * @param {Array<unknown>} parameters\n * @returns {undefined}\n */\n function addPlugin(plugin, parameters) {\n let index = -1\n let entryIndex = -1\n\n while (++index < attachers.length) {\n if (attachers[index][0] === plugin) {\n entryIndex = index\n break\n }\n }\n\n if (entryIndex === -1) {\n attachers.push([plugin, ...parameters])\n }\n // Only set if there was at least a `primary` value, otherwise we’d change\n // `arguments.length`.\n else if (parameters.length > 0) {\n let [primary, ...rest] = parameters\n const currentPrimary = attachers[entryIndex][1]\n if (isPlainObj(currentPrimary) && isPlainObj(primary)) {\n primary = extend(true, currentPrimary, primary)\n }\n\n attachers[entryIndex] = [plugin, primary, ...rest]\n }\n }\n }\n}\n\n// Note: this returns a *callable* instance.\n// That’s why it’s documented as a function.\n/**\n * Create a new processor.\n *\n * @example\n * This example shows how a new processor can be created (from `remark`) and linked\n * to **stdin**(4) and **stdout**(4).\n *\n * ```js\n * import process from 'node:process'\n * import concatStream from 'concat-stream'\n * import {remark} from 'remark'\n *\n * process.stdin.pipe(\n * concatStream(function (buf) {\n * process.stdout.write(String(remark().processSync(buf)))\n * })\n * )\n * ```\n *\n * @returns\n * New *unfrozen* processor (`processor`).\n *\n * This processor is configured to work the same as its ancestor.\n * When the descendant processor is configured in the future it does not\n * affect the ancestral processor.\n */\nexport const unified = new Processor().freeze()\n\n/**\n * Assert a parser is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Parser}\n */\nfunction assertParser(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `parser`')\n }\n}\n\n/**\n * Assert a compiler is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Compiler}\n */\nfunction assertCompiler(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `compiler`')\n }\n}\n\n/**\n * Assert the processor is not frozen.\n *\n * @param {string} name\n * @param {unknown} frozen\n * @returns {asserts frozen is false}\n */\nfunction assertUnfrozen(name, frozen) {\n if (frozen) {\n throw new Error(\n 'Cannot call `' +\n name +\n '` on a frozen processor.\\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.'\n )\n }\n}\n\n/**\n * Assert `node` is a unist node.\n *\n * @param {unknown} node\n * @returns {asserts node is Node}\n */\nfunction assertNode(node) {\n // `isPlainObj` unfortunately uses `any` instead of `unknown`.\n // type-coverage:ignore-next-line\n if (!isPlainObj(node) || typeof node.type !== 'string') {\n throw new TypeError('Expected node, got `' + node + '`')\n // Fine.\n }\n}\n\n/**\n * Assert that `complete` is `true`.\n *\n * @param {string} name\n * @param {string} asyncName\n * @param {unknown} complete\n * @returns {asserts complete is true}\n */\nfunction assertDone(name, asyncName, complete) {\n if (!complete) {\n throw new Error(\n '`' + name + '` finished async. Use `' + asyncName + '` instead'\n )\n }\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {VFile}\n */\nfunction vfile(value) {\n return looksLikeAVFile(value) ? value : new VFile(value)\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {value is VFile}\n */\nfunction looksLikeAVFile(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'message' in value &&\n 'messages' in value\n )\n}\n\n/**\n * @param {unknown} [value]\n * @returns {value is Value}\n */\nfunction looksLikeAValue(value) {\n return typeof value === 'string' || isUint8Array(value)\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n */\n\n/**\n * @template Fn\n * @template Fallback\n * @typedef {Fn extends (value: any) => value is infer Thing ? Thing : Fallback} Predicate\n */\n\n/**\n * @callback Check\n * Check that an arbitrary value is a node.\n * @param {unknown} this\n * The given context.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {boolean}\n * Whether this is a node and passes a test.\n *\n * @typedef {Record<string, unknown> | Node} Props\n * Object to check for equivalence.\n *\n * Note: `Node` is included as it is common but is not indexable.\n *\n * @typedef {Array<Props | TestFunction | string> | Props | TestFunction | string | null | undefined} Test\n * Check for an arbitrary node.\n *\n * @callback TestFunction\n * Check if a node passes a test.\n * @param {unknown} this\n * The given context.\n * @param {Node} node\n * A node.\n * @param {number | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | undefined} [parent]\n * The node’s parent.\n * @returns {boolean | undefined | void}\n * Whether this node passes the test.\n *\n * Note: `void` is included until TS sees no return as `undefined`.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param {unknown} node\n * Thing to check, typically `Node`.\n * @param {Test} test\n * A check for a specific node.\n * @param {number | null | undefined} index\n * The node’s position in its parent.\n * @param {Parent | null | undefined} parent\n * The node’s parent.\n * @param {unknown} context\n * Context object (`this`) to pass to `test` functions.\n * @returns {boolean}\n * Whether `node` is a node and passes a test.\n */\nexport const is =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * (<Condition extends string>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * (<Condition extends Props>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * (<Condition extends TestFunction>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate<Condition, Node>) &\n * ((node?: null | undefined) => false) &\n * ((node: unknown, test?: null | undefined, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((node: unknown, test?: Test, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => boolean)\n * )}\n */\n (\n /**\n * @param {unknown} [node]\n * @param {Test} [test]\n * @param {number | null | undefined} [index]\n * @param {Parent | null | undefined} [parent]\n * @param {unknown} [context]\n * @returns {boolean}\n */\n // eslint-disable-next-line max-params\n function (node, test, index, parent, context) {\n const check = convert(test)\n\n if (\n index !== undefined &&\n index !== null &&\n (typeof index !== 'number' ||\n index < 0 ||\n index === Number.POSITIVE_INFINITY)\n ) {\n throw new Error('Expected positive finite index')\n }\n\n if (\n parent !== undefined &&\n parent !== null &&\n (!is(parent) || !parent.children)\n ) {\n throw new Error('Expected parent node')\n }\n\n if (\n (parent === undefined || parent === null) !==\n (index === undefined || index === null)\n ) {\n throw new Error('Expected both parent and index')\n }\n\n return looksLikeANode(node)\n ? check.call(context, node, index, parent)\n : false\n }\n )\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param {Test} test\n * * when nullish, checks if `node` is a `Node`.\n * * when `string`, works like passing `(node) => node.type === test`.\n * * when `function` checks if function passed the node is true.\n * * when `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n * * when `array`, checks if any one of the subtests pass.\n * @returns {Check}\n * An assertion.\n */\nexport const convert =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * (<Condition extends string>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * (<Condition extends Props>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * (<Condition extends TestFunction>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate<Condition, Node>) &\n * ((test?: null | undefined) => (node?: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((test?: Test) => Check)\n * )}\n */\n (\n /**\n * @param {Test} [test]\n * @returns {Check}\n */\n function (test) {\n if (test === null || test === undefined) {\n return ok\n }\n\n if (typeof test === 'function') {\n return castFactory(test)\n }\n\n if (typeof test === 'object') {\n return Array.isArray(test) ? anyFactory(test) : propsFactory(test)\n }\n\n if (typeof test === 'string') {\n return typeFactory(test)\n }\n\n throw new Error('Expected function, string, or object as test')\n }\n )\n\n/**\n * @param {Array<Props | TestFunction | string>} tests\n * @returns {Check}\n */\nfunction anyFactory(tests) {\n /** @type {Array<Check>} */\n const checks = []\n let index = -1\n\n while (++index < tests.length) {\n checks[index] = convert(tests[index])\n }\n\n return castFactory(any)\n\n /**\n * @this {unknown}\n * @type {TestFunction}\n */\n function any(...parameters) {\n let index = -1\n\n while (++index < checks.length) {\n if (checks[index].apply(this, parameters)) return true\n }\n\n return false\n }\n}\n\n/**\n * Turn an object into a test for a node with a certain fields.\n *\n * @param {Props} check\n * @returns {Check}\n */\nfunction propsFactory(check) {\n const checkAsRecord = /** @type {Record<string, unknown>} */ (check)\n\n return castFactory(all)\n\n /**\n * @param {Node} node\n * @returns {boolean}\n */\n function all(node) {\n const nodeAsRecord = /** @type {Record<string, unknown>} */ (\n /** @type {unknown} */ (node)\n )\n\n /** @type {string} */\n let key\n\n for (key in check) {\n if (nodeAsRecord[key] !== checkAsRecord[key]) return false\n }\n\n return true\n }\n}\n\n/**\n * Turn a string into a test for a node with a certain type.\n *\n * @param {string} check\n * @returns {Check}\n */\nfunction typeFactory(check) {\n return castFactory(type)\n\n /**\n * @param {Node} node\n */\n function type(node) {\n return node && node.type === check\n }\n}\n\n/**\n * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunction} testFunction\n * @returns {Check}\n */\nfunction castFactory(testFunction) {\n return check\n\n /**\n * @this {unknown}\n * @type {Check}\n */\n function check(value, index, parent) {\n return Boolean(\n looksLikeANode(value) &&\n testFunction.call(\n this,\n value,\n typeof index === 'number' ? index : undefined,\n parent || undefined\n )\n )\n }\n}\n\nfunction ok() {\n return true\n}\n\n/**\n * @param {unknown} value\n * @returns {value is Node}\n */\nfunction looksLikeANode(value) {\n return value !== null && typeof value === 'object' && 'type' in value\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n */\n\n/**\n * Get the ending point of `node`.\n *\n * @param node\n * Node.\n * @returns\n * Point.\n */\nexport const pointEnd = point('end')\n\n/**\n * Get the starting point of `node`.\n *\n * @param node\n * Node.\n * @returns\n * Point.\n */\nexport const pointStart = point('start')\n\n/**\n * Get the positional info of `node`.\n *\n * @param {'end' | 'start'} type\n * Side.\n * @returns\n * Getter.\n */\nfunction point(type) {\n return point\n\n /**\n * Get the point info of `node` at a bound side.\n *\n * @param {Node | NodeLike | null | undefined} [node]\n * @returns {Point | undefined}\n */\n function point(node) {\n const point = (node && node.position && node.position[type]) || {}\n\n if (\n typeof point.line === 'number' &&\n point.line > 0 &&\n typeof point.column === 'number' &&\n point.column > 0\n ) {\n return {\n line: point.line,\n column: point.column,\n offset:\n typeof point.offset === 'number' && point.offset > -1\n ? point.offset\n : undefined\n }\n }\n }\n}\n\n/**\n * Get the positional info of `node`.\n *\n * @param {Node | NodeLike | null | undefined} [node]\n * Node.\n * @returns {Position | undefined}\n * Position.\n */\nexport function position(node) {\n const start = pointStart(node)\n const end = pointEnd(node)\n\n if (start && end) {\n return {start, end}\n }\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n */\n\n/**\n * Serialize the positional info of a point, position (start and end points),\n * or node.\n *\n * @param {Node | NodeLike | Point | PointLike | Position | PositionLike | null | undefined} [value]\n * Node, position, or point.\n * @returns {string}\n * Pretty printed positional info of a node (`string`).\n *\n * In the format of a range `ls:cs-le:ce` (when given `node` or `position`)\n * or a point `l:c` (when given `point`), where `l` stands for line, `c` for\n * column, `s` for `start`, and `e` for end.\n * An empty string (`''`) is returned if the given value is neither `node`,\n * `position`, nor `point`.\n */\nexport function stringifyPosition(value) {\n // Nothing.\n if (!value || typeof value !== 'object') {\n return ''\n }\n\n // Node.\n if ('position' in value || 'type' in value) {\n return position(value.position)\n }\n\n // Position.\n if ('start' in value || 'end' in value) {\n return position(value)\n }\n\n // Point.\n if ('line' in value || 'column' in value) {\n return point(value)\n }\n\n // ?\n return ''\n}\n\n/**\n * @param {Point | PointLike | null | undefined} point\n * @returns {string}\n */\nfunction point(point) {\n return index(point && point.line) + ':' + index(point && point.column)\n}\n\n/**\n * @param {Position | PositionLike | null | undefined} pos\n * @returns {string}\n */\nfunction position(pos) {\n return point(pos && pos.start) + '-' + point(pos && pos.end)\n}\n\n/**\n * @param {number | null | undefined} value\n * @returns {number}\n */\nfunction index(value) {\n return value && typeof value === 'number' ? value : 1\n}\n","/**\n * @param {string} d\n * @returns {string}\n */\nexport function color(d) {\n return d\n}\n","/**\n * @typedef {import('unist').Node} UnistNode\n * @typedef {import('unist').Parent} UnistParent\n */\n\n/**\n * @typedef {Exclude<import('unist-util-is').Test, undefined> | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate<Check, Value> extends Value\n * ? Predicate<Check, Value>\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends Array<any>\n * ? MatchesOne<Value, Check[keyof Check]>\n * : MatchesOne<Value, Check>\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array<infer Children>}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent<InclusiveDescendant<Tree>, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent<Node, Child>\n * | InternalAncestor<Node, InternalParent<Node, Child>, Max, Increment<Depth>>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {InternalAncestor<InclusiveDescendant<Tree>, Child>} Ancestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant<Tree['children'][number], Max, Increment<Depth>>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn’t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {'skip' | boolean} Action\n * Union of the action types.\n *\n * @typedef {number} Index\n * Move to the sibling at `index` next (after node itself is completely\n * traversed).\n *\n * Useful if mutating the tree, such as removing the node the visitor is\n * currently on, or any of its previous siblings.\n * Results less than 0 or greater than or equal to `children.length` stop\n * traversing the parent.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n * List with one or two values, the first an action, the second an index.\n *\n * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult\n * Any value that can be returned from a visitor.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform the parent of node (the last of `ancestors`).\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of an ancestor still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Array<VisitedParents>} ancestors\n * Ancestors of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [VisitedParents=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor<Matches<InclusiveDescendant<Tree>, Check>, Ancestor<Tree, Matches<InclusiveDescendant<Tree>, Check>>>} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parents`.\n * @template {UnistNode} [Tree=UnistNode]\n * Tree type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from 'unist-util-visit-parents/do-not-use-color'\n\n/** @type {Readonly<ActionTuple>} */\nconst empty = []\n\n/**\n * Continue traversing as normal.\n */\nexport const CONTINUE = true\n\n/**\n * Stop traversing immediately.\n */\nexport const EXIT = false\n\n/**\n * Do not traverse this node’s children.\n */\nexport const SKIP = 'skip'\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor<Tree, Check>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor<Tree>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} test\n * `unist-util-is`-compatible test\n * @param {Visitor | boolean | null | undefined} [visitor]\n * Handle each node.\n * @param {boolean | null | undefined} [reverse]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visitParents(tree, test, visitor, reverse) {\n /** @type {Test} */\n let check\n\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n // @ts-expect-error no visitor given, so `visitor` is test.\n visitor = test\n } else {\n // @ts-expect-error visitor given, so `test` isn’t a visitor.\n check = test\n }\n\n const is = convert(check)\n const step = reverse ? -1 : 1\n\n factory(tree, undefined, [])()\n\n /**\n * @param {UnistNode} node\n * @param {number | undefined} index\n * @param {Array<UnistParent>} parents\n */\n function factory(node, index, parents) {\n const value = /** @type {Record<string, unknown>} */ (\n node && typeof node === 'object' ? node : {}\n )\n\n if (typeof value.type === 'string') {\n const name =\n // `hast`\n typeof value.tagName === 'string'\n ? value.tagName\n : // `xast`\n typeof value.name === 'string'\n ? value.name\n : undefined\n\n Object.defineProperty(visit, 'name', {\n value:\n 'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')'\n })\n }\n\n return visit\n\n function visit() {\n /** @type {Readonly<ActionTuple>} */\n let result = empty\n /** @type {Readonly<ActionTuple>} */\n let subresult\n /** @type {number} */\n let offset\n /** @type {Array<UnistParent>} */\n let grandparents\n\n if (!test || is(node, index, parents[parents.length - 1] || undefined)) {\n // @ts-expect-error: `visitor` is now a visitor.\n result = toResult(visitor(node, parents))\n\n if (result[0] === EXIT) {\n return result\n }\n }\n\n if ('children' in node && node.children) {\n const nodeAsParent = /** @type {UnistParent} */ (node)\n\n if (nodeAsParent.children && result[0] !== SKIP) {\n offset = (reverse ? nodeAsParent.children.length : -1) + step\n grandparents = parents.concat(nodeAsParent)\n\n while (offset > -1 && offset < nodeAsParent.children.length) {\n const child = nodeAsParent.children[offset]\n\n subresult = factory(child, offset, grandparents)()\n\n if (subresult[0] === EXIT) {\n return subresult\n }\n\n offset =\n typeof subresult[1] === 'number' ? subresult[1] : offset + step\n }\n }\n }\n\n return result\n }\n }\n}\n\n/**\n * Turn a return value into a clean result.\n *\n * @param {VisitorResult} value\n * Valid return values from visitors.\n * @returns {Readonly<ActionTuple>}\n * Clean result.\n */\nfunction toResult(value) {\n if (Array.isArray(value)) {\n return value\n }\n\n if (typeof value === 'number') {\n return [CONTINUE, value]\n }\n\n return value === null || value === undefined ? empty : [value]\n}\n","/**\n * @typedef {import('unist').Node} UnistNode\n * @typedef {import('unist').Parent} UnistParent\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n */\n\n/**\n * @typedef {Exclude<import('unist-util-is').Test, undefined> | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n// To do: use types from `unist-util-visit-parents` when it’s released.\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate<Check, Value> extends Value\n * ? Predicate<Check, Value>\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends Array<any>\n * ? MatchesOne<Value, Check[keyof Check]>\n * : MatchesOne<Value, Check>\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array<infer Children>}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent<InclusiveDescendant<Tree>, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent<Node, Child>\n * | InternalAncestor<Node, InternalParent<Node, Child>, Max, Increment<Depth>>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant<Tree['children'][number], Max, Increment<Depth>>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn’t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform `parent`.\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of `parent` still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Visited extends UnistNode ? number | undefined : never} index\n * Index of `node` in `parent`.\n * @param {Ancestor extends UnistParent ? Ancestor | undefined : never} parent\n * Parent of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [Ancestor=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor<Visited, Parent<Ancestor, Visited>>} BuildVisitorFromMatch\n * Build a typed `Visitor` function from a node and all possible parents.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Visited\n * Node type.\n * @template {UnistParent} Ancestor\n * Parent type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromMatch<\n * Matches<Descendant, Check>,\n * Extract<Descendant, UnistParent>\n * >\n * )} BuildVisitorFromDescendants\n * Build a typed `Visitor` function from a list of descendants and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Descendant\n * Node type.\n * @template {Test} Check\n * Test type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromDescendants<\n * InclusiveDescendant<Tree>,\n * Check\n * >\n * )} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} [Tree=UnistNode]\n * Node type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\nexport {CONTINUE, EXIT, SKIP} from 'unist-util-visit-parents'\n\n/**\n * Visit nodes.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor<Tree, Check>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor<Tree>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} testOrVisitor\n * `unist-util-is`-compatible test (optional, omit to pass a visitor).\n * @param {Visitor | boolean | null | undefined} [visitorOrReverse]\n * Handle each node (when test is omitted, pass `reverse`).\n * @param {boolean | null | undefined} [maybeReverse=false]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visit(tree, testOrVisitor, visitorOrReverse, maybeReverse) {\n /** @type {boolean | null | undefined} */\n let reverse\n /** @type {Test} */\n let test\n /** @type {Visitor} */\n let visitor\n\n if (\n typeof testOrVisitor === 'function' &&\n typeof visitorOrReverse !== 'function'\n ) {\n test = undefined\n visitor = testOrVisitor\n reverse = visitorOrReverse\n } else {\n // @ts-expect-error: assume the overload with test was given.\n test = testOrVisitor\n // @ts-expect-error: assume the overload with test was given.\n visitor = visitorOrReverse\n reverse = maybeReverse\n }\n\n visitParents(tree, test, overload, reverse)\n\n /**\n * @param {UnistNode} node\n * @param {Array<UnistParent>} parents\n */\n function overload(node, parents) {\n const parent = parents[parents.length - 1]\n const index = parent ? parent.children.indexOf(node) : undefined\n return visitor(node, index, parent)\n }\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n *\n * @typedef Options\n * Configuration.\n * @property {Array<Node> | null | undefined} [ancestors]\n * Stack of (inclusive) ancestor nodes surrounding the message (optional).\n * @property {Error | null | undefined} [cause]\n * Original error cause of the message (optional).\n * @property {Point | Position | null | undefined} [place]\n * Place of message (optional).\n * @property {string | null | undefined} [ruleId]\n * Category of message (optional, example: `'my-rule'`).\n * @property {string | null | undefined} [source]\n * Namespace of who sent the message (optional, example: `'my-package'`).\n */\n\nimport {stringifyPosition} from 'unist-util-stringify-position'\n\n/**\n * Message.\n */\nexport class VFileMessage extends Error {\n /**\n * Create a message for `reason`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {Options | null | undefined} [options]\n * @returns\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | Options | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns\n * Instance of `VFileMessage`.\n */\n // eslint-disable-next-line complexity\n constructor(causeOrReason, optionsOrParentOrPlace, origin) {\n super()\n\n if (typeof optionsOrParentOrPlace === 'string') {\n origin = optionsOrParentOrPlace\n optionsOrParentOrPlace = undefined\n }\n\n /** @type {string} */\n let reason = ''\n /** @type {Options} */\n let options = {}\n let legacyCause = false\n\n if (optionsOrParentOrPlace) {\n // Point.\n if (\n 'line' in optionsOrParentOrPlace &&\n 'column' in optionsOrParentOrPlace\n ) {\n options = {place: optionsOrParentOrPlace}\n }\n // Position.\n else if (\n 'start' in optionsOrParentOrPlace &&\n 'end' in optionsOrParentOrPlace\n ) {\n options = {place: optionsOrParentOrPlace}\n }\n // Node.\n else if ('type' in optionsOrParentOrPlace) {\n options = {\n ancestors: [optionsOrParentOrPlace],\n place: optionsOrParentOrPlace.position\n }\n }\n // Options.\n else {\n options = {...optionsOrParentOrPlace}\n }\n }\n\n if (typeof causeOrReason === 'string') {\n reason = causeOrReason\n }\n // Error.\n else if (!options.cause && causeOrReason) {\n legacyCause = true\n reason = causeOrReason.message\n options.cause = causeOrReason\n }\n\n if (!options.ruleId && !options.source && typeof origin === 'string') {\n const index = origin.indexOf(':')\n\n if (index === -1) {\n options.ruleId = origin\n } else {\n options.source = origin.slice(0, index)\n options.ruleId = origin.slice(index + 1)\n }\n }\n\n if (!options.place && options.ancestors && options.ancestors) {\n const parent = options.ancestors[options.ancestors.length - 1]\n\n if (parent) {\n options.place = parent.position\n }\n }\n\n const start =\n options.place && 'start' in options.place\n ? options.place.start\n : options.place\n\n /* eslint-disable no-unused-expressions */\n /**\n * Stack of ancestor nodes surrounding the message.\n *\n * @type {Array<Node> | undefined}\n */\n this.ancestors = options.ancestors || undefined\n\n /**\n * Original error cause of the message.\n *\n * @type {Error | undefined}\n */\n this.cause = options.cause || undefined\n\n /**\n * Starting column of message.\n *\n * @type {number | undefined}\n */\n this.column = start ? start.column : undefined\n\n /**\n * State of problem.\n *\n * * `true` — error, file not usable\n * * `false` — warning, change may be needed\n * * `undefined` — change likely not needed\n *\n * @type {boolean | null | undefined}\n */\n this.fatal = undefined\n\n /**\n * Path of a file (used throughout the `VFile` ecosystem).\n *\n * @type {string | undefined}\n */\n this.file\n\n // Field from `Error`.\n /**\n * Reason for message.\n *\n * @type {string}\n */\n this.message = reason\n\n /**\n * Starting line of error.\n *\n * @type {number | undefined}\n */\n this.line = start ? start.line : undefined\n\n // Field from `Error`.\n /**\n * Serialized positional info of message.\n *\n * On normal errors, this would be something like `ParseError`, buit in\n * `VFile` messages we use this space to show where an error happened.\n */\n this.name = stringifyPosition(options.place) || '1:1'\n\n /**\n * Place of message.\n *\n * @type {Point | Position | undefined}\n */\n this.place = options.place || undefined\n\n /**\n * Reason for message, should use markdown.\n *\n * @type {string}\n */\n this.reason = this.message\n\n /**\n * Category of message (example: `'my-rule'`).\n *\n * @type {string | undefined}\n */\n this.ruleId = options.ruleId || undefined\n\n /**\n * Namespace of message (example: `'my-package'`).\n *\n * @type {string | undefined}\n */\n this.source = options.source || undefined\n\n // Field from `Error`.\n /**\n * Stack of message.\n *\n * This is used by normal errors to show where something happened in\n * programming code, irrelevant for `VFile` messages,\n *\n * @type {string}\n */\n this.stack =\n legacyCause && options.cause && typeof options.cause.stack === 'string'\n ? options.cause.stack\n : ''\n\n // The following fields are “well known”.\n // Not standard.\n // Feel free to add other non-standard fields to your messages.\n\n /**\n * Specify the source value that’s being reported, which is deemed\n * incorrect.\n *\n * @type {string | undefined}\n */\n this.actual\n\n /**\n * Suggest acceptable values that can be used instead of `actual`.\n *\n * @type {Array<string> | undefined}\n */\n this.expected\n\n /**\n * Long form description of the message (you should use markdown).\n *\n * @type {string | undefined}\n */\n this.note\n\n /**\n * Link to docs for the message.\n *\n * > 👉 **Note**: this must be an absolute URL that can be passed as `x`\n * > to `new URL(x)`.\n *\n * @type {string | undefined}\n */\n this.url\n /* eslint-enable no-unused-expressions */\n }\n}\n\nVFileMessage.prototype.file = ''\nVFileMessage.prototype.name = ''\nVFileMessage.prototype.reason = ''\nVFileMessage.prototype.message = ''\nVFileMessage.prototype.stack = ''\nVFileMessage.prototype.column = undefined\nVFileMessage.prototype.line = undefined\nVFileMessage.prototype.ancestors = undefined\nVFileMessage.prototype.cause = undefined\nVFileMessage.prototype.fatal = undefined\nVFileMessage.prototype.place = undefined\nVFileMessage.prototype.ruleId = undefined\nVFileMessage.prototype.source = undefined\n","/**\n * @import {Node, Point, Position} from 'unist'\n * @import {Options as MessageOptions} from 'vfile-message'\n * @import {Compatible, Data, Map, Options, Value} from 'vfile'\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n */\n\nimport {VFileMessage} from 'vfile-message'\nimport {minpath} from '#minpath'\nimport {minproc} from '#minproc'\nimport {urlToPath, isUrl} from '#minurl'\n\n/**\n * Order of setting (least specific to most), we need this because otherwise\n * `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n * stem can be set.\n */\nconst order = /** @type {const} */ ([\n 'history',\n 'path',\n 'basename',\n 'stem',\n 'extname',\n 'dirname'\n])\n\nexport class VFile {\n /**\n * Create a new virtual file.\n *\n * `options` is treated as:\n *\n * * `string` or `Uint8Array` — `{value: options}`\n * * `URL` — `{path: options}`\n * * `VFile` — shallow copies its data over to the new file\n * * `object` — all fields are shallow copied over to the new file\n *\n * Path related fields are set in the following order (least specific to\n * most specific): `history`, `path`, `basename`, `stem`, `extname`,\n * `dirname`.\n *\n * You cannot set `dirname` or `extname` without setting either `history`,\n * `path`, `basename`, or `stem` too.\n *\n * @param {Compatible | null | undefined} [value]\n * File value.\n * @returns\n * New instance.\n */\n constructor(value) {\n /** @type {Options | VFile} */\n let options\n\n if (!value) {\n options = {}\n } else if (isUrl(value)) {\n options = {path: value}\n } else if (typeof value === 'string' || isUint8Array(value)) {\n options = {value}\n } else {\n options = value\n }\n\n /* eslint-disable no-unused-expressions */\n\n /**\n * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n *\n * @type {string}\n */\n // Prevent calling `cwd` (which could be expensive) if it’s not needed;\n // the empty string will be overridden in the next block.\n this.cwd = 'cwd' in options ? '' : minproc.cwd()\n\n /**\n * Place to store custom info (default: `{}`).\n *\n * It’s OK to store custom data directly on the file but moving it to\n * `data` is recommended.\n *\n * @type {Data}\n */\n this.data = {}\n\n /**\n * List of file paths the file moved between.\n *\n * The first is the original path and the last is the current path.\n *\n * @type {Array<string>}\n */\n this.history = []\n\n /**\n * List of messages associated with the file.\n *\n * @type {Array<VFileMessage>}\n */\n this.messages = []\n\n /**\n * Raw value.\n *\n * @type {Value}\n */\n this.value\n\n // The below are non-standard, they are “well-known”.\n // As in, used in several tools.\n /**\n * Source map.\n *\n * This type is equivalent to the `RawSourceMap` type from the `source-map`\n * module.\n *\n * @type {Map | null | undefined}\n */\n this.map\n\n /**\n * Custom, non-string, compiled, representation.\n *\n * This is used by unified to store non-string results.\n * One example is when turning markdown into React nodes.\n *\n * @type {unknown}\n */\n this.result\n\n /**\n * Whether a file was saved to disk.\n *\n * This is used by vfile reporters.\n *\n * @type {boolean}\n */\n this.stored\n /* eslint-enable no-unused-expressions */\n\n // Set path related properties in the correct order.\n let index = -1\n\n while (++index < order.length) {\n const field = order[index]\n\n // Note: we specifically use `in` instead of `hasOwnProperty` to accept\n // `vfile`s too.\n if (\n field in options &&\n options[field] !== undefined &&\n options[field] !== null\n ) {\n // @ts-expect-error: TS doesn’t understand basic reality.\n this[field] = field === 'history' ? [...options[field]] : options[field]\n }\n }\n\n /** @type {string} */\n let field\n\n // Set non-path related properties.\n for (field in options) {\n // @ts-expect-error: fine to set other things.\n if (!order.includes(field)) {\n // @ts-expect-error: fine to set other things.\n this[field] = options[field]\n }\n }\n }\n\n /**\n * Get the basename (including extname) (example: `'index.min.js'`).\n *\n * @returns {string | undefined}\n * Basename.\n */\n get basename() {\n return typeof this.path === 'string'\n ? minpath.basename(this.path)\n : undefined\n }\n\n /**\n * Set basename (including extname) (`'index.min.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} basename\n * Basename.\n * @returns {undefined}\n * Nothing.\n */\n set basename(basename) {\n assertNonEmpty(basename, 'basename')\n assertPart(basename, 'basename')\n this.path = minpath.join(this.dirname || '', basename)\n }\n\n /**\n * Get the parent path (example: `'~'`).\n *\n * @returns {string | undefined}\n * Dirname.\n */\n get dirname() {\n return typeof this.path === 'string'\n ? minpath.dirname(this.path)\n : undefined\n }\n\n /**\n * Set the parent path (example: `'~'`).\n *\n * Cannot be set if there’s no `path` yet.\n *\n * @param {string | undefined} dirname\n * Dirname.\n * @returns {undefined}\n * Nothing.\n */\n set dirname(dirname) {\n assertPath(this.basename, 'dirname')\n this.path = minpath.join(dirname || '', this.basename)\n }\n\n /**\n * Get the extname (including dot) (example: `'.js'`).\n *\n * @returns {string | undefined}\n * Extname.\n */\n get extname() {\n return typeof this.path === 'string'\n ? minpath.extname(this.path)\n : undefined\n }\n\n /**\n * Set the extname (including dot) (example: `'.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be set if there’s no `path` yet.\n *\n * @param {string | undefined} extname\n * Extname.\n * @returns {undefined}\n * Nothing.\n */\n set extname(extname) {\n assertPart(extname, 'extname')\n assertPath(this.dirname, 'extname')\n\n if (extname) {\n if (extname.codePointAt(0) !== 46 /* `.` */) {\n throw new Error('`extname` must start with `.`')\n }\n\n if (extname.includes('.', 1)) {\n throw new Error('`extname` cannot contain multiple dots')\n }\n }\n\n this.path = minpath.join(this.dirname, this.stem + (extname || ''))\n }\n\n /**\n * Get the full path (example: `'~/index.min.js'`).\n *\n * @returns {string}\n * Path.\n */\n get path() {\n return this.history[this.history.length - 1]\n }\n\n /**\n * Set the full path (example: `'~/index.min.js'`).\n *\n * Cannot be nullified.\n * You can set a file URL (a `URL` object with a `file:` protocol) which will\n * be turned into a path with `url.fileURLToPath`.\n *\n * @param {URL | string} path\n * Path.\n * @returns {undefined}\n * Nothing.\n */\n set path(path) {\n if (isUrl(path)) {\n path = urlToPath(path)\n }\n\n assertNonEmpty(path, 'path')\n\n if (this.path !== path) {\n this.history.push(path)\n }\n }\n\n /**\n * Get the stem (basename w/o extname) (example: `'index.min'`).\n *\n * @returns {string | undefined}\n * Stem.\n */\n get stem() {\n return typeof this.path === 'string'\n ? minpath.basename(this.path, this.extname)\n : undefined\n }\n\n /**\n * Set the stem (basename w/o extname) (example: `'index.min'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} stem\n * Stem.\n * @returns {undefined}\n * Nothing.\n */\n set stem(stem) {\n assertNonEmpty(stem, 'stem')\n assertPart(stem, 'stem')\n this.path = minpath.join(this.dirname || '', stem + (this.extname || ''))\n }\n\n // Normal prototypal methods.\n /**\n * Create a fatal message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `true` (error; file not usable)\n * and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {never}\n * Never.\n * @throws {VFileMessage}\n * Message.\n */\n fail(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = true\n\n throw message\n }\n\n /**\n * Create an info message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `undefined` (info; change\n * likely not needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n info(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = undefined\n\n return message\n }\n\n /**\n * Create a message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `false` (warning; change may be\n * needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n message(causeOrReason, optionsOrParentOrPlace, origin) {\n const message = new VFileMessage(\n // @ts-expect-error: the overloads are fine.\n causeOrReason,\n optionsOrParentOrPlace,\n origin\n )\n\n if (this.path) {\n message.name = this.path + ':' + message.name\n message.file = this.path\n }\n\n message.fatal = false\n\n this.messages.push(message)\n\n return message\n }\n\n /**\n * Serialize the file.\n *\n * > **Note**: which encodings are supported depends on the engine.\n * > For info on Node.js, see:\n * > <https://nodejs.org/api/util.html#whatwg-supported-encodings>.\n *\n * @param {string | null | undefined} [encoding='utf8']\n * Character encoding to understand `value` as when it’s a `Uint8Array`\n * (default: `'utf-8'`).\n * @returns {string}\n * Serialized file.\n */\n toString(encoding) {\n if (this.value === undefined) {\n return ''\n }\n\n if (typeof this.value === 'string') {\n return this.value\n }\n\n const decoder = new TextDecoder(encoding || undefined)\n return decoder.decode(this.value)\n }\n}\n\n/**\n * Assert that `part` is not a path (as in, does not contain `path.sep`).\n *\n * @param {string | null | undefined} part\n * File path part.\n * @param {string} name\n * Part name.\n * @returns {undefined}\n * Nothing.\n */\nfunction assertPart(part, name) {\n if (part && part.includes(minpath.sep)) {\n throw new Error(\n '`' + name + '` cannot be a path: did not expect `' + minpath.sep + '`'\n )\n }\n}\n\n/**\n * Assert that `part` is not empty.\n *\n * @param {string | undefined} part\n * Thing.\n * @param {string} name\n * Part name.\n * @returns {asserts part is string}\n * Nothing.\n */\nfunction assertNonEmpty(part, name) {\n if (!part) {\n throw new Error('`' + name + '` cannot be empty')\n }\n}\n\n/**\n * Assert `path` exists.\n *\n * @param {string | undefined} path\n * Path.\n * @param {string} name\n * Dependency name.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path, name) {\n if (!path) {\n throw new Error('Setting `' + name + '` requires `path` to be set too')\n }\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n","// A derivative work based on:\n// <https://github.com/browserify/path-browserify>.\n// Which is licensed:\n//\n// MIT License\n//\n// Copyright (c) 2013 James Halliday\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A derivative work based on:\n//\n// Parts of that are extracted from Node’s internal `path` module:\n// <https://github.com/nodejs/node/blob/master/lib/path.js>.\n// Which is licensed:\n//\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nexport const minpath = {basename, dirname, extname, join, sep: '/'}\n\n/* eslint-disable max-depth, complexity */\n\n/**\n * Get the basename from a path.\n *\n * @param {string} path\n * File path.\n * @param {string | null | undefined} [extname]\n * Extension to strip.\n * @returns {string}\n * Stem or basename.\n */\nfunction basename(path, extname) {\n if (extname !== undefined && typeof extname !== 'string') {\n throw new TypeError('\"ext\" argument must be a string')\n }\n\n assertPath(path)\n let start = 0\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let seenNonSlash\n\n if (\n extname === undefined ||\n extname.length === 0 ||\n extname.length > path.length\n ) {\n while (index--) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // path component.\n seenNonSlash = true\n end = index + 1\n }\n }\n\n return end < 0 ? '' : path.slice(start, end)\n }\n\n if (extname === path) {\n return ''\n }\n\n let firstNonSlashEnd = -1\n let extnameIndex = extname.length - 1\n\n while (index--) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else {\n if (firstNonSlashEnd < 0) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching.\n seenNonSlash = true\n firstNonSlashEnd = index + 1\n }\n\n if (extnameIndex > -1) {\n // Try to match the explicit extension.\n if (path.codePointAt(index) === extname.codePointAt(extnameIndex--)) {\n if (extnameIndex < 0) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = index\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extnameIndex = -1\n end = firstNonSlashEnd\n }\n }\n }\n }\n\n if (start === end) {\n end = firstNonSlashEnd\n } else if (end < 0) {\n end = path.length\n }\n\n return path.slice(start, end)\n}\n\n/**\n * Get the dirname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\nfunction dirname(path) {\n assertPath(path)\n\n if (path.length === 0) {\n return '.'\n }\n\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n // Prefix `--` is important to not run on `0`.\n while (--index) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n if (unmatchedSlash) {\n end = index\n break\n }\n } else if (!unmatchedSlash) {\n // We saw the first non-path separator\n unmatchedSlash = true\n }\n }\n\n return end < 0\n ? path.codePointAt(0) === 47 /* `/` */\n ? '/'\n : '.'\n : end === 1 && path.codePointAt(0) === 47 /* `/` */\n ? '//'\n : path.slice(0, end)\n}\n\n/**\n * Get an extname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * Extname.\n */\nfunction extname(path) {\n assertPath(path)\n\n let index = path.length\n\n let end = -1\n let startPart = 0\n let startDot = -1\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find.\n let preDotState = 0\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n while (index--) {\n const code = path.codePointAt(index)\n\n if (code === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (unmatchedSlash) {\n startPart = index + 1\n break\n }\n\n continue\n }\n\n if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // extension.\n unmatchedSlash = true\n end = index + 1\n }\n\n if (code === 46 /* `.` */) {\n // If this is our first dot, mark it as the start of our extension.\n if (startDot < 0) {\n startDot = index\n } else if (preDotState !== 1) {\n preDotState = 1\n }\n } else if (startDot > -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension.\n preDotState = -1\n }\n }\n\n if (\n startDot < 0 ||\n end < 0 ||\n // We saw a non-dot character immediately before the dot.\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly `..`.\n (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n ) {\n return ''\n }\n\n return path.slice(startDot, end)\n}\n\n/**\n * Join segments from a path.\n *\n * @param {Array<string>} segments\n * Path segments.\n * @returns {string}\n * File path.\n */\nfunction join(...segments) {\n let index = -1\n /** @type {string | undefined} */\n let joined\n\n while (++index < segments.length) {\n assertPath(segments[index])\n\n if (segments[index]) {\n joined =\n joined === undefined ? segments[index] : joined + '/' + segments[index]\n }\n }\n\n return joined === undefined ? '.' : normalize(joined)\n}\n\n/**\n * Normalize a basic file path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\n// Note: `normalize` is not exposed as `path.normalize`, so some code is\n// manually removed from it.\nfunction normalize(path) {\n assertPath(path)\n\n const absolute = path.codePointAt(0) === 47 /* `/` */\n\n // Normalize the path according to POSIX rules.\n let value = normalizeString(path, !absolute)\n\n if (value.length === 0 && !absolute) {\n value = '.'\n }\n\n if (value.length > 0 && path.codePointAt(path.length - 1) === 47 /* / */) {\n value += '/'\n }\n\n return absolute ? '/' + value : value\n}\n\n/**\n * Resolve `.` and `..` elements in a path with directory names.\n *\n * @param {string} path\n * File path.\n * @param {boolean} allowAboveRoot\n * Whether `..` can move above root.\n * @returns {string}\n * File path.\n */\nfunction normalizeString(path, allowAboveRoot) {\n let result = ''\n let lastSegmentLength = 0\n let lastSlash = -1\n let dots = 0\n let index = -1\n /** @type {number | undefined} */\n let code\n /** @type {number} */\n let lastSlashIndex\n\n while (++index <= path.length) {\n if (index < path.length) {\n code = path.codePointAt(index)\n } else if (code === 47 /* `/` */) {\n break\n } else {\n code = 47 /* `/` */\n }\n\n if (code === 47 /* `/` */) {\n if (lastSlash === index - 1 || dots === 1) {\n // Empty.\n } else if (lastSlash !== index - 1 && dots === 2) {\n if (\n result.length < 2 ||\n lastSegmentLength !== 2 ||\n result.codePointAt(result.length - 1) !== 46 /* `.` */ ||\n result.codePointAt(result.length - 2) !== 46 /* `.` */\n ) {\n if (result.length > 2) {\n lastSlashIndex = result.lastIndexOf('/')\n\n if (lastSlashIndex !== result.length - 1) {\n if (lastSlashIndex < 0) {\n result = ''\n lastSegmentLength = 0\n } else {\n result = result.slice(0, lastSlashIndex)\n lastSegmentLength = result.length - 1 - result.lastIndexOf('/')\n }\n\n lastSlash = index\n dots = 0\n continue\n }\n } else if (result.length > 0) {\n result = ''\n lastSegmentLength = 0\n lastSlash = index\n dots = 0\n continue\n }\n }\n\n if (allowAboveRoot) {\n result = result.length > 0 ? result + '/..' : '..'\n lastSegmentLength = 2\n }\n } else {\n if (result.length > 0) {\n result += '/' + path.slice(lastSlash + 1, index)\n } else {\n result = path.slice(lastSlash + 1, index)\n }\n\n lastSegmentLength = index - lastSlash - 1\n }\n\n lastSlash = index\n dots = 0\n } else if (code === 46 /* `.` */ && dots > -1) {\n dots++\n } else {\n dots = -1\n }\n }\n\n return result\n}\n\n/**\n * Make sure `path` is a string.\n *\n * @param {string} path\n * File path.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError(\n 'Path must be a string. Received ' + JSON.stringify(path)\n )\n }\n}\n\n/* eslint-enable max-depth, complexity */\n","// Somewhat based on:\n// <https://github.com/defunctzombie/node-process/blob/master/browser.js>.\n// But I don’t think one tiny line of code can be copyrighted. 😅\nexport const minproc = {cwd}\n\nfunction cwd() {\n return '/'\n}\n","import {isUrl} from './minurl.shared.js'\n\nexport {isUrl} from './minurl.shared.js'\n\n// See: <https://github.com/nodejs/node/blob/6a3403c/lib/internal/url.js>\n\n/**\n * @param {URL | string} path\n * File URL.\n * @returns {string}\n * File URL.\n */\nexport function urlToPath(path) {\n if (typeof path === 'string') {\n path = new URL(path)\n } else if (!isUrl(path)) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'The \"path\" argument must be of type string or an instance of URL. Received `' +\n path +\n '`'\n )\n error.code = 'ERR_INVALID_ARG_TYPE'\n throw error\n }\n\n if (path.protocol !== 'file:') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError('The URL must be of scheme file')\n error.code = 'ERR_INVALID_URL_SCHEME'\n throw error\n }\n\n return getPathFromURLPosix(path)\n}\n\n/**\n * Get a path from a POSIX URL.\n *\n * @param {URL} url\n * URL.\n * @returns {string}\n * File path.\n */\nfunction getPathFromURLPosix(url) {\n if (url.hostname !== '') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL host must be \"localhost\" or empty on darwin'\n )\n error.code = 'ERR_INVALID_FILE_URL_HOST'\n throw error\n }\n\n const pathname = url.pathname\n let index = -1\n\n while (++index < pathname.length) {\n if (\n pathname.codePointAt(index) === 37 /* `%` */ &&\n pathname.codePointAt(index + 1) === 50 /* `2` */\n ) {\n const third = pathname.codePointAt(index + 2)\n if (third === 70 /* `F` */ || third === 102 /* `f` */) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL path must not include encoded / characters'\n )\n error.code = 'ERR_INVALID_FILE_URL_PATH'\n throw error\n }\n }\n }\n\n return decodeURIComponent(pathname)\n}\n","/**\n * Checks if a value has the shape of a WHATWG URL object.\n *\n * Using a symbol or instanceof would not be able to recognize URL objects\n * coming from other implementations (e.g. in Electron), so instead we are\n * checking some well known properties for a lack of a better test.\n *\n * We use `href` and `protocol` as they are the only properties that are\n * easy to retrieve and calculate due to the lazy nature of the getters.\n *\n * We check for auth attribute to distinguish legacy url instance with\n * WHATWG URL instance.\n *\n * @param {unknown} fileUrlOrPath\n * File path or URL.\n * @returns {fileUrlOrPath is URL}\n * Whether it’s a URL.\n */\n// From: <https://github.com/nodejs/node/blob/6a3403c/lib/internal/url.js#L720>\nexport function isUrl(fileUrlOrPath) {\n return Boolean(\n fileUrlOrPath !== null &&\n typeof fileUrlOrPath === 'object' &&\n 'href' in fileUrlOrPath &&\n fileUrlOrPath.href &&\n 'protocol' in fileUrlOrPath &&\n fileUrlOrPath.protocol &&\n // @ts-expect-error: indexing is fine.\n fileUrlOrPath.auth === undefined\n )\n}\n"],"names":["hasOwn","hasOwnProperty","classNames","args","classes","i","length","arg","appendClass","parseValue","Array","isArray","toString","Object","prototype","includes","key","call","value","newClass","e","t","n","r","document","a","s","prepend","d","singleTag","container","querySelector","getElementsByTagName","u","indexOf","push","c","charCodeAt","substring","styleSheet","cssText","appendChild","createTextNode","createElement","setAttribute","attributes","keys","insertAdjacentElement","modules_a1601a7d","Title","fontStyle","bold","children","maxRows","ellipsis","loading","rest","getTitleClassName","className","style","suppressHydrationWarning","whiteSpace","modules_e00953a9","Icon","props","width","height","parentRef","dataTestId","iconPath","setIconPath","useState","updateSvg","colorSvg","childrenObject","result","map","child","type","originalProps","updatedProps","stroke","fill","updateSvgHandler","getParentTextColor","textColor","current","window","getComputedStyle","getPropertyValue","getIconColorByClassName","iconColor","elements","getElementsByClassName","disabled","handleMouseOver","hoverColor","handleMouseLeave","prevColor","addEventListener","removeEventListener","getSvgWidth","w","getSvgHeight","h","viewBox","xmlns","getClassName","title","dynemicHeight","Button","icon","onClick","buttonRef","useRef","ref","Picker","options","placeholder","onOptionSelected","description","pickerButtonRef","isOpen","setIsOpen","overlayTop","setOverlayTop","selectedIndex","setSelectedIndex","useEffect","offsetHeight","arrow","strokeWidth","strokeLinecap","strokeLinejoin","top","o","index","option","onOptionClick","MenuItem","active","label","itemRef","defaultAvatarUrl","Avatar","size","imgSrc","topOverlayContainer","bottomOverlayContainer","transformContainer","hideBorders","renderBottomOverlayContainer","renderOverlaysContainer","getImgContainerHolderClassName","forEach","src","alt","modules_9325e332","StatusIndicator","status","rounded","getStatusIndicatorContentClassName","statusText","charAt","toUpperCase","slice","renderStatusIndicatorText","Input","error","leftIcon","rightIcon","maxLength","lines","onChange","onKeyDown","text","setText","textLength","setTextLength","characterCount","inputRef","classNameValue","event","newText","target","tabIndex","name","rows","Footer","links","termsLinks","logo","companyInfo","socialLinks","logoAction","appLinks","href","rel","link","itemsLink","path","term","Speciality","speciality","renderTitle","renderIcon","kindCaseCaterpillar","iconName","replace","specialityIcon","iconUrl","specialityTitle","titleFontStyleDesktop","titleFontStyleMobile","descriptionFontStyleDesktop","descriptionFontStyleMobile","MyOrdersRightArrow","withReview","reviewType","renderReview","cx","cy","MyOrdersAdvisorCell","advisorName","advisorServiceName","advisorStatus","orderTitle","labels","labelMobile","labelBrowser","renderMyOrdersAdvisorCell","modules_1a8f5c5e","Label","labelType","modules_c372949e","MyOrdersSectionDivider","liveChat","fillRule","clipRule","videoCall","voiceCall","clock","MyOrdersOrderCell","orderSubject","orderCreatedAt","orderDescription","getOrderIcon","renderOrderTitle","orderIcon","renderOrderIcon","ChatBubble","message","isUser","time","avatarSrc","now","Date","hours","getHours","minutes","getMinutes","ampm","timeOnBubble","padStart","Table","tableColumnsHeaders","data","tableTotalData","header","item","date","invoiceId","paymentData","currency","amount","source","total","cashBack","percentage","DurationItem","duration","durationText","durationSubText","mostPopular","selected","onDurationSelected","isNewUser","topLabel","useYourBalanceText","secondsText","bottomContainer","priceContainer","selectedClassName","renderAdditionalText","useCallback","FilterTab","activeColorClass","modules_21d2064f","Switch","id","checked","onSwitcherChange","htmlFor","displayName","playButtonIcon","modules_547ff120","PlayButton","RatingIcon","modules_a2428c96","Rating","rating","withBorder","modules_fbf318e2","ChannelsCard","liveModes","getLiveModeIcon","modeType","modeState","skeleton","renderLiveModesIcons","liveMode","mode","correctModeType","getCorrectModeType","renderLiveModeIcon","modules_1229886e","LiveModesPrices","liveModeMinPrices","liveModeMinPrice","liveModeMinSalesPrice","liveModeFromText","liveModeMinPriceTitle","liveModeMinSalesPriceTitle","liveModeFromTextFontStyle","liveModeMinPriceTitleFontStyle","liveModeMinPriceCrosePriceFontStyle","priceValue","priceClassName","renderPrice","modules_4204a613","ReadingSinceAndCount","readingData","readingsCount","yearJoined","getFontStyle","StaffPickSmall","playButtonOnClick","staffPickText","renderStaffPickSmallContent","leftBottom","rightBottom","StaffPickBig","renderAdvisorNameAndRating","renderChannelsCardAndReadingSince","rightTop","StaffPick","statusIndicatorStatus","rightArrowIcon","hourglassIcon","refreshIcon","checkmarkIcon","MethodCell","img","subText","renderIconAndText","renderRightIcon","getRightIcon","deleteIcon","PaymentMethodDetails","kind","isDefault","onRemove","sourceTypeTitle","defaultTitle","last4","onMakeDefault","onlyPaymentSource","fullName","paypalBillingAgreementEmail","expiredTitle","deleteButtonText","renderSourceDetailsHeader","ChatIcon","VoiceIcon","VideoIcon","ChanelButton","offline","busy","price","newPrice","titleText","startButtonText","profileChannelButtonImage","leftArrowIcon","scrollElementTypes","AdvisorSection","advisorSectionId","advisorSectionTitle","advisorSectionShortDescriptions","advisorSectionContent","elementsCount","needScrollOnBrowser","maxElementsCount","elementsCountPhone","elementsCountTablet","elementsCountLaptop","elementsCountDesktop","windowInnerWidth","setWindowInnerWidth","innerWidth","showLeftScrollElement","setShowLeftScrollElement","showRightScrollElement","setShowRightScrollElement","advisorsContainerRef","advisorsContainerScrollerRef","calcScrollElementContantWidth","contentContainer","getElementById","contentContainerChildrenArray","from","contentWidth","el","parseFloat","marginLeft","needShowScrollElement","mainScrollContainer","offsetWidth","scrollLeft","scrollWidth","handleResize","handleScroll","advisorsContainer","getElementsCount","count","onScrollBtnClick","scrollContainer","currentTarget","scrollTo","left","behavior","clientWidth","getScrollElementClassName","renderScrollElements","getAdvisorsContainerClassName","renderAdvisorSectionContent","advisor","modules_c8b79225","AdvisorSectionTitleLabel","seeAllBtnOnClick","seeAllBtnText","modules_14c8d388","AdvisorSectionShortDescriptions","shortDescriptionsText","shortDescriptionsSubText","Clock","Stars","fillOpacity","ChatTypeIcon","MyOrdersDetailsItem","tabText","tabIcon","subTitle","buttonLinkText","buttonLinkIcon","buttonLinkCallBack","AdvisorListCardPG","renderDataContainer","display","alignItems","justifyContent","AdvisorListCardKA","statusIndicatorText","reviews","bonus","advisorDescription","TypingIndicator","MarketingBanner","offers","offerIcon","offer","wrapperClassName","subtitle","closeIcon","backIcon","Popover","insertNode","closeOnBackdropClick","renderCloseButton","renderBackButton","renderTopOverlay","onCloseButtonClick","onBackButtonClick","dialogRef","showModal","close","handleBackdropClick","matches","bottom","right","getBoundingClientRect","clientX","mouseX","clientY","mouseY","createPortal","undefined","body","arrowImg","Coupon","couponType","discountText","badge","couponStyleByState","titleByType","renderArrow","pem_mapping","freeze","font_styling","AvatarProps","AvatarTypes","AvatarSize","StatusIndicatorProps","StatusIndicatorStatus","StatusIndicatorSizes","SpecialityProps","SpecialityTypes","SpecialityKinds","my_orders_advisor_cell_types","review_type","label_types","label_sizings","order","filter_tab","play_button","channels_card","advisor_list_card","live_modes_prices","reading_since_and_count","staff_pick","method_cell","my_orders_details_item_type","payment_method_details","coupon_types","profile_channel_button","AvatarSizes","module","exports","define","_$breadcrumbTypes_8","_$reduce_17","arr","fn","accum","val","len","_$filter_12","concat","_$includes_13","x","_$isArray_14","obj","_hasDontEnumBug","propertyIsEnumerable","_dontEnums","_$keys_15","prop","_$intRange_24","min","max","Infinity","parseInt","_$listOfFunctions_25","f","_$stringWithLength_26","_$config_5","defaultErrorTypes","unhandledExceptions","unhandledRejections","schema","apiKey","defaultValue","validate","appVersion","appType","autoDetectErrors","enabledErrorTypes","allowPartialObject","providedKeys","defaultKeys","k","onError","onSession","onBreadcrumb","endpoints","notify","sessions","autoTrackSessions","enabledReleaseStages","releaseStage","maxBreadcrumbs","enabledBreadcrumbTypes","join","maybeType","context","user","metadata","logger","method","redactedKeys","test","plugins","p","load","featureFlags","feature","_$assign_11","arguments","_$map_16","_extends","assign","apply","this","_$config_1","location","host","console","debug","getPrefixedConsole","consoleLog","log","consoleMethod","bind","_$Breadcrumb_3","Breadcrumb","timestamp","toJSON","metaData","_$stackframe_34","root","factory","amd","StackFrame","_isNumber","isNaN","isFinite","_capitalize","str","_getter","booleanProps","numericProps","stringProps","arrayProps","getArgs","setArgs","v","TypeError","getEvalOrigin","evalOrigin","setEvalOrigin","getFunctionName","getFileName","getLineNumber","getColumnNumber","Boolean","j","Number","String","_$errorStackParser_31","ErrorStackParser","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","parse","stacktrace","parseOpera","stack","match","parseV8OrIE","parseFFOrSafari","Error","extractLocation","urlLike","parts","exec","split","filter","line","sanitizedLine","tokens","locationParts","pop","functionName","fileName","lineNumber","columnNumber","functionNameRegex","parseOpera9","parseOpera11","parseOpera10","lineRE","argsRaw","functionCall","shift","_$errorStackParser_10","_$safeJsonStringify_30","replacer","space","opts","redactedPaths","JSON","stringify","prepareObjForSerialization","MAX_DEPTH","MAX_EDGES","MIN_PRESERVED_DEPTH","REPLACEMENT_NODE","isError","throwsMessage","err","find","haystack","needle","isDescendent","paths","shouldRedact","patterns","toLowerCase","__isArray_30","safelyGetProp","seen","edges","visit","edgesExceeded","fResult","eResult","aResult","add","existingFeatures","existingFeatureKeys","variant","existingIndex","merge","newFeatures","toEventApi","_ref","flag","featureFlag","clear","features","featuresIndex","_$featureFlagDelegate_18","_$hasStack_19","__isError_32","_$iserror_20","__add_22","state","section","keyOrObj","maybeVal","_updates","updates","__clear_22","_$metadataDelegate_22","get","_$stackGenerator_33","StackGenerator","backtrace","maxStackSize","curr","callee","RegExp","$1","caller","Event","errorClass","errorMessage","handledState","originalError","defaultHandledState","groupingHash","_handledState","severity","unhandled","app","device","request","breadcrumbs","threads","_metadata","_features","_featuresIndex","_user","_session","errors","createBugsnagError","__type","_proto","addMetadata","getMetadata","clearMetadata","addFeatureFlag","addFeatureFlags","getFeatureFlags","clearFeatureFlag","clearFeatureFlags","getUser","setUser","email","payloadVersion","exceptions","er","severityReason","session","formatStackframe","frame","file","normaliseFunctionName","code","inProject","ensureString","getCauseStack","cause","getStacktrace","errorFramesToSkip","backtraceFramesToSkip","create","maybeError","tolerateNonErrors","component","_normaliseError","normaliseError","internalFrames","makeSerialisable","_event$errors","causes","normalisedCauses","createAndLogInputError","reason","verb","warn","hasNecessaryFields","_$Event_6","_$asyncEvery_7","cb","next","_$callbackRunner_9","callbacks","onCallbackError","runMaybeAsyncCallback","ret","then","setTimeout","_$syncCallbackRunner_23","callbackArg","callbackType","ignore","cbs","_$pad_29","num","substr","env","self","globalCount","mimeTypesLength","navigator","mimeTypes","clientId","userAgent","_$fingerprint_28","blockSize","base","discreteValues","Math","pow","randomBlock","random","safeCounter","cuid","getTime","fingerprint","_$cuid_27","_$Session_35","Session","startedAt","_handled","_unhandled","events","handled","_track","__add_4","__clear_4","__merge_4","noop","Client","configuration","internalPlugins","notifier","_this","_notifier","_config","_schema","_delivery","sendSession","sendEvent","_logger","info","_plugins","_breadcrumbs","_context","_cbs","sp","b","_configure","pl","_loadPlugin","_depth","getContext","setContext","plugin","configSchema","_reduce","config","generateConfigErrorMessage","getPlugin","_setDelivery","startSession","version","_sessionDelegate","addOnError","front","removeOnError","_addOnSessionPayload","addOnSession","removeOnSession","addOnBreadcrumb","removeOnBreadcrumb","pauseSession","resumeSession","leaveBreadcrumb","crumb","_isBreadcrumbTypeEnabled","types","postReportCallback","_notify","_this2","originalSeverity","shouldSend","unhandledOverridden","rawInput","_$Client_4","_$jsonPayload_21","EVENT_REDACTION_PATHS","payload","_$delivery_36","client","win","url","getApiUrl","req","XDomainRequest","onload","onerror","toFixed","open","send","endpoint","isoDate","matchPageProtocol","protocol","encodeURIComponent","_matchPageProtocol","pageProtocol","_$delivery_37","XMLHttpRequest","onreadystatechange","readyState","DONE","setRequestHeader","toISOString","appStart","reset","_$app_38","_$context_39","pathname","_$pad_43","__env_42","__globalCount_42","__prop_42","__mimeTypesLength_42","__clientId_42","_$fingerprint_42","__c_41","__blockSize_41","__base_41","__discreteValues_41","__randomBlock_41","__safeCounter_41","__cuid_41","_$cuid_41","BUGSNAG_ANONYMOUS_ID_KEY","getDeviceId","storage","localStorage","getItem","setItem","_$device_40","nav","locale","browserLanguage","systemLanguage","userLanguage","language","screen","orientation","documentElement","clientHeight","generateAnonymousId","collectUserIp","setDefaultUserId","eventOrSession","_$request_44","_$session_45","sessionDelegate","sessionClient","_pausedSession","_$clientIp_46","clientIp","_$consoleBreadcrumbs_47","CONSOLE_LOG_METHODS","original","_len","_key","stringified","_restore","MAX_LINE_LENGTH","MAX_SCRIPT_LENGTH","_$inlineScriptContent_48","doc","trackInlineScripts","originalLocation","html","DOMContentLoaded","attachEvent","getHtml","outerHTML","prev","_lastScript","updateLastScript","script","getCurrentScript","currentScript","scripts","addSurroundingCode","htmlLines","zeroBasedLine","start","end","cleanUrl","content","innerHTML","_setTimeout","__proxy","__traceOriginalScript","eventTargetCallbackAccessor","callbackAccessor","alsoCallOriginal","cba","__trace__","replacement","isEventHandlerObj","handleEvent","_$interactionBreadcrumbs_49","targetText","targetSelector","getNodeText","getNodeSelector","trimStart","trimEnd","textContent","innerText","tagName","querySelectorAll","parentNode","childNodes","_$navigationBreadcrumbs_50","drop","oldURL","relativeLocation","to","newURL","getCurrentState","history","replaceState","wrapHistoryFn","pushState","search","hash","stateChangeToMetadata","currentPath","prevState","orig","resetEventCount","BREADCRUMB_TYPE","_$networkBreadcrumbs_51","_ignoredUrls","ignoredUrls","monkeyPatchXMLHttpRequest","monkeyPatchFetch","handleFetchSuccess","response","handleFetchError","nativeOpen","requestSetupKey","handleXHRError","handleXHRLoad","fetch","polyfill","oldFetch","_arguments","urlOrRequest","Promise","resolve","reject","_$throttle_52","maxEvents","_$stripQueryString_53","strip","allFrames","_strip","_$onerror_54","prevOnError","messageOrEvent","lineNo","charNo","decorateStack","detail","extraParameters","culprit","isActualNumber","errorCharacter","_$unhandledRejection_55","listener","evt","isBluebird","fixBluebirdStacktrace","_event$addMetadata","onunhandledrejection","promise","_$notifier_2","__schema_2","Bugsnag","_client","createClient","bugsnag","isStarted","m","_$src_1","_assertThisInitialized","ReferenceError","_inheritsLoose","subClass","superClass","constructor","_setPrototypeOf","setPrototypeOf","__proto__","BugsnagPluginReact","globalReact","React","lazy","ErrorBoundary","createClass","createErrorBoundary","BugsnagPluginReactLazyInitializer","formatComponentStack","_React$Component","handleClearError","_proto2","setState","componentDidCatch","componentStack","render","FallbackComponent","clearError","Component","CONSTANTS","NODE_CLIENT","NODE_ADMIN","SDK_VERSION","assert","assertion","assertionError","stringToByteArray$1","out","base64","byteToCharMap_","charToByteMap_","byteToCharMapWebSafe_","charToByteMapWebSafe_","ENCODED_VALS_BASE","ENCODED_VALS","ENCODED_VALS_WEBSAFE","HAS_NATIVE_SUPPORT","atob","encodeByteArray","input","webSafe","init_","byteToCharMap","output","byte1","haveByte2","byte2","haveByte3","byte3","outByte1","outByte2","outByte3","outByte4","encodeString","btoa","decodeString","bytes","pos","c1","fromCharCode","c2","c3","byteArrayToString","decodeStringToByteArray","charToByteMap","byte4","DecodeBase64StringError","super","base64Encode","utf8Bytes","base64urlEncodeWithoutPadding","base64Decode","deepCopy","deepExtend","getDefaultsFromGlobal","g","getGlobal","__FIREBASE_DEFAULTS__","getDefaults","process","defaultsJsonString","getDefaultsFromEnvVariable","cookie","decoded","getDefaultsFromCookie","getDefaultEmulatorHost","productName","_a","_b","emulatorHosts","getDefaultEmulatorHostnameAndPort","separatorIndex","lastIndexOf","port","getDefaultAppConfig","getExperimentalSetting","Deferred","wrapCallback","callback","catch","createMockUserToken","token","projectId","uid","project","iat","sub","user_id","iss","aud","exp","auth_time","firebase","sign_in_provider","identities","alg","getUA","isMobileCordova","isBrowser","isWebWorker","WorkerGlobalScope","isCloudflareWorker","isBrowserExtension","runtime","chrome","browser","isReactNative","isIE","ua","isNodeSdk","isIndexedDBAvailable","indexedDB","validateIndexedDBOpenable","preExist","DB_CHECK_NAME","onsuccess","deleteDatabase","onupgradeneeded","areCookiesEnabled","cookieEnabled","FirebaseError","customData","captureStackTrace","ErrorFactory","service","serviceName","fullCode","template","PATTERN","_","replaceTemplate","fullMessage","jsonEval","decode","claims","signature","isValidFormat","isAdmin","contains","safeGet","isEmpty","contextObj","res","deepEqual","aKeys","bKeys","aProp","bProp","isObject","thing","querystring","querystringParams","params","entries","arrayVal","querystringDecode","decodeURIComponent","extractQuerystring","queryStart","fragmentStart","Sha1","chain_","buf_","W_","pad_","inbuf_","total_","compress_","buf","offset","W","update","lengthMinusBlock","inbuf","digest","totalBits","createSubscribe","executor","onNoObservers","proxy","ObserverProxy","subscribe","observers","unsubscribes","observerCount","task","finalized","forEachObserver","observer","complete","nextOrObserver","methods","implementsAnyMethods","unsub","unsubscribeOne","finalError","sendOne","errorPrefix","fnName","argName","stringToByteArray","high","stringLength","getModularInstance","_delegate","Q","getPrototypeOf","Function","Z","L","nn","has","set","X","Map","q","Set","l","rn","writable","configurable","enumerable","y","delete","isFrozen","tn","U","O","S","P","M","H","A","I","N","R","D","z","getOwnPropertyDescriptor","E","F","T","C","en","on","Proxy","revocable","revoke","J","K","defineProperty","G","Symbol","B","Reflect","for","iterator","ownKeys","getOwnPropertySymbols","getOwnPropertyNames","getOwnPropertyDescriptors","deleteProperty","extendStatics","un","produce","produceWithPatches","useProxies","setUseProxies","autoFreeze","setAutoFreeze","createDraft","finishDraft","applyPatches","op","$","an","__extends","__","__generator","thisArg","sent","trys","ops","done","step","__spreadArray","il","__defProp","__defProps","defineProperties","__getOwnPropDescs","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","__defNormalProp","__spreadValues","_i","_c","__spreadProps","__async","__this","__arguments","generator","fulfilled","rejected","throw","composeWithDevTools","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","__REDUX_DEVTOOLS_EXTENSION__","isPlainObject","proto","baseProto","createAction","prepareAction","actionCreator","prepared","meta","action","MiddlewareArray","_super","species","EnhancerArray","curryGetDefaultMiddleware","thunk","middlewareArray","immutableCheck","serializableCheck","actionCreatorCheck","isBoolean","withExtraArgument","extraArgument","getDefaultMiddleware","IS_PRODUCTION","configureStore","rootReducer","curriedGetDefaultMiddleware","_d","reducer","_e","middleware","_f","devTools","_g","preloadedState","_h","enhancers","finalMiddleware","some","middlewareEnhancer","finalCompose","trace","defaultEnhancers","storeEnhancers","composedEnhancer","nanoid","commonProperties","RejectWithValue","FulfillWithMeta","miniSerializeError","simpleError","commonProperties_1","property","createAsyncThunk2","typePrefix","payloadCreator","requestId","requestStatus","pending","serializeError","rejectedWithValue","aborted","condition","AC","AbortController","class_1","signal","dispatchEvent","onabort","throwIfAborted","abort","dispatch","getState","extra","abortReason","idGenerator","abortController","promise2","finalAction","conditionResult","abortedPromise","err_1","getPendingMeta","race","rejectWithValue","fulfillWithValue","dispatchConditionRejection","unwrap","unwrapResult","withTypes","alm","queueMicrotask","globalThis","createQueueWithTimer","timeout","requestAnimationFrame","Action","PopStateEventType","createBrowserHistory","getUrlBasedHistory","globalHistory","createLocation","usr","createPath","invariant","warning","cond","getHistoryState","idx","parsePath","parsedPath","hashIndex","searchIndex","getLocation","createHref","validateLocation","defaultView","v5Compat","Pop","getIndex","handlePop","nextIndex","delta","createURL","origin","URL","listen","encodeLocation","Push","historyState","DOMException","Replace","go","ResultType","matchRoutes","routes","locationArg","basename","stripBasename","branches","flattenRoutes","sort","score","siblings","every","compareIndexes","routesMeta","childrenIndex","rankRouteBranches","matchRouteBranch","safelyDecodeURI","parentsMeta","parentPath","flattenRoute","route","relativePath","caseSensitive","startsWith","joinPaths","computeScore","_route$path","exploded","explodeOptionalSegments","segments","first","isOptional","endsWith","required","restExploded","subpath","paramRe","dynamicSegmentValue","indexRouteValue","emptySegmentValue","staticSegmentValue","splatPenalty","isSplat","initialScore","reduce","segment","branch","matchedParams","matchedPathname","remainingPathname","matchPath","pathnameBase","normalizePathname","generatePath","originalPath","prefix","array","keyMatch","optional","param","pattern","matcher","compiledParams","regexpSource","paramName","compilePath","captureGroups","memo","splatValue","safelyDecodeURIComponent","decodeURI","startIndex","nextChar","getInvalidPathError","char","field","dest","getPathContributingMatches","getResolveToMatches","resolveTo","toArg","routePathnames","locationPathname","isPathRelative","isEmptyPath","toPathname","fromSegments","toSegments","routePathnameIndex","fromPathname","resolvePathname","normalizeSearch","normalizeHash","resolvePath","hasExplicitTrailingSlash","hasCurrentTrailingSlash","AbortedDeferredError","isRouteErrorResponse","internal","validMutationMethodsArr","validRequestMethodsArr","argType","inner","default","e10","sqrt","e5","e2","stop","reverse","ticks","power","floor","LN10","tickIncrement","r0","round","r1","addLeadingZeros","number","targetLength","sign","abs","object","cloneObject","defaultOptions","getDefaultOptions","setDefaultOptions","newOptions","formatters","signedYear","getUTCFullYear","year","month","getUTCMonth","getUTCDate","dayPeriodEnumValue","getUTCHours","getUTCMinutes","getUTCSeconds","numberOfDigits","milliseconds","getUTCMilliseconds","fractionalSeconds","dateLongFormatter","formatLong","timeLongFormatter","longFormatters","dateTimeFormat","matchResult","datePattern","timePattern","dateTime","getTimezoneOffsetInMilliseconds","utcDate","UTC","getFullYear","getMonth","getDate","getSeconds","getMilliseconds","setUTCFullYear","MILLISECONDS_IN_WEEK","getUTCISOWeek","dirtyDate","requiredArgs","toDate","diff","startOfUTCISOWeek","getUTCISOWeekYear","fourthOfJanuary","setUTCHours","startOfUTCISOWeekYear","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","getUTCWeek","startOfUTCWeek","_ref2","_ref3","_options$firstWeekCon","_options$locale","_options$locale$optio","_defaultOptions$local","_defaultOptions$local2","firstWeekContainsDate","toInteger","getUTCWeekYear","firstWeek","startOfUTCWeekYear","RangeError","firstWeekOfNextYear","firstWeekOfThisYear","protectedDayOfYearTokens","protectedWeekYearTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","throwProtectedError","format","roundingMap","ceil","trunc","defaultRoundingMethod","getRoundingMethod","setUTCDay","dirtyDay","_options$weekStartsOn","weekStartsOn","day","getUTCDay","setUTCDate","setUTCISODay","setUTCISOWeek","dirtyISOWeek","isoWeek","setUTCWeek","dirtyWeek","week","dirtyNumber","NaN","years","months","weeks","days","seconds","dateWithMonths","dateWithDays","msToAdd","addBusinessDays","dirtyAmount","startedOnWeekend","fullWeeks","setDate","restDays","setHours","addDays","MILLISECONDS_IN_HOUR","addHours","addISOWeekYears","addMilliseconds","MILLISECONDS_IN_MINUTE","addMinutes","addMonths","dayOfMonth","endOfDesiredMonth","setMonth","setFullYear","addQuarters","addSeconds","addWeeks","addYears","areIntervalsOverlapping","intervalLeft","intervalRight","leftStartTime","leftEndTime","rightStartTime","rightEndTime","inclusive","clamp","closestIndexTo","dirtyDateToCompare","dirtyDatesArray","dateToCompare","minDistance","timeToCompare","currentDate","distance","closestTo","compareAsc","dirtyDateLeft","dirtyDateRight","dateLeft","dateRight","compareDesc","daysInWeek","daysInYear","maxTime","millisecondsInMinute","millisecondsInHour","millisecondsInSecond","minTime","minutesInHour","monthsInQuarter","monthsInYear","quartersInYear","secondsInHour","secondsInMinute","secondsInDay","secondsInWeek","secondsInYear","secondsInMonth","secondsInQuarter","daysToWeeks","differenceInBusinessDays","calendarDifference","MILLISECONDS_IN_DAY","differenceInCalendarDays","startOfDayLeft","startOfDayRight","timestampLeft","timestampRight","differenceInCalendarISOWeekYears","differenceInCalendarISOWeeks","startOfISOWeekLeft","startOfISOWeekRight","differenceInCalendarMonths","differenceInCalendarQuarters","differenceInCalendarWeeks","startOfWeekLeft","startOfWeekRight","differenceInCalendarYears","compareLocalAsc","differenceInDays","difference","differenceInHours","roundingMethod","differenceInISOWeekYears","differenceInMilliseconds","differenceInMinutes","differenceInMonths","isLastMonthNotFull","differenceInQuarters","differenceInSeconds","differenceInWeeks","differenceInYears","isLastYearNotFull","eachDayOfInterval","dirtyInterval","_options$step","interval","startDate","endTime","dates","eachHourOfInterval","endDate","startTime","setMinutes","eachMinuteOfInterval","eachMonthOfInterval","eachQuarterOfInterval","startDateQuarter","quarters","currentQuarter","eachWeekOfInterval","startDateWeek","endDateWeek","currentWeek","eachWeekendOfInterval","dateInterval","weekends","eachWeekendOfMonth","eachWeekendOfYear","eachYearOfInterval","endOfDay","endOfDecade","decade","endOfHour","endOfISOWeek","endOfISOWeekYear","setMilliseconds","endOfMinute","setSeconds","endOfMonth","endOfQuarter","currentMonth","endOfSecond","endOfToday","endOfTomorrow","endOfWeek","getDay","endOfYear","endOfYesterday","dayPeriodEnum","localize","era","ordinalNumber","unit","lightFormatters","Y","signedWeekYear","weekYear","twoDigitYear","isoWeekYear","quarter","dayOfYear","setUTCMonth","getUTCDayOfYear","dayOfWeek","localDayOfWeek","isoDayOfWeek","dayPeriod","_localize","timezoneOffset","_originalDate","getTimezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","formatTimezoneShort","originalDate","dirtyDelimiter","absOffset","delimiter","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","dirtyFormatStr","_ref4","_options$locale2","_options$locale2$opti","_ref5","_ref6","_ref7","_options$locale3","_options$locale3$opti","_defaultOptions$local3","_defaultOptions$local4","formatStr","defaultLocale","isValid","subMilliseconds","formatterOptions","firstCharacter","longFormatter","matched","cleanEscapedString","formatter","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","MINUTES_IN_DAY","MINUTES_IN_ALMOST_TWO_DAYS","MINUTES_IN_MONTH","MINUTES_IN_TWO_MONTHS","formatDistance","dirtyBaseDate","comparison","localizeOptions","addSuffix","offsetInSeconds","includeSeconds","nearestMonth","monthsSinceStartOfYear","MINUTES_IN_YEAR","formatDistanceStrict","_options$roundingMeth","roundingMethodFn","dstNormalizedMinutes","defaultUnit","roundedMinutes","formatDistanceToNow","formatDistanceToNowStrict","defaultFormat","formatDuration","_options$format","_options$zero","_options$delimiter","zero","acc","formatISO","_options$representati","representation","tzOffset","dateDelimiter","timeDelimiter","absoluteOffset","hourOffset","minuteOffset","separator","formatISO9075","hour","minute","second","formatISODuration","_duration$years","_duration$months","_duration$days","_duration$hours","_duration$minutes","_duration$seconds","formatRFC3339","_options$fractionDigi","fractionDigits","fractionalSecond","formatRFC7231","dayName","monthName","formatRelative","baseDate","utcBaseDate","fromUnixTime","dirtyUnixTime","unixTime","getDayOfYear","getDaysInMonth","monthIndex","lastDayOfMonth","getDaysInYear","getDecade","getISODay","getISOWeek","getISOWeekYear","getISOWeeksInYear","thisYear","valueOf","getOverlappingDaysInIntervals","dirtyIntervalLeft","dirtyIntervalRight","differenceInMs","getQuarter","getUnixTime","getWeek","getWeekOfMonth","currentDayOfMonth","lastDayOfFirstWeek","remainingDaysAfterFirstWeek","getWeekYear","getWeeksInMonth","getYear","hoursToMilliseconds","hoursToMinutes","hoursToSeconds","intervalToDuration","remainingMonths","remainingDays","remainingHours","remainingMinutes","remainingSeconds","intlFormat","formatOrLocale","localeOptions","_localeOptions","formatOptions","Intl","DateTimeFormat","intlFormatDistance","diffInSeconds","RelativeTimeFormat","localeMatcher","numeric","isAfter","isBefore","isDate","isEqual","dirtyLeftDate","dirtyRightDate","isExists","isFirstDayOfMonth","isFriday","isFuture","isLastDayOfMonth","isLeapYear","isMatch","dateString","formatString","isMonday","isPast","isSameDay","dateLeftStartOfDay","dateRightStartOfDay","isSameHour","dateLeftStartOfHour","dateRightStartOfHour","isSameISOWeek","isSameISOWeekYear","dateLeftStartOfYear","dateRightStartOfYear","isSameMinute","dateLeftStartOfMinute","dateRightStartOfMinute","isSameMonth","isSameQuarter","dateLeftStartOfQuarter","dateRightStartOfQuarter","isSameSecond","dateLeftStartOfSecond","dateRightStartOfSecond","isSameWeek","dateLeftStartOfWeek","dateRightStartOfWeek","isSameYear","isSaturday","isSunday","isThisHour","isThisISOWeek","isThisMinute","isThisMonth","isThisQuarter","isThisSecond","isThisWeek","isThisYear","isThursday","isToday","isTomorrow","isTuesday","isWednesday","isWeekend","isWithinInterval","isYesterday","lastDayOfDecade","lastDayOfISOWeek","lastDayOfISOWeekYear","lastDayOfQuarter","lastDayOfWeek","lastDayOfYear","lightFormat","buildFormatLongFn","defaultWidth","formats","buildLocalizeFn","dirtyIndex","valuesArray","formattingValues","defaultFormattingWidth","_defaultWidth","_width","values","argumentCallback","buildMatchFn","string","matchPattern","matchPatterns","defaultMatchWidth","matchedString","parsePatterns","defaultParseWidth","predicate","findIndex","findKey","valueCallback","buildMatchPatternFn","parseResult","parsePattern","formatDistanceLocale","lessThanXSeconds","one","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","tokenValue","full","long","medium","short","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","_date","_baseDate","_options","rem100","narrow","abbreviated","wide","am","pm","midnight","noon","morning","afternoon","evening","night","any","formatRelativeLocalePlural","datesArray","totalDays","totalSeconds","millisecondsToHours","millisecondsToMinutes","millisecondsToSeconds","minutesToHours","minutesToMilliseconds","minutesToSeconds","monthsToQuarters","monthsToYears","nextDay","nextFriday","nextMonday","nextSaturday","nextSunday","nextThursday","nextTuesday","nextWednesday","Parser","setter","priority","subPriority","_utcDate","_value","Setter","ValueSetter","_Setter","validateValue","setValue","flags","DateToSystemTimezoneSetter","_Setter2","_super2","timestampIsSet","convertedDate","numericPatterns","hour23h","hour24h","hour11h","hour12h","singleDigit","twoDigits","threeDigits","fourDigits","anyDigitsSigned","singleDigitSigned","twoDigitsSigned","threeDigitsSigned","fourDigitsSigned","timezonePatterns","basicOptionalMinutes","basic","basicOptionalSeconds","extended","extendedOptionalSeconds","EraParser","_Parser","YearParser","isTwoDigitYear","currentYear","normalizedTwoDigitYear","LocalWeekYearParser","ISOWeekYearParser","_flags","firstWeekOfYear","ExtendedYearParser","QuarterParser","StandAloneQuarterParser","MonthParser","StandAloneMonthParser","LocalWeekParser","ISOWeekParser","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","DateParser","DayOfYearParser","DayParser","LocalDayParser","wholeWeekDays","StandAloneLocalDayParser","ISODayParser","AMPMParser","AMPMMidnightParser","DayPeriodParser","Hour1to12Parser","isPM","Hour0to23Parser","Hour0To11Parser","Hour1To24Parser","MinuteParser","setUTCMinutes","SecondParser","setUTCSeconds","FractionOfSecondParser","setUTCMilliseconds","ISOTimezoneWithZParser","ISOTimezoneParser","TimestampSecondsParser","TimestampMillisecondsParser","parsers","mapValue","parseFnResult","mapFn","parseNumericPattern","parseTimezonePattern","parseAnyDigitsSigned","parseNDigits","parseNDigitsSigned","dayPeriodEnumToHours","normalizeTwoDigitYear","isCommonEra","absCurrentYear","rangeEnd","isLeapYearIndex","notWhitespaceRegExp","dirtyDateString","dirtyFormatString","dirtyReferenceDate","_step","subFnOptions","setters","usedTokens","_iterator","_loop","parser","incompatibleTokens","incompatibleToken","usedToken","fullToken","run","_ret","uniquePrioritySetters","setterArray","_step2","_iterator2","parseISO","argument","_options$additionalDi","additionalDigits","dateStrings","timeString","dateTimeDelimiter","timeZoneDelimiter","timezone","splitDateString","parseYearResult","regex","captures","restDateString","century","parseYear","dateRegex","isWeekDate","parseDateUnit","_year","validateWeekDate","fourthOfJanuaryDay","dayOfISOWeekYear","daysInMonths","validateDate","validateDayOfYearDate","parseDate","timeRegex","parseTimeUnit","validateTime","parseTime","timezoneString","timezoneRegex","_hours","validateTimezone","parseTimezone","parseJSON","previousDay","previousFriday","previousMonday","previousSaturday","previousSunday","previousThursday","previousTuesday","previousWednesday","quartersToMonths","quartersToYears","roundToNearestMinutes","_options$nearestTo","nearestTo","remainderMinutes","addedMinutes","secondsToHours","secondsToMilliseconds","secondsToMinutes","dirtyDayOfMonth","setDay","currentDay","setDayOfYear","dirtyDayOfYear","_property","dirtyHours","setISODay","setISOWeek","setISOWeekYear","dirtyISOWeekYear","dirtyMilliseconds","dirtyMinutes","dirtyMonth","dateWithDesiredMonth","daysInMonth","setQuarter","dirtyQuarter","dirtySeconds","setWeek","setWeekYear","dirtyWeekYear","setYear","dirtyYear","startOfDay","startOfDecade","startOfHour","startOfISOWeek","startOfISOWeekYear","startOfMinute","startOfMonth","startOfQuarter","startOfSecond","startOfToday","startOfTomorrow","startOfWeek","startOfWeekYear","startOfYear","cleanDate","startOfYesterday","dateWithoutMonths","dateWithoutDays","mstoSub","subBusinessDays","subDays","subHours","subISOWeekYears","subMinutes","subMonths","subQuarters","subSeconds","subWeeks","subYears","argStr","weeksToDays","yearsToMonths","yearsToQuarters","__createBinding","k2","desc","__esModule","__setModuleDefault","__importStar","mod","__exportStar","deepKeysFromList","deepKeys","utils","parsedOptions","mergeOptions","generateDeepKeysList","list","heading","currentKey","keyName","buildKeyName","escapeNestedDotsIfSpecified","expandNestedObjects","isDocumentToRecurOn","expandArrayObjects","subArray","currentKeyPath","subArrayKeys","flatten","schemaKeys","subKey","unique","ignoreEmptyArraysWhenExpanding","processArrayKeys","ignoreEmptyArrays","escapeNestedDots","upperKeyName","currentKeyName","_sp","kp","dotIndex","remaining","previousChar","findFirstNonEscapedDotIndex","setPath","evaluatePath","kpVal","keyVal","ElementType","Doctype","CDATA","Tag","Style","Script","Comment","Directive","Text","Root","isTag","elem","DomHandler","domelementtype_1","node_js_1","defaultOpts","withStartIndices","withEndIndices","xmlMode","elementCB","dom","Document","tagStack","lastNode","onparserinit","onreset","onend","handleCallback","onclosetag","endIndex","onopentag","attribs","element","Element","addNode","ontext","node","oncomment","oncommentend","oncdatastart","parent","oncdataend","onprocessinginstruction","ProcessingInstruction","previousSibling","__assign","cloneNode","hasChildren","isDocument","isDirective","isComment","isText","isCDATA","NodeWithChildren","DataNode","Node","recursive","namespace","cloneChildren","clone_1","clone_2","clone_3","instruction","sourceCodeLocation","childs","toStr","gOPD","hasOwnConstructor","hasIsPrototypeOf","setProperty","newValue","getProperty","extend","copy","copyIsArray","clone","deep","definition","x64Add","x64Multiply","x64Rotl","x64LeftShift","x64Xor","x64Fmix","x64hash128","seed","remainder","h1","h2","k1","preprocessor","audio","excludeIOS11","fonts","swfContainerId","swfPath","userDefinedFonts","extendedJsFonts","detectScreenOrientation","sortPluginsFor","excludeIE","extraComponents","excludes","NOT_AVAILABLE","ERROR","EXCLUDED","each","results","isEnumerateDevicesSupported","mediaDevices","enumerateDevices","getScreenResolution","resolution","getAvailableScreenResolution","availWidth","availHeight","available","getRegularPlugins","pluginsShouldBeSorted","mt","suffixes","getIEPlugins","ActiveXObject","should","re","hasSessionStorage","sessionStorage","hasLocalStorage","hasIndexedDB","isIEOrOldEdge","getHardwareConcurrency","hardwareConcurrency","getNavigatorCpuClass","cpuClass","getNavigatorPlatform","platform","getDoNotTrack","doNotTrack","msDoNotTrack","getTouchSupport","touchEvent","maxTouchPoints","msMaxTouchPoints","createEvent","getCanvasFp","canvas","ctx","rect","isPointInPath","textBaseline","fillStyle","fillRect","dontUseFakeFontInCanvas","font","fillText","globalCompositeOperation","beginPath","arc","PI","closePath","toDataURL","getWebglFp","gl","fa2s","fa","clearColor","enable","DEPTH_TEST","depthFunc","LEQUAL","COLOR_BUFFER_BIT","DEPTH_BUFFER_BIT","getWebglCanvas","vertexPosBuffer","createBuffer","bindBuffer","ARRAY_BUFFER","vertices","Float32Array","bufferData","STATIC_DRAW","itemSize","numItems","program","createProgram","vshader","createShader","VERTEX_SHADER","shaderSource","compileShader","fshader","FRAGMENT_SHADER","attachShader","linkProgram","useProgram","vertexPosAttrib","getAttribLocation","offsetUniform","getUniformLocation","enableVertexAttribArray","vertexPosArray","vertexAttribPointer","FLOAT","uniform2f","drawArrays","TRIANGLE_STRIP","getSupportedExtensions","getParameter","ALIASED_LINE_WIDTH_RANGE","ALIASED_POINT_SIZE_RANGE","ALPHA_BITS","getContextAttributes","antialias","BLUE_BITS","DEPTH_BITS","GREEN_BITS","ext","getExtension","anisotropy","MAX_TEXTURE_MAX_ANISOTROPY_EXT","maxAnisotropy","MAX_COMBINED_TEXTURE_IMAGE_UNITS","MAX_CUBE_MAP_TEXTURE_SIZE","MAX_FRAGMENT_UNIFORM_VECTORS","MAX_RENDERBUFFER_SIZE","MAX_TEXTURE_IMAGE_UNITS","MAX_TEXTURE_SIZE","MAX_VARYING_VECTORS","MAX_VERTEX_ATTRIBS","MAX_VERTEX_TEXTURE_IMAGE_UNITS","MAX_VERTEX_UNIFORM_VECTORS","MAX_VIEWPORT_DIMS","RED_BITS","RENDERER","SHADING_LANGUAGE_VERSION","STENCIL_BITS","VENDOR","VERSION","extensionDebugRendererInfo","UNMASKED_VENDOR_WEBGL","UNMASKED_RENDERER_WEBGL","getShaderPrecisionFormat","numType","shader","numSize","loseWebglContext","getWebglVendorAndRenderer","glContext","getAdBlock","ads","removeChild","getHasLiedLanguages","languages","getHasLiedResolution","getHasLiedOs","os","oscpu","getHasLiedBrowser","productSub","errFirefox","tempRes","eval","toSource","errOfErr","isCanvasSupported","isWebGlSupported","isSupported","WebGLRenderingContext","appName","hasSwfObjectLoaded","swfobject","hasMinFlashInstalled","hasFlashPlayerVersion","loadSwfAndDetectFonts","hiddenCallback","addFlashDivNode","flashvars","onReady","embedSWF","allowScriptAccess","menu","loseContextExtension","loseContext","components","getData","webdriver","colorDepth","deviceMemory","devicePixelRatio","resolvedOptions","timeZone","HTMLElement","addBehavior","openDatabase","baseFonts","fontList","position","baseFontsDiv","fontsDiv","defaultHeight","createSpan","fontSize","fontWeight","letterSpacing","lineBreak","lineHeight","textTransform","textAlign","textDecoration","textShadow","wordBreak","wordSpacing","createSpanWithFonts","fontToDetect","baseFont","fontFamily","isFontAvailable","fontSpans","detected","baseFontsSpans","spans","initializeBaseFontsSpans","fontsSpans","numDefaultFonts","initializeFontsSpans","pauseBefore","audioOptions","AudioContext","OfflineAudioContext","webkitOfflineAudioContext","oscillator","createOscillator","frequency","setValueAtTime","currentTime","compressor","createDynamicsCompressor","connect","destination","startRendering","audioTimeoutId","oncomplete","clearTimeout","renderedBuffer","getChannelData","disconnect","devices","deviceId","groupId","Fingerprint2","extendSoft","addPreprocessedComponent","chainComponents","alreadyWaited","getPromise","getV18","newComponents","murmur","COMMENT_REGEX","NEWLINE_REGEX","WHITESPACE_REGEX","PROPERTY_REGEX","COLON_REGEX","VALUE_REGEX","SEMICOLON_REGEX","TRIM_REGEX","EMPTY_STRING","trim","lineno","column","updatePosition","Position","whitespace","errorsList","msg","filename","silent","comments","rules","comment","declaration","decl","decls","declarations","__importDefault","styleObject","inline_style_parser_1","hasIterator","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","KNOWN_STATICS","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","isMemo","ForwardRef","Memo","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","descriptor","CASE_SENSITIVE_TAG_NAMES_MAP","CASE_SENSITIVE_TAG_NAMES","accumulator","HTML","HEAD","BODY","FIRST_TAG_REGEX","HEAD_TAG_REGEX","BODY_TAG_REGEX","parseFromDocument","parseFromString","DOMParser","domParser_1","implementation","htmlDocument_1","createHTMLDocument","parseFromTemplate","firstTagName","domparser_1","utilities_1","DIRECTIVE_REGEX","directive","formatDOM","formatAttributes","domhandler_1","constants_1","attributesLength","attribute","formatTagName","caseSensitiveTagName","getCaseSensitiveTagName","nodes","domNodes","nodesLength","nodeType","nodeName","nodeValue","unshift","react_property_1","UNCONTROLLED_COMPONENT_ATTRIBUTES","UNCONTROLLED_COMPONENT_NAMES","valueOnlyInputs","submit","getPropName","attributeName","possibleStandardNames","isInputValueOnly","attributeValue","isCustomAttribute","attributeNameLowerCased","propName","propertyInfo","getPropertyInfo","BOOLEAN","OVERLOADED_BOOLEAN","PRESERVE_CUSTOM_ATTRIBUTES","setStyleProp","react_1","attributes_to_props_1","cloneElement","isValidElement","skipAttributesToProps","isCustomComponent","domToReact","reactElements","hasReplace","transform","returnFirstArg","library","replaceElement","dangerouslySetInnerHTML","__html","isWhitespace","canTextBeChildOfNode","htmlToDOM","attributesToProps","html_dom_parser_1","dom_to_react_1","domParserOptions","lowerCaseAttributeNames","htmlparser2","ELEMENTS_WITH_NO_TEXT_CHILDREN","style_to_js_1","RESERVED_SVG_MATHML_ELEMENTS","is","styleOptions","reactCompat","excelBOM","defaultCsv2JsonOptions","defaultJson2CsvOptions","optionsRequired","json2csv","cannotCallOn","dataCheckFailure","notSameSchema","csv2json","checkSchemaDifferences","wrap","eol","emptyFieldValue","excludeKeys","prependHeader","preventCsvInjection","sortHeader","trimFieldValues","trimHeaderFields","unwindArrays","useDateIso8601Format","useLocaleFormat","wrapBooleans","json2csv_1","csv2json_1","utils_1","builtOptions","buildJ2COptions","Json2Csv","convert","Csv2Json","doc_path_1","escapedWrapDelimiterRegex","excelBOMRegex","valueParserFn","processHeaderKey","headerKey","removeWrapDelimitersFromValue","retrieveRecordValueFromLine","headerField","fieldValue","parsedJson","isStringRepresentation","isDateRepresentation","trimRecordValue","isInvalid","processRecordValue","firstChar","lastIndex","lastChar","transformRecordLines","recordLines","generatedJsonObjects","unescapeWrapDelimiterInField","generatedDocument","headerFields","createDocument","csv","retrieveHeading","lastCharacterIndex","eolDelimiterLength","stateVariables","insideWrapDelimiter","parsingValue","justParsedDoubleQuote","character","charBefore","charAfter","nextNChar","splitLine","getNCharacters","parsedValue","toIndex","splitLines","splice","deeks_1","wrapDelimiterCheckRegex","crlfSearchRegex","customValueParser","expandingWithoutUnwinding","deeksOptions","processSchemas","documentSchemas","firstDocSchema","restOfDocumentSchemas","schemaDifferences","documentSchema","computeSchemaDifferences","computeNumberOfSchemaDifferences","filterExcludedKeys","keyPaths","keyPath","sortHeaderFields","fieldNames","convertKeysToHeaderFields","fieldTitleMap","retrieveHeaderFields","keyStrings","getFieldNameList","unwindRecordsIfNecessary","finalPass","originalRecordsLength","records","unwind","userSelectedFields","processRecords","recordString","record","recordFieldData","fields","recordValues","recordFieldValue","isUndefined","isEmptyField","filteredRecordFieldValue","removeEmptyFields","processRecordFieldDataForExpandedArrayObject","retrieveRecordFieldData","processedRecordData","trimRecordFieldValue","recordFieldValueToString","wrapFieldValueIfNecessary","toLocaleString","isNumber","wrapDelimiter","processed","generateCsvFromComponents","fieldTitleMapKeys","generateCsvHeader","headingKey","arrayDifference","isNull","isString","buildC2JOptions","dateStringRegex","MAX_ARRAY_LENGTH","validationFn","errorMessages","schemaA","schemaB","fieldPath","valueToUnwind","cloned","unwindItem","flat","safeArray","INFINITY","symbolTag","reAsciiWord","reLatin","rsAstralRange","rsComboMarksRange","rsComboSymbolsRange","rsDingbatRange","rsLowerRange","rsUpperRange","rsVarRange","rsBreakRange","rsMathOpRange","rsApos","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsZWJ","rsLowerMisc","rsUpperMisc","rsOptLowerContr","rsOptUpperContr","reOptMod","rsOptVar","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","freeGlobal","freeSelf","deburrLetter","hasUnicode","stringToArray","unicodeToArray","asciiToArray","objectToString","symbolProto","symbolToString","baseToString","isObjectLike","isSymbol","castSlice","baseSlice","camelCase","word","upperFirst","iteratee","initAccum","arrayReduce","guard","hasUnicodeWord","unicodeWords","asciiWords","words","deburr","methodName","strSymbols","chr","trailing","NAN","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","nativeMax","nativeMin","toNumber","isBinary","func","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","remainingWait","debounced","isInvoking","leadingEdge","cancel","flush","lowerCase","snakeCase","DataView","getNative","hashClear","hashDelete","hashGet","hashHas","hashSet","Hash","entry","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","stackClear","stackDelete","stackGet","stackHas","stackSet","Stack","__data__","Uint8Array","WeakMap","resIndex","baseTimes","isArguments","isBuffer","isIndex","isTypedArray","inherited","isArr","isArg","isBuff","isType","skipIndexes","baseAssignValue","eq","objValue","copyObject","keysIn","arrayEach","assignValue","baseAssign","baseAssignIn","cloneBuffer","copyArray","copySymbols","copySymbolsIn","getAllKeys","getAllKeysIn","getTag","initCloneArray","initCloneByTag","initCloneObject","isMap","isSet","argsTag","funcTag","objectTag","cloneableTags","baseClone","bitmask","customizer","isDeep","isFlat","isFull","tag","isFunc","stacked","subValue","objectCreate","baseCreate","arrayPush","keysFunc","symbolsFunc","getRawTag","symToStringTag","toStringTag","baseGetTag","isFunction","isMasked","reIsHostCtor","funcProto","objectProto","funcToString","reIsNative","isLength","typedArrayTags","isPrototype","nativeKeys","nativeKeysIn","isProto","trimmedEndIndex","reTrimStart","arrayBuffer","byteLength","freeExports","freeModule","Buffer","allocUnsafe","buffer","cloneArrayBuffer","dataView","byteOffset","reFlags","regexp","symbolValueOf","symbol","typedArray","isNew","getSymbols","getSymbolsIn","coreJsData","baseGetAllKeys","isKeyable","baseIsNative","getValue","getPrototype","overArg","nativeObjectToString","isOwn","unmasked","arrayFilter","stubArray","nativeGetSymbols","mapTag","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","ArrayBuffer","Ctor","ctorString","nativeCreate","cloneDataView","cloneRegExp","cloneSymbol","cloneTypedArray","reIsUint","maskSrcKey","IE_PROTO","assocIndexOf","getMapData","freeProcess","nodeUtil","require","binding","pairs","LARGE_ARRAY_SIZE","reWhitespace","CLONE_DEEP_FLAG","timeWaiting","mapping","fallbackHolder","baseAry","cloneArray","wrapImmutable","cloner","baseConvert","util","isLib","isObj","cap","curry","fixed","immutable","rearg","defaultHolder","forceCurry","forceFixed","forceRearg","pristine","runInContext","helpers","ary","isWeakMap","toPath","aryMethodKeys","aryMethod","wrappers","castArray","mixin","pair","nthArg","indexes","castCap","iterateeRearg","baseArity","iterateeAry","castFixed","skipFixed","methodSpread","otherArgs","flatSpread","castRearg","skipRearg","methodRearg","aryRearg","cloneByPath","nested","createConverter","realName","aliasToReal","remap","oldOptions","newUtil","newFunc","wrapped","wrapper","mutate","createCloner","aryKey","otherName","afterRearg","castCurry","realToAlias","alias","baseIsArguments","stubFalse","baseIsMap","baseUnary","nodeIsMap","baseIsSet","nodeIsSet","baseIsTypedArray","nodeIsTypedArray","arrayLikeKeys","baseKeys","isArrayLike","baseKeysIn","$t","Cn","Lt","Yr","Nr","Pr","cn","V","Mr","Ct","Fr","dn","bn","wn","mn","xn","Sn","Wn","Un","$n","Dn","Mn","Nn","Pn","Zn","Kn","Vn","Gn","Hn","Yn","Qn","nt","tt","rt","et","it","ft","ct","at","lt","st","ht","pt","_t","vt","gt","yt","dt","bt","wt","xt","jt","At","kt","Ot","It","Rt","zt","Et","St","Wt","Ut","Bt","Tt","Dt","Mt","Ft","Nt","Pt","qt","Zt","Kt","Vt","Gt","Ht","Jt","Yt","tr","Qt","rr","cr","ar","lr","ur","sr","hr","pr","_r","vr","gr","yr","dr","br","mr","xr","jr","Ar","kr","Or","Ir","Rr","zr","Er","Sr","Ur","Br","Tr","$r","Dr","qr","Zr","Kr","Vr","Qr","Xr","ne","te","ee","ue","ie","oe","fe","ce","isArrayBuffer","ae","le","se","isRegExp","he","pe","ve","ge","ye","be","cc","bh","bl","eo","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","Xt","ir","wr","dh","mh","Oh","hl","Ci","tu","Xi","Tu","Gf","Wr","Lr","ys","Cr","$u","Pc","Tl","Mc","fc","zi","zs","Iu","Ei","Rs","Mu","qc","Is","Du","Ru","zu","Wu","Eu","_s","ll","Su","Si","kh","jh","di","yi","Gr","Ws","Hr","Jr","bc","Li","bs","ws","uc","ku","no","de","we","Bl","xl","ki","Ki","me","xe","je","ke","Hl","Ie","Gi","jo","Re","Se","pi","Rl","vi","We","Ce","hn","Ue","ml","Di","kl","De","La","Ze","qe","Fa","Me","Mi","Vl","Fe","Zi","Ne","Pe","Hf","ji","Ni","Bi","Fi","Nc","Ke","Ji","Jf","gc","Rc","Ve","Ge","He","mi","criteria","Lu","Cu","Ye","fu","Xe","Ll","nu","yu","Nl","Ql","eu","uu","Ls","Vi","iu","ra","ou","cu","au","lu","su","hu","pu","_u","vu","vs","gu","ks","du","bu","wu","mu","xu","ju","Au","Cs","Ec","Ou","zl","Uu","Gl","Bu","Fu","Nu","Ui","Pu","qu","Ku","Vu","Ra","ca","Gu","gs","Hu","wi","oi","Qu","Ju","Yu","gi","thru","bi","Os","$i","plant","Hi","Xu","Oe","ni","ti","ri","Fl","ei","ui","Ac","ru","ii","Ic","Ss","Yi","fi","al","kc","Zl","ci","ai","qi","Zu","ms","li","si","hi","_o","fs","Ca","xi","Ti","Ai","Ri","oc","El","Cl","Wi","ro","Ii","Qi","Jl","dl","ho","po","bo","Oo","Eo","Xl","Go","Ho","Qo","nf","vf","ds","yf","Rf","zf","Wf","fh","As","Cf","cache","Cache","Uf","rc","ic","vc","jl","dc","jc","Ul","Oc","Gc","Qh","Sa","Ta","chain","Da","Qe","Pa","qa","defaults","pick","ol","fl","cl","sl","_l","vl","yl","wl","Al","Ol","Il","Sl","Wl","isConcatSpreadable","$l","Dl","Ml","Pl","ql","Kl","Yl","ns","ts","rs","es","us","cs","as","ls","ss","hs","ps","templateSettings","escape","evaluate","interpolate","variable","imports","xs","js","Es","Pi","Us","Bs","Ts","$s","Ds","Ms","Fs","Ns","Ps","qs","Zs","Ks","Vs","Gs","Hs","Js","Ys","Qs","Xs","nh","th","rh","eh","uh","ih","oh","ch","ah","_n","lh","sh","hh","ph","vh","gh","yh","wh","xh","Ah","Ih","Rh","zh","Eh","Sh","Wh","Lh","Ch","Uh","Mh","Bh","Th","$h","Dh","Fh","Nh","Je","Ph","qh","Zh","Kh","Vh","Gh","Hh","Jh","Yh","Xh","np","tp","rp","ep","up","ip","fp","cp","ap","lp","hp","pp","_p","vp","gp","after","assignIn","assignInWith","assignWith","before","bindAll","bindKey","chunk","compact","conforms","constant","countBy","Ef","curryRight","Sf","debounce","defaultsDeep","defer","delay","differenceBy","differenceWith","dropRight","dropRightWhile","dropWhile","flatMap","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","flip","flow","flowRight","fromPairs","functions","functionsIn","groupBy","initial","intersection","intersectionBy","intersectionWith","invert","invertBy","invokeMap","keyBy","mapKeys","mapValues","matchesProperty","memoize","mergeWith","methodOf","negate","omit","omitBy","once","orderBy","over","overArgs","overEvery","overSome","partial","partialRight","partition","pickBy","propertyOf","pull","pullAll","pullAllBy","pullAllWith","pullAt","range","rangeRight","remove","sampleSize","setWith","shuffle","sortBy","sortedUniq","sortedUniqBy","spread","tail","take","takeRight","takeRightWhile","takeWhile","tap","throttle","toArray","toPairs","toPairsIn","toPlainObject","unary","union","unionBy","unionWith","uniq","uniqBy","uniqWith","unset","unzip","unzipWith","updateWith","valuesIn","without","xor","xorBy","xorWith","zip","zipObject","zipObjectDeep","zipWith","entriesIn","extendWith","attempt","capitalize","cloneDeep","cloneDeepWith","cloneWith","conformsTo","defaultTo","divide","escapeRegExp","findLast","findLastIndex","findLastKey","forEachRight","forIn","forInRight","forOwn","forOwnRight","gte","hasIn","head","identity","inRange","Ae","invoke","isArrayLikeObject","isElement","isEqualWith","isInteger","isMatchWith","isNative","isNil","isSafeInteger","isWeakSet","kebabCase","last","lowerFirst","lte","maxBy","mean","meanBy","minBy","stubObject","stubString","stubTrue","multiply","nth","noConflict","pad","padEnd","reduceRight","repeat","sample","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","startCase","subtract","sum","sumBy","sourceURL","times","toFinite","toLength","toLower","toSafeInteger","toUpper","truncate","omission","global","unescape","uniqueId","upperCase","eachRight","Oi","commit","baseTrim","window$1","Config","DEBUG","LIB_VERSION","loc","hostname","referrer","escapee","white","ArrayProto","FuncProto","ObjProto","windowConsole","document$1","windowOpera","opera","nativeBind","nativeForEach","nativeIndexOf","nativeMap","nativeIsArray","breaker","critical","log_func_with_prefix","console_with_prefix","bound","ctor","iterable","include","found","inherit","subclass","superclass","isEmptyObject","encodeDates","formatDate","strip_empty_properties","JSONEncode","mixed_val","quote","escapable","holder","gap","mind","JSONDecode","SyntaxError","hex","uffff","h3","h4","bits","b64","ac","enc","tmp_arr","utf8Encode","stringl","utftext","UUID","performance","byte_array","tmp","UA","BLOCKED_UA_STRS","isBlockedUA","HTTPBuildQuery","formdata","arg_separator","use_val","use_key","getQueryParam","nameEQ","set_seconds","is_cross_subdomain","is_secure","is_cross_site","domain_override","cdomain","expires","secure","domain","extract_domain","setTime","toGMTString","new_cookie_val","_localStorageSupported","localStorageSupported","forceCheck","supported","cheap_guid","removeItem","is_supported","force_check","register_event","fixEvent","preventDefault","stopPropagation","returnValue","cancelBubble","handler","oldSchool","useCapture","ontype","old_handler","new_handler","old_handlers","old_result","new_result","makeHandler","TOKEN_MATCH_REGEX","dom_query","getAllChildren","all","bad_whitespace","hasClass","selector","getElementsBySelector","foundCount","currentContextIndex","currentContext","token_match","checkFunction","attrName","attrOperator","attrValue","getAttribute","query","CAMPAIGN_KEYWORDS","CLICK_IDS","campaignParams","default_value","kw","kwkey","clickParams","idkey","marketingParams","searchEngine","searchInfo","keyword","user_agent","vendor","browserVersion","referringDomain","properties","people_properties","mpPageViewProperties","maxlen","guid","SIMPLE_DOMAIN_MATCH_REGEX","DOMAIN_MATCH_REGEX","domain_regex","tld","JSONStringify","JSONParse","DomTracker","create_properties","event_handler","after_track_handler","init","mixpanel_instance","mp","track","event_name","user_callback","that","override_event","get_config","track_callback","timeout_occured","callback_fired","LinkTracker","new_tab","which","metaKey","ctrlKey","FormTracker","logger$2","SharedLock","storageKey","pollIntervalMS","timeoutMS","withLock","lockedCB","errorCB","pid","keyX","keyY","keyZ","reportError","loop","waitFor","getSetY","valY","criticalSection","logger$1","RequestQueue","errorReporter","lock","memQueue","enqueue","flushInterval","queueEntry","succeeded","storedQueue","readFromStorage","saveToStorage","fillBatch","batchSize","batch","idsInBatch","orphaned","filterOutIDsAndInvalid","items","idSet","filteredItems","removeItemsByID","ids","removeFromStorage","updatePayloads","existingItems","itemsToUpdate","newItems","newPayload","storageEntry","queue","RequestBatcher","libConfig","sendRequest","sendRequestFunc","beforeSendHook","stopAllBatching","stopAllBatchingFunc","stopped","consecutiveRemovalFailures","itemIdsSentSuccessfully","timeoutID","resetBatchSize","resetFlush","scheduleFlush","flushMS","requestInProgress","currentBatchSize","dataForRequest","transformedItems","addPayload","itemId","timesSent","batchSendCallback","removeItemsFromQueue","unloading","xhr_req","retryMS","headers","retryAfter","halvedBatchSize","requestOptions","verbose","ignore_json_errors","timeout_ms","transport","GDPR_DEFAULT_PERSISTENCE_PREFIX","optIn","_optInOut","optOut","hasOptedIn","_getStorageValue","hasOptedOut","ignoreDnt","hasDntOn","dntValue","_hasDoNotTrackFlagOn","optedOut","addOptOutCheckMixpanelLib","_addOptOutCheck","addOptOutCheckMixpanelPeople","_get_config","addOptOutCheckMixpanelGroup","clearOptInOut","_getStorage","_getStorageKey","crossSubdomainCookie","cookieDomain","persistenceType","persistencePrefix","optValue","cookieExpiration","secureCookie","crossSiteCookie","trackEventName","trackProperties","getConfigValue","SET_ACTION","SET_ONCE_ACTION","UNSET_ACTION","ADD_ACTION","APPEND_ACTION","UNION_ACTION","REMOVE_ACTION","apiActions","set_action","$set","_is_reserved_property","unset_action","$unset","set_once_action","$set_once","union_action","list_name","$union","append_action","$append","remove_action","$remove","delete_action","MixpanelGroup","_init","group_key","group_id","_mixpanel","_group_key","_group_id","_send_request","set_once","date_encoded_data","_track_or_batch","batcher","request_batchers","groups","conf","MixpanelPeople","update_referrer_info","get_referrer_info","increment","by","$add","append","track_charge","clear_charges","delete_user","_identify_called","get_distinct_id","device_id","get_property","had_persisted_distinct_id","people","_enqueue","conf_var","identify_called","_add_to_people_queue","_flush_one_queue","action_method","queue_to_params_fn","queued_data","load_queue","action_params","_pop_from_people_queue","save","_flush","_set_callback","_add_callback","_append_callback","_set_once_callback","_union_callback","_unset_callback","_remove_callback","$append_queue","$append_item","append_callback","$remove_queue","$remove_item","remove_callback","init_type","mixpanel_master","SET_QUEUE_KEY","SET_ONCE_QUEUE_KEY","UNSET_QUEUE_KEY","ADD_QUEUE_KEY","APPEND_QUEUE_KEY","REMOVE_QUEUE_KEY","UNION_QUEUE_KEY","PEOPLE_DISTINCT_ID_KEY","ALIAS_ID_KEY","EVENT_TIMERS_KEY","RESERVED_PROPERTIES","MixpanelPersistence","campaign_params_saved","storage_type","update_config","upgrade","old_cookie_name","old_cookie","upgrade_from_old_lib","register_once","expire_days","cross_subdomain","cross_site","cookie_domain","load_prop","default_expiry","register","unregister","update_search_keyword","set_disabled","set_cookie_domain","set_cross_site","set_cross_subdomain","set_secure","get_cross_subdomain","q_key","_get_queue_key","q_data","set_q","_get_or_create_queue","set_once_q","unset_q","add_q","union_q","remove_q","append_q","enqueued_obj","append_obj","queued_action","default_val","set_event_timer","timers","remove_event_timer","IDENTITY_FUNC","NOOP_FUNC","PRIMARY_INSTANCE_NAME","PAYLOAD_TYPE_BASE64","DEVICE_ID_PREFIX","USE_XHR","ENQUEUE_REQUESTS","sendBeacon","DEFAULT_API_ROUTES","DEFAULT_CONFIG","DOM_LOADED","MixpanelLib","create_mplib","instance","_cached_groups","utm_params","initial_utm_params","has_utm","utm_value","utm_key","_execute_array","report_error","_loaded","variable_features","set_config","__dom_loaded_queue","__request_queue","__disabled_events","_batch_requests","init_batchers","flush_on_unload","ev","get_batcher_configs","batcher_config","queue_key","unpersisted_superprops","_gdpr_init","uuid","track_pageview","_set_default_superprops","_dom_loaded","_track_dom","has_opted_out_tracking","DomClass","_prepare_callback","jsc","randomized_cb","callback_string","DEFAULT_OPTIONS","body_data","use_post","use_sendBeacon","verbose_mode","lib","headerValue","headerName","start_time","withCredentials","responseText","async","insertBefore","fn_name","alias_calls","other_calls","tracking_calls","execute","calls","are_batchers_initialized","queue_prefix","api_routes","_batcher_configs","batcher_for","attrs","_encode_data_for_request","_run_hook","stop_batch_senders","batcher_configs","start_batch_senders","_batchers_were_started","disable","disable_all_events","encoded_data","truncated_data","should_send_immediately","send_request_options","request_enqueued_or_initiated","send_request_immediately","skip_hooks","_event_is_disabled","start_timestamp","duration_in_ms","marketing_properties","property_blacklist","blacklisted_prop","set_group","group_ids","add_group","old_values","remove_group","old_value","track_with_groups","tracking_props","_create_map_key","_remove_group_from_cache","get_group","map_key","group","default_page_properties","event_properties","track_links","track_forms","time_event","REGISTER_DEFAULTS","options_for_register","days_or_options","_register_single","identify","new_distinct_id","previous_distinct_id","name_tag","prop_name","hook_name","property_name","has_opted_in_tracking","opt_in_tracking","opt_out_tracking","clear_opt_in_out_tracking","_gdpr_update_persistence","_gdpr_call_func","instances","override_mp_init_func","mixpanel","dom_loaded_handler","inst","toplevel","frameElement","doScroll","do_scroll_check","add_dom_loaded_handler","return","heartBeatIntervalTime","heartBeatDetectIntervalTime","_heartBeatIntervalId","_heartBeatDetectIntervalId","_heartBeatIntervalTime","_heartBeatDetectIntervalTime","destroy","setInterval","_setLocalTime","clearInterval","detect","storageArea","EXCLUSIVE","SHARED","REQUEST_QUEUE_MAP","HELD_LOCK_SET","CLIENT_IDS","_defaultOptions","ifAvailable","steal","_clientId","_storeThisClientId","_cleanUnliveClientLocks","_onUnload","_getClientIds","_storeClientIds","_handleRequestArgs","_resolveWithCB","_heldLockSet","_requestLockQueueMap","_handleExceptionWhenStealIsTrue","_handleNewHeldLock","_handleSignalExisted","_handleHeldLockAndRequest","_query","_pushToLockRequestQueueMap","_storeRequestLockQueueMap","_pushToHeldLockSet","_storeHeldLockSet","_updateHeldAndRequestLocks","_storeHeldLockSetAndRequestLockQueueMap","AbortSignal","_signalOnabort","_handleNewLockRequest","_isInHeldLockSet","_handleHeldLockBeSteal","_handleSharedLockFromListener","held","_cleanClientLocksByClientId","_cleanRequestLockQueueByClientId","_cleanHeldLockSetByClientId","locks","canUseDOM","ExecutionEnvironment","canUseWorkers","Worker","canUseEventListeners","canUseViewport","isInWorker","_ie","_firefox","_opera","_webkit","_chrome","_ie_real_version","_osx","_windows","_linux","_android","_win64","_iphone","_ipad","_native","_mobile","_populated","_populate","uas","agent","documentMode","trident","ver","UserAgent_DEPRECATED","ieCompatibilityMode","ie64","firefox","webkit","safari","windows","osx","linux","iphone","mobile","nativeApp","android","ipad","useHasFeature","hasFeature","eventNameSuffix","capture","eventName","isEventSupported","normalizeWheel","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","axis","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","getEventType","propIsEnumerable","test1","test2","test3","letter","shouldUseNative","symbols","toObject","_typeof","_createClass","Constructor","protoProps","staticProps","_react","_react2","_interopRequireDefault","_propTypes2","_once2","_fp","_uuid2","OTPublisher","_Component","_classCallCheck","_possibleConstructorReturn","sessionConnectedHandler","publishToSession","publisher","streamCreatedHandler","lastStreamId","stream","_inherits","createPublisher","prevProps","useDefault","shouldUpdate","updatePublisherProperty","destroyPublisher","off","_this3","publisherId","eventHandlers","unpublish","_this4","publish","errorHandler","onPublish","_this5","insertDefaultUI","OT","initPublisher","onInit","handles","connection","_this6","_props","shape","connectionId","objectOf","_createSession3","OTSession","streams","sessionHelper","createSession","sessionId","destroySession","onStreamsUpdated","onConnect","oneOfType","arrayOf","isRequired","unsubscribe","OTStreams","_OTSubscriberContext2","Children","only","childrenWithContextWrapper","OTSubscriber","subscriber","currentRetryAttempt","maxRetryAttempts","retryAttemptTimeout","createSubscriber","cast","Type","updateSubscriberProperty","previous","destroySubscriber","subscriberId","retry","handleRetrySubscriber","onSubscribe","streamId","bool","OTSubscriberContext","onStreamCreated","onStreamDestroyed","streamCreated","streamDestroyed","initSession","_OTSession2","_OTPublisher2","_OTStreams2","_OTSubscriber2","_createSession2","_preloadScript2","InnerComponent","PreloadScript","onScriptLoad","isPresent","scriptLoaded","scriptLoading","scriptUrl","opentokClientUrl","_scriptjs2","loadingDelegate","restProps","_objectWithoutProperties","_reactDisplayName2","DEFAULT_SCRIPT_URL","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","componentName","propFullName","secret","getShim","ReactPropTypes","elementType","instanceOf","oneOf","exact","checkPropTypes","PropTypes","bigint","encode","setUint32","getUint32","setUint8","setUint16","setFloat64","getUint8","getUint16","getFloat32","getFloat64","CBOR","SuppressedError","legacyCryptoModule","aesCbcCryptoModule","defaultCryptor","cryptors","getAllCryptors","encoder","TextEncoder","decoder","TextDecoder","File","mimeType","contentLength","toBuffer","toArrayBuffer","FileReader","readAsArrayBuffer","readAsBinaryString","toStream","toFile","toFileUri","toBlob","supportsBlob","Blob","supportsFile","supportsBuffer","supportsStream","supportsString","supportsArrayBuffer","supportsEncryptFile","supportsFileUri","PNNetworkIssuesCategory","PNTimeoutCategory","PNCancelledCategory","PNBadRequestCategory","PNAccessDeniedCategory","PNValidationErrorCategory","PNAcknowledgmentCategory","PNUnknownCategory","PNNetworkUpCategory","PNNetworkDownCategory","PNReconnectedCategory","PNConnectedCategory","PNRequestMessageCountExceededCategory","PNDisconnectedCategory","PNConnectionErrorCategory","PNDisconnectedUnexpectedlyCategory","statusCode","category","Base","mixIn","$super","WordArray","sigBytes","Hex","Latin1","Utf8","BufferedBlockAlgorithm","_data","_nDataBytes","_append","_process","_minBufferSize","_doProcessBlock","Hasher","cfg","_doReset","finalize","_doFinalize","_createHelper","_createHmacHelper","HMAC","algo","SHA256","_hash","HmacSHA256","_hasher","_oKey","_iKey","Base64","_map","sin","MD5","HmacMD5","EvpKDF","keySize","hasher","iterations","compute","Cipher","createEncryptor","_ENC_XFORM_MODE","createDecryptor","_DEC_XFORM_MODE","_xformMode","ivSize","encrypt","decrypt","StreamCipher","_iv","_prevBlock","BlockCipherMode","Encryptor","Decryptor","_cipher","processBlock","encryptBlock","decryptBlock","CBC","Pkcs7","unpad","BlockCipher","padding","iv","_mode","CipherParams","OpenSSL","ciphertext","salt","SerializableCipher","algorithm","_parse","kdf","PasswordBasedCipher","AES","_nRounds","_keySchedule","_invKeySchedule","_doCryptBlock","ECB","cipherKey","CryptoJS","encryptedKey","getIv","bufferToWordArray","encryptFileData","getKey","crypto","subtle","Uint8ClampedArray","decryptFileData","identifier","getRandomValues","BLOCK_SIZE","importKey","allowedKeyEncodings","allowedKeyLengths","allowedModes","encryptKey","keyEncoding","keyLength","HMACSHA256","secretKey","customEncrypt","pnEncrypt","customDecrypt","pnDecrypt","parseOptions","getMode","getPaddedKey","useRandomIVs","getRandomIV","getIV","decodeKey","encryptArrayBuffer","encryptString","encryptFile","decryptArrayBuffer","decryptString","IV_LENGTH","decryptFile","cryptor","fileCryptor","withDefaultCryptor","LEGACY_IDENTIFIER","getHeaderData","concatArrayBuffer","getFileData","tryParse","getCryptor","metadataLength","getCryptorFromId","SENTINEL","MAX_VERSION","IDENTIFIER_LENGTH","Uint16Array","_identifier","_metadataLength","createFromError","createFromServiceResponse","errorData","toStatus","operation","toPubNubError","subscriptionWorkerReady","workerEventsQueue","setupSubscriptionWorker","makeSendable","clientIdentifier","subscriptionKey","logVerbosity","cancellable","scheduleEventPost","sharedSubscriptionWorker","postMessage","flushScheduledEvents","subscriptionWorker","SharedWorker","workerUrl","sdkVersion","userId","workerLogVerbosity","onmessage","handleWorkerEvent","dir","logRequestProgress","fromEntries","keepAlive","requestFromTransportRequest","logRequestProcessProgress","formData","queryParameters","FormData","Request","redirect","subscriptionWorkerUrl","ssl","transactionalRequestTimeout","subscribeRequestTimeout","restore","useInstanceId","suppressLeaveEvents","requestMessageCountThreshold","autoNetworkDetection","enableEventEngine","maintainPresenceState","subscribeKey","publishKey","presenceTimeout","heartbeatInterval","dedupeOnSubscribe","useRequestId","announceSuccessfulHeartbeats","announceFailedHeartbeats","fileUploadPublishRetryLimit","keySet","maximumCacheSize","listenToBrowserNetworkEvents","subscriptionWorkerLogVerbosity","isUUID","createUUID","retryConfiguration","cryptoModule","_pnsdkSuffix","_instanceId","_cryptoModule","_cipherKey","_setupCryptoModule","instanceId","getUserId","setUserId","getAuthKey","authKey","setAuthKey","getFilterExpression","filterExpression","setFilterExpression","getCipherKey","setCipherKey","getCustomEncrypt","getCustomDecrypt","getCryptoModule","getUseRandomIVs","setPresenceTimeout","getPresenceTimeout","getHeartbeatInterval","setHeartbeatInterval","getTransactionTimeout","getSubscribeTimeout","PubNubFile","getVersion","_addPnsdkSuffix","_getPnsdkSuffix","getUUID","setUUID","cbor","setToken","getToken","parseToken","decodeToken","chan","grp","pat","ttl","authorized_uuid","sig","resources","uuids","extractPermissions","channels","read","write","manage","GET","POST","PATCH","DELETE","LOCAL","textDecoder","clientConfiguration","shaHMAC","signatureGenerator","instanceid","requestid","pnsdk","generatePNSDK","authenticateRequest","signRequest","tokenManager","auth","sdkName","sdkFamily","partnerId","listeners","addListener","removeListener","removeAllListeners","announceStatus","announcePresence","presence","announceMessage","announceSignal","announceMessageAction","messageAction","announceFile","announceObjects","objects","announceNetworkUp","announceNetworkDown","announceUser","announceSpace","announceMembership","membership","onReconnect","startPolling","timeTimer","callTime","stopPolling","hashHistory","timetoken","isDuplicate","addEntry","clearHistory","listenerManager","eventEmitter","subscribeCall","heartbeatCall","leaveCall","reconnectionManager","dedupingManager","heartbeatChannelGroups","heartbeatChannels","presenceChannelGroups","presenceChannels","heartbeatTimer","presenceState","pendingChannelGroupSubscriptions","pendingChannelSubscriptions","channelGroups","currentTimetoken","lastTimetoken","storedTimetoken","subscriptionStatusAnnounced","isOnline","subscribedChannels","subscribedChannelGroups","_subscribeAbort","stopSubscribeLoop","stopHeartbeatTimer","reconnect","startSubscribeLoop","startHeartbeatTimer","withPresence","withHeartbeats","affectedChannels","affectedChannelGroups","region","unsubscribeAll","heartbeat","processSubscribeResponse","cursor","messages","emitEvent","changePresence","connected","sendHeartbeat","_payload","setDefaultPayloadStructure","_title","_subtitle","_body","_badge","sound","_sound","_apnsPushType","_isSilent","configurations","_configurations","notification","aps","alert","objectFromAPNS2Configuration","pn_push","targets","collapseId","expirationDate","auth_method","objectFromAPNSTarget","collapse_id","expiration","topic","environment","excludedDevices","excluded_devices","_icon","_tag","apns","fcm","debugging","_debugging","buildPayload","pn_apns","pn_gcm","pn_debug","requestIdentifier","_cancellationController","cancellationController","deserializeResponse","PNPublishOperation","PNSignalOperation","PNSubscribeOperation","PNUnsubscribeOperation","PNWhereNowOperation","PNHereNowOperation","PNGlobalHereNowOperation","PNSetStateOperation","PNGetStateOperation","PNHeartbeatOperation","PNAddMessageActionOperation","PNRemoveMessageActionOperation","PNGetMessageActionsOperation","PNTimeOperation","PNHistoryOperation","PNDeleteMessagesOperation","PNFetchMessagesOperation","PNMessageCounts","PNGetAllUUIDMetadataOperation","PNGetUUIDMetadataOperation","PNSetUUIDMetadataOperation","PNRemoveUUIDMetadataOperation","PNGetAllChannelMetadataOperation","PNGetChannelMetadataOperation","PNSetChannelMetadataOperation","PNRemoveChannelMetadataOperation","PNGetMembersOperation","PNSetMembersOperation","PNGetMembershipsOperation","PNSetMembershipsOperation","PNListFilesOperation","PNGenerateUploadUrlOperation","PNPublishFileOperation","PNPublishFileMessageOperation","PNGetFileUrlOperation","PNDownloadFileOperation","PNDeleteFileOperation","PNAddPushNotificationEnabledChannelsOperation","PNRemovePushNotificationEnabledChannelsOperation","PNPushNotificationEnabledChannelsOperation","PNRemoveAllPushNotificationsOperation","PNChannelGroupsOperation","PNRemoveGroupOperation","PNChannelsForGroupOperation","PNAddChannelsToGroupOperation","PNRemoveChannelsFromGroupOperation","PNAccessManagerGrant","PNAccessManagerGrantToken","PNAccessManagerAudit","PNAccessManagerRevokeToken","PNHandshakeOperation","PNReceiveMessagesOperation","Presence","Message","Signal","AppContext","MessageAction","Files","parameters","messageFromEnvelope","fileFromEnvelope","presenceEventFromEnvelope","signalFromEnvelope","appContextFromEnvelope","messageActionFromEnvelope","accept","subscriptionChannelFromEnvelope","channel","subscription","actualChannel","subscribedChannel","decryptedData","userMetadata","getFileUrl","channelListenerMap","groupListenerMap","announce","spaceId","sync","transition","transitionMap","enterEffects","exitEffects","onEnter","onExit","describe","currentState","invocation","fromState","fromContext","toState","toContext","dependencies","handlers","managed","dispose","_aborted","asyncFunction","abortSignal","Ee","Te","leave","heartbeatDelay","retryDelay","shouldRetry","attempts","getDelay","emitStatus","with","$e","_engine","engine","dispatcher","_unsubscribeEngine","leaveAll","Le","LinearRetryPolicy","maximumRetry","getGiveupReason","ExponentialRetryPolicy","minimumDelay","maximumDelay","Be","ze","ot","ut","handshake","receiveMessages","emitMessages","getSubscribedChannels","getSubscribedChannelGroups","sendByPost","prepareMessagePayload","replicate","storeInHistory","store","norep","includeUUIDs","includeState","total_channels","occupancy","occupants","totalChannels","totalOccupancy","disable_uuids","channelTimetokens","channelsTimetoken","stringifiedTimeToken","includeMeta","processPayload","startTimeToken","endTimeToken","include_token","string_message_token","include_meta","includeMessageActions","includeUuid","includeUUID","includeMessageType","message_type","messageType","actions","more","include_uuid","include_message_type","isFileMessage","actionTimetoken","limit","messageTimetoken","fileId","file_upload_request","formFields","form_fields","uploadUrl","generateFileUploadUrl","uploadFile","publishFileMessage","cryptography","publishFile","pubnub","channelNames","groupNames","onMessage","onPresence","onSignal","onObjects","onMessageAction","onFile","subscriptionOptions","subscriptionList","channelGroup","addSubscription","removeSubscription","addSubscriptionSet","subscriptions","removeSubscriptionSet","receivePresenceEvents","listChannels","listGroups","addChannels","removeChannels","deleteGroup","pushGateway","deleteDevice","customFields","totalCount","page","statusField","channelFields","customChannelFields","channelStatusField","channelTypeField","custom","UUIDFields","customUUIDFields","UUIDStatusField","UUIDTypeField","getAllUUIDMetadata","_getAllUUIDMetadata","getUUIDMetadata","_getUUIDMetadata","setUUIDMetadata","_setUUIDMetadata","removeUUIDMetadata","_removeUUIDMetadata","getAllChannelMetadata","_getAllChannelMetadata","getChannelMetadata","_getChannelMetadata","setChannelMetadata","_setChannelMetadata","removeChannelMetadata","_removeChannelMetadata","getChannelMembers","setChannelMembers","removeChannelMembers","getMemberships","setMemberships","removeMemberships","fetchMemberships","updated","eTag","addMemberships","users","spaces","notificationPayload","generateUUID","_configuration","_objects","_channelGroups","_push","presenceEventEngine","makeUnsubscribe","eventEngine","subscribeHandshake","subscribeReceiveMessages","subscriptionManager","makeSubscribe","channelMetadata","subscriptionSet","fire","getMessageActions","addMessageAction","removeMessageAction","fetchMessages","deleteMessages","messageCounts","hereNow","whereNow","grantToken","revokeToken","grant","audit","fetchUsers","fetchUser","createUser","updateUser","removeUser","fetchSpaces","fetchSpace","createSpace","updateSpace","removeSpace","updateMemberships","userIds","spaceIds","sendFile","listFiles","downloadFile","deleteFile","OPERATIONS","CATEGORIES","base64ToBinary","networkDownDetected","networkUpDetected","CryptoModule","QR8bitByte","MODE_8BIT_BYTE","getLength","put","QRBitBuffer","bufIndex","putBit","getLengthInBits","bit","math","QRPolynomial","gexp","glog","ratio","BitByte","RSBlock","BitBuffer","Polynomial","QRCode","typeNumber","errorCorrectLevel","modules","moduleCount","dataCache","dataList","addData","newData","isDark","row","col","getModuleCount","make","rsBlocks","getRSBlocks","totalDataCount","dataCount","makeImpl","getBestMaskPattern","maskPattern","setupPositionProbePattern","setupPositionAdjustPattern","setupTimingPattern","setupTypeInfo","setupTypeNumber","createData","mapData","minLostPoint","lostPoint","getLostPoint","createMovieClip","target_mc","instance_name","depth","qr_mc","createEmptyMovieClip","beginFill","moveTo","lineTo","endFill","getPatternPosition","getBCHTypeNumber","getBCHTypeInfo","inc","bitIndex","byteIndex","dark","getMask","PAD0","PAD1","createBytes","maxDcCount","maxEcCount","dcdata","ecdata","dcCount","ecCount","rsPoly","getErrorCorrectPolynomial","modPoly","modIndex","totalCodeCount","ECL","QRRSBlock","RS_BLOCK_TABLE","rsBlock","getRsBlockTable","QRMath","LOG_TABLE","EXP_TABLE","MODE_NUMBER","MODE_ALPHA_NUM","MODE_KANJI","Mode","QRMaskPattern","QRUtil","PATTERN_POSITION_TABLE","G15","G18","G15_MASK","getBCHDigit","digit","errorCorrectLength","qrCode","sameCount","darkCount","enumerableOnly","sym","_objectSpread2","_defineProperty","_defineProperties","_getPrototypeOf","_createSuper","Derived","hasNativeReflectConstruct","construct","sham","_isNativeReflectConstruct","Super","NewTarget","_slicedToArray","_arrayWithHoles","_arr","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_toConsumableArray","_arrayLikeToArray","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","minLen","arr2","prfx","getSortByVal","reversed","getUpdatedHandles","updateKey","updateValue","_handles$index","getSliderDomain","slider","vertical","isNotValidTouch","_ref$type","touches","getTouchPosition","pageX","getHandles","valueToStep","changes","mode3","indexForMovingHandle","handleMoveIsPositive","n0","n1","newStep","check","_newStep","_check","callAll","fns","NOOP","percent","Rail","getRailProps","_this$props","emitMouse","emitTouch","onMouseDown","onTouchStart","_this$props2","getEventData","_this$props2$activeHa","activeHandleID","renderedChildren","Handles","autofocus","focus","getHandleProps","emitKeyboard","_this$props2$handles","LinearScale","interpolator","d0","d1","interpolateValue","deinterpolateValue","createInterpolator","rescale","defaultGetEventData$1","Ticks","_this$props$scale","scale","_this$props$count","_this$props$getEventD","_this$props$activeHan","getTicks","defaultGetEventData","Tracks","getTrackProps","_this$props2$left","_this$props2$right","_this$props2$scale","_this$props2$getEvent","getDomain","tracks","DiscreteScale","setDomain","setRange","setStep","_this$domain","_this$range","defaultDomain","Slider","_PureComponent","valueToPerc","pixelToStep","handleID","validUpKeys","validDownKeys","_assertThisInitialize","_assertThisInitialize2","_assertThisInitialize3","_assertThisInitialize4","_assertThisInitialize5","_assertThisInitialize6","keyCode","currVal","newVal","getNextValue","getPrevValue","nextHandles","submitUpdate","onStart","isTouch","_assertThisInitialize7","_assertThisInitialize8","TouchEvent","MouseEvent","onMouseMove","_assertThisInitialize9","_assertThisInitialize10","_assertThisInitialize11","_assertThisInitialize12","_assertThisInitialize13","onTouchMove","_assertThisInitialize14","_assertThisInitialize15","_assertThisInitialize16","onMouseUp","_assertThisInitialize17","_assertThisInitialize18","_assertThisInitialize19","_assertThisInitialize20","_assertThisInitialize21","_assertThisInitialize22","onSlideEnd","onTouchEnd","_assertThisInitialize23","_assertThisInitialize24","_assertThisInitialize25","_assertThisInitialize26","_assertThisInitialize27","removeListeners","_this$props$onSlideSt","onSlideStart","addTouchEvents","addMouseEvents","handleRailAndTrackClicks","_this$state","_this$props$reversed","minDiff","_curr$i","callOnChange","_this$props2$mode","_this$props2$step","_this$props2$onUpdate","onUpdate","_this$props2$onChange","_this$props2$reversed","mode1","mode2","_this$state2","_this$props3","_this$props3$rootStyl","rootStyle","_this$props3$rootProp","rootProps","_this$props3$componen","Comp","_this$props3$disabled","_this$props3$flatten","mappedHandles","isRCSComponent","nextProps","_nextProps$step","_nextProps$domain","_nextProps$reversed","_nextProps$onUpdate","_nextProps$onChange","_nextProps$warnOnChan","warnOnChanges","nextState","_domain","_getHandles","_getHandles2","_handles","PureComponent","ex","React__default","UAParser","ClientUAInstance","getBrowser","cpu","getCPU","getDevice","getEngine","getOS","setUa","userAgentString","setUA","parseUserAgent","UserAgentInstance","setUserAgent","UAHelper","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","DeviceTypes","BrowserTypes","Chrome","Firefox","Opera","Yandex","Safari","InternetExplorer","Edge","Chromium","MobileSafari","EdgeChromium","MIUI","SamsungBrowser","OsTypes","IOS","Android","WindowsPhone","Windows","MAC_OS","InitialDeviceTypes","isMobile","isTablet","isSmartTV","isConsole","isWearable","setDefaults","getNavigatorInstance","isIOS13Check","MSStream","mobilePayload","model","osVersion","isMobileType","isTabletType","isMobileAndTabletType","isSmartTVType","isBrowserType","isWearableType","isConsoleType","isEmbeddedType","_ref8","getMobileVendor","_ref9","getMobileModel","_ref10","getDeviceType","_ref11","isAndroidType","_ref12","isWindowsType","_ref13","isMacOsType","_ref14","isWinPhoneType","_ref15","isIOSType","_ref16","getOsVersion","_ref17","getOsName","_ref18","isChromeType","_ref19","isFirefoxType","_ref20","isChromiumType","_ref21","isEdgeType","_ref22","isYandexType","_ref23","isSafariType","_ref24","isMobileSafariType","_ref25","isOperaType","_ref26","isIEType","_ref27","isMIUIType","_ref28","isSamsungBrowserType","_ref29","getBrowserFullVersion","_ref30","getBrowserVersion","_ref31","major","getBrowserName","_ref32","getEngineName","_ref33","getEngineVersion","_ref34","isElectronType","isEdgeChromiumType","getIOS13","getIPad13","getIphone13","getIPod13","getUseragent","userAg","buildSelectorsObject","isEmbedded","isMobileSafari","isChromium","isMobileOnly","isDesktop","isAndroid","isWinPhone","isIOS","isChrome","isFirefox","isSafari","isOpera","osName","fullBrowserVersion","browserName","mobileVendor","mobileModel","engineName","engineVersion","isEdge","isYandex","deviceType","isIOS13","isIPad13","isIPhone13","isIPod13","isElectron","isEdgeChromium","isLegacyEdge","isWindows","isMacOs","isMIUI","isSamsungBrowser","useDeviceData","hookUserAgent","FUNC_TYPE","UNDEF_TYPE","OBJ_TYPE","STR_TYPE","MAJOR","MODEL","NAME","TYPE","ARCHITECTURE","CONSOLE","MOBILE","TABLET","SMARTTV","WEARABLE","EMBEDDED","AMAZON","APPLE","ASUS","BLACKBERRY","BROWSER","CHROME","FIREFOX","GOOGLE","HUAWEI","LG","MICROSOFT","MOTOROLA","OPERA","SAMSUNG","SHARP","SONY","XIAOMI","ZEBRA","FACEBOOK","CHROMIUM_OS","enumerize","enums","str1","str2","lowerize","rgxMapper","arrays","strMapper","windowsVersionMap","ME","XP","Vista","RT","regexes","EDGE","extensions","getResult","_navigator","_ua","_uach","userAgentData","_rgxmap","mergedRegexes","_isSelfNav","_browser","brave","isBrave","_cpu","_device","standalone","_os","CPU","DEVICE","ENGINE","OS","jQuery","Zepto","aa","da","ea","ha","ia","ja","ka","la","ma","acceptsBooleans","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","sa","ta","pa","oa","removeAttribute","setAttributeNS","xlinkHref","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","wa","ya","za","Aa","Ba","Ea","Ga","Ha","Ia","Ja","Ka","Ma","Na","Oa","prepareStackTrace","Qa","$$typeof","Va","_valueTracker","stopTracking","Ua","Wa","Xa","activeElement","Ya","defaultChecked","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","db","ownerDocument","eb","fb","defaultSelected","gb","hb","ib","jb","kb","lb","mb","nb","namespaceURI","firstChild","MSApp","execUnsafeLocalFunction","ob","lastChild","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","lineClamp","opacity","orphans","tabSize","widows","zIndex","zoom","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","qb","rb","sb","tb","menuitem","area","embed","keygen","wbr","ub","vb","wb","xb","srcElement","correspondingUseElement","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","Wb","memoizedState","dehydrated","Xb","Zb","sibling","Yb","$b","unstable_scheduleCallback","unstable_cancelCallback","unstable_shouldYield","unstable_requestPaint","unstable_now","ec","unstable_getCurrentPriorityLevel","unstable_ImmediatePriority","unstable_UserBlockingPriority","hc","unstable_NormalPriority","unstable_LowPriority","unstable_IdlePriority","lc","clz32","pc","LN2","sc","tc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","xc","yc","zc","eventTimes","Cc","Dc","Fc","Hc","Jc","Kc","Lc","Qc","Sc","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","isDehydrated","containerInfo","Xc","Yc","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","fd","gd","hd","Uc","jd","kd","ld","md","nd","od","charCode","pd","qd","rd","_reactName","_targetInst","isDefaultPrevented","defaultPrevented","isPropagationStopped","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","isTrusted","td","ud","view","vd","Ad","screenX","screenY","pageY","shiftKey","altKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","targetTouches","changedTouches","Xd","Yd","deltaZ","Zd","$d","color","datetime","password","tel","oninput","detachEvent","nextSibling","compareDocumentPosition","HTMLIFrameElement","contentWindow","contentEditable","focusedElem","selectionRange","selectionStart","selectionEnd","getSelection","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","scrollTop","animationend","animationiteration","animationstart","transitionend","animation","af","bf","cf","df","ef","ff","gf","hf","lf","mf","Ub","of","pf","qf","rf","sf","passive","tf","uf","parentWindow","wf","na","xa","$a","ba","xf","Af","Bf","Df","Ff","If","Kf","Lf","Mf","Nf","Of","Pf","Qf","Tf","Vf","Xf","Yf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","zg","Ag","Bg","deletions","Cg","pendingProps","overflow","treeContext","retryLane","Dg","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Pg","Qg","Rg","_currentValue","Sg","childLanes","Tg","firstContext","lanes","Ug","Vg","memoizedValue","Wg","Xg","Yg","interleaved","Zg","$g","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","effects","eventTime","lane","refs","isMounted","_reactInternals","enqueueSetState","enqueueReplaceState","enqueueForceUpdate","shouldComponentUpdate","isPureReactComponent","updater","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","_owner","_stringRef","revealOrder","_workInProgressVersionPrimary","ReactCurrentDispatcher","baseQueue","lastRenderedReducer","hasEagerState","eagerState","lastRenderedState","getSnapshot","lastEffect","stores","deps","readContext","useContext","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","pingCache","ReactCurrentOwner","aj","bj","cj","dj","ej","baseLanes","cachePool","transitions","fj","gj","hj","ij","jj","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","kj","lj","pendingContext","mj","Aj","Bj","Cj","Dj","nj","oj","pj","fallback","qj","rj","tj","dataset","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","tailMode","yj","Ej","Fj","Gj","wasMultiple","multiple","onclick","createElementNS","autoFocus","Hj","Ij","Jj","Kj","Lj","WeakSet","Mj","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","_reactRootContainer","Xj","Yj","Zj","ak","onCommitFiberUnmount","componentWillUnmount","bk","ck","dk","ek","fk","isHidden","gk","hk","ik","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","Wk","mk","nk","ok","pk","qk","rk","sk","tk","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","isReactComponent","pendingChildren","mutableSourceEagerHydrationData","pendingSuspenseBoundaries","zj","$k","_internalRoot","nl","rl","unmount","unstable_scheduleHydration","form","tl","usingClientEntryPoint","Events","ul","findFiberByHostInstance","bundleType","rendererPackageName","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","isDisabled","supportsFiber","inject","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","restrictPosition","mediaSize","cropSize","rotation","rotateSize","restrictPositionCoord","maxPosition","getDistanceBetweenPoints","pointA","pointB","getRotationBetweenPoints","atan2","limitArea","noOp","_max","getCenter","rotRad","cos","Cropper","imageRef","videoRef","containerPosition","containerRef","styleRef","containerRect","naturalWidth","naturalHeight","dragStartPosition","dragStartCrop","gestureZoomStart","gestureRotationStart","isTouching","lastPinchDistance","lastPinchRotation","rafDragTimeout","rafPinchTimeout","wheelTimer","currentDoc","currentWindow","resizeObserver","hasWheelJustStarted","initResizeObserver","ResizeObserver","isFirstResize","computeSizes","observe","preventZoomSafari","cleanEvents","onDragStopped","onGestureMove","onGestureEnd","onScroll","clearScrollEvent","onWheel","onMediaLoad","emitCropData","setInitialCrop","onMediaLoaded","initialCroppedAreaPercentages","croppedAreaPercentages","minZoom","maxZoom","mediaBBoxSize","crop","getInitialCropFromCroppedAreaPercentages","onCropChange","onZoomChange","initialCroppedAreaPixels","croppedAreaPixels","mediaNaturalBBoxSize","mediaZoom","getMediaZoom","getZoomFromCroppedAreaPixels","cropZoom","getInitialCropFromCroppedAreaPixels","mediaRef","saveContainerPosition","containerAspect","videoWidth","videoHeight","mediaAspect","renderedMediaSize","getObjectFit","setMediaSize","mediaWidth","mediaHeight","containerWidth","containerHeight","aspect","fittingWidth","fittingHeight","getCropSize","onCropSizeChange","recomputeCropPosition","setCropSize","bounds","onDragStart","getMousePoint","onDrag","onTouchRequest","onPinchStart","getTouchPoint","onPinchMove","onGestureStart","point","newZoom","setNewZoom","shouldUpdatePosition","onRotationChange","newRotation","onInteractionStart","cancelAnimationFrame","offsetX","offsetY","requestedPosition","newPosition","onInteractionEnd","onWheelRequest","zoomSpeed","getPointOnContainer","containerTopLeft","getPointOnMedia","zoomPoint","zoomTarget","getCropData","limitAreaFn","widthInPixels","heightInPixels","sizePixels","computeCroppedArea","getAspect","cropData","onCropComplete","onCropAreaChange","emitCropAreaChange","zoomWithScroll","disableAutomaticStylesInjection","nonce","setImageRef","setVideoRef","_j","objectFit","video","center","image","mediaProps","cropShape","showGrid","containerStyle","cropAreaStyle","mediaStyle","containerClassName","cropAreaClassName","mediaClassName","onLoad","autoPlay","muted","onLoadedMetadata","controls","touch","_reactSwipe","_reactSwipe2","_propTypes","setHasSupportToCaptureOption","supportsCaptureOption","hasSupport","getSafeEventHandlerOpts","getPosition","_event$touches$","ReactSwipe","_handleSwipeStart","_handleSwipeMove","_handleSwipeEnd","_onMouseDown","_onMouseMove","_onMouseUp","_setSwiperRef","swiper","allowMouseEvents","mouseDown","_getPosition","moveStart","onSwipeStart","_getPosition2","moving","onSwipeMove","movePosition","onSwipeEnd","tolerance","onSwipeLeft","onSwipeRight","onSwipeUp","onSwipeDown","innerRef","loaded","isSdkLoaded","isProcessing","responseApi","FB","api","checkLoginState","setStateIfMounted","authResponse","onFailure","checkLoginAfterRefresh","login","click","scope","appId","returnScopes","responseType","redirectUri","disableMobileRedirect","authType","client_id","redirect_uri","return_scopes","response_type","auth_type","_isMounted","sdkLoaded","setFbAsyncInit","loadSdkAsynchronously","autoLoad","getLoginStatus","xfbml","fbAsyncInit","isRedirectedFromFb","hasElementType","hasMap","hasSet","hasArrayBuffer","isView","equal","ATTRIBUTE_NAMES","TAG_NAMES","BASE","LINK","META","NOSCRIPT","SCRIPT","STYLE","TITLE","TAG_PROPERTIES","REACT_TAG_MAP","accesskey","charset","class","contenteditable","contextmenu","itemprop","tabindex","HELMET_PROPS","HTML_TAG_MAP","SELF_CLOSING_TAGS","HELMET_ATTRIBUTE","objectWithoutProperties","encodeSpecialCharacters","getTitleFromPropsList","propsList","innermostTitle","getInnermostProperty","innermostTemplate","innermostDefaultTitle","getOnChangeClientState","getAttributesFromPropsList","tagType","tagAttrs","getBaseTagFromPropsList","primaryAttributes","innermostBaseTag","lowerCaseAttributeKey","getTagsFromPropsList","approvedSeenTags","approvedTags","instanceTags","instanceSeenTags","primaryAttributeKey","attributeKey","tagUnion","rafPolyfill","cafPolyfill","webkitRequestAnimationFrame","mozRequestAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","_helmetCallback","commitTagChanges","newState","baseTag","bodyAttributes","htmlAttributes","linkTags","metaTags","noscriptTags","onChangeClientState","scriptTags","styleTags","titleAttributes","updateAttributes","updateTitle","tagUpdates","updateTags","addedTags","removedTags","_tagUpdates$tagType","newTags","oldTags","flattenArray","possibleArray","elementTag","helmetAttributeString","helmetAttributes","attributesToRemove","attributeKeys","indexToSave","tags","headElement","tagNodes","indexToDelete","newElement","existingTag","isEqualNode","generateElementAttributesAsString","attr","convertElementAttributestoReactProps","initProps","getMethodsForTag","toComponent","_initProps","attributeString","flattenedTitle","generateTitleAsString","_mappedTag","mappedTag","mappedAttribute","generateTagsAsReactComponent","attributeHtml","tagContent","isSelfClosing","generateTagsAsString","mapStateOnServer","_ref$title","noscript","HelmetExport","_class","_temp","HelmetWrapper","classCallCheck","possibleConstructorReturn","inherits","mapNestedChildrenToProps","nestedChildren","flattenArrayTypeChildren","_babelHelpers$extends","arrayTypeChildren","newChildProps","mapObjectTypeChildren","_babelHelpers$extends2","_babelHelpers$extends3","newProps","mapArrayTypeChildrenToProps","newFlattenedProps","arrayChildName","_babelHelpers$extends4","warnOnInvalidChildren","mapChildrenToProps","_child$props","initAttributes","convertReactPropstoHtmlAttributes","titleTemplate","peek","rewind","mappedState","Helmet","renderStatic","hotjar","initialize","sv","initialized","stateChange","_hjSettings","hjid","hjsv","hjDebug","_scriptPath","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Fragment","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","PropertyInfoRecord","CAMELIZE","CAMELCASE","SAME","possibleStandardNamesOptimized","standardName","BOOLEANISH_STRING","NUMERIC","POSITIVE_NUMERIC","RESERVED","STRING","acceptCharset","accessKey","allowFullScreen","autoCapitalize","autoComplete","autoCorrect","autoSave","cellPadding","cellSpacing","challenge","charSet","cite","classID","cols","colSpan","contextMenu","controlsList","coords","crossOrigin","disablePictureInPicture","disableRemotePlayback","download","draggable","encType","enterKeyHint","formMethod","formAction","formEncType","formNoValidate","formTarget","frameBorder","hidden","hrefLang","httpEquiv","inputMode","integrity","itemID","itemProp","itemScope","itemType","keyParams","keyType","lang","low","manifest","marginWidth","marginHeight","media","mediaGroup","minLength","noModule","noValidate","optimum","playsInline","poster","preload","profile","radioGroup","readOnly","referrerPolicy","role","rowSpan","sandbox","scoped","scrolling","seamless","sizes","span","spellCheck","srcDoc","srcLang","srcSet","summary","useMap","wmode","about","accentHeight","accumulate","additive","alignmentBaseline","allowReorder","alphabetic","amplitude","arabicForm","ascent","attributeType","autoReverse","azimuth","baseFrequency","baselineShift","baseProfile","bbox","begin","bias","calcMode","capHeight","clip","clipPath","clipPathUnits","colorInterpolation","colorInterpolationFilters","colorProfile","colorRendering","contentScriptType","contentStyleType","datatype","decelerate","descent","diffuseConstant","direction","divisor","dominantBaseline","dur","dx","dy","edgeMode","elevation","enableBackground","exponent","externalResourcesRequired","filterRes","filterUnits","floodColor","focusable","fontSizeAdjust","fontStretch","fontVariant","fx","fy","g1","g2","glyphName","glyphOrientationHorizontal","glyphOrientationVertical","glyphRef","gradientTransform","gradientUnits","hanging","horizAdvX","horizOriginX","ideographic","imageRendering","in2","in","inlist","intercept","k3","k4","kernelMatrix","kernelUnitLength","kerning","keyPoints","keySplines","keyTimes","lengthAdjust","lightingColor","limitingConeAngle","local","markerEnd","markerHeight","markerMid","markerStart","markerUnits","markerWidth","mask","maskContentUnits","maskUnits","mathematical","numOctaves","operator","orient","overlinePosition","overlineThickness","paintOrder","panose1","pathLength","patternContentUnits","patternTransform","patternUnits","pointerEvents","points","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","radius","refX","refY","renderingIntent","repeatCount","repeatDur","requiredExtensions","requiredFeatures","resource","restart","rotate","rx","ry","security","shapeRendering","slope","spacing","specularConstant","specularExponent","speed","spreadMethod","startOffset","stdDeviation","stemh","stemv","stitchTiles","stopColor","strikethroughPosition","strikethroughThickness","suppressContentEditableWarning","surfaceScale","tableValues","targetX","targetY","textAnchor","textRendering","typeof","u1","u2","underlinePosition","underlineThickness","unicode","unicodeBidi","unicodeRange","unitsPerEm","unselectable","vAlphabetic","vectorEffect","vertAdvY","vertOriginX","vertOriginY","vHanging","vIdeographic","viewTarget","visibility","vMathematical","vocab","widths","writingMode","x1","x2","xChannelSelector","xHeight","xlinkActuate","xlinkArcrole","xlinkRole","xlinkShow","xlinkTitle","xlinkType","xmlBase","xmlLang","xmlnsXlink","xmlSpace","y1","y2","yChannelSelector","zoomAndPan","bgColor","bgD","fgColor","fgD","viewBoxSize","QRCodeSvg","forwardRef","_QRCode2","_ErrorCorrectLevel2","_QRCodeSvg2","level","qrcode","cells","rowIndex","cell","cellIndex","getBatch","ContextKey","gT","_gT$ContextKey","contextMap","realContext","ReactReduxContext","createReduxContextHook","useSyncExternalStoreWithSelector","refEquality","useSelector","useReduxContext","equalityFnOrOptions","equalityFn","stabilityCheck","noopCheck","getServerState","globalStabilityCheck","globalNoopCheck","wrappedSelector","selectedState","addNestedSub","_excluded","pureFinalPropsSelectorFactory","mapStateToProps","mapDispatchToProps","mergeProps","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","ownProps","stateProps","dispatchProps","mergedProps","hasRunAtLeastOnce","handleSubsequentCalls","nextOwnProps","propsChanged","stateChanged","dependsOnOwnProps","nextStateProps","statePropsChanged","handleNewState","wrapMapToPropsConstant","getConstant","constantSelector","getDependsOnOwnProps","mapToProps","wrapMapToPropsFunc","stateOrDispatch","createInvalidArgFactory","wrappedComponentName","defaultMergeProps","nullListeners","createSubscription","parentSub","subscriptionsAmount","selfSubscribed","handleChangeWrapper","onStateChange","trySubscribe","isSubscribed","createListenerCollection","tryUnsubscribe","cleanupListener","removed","notifyNestedSubs","getListeners","useIsomorphicLayoutEffect","shallowEqual","objA","objB","keysA","keysB","NO_SUBSCRIPTION_ARRAY","captureWrapperProps","lastWrapperProps","lastChildProps","renderIsScheduled","wrapperProps","childPropsFromStoreUpdate","strictEqual","pure","areMergedPropsEqual","Context","initMapStateToProps","mapStateToPropsFactory","initMapDispatchToProps","actionCreators","boundActionCreators","bindActionCreators","mapDispatchToPropsFactory","initMergeProps","hasRunOnce","nextMergedProps","wrapMergePropsFunc","mergePropsFactory","shouldHandleStateChanges","WrappedComponent","selectorFactoryOptions","ConnectFunction","propsContext","reactReduxForwardedRef","ContextToUse","Consumer","contextValue","didStoreComeFromProps","didStoreComeFromContext","childPropsSelector","overriddenContextValue","latestSubscriptionCallbackError","actualChildPropsSelector","subscribeForReact","reactListener","additionalSubscribeListener","didUnsubscribe","lastThrownError","checkForUpdates","latestStoreState","subscribeUpdates","effectFunc","effectArgs","actualChildProps","renderedWrappedComponent","Provider","Connect","forwarded","serverState","previousState","createStoreHook","useDispatch","useStore","newBatch","initializeConnect","notInitialized","metric","positionPercent","fadeAnimationHandler","slideStopSwipingHandler","slideSwipeAnimationHandler","slideAnimationHandler","_CSSTranslate","_utils","_objectSpread","returnStyles","selectedItem","previousItem","lastPosition","infiniteLoop","centerMode","centerSlidePercentage","itemListStyle","setPosition","currentPosition","transformProp","transitionTime","WebkitTransform","msTransform","OTransform","swiping","WebkitTransitionDuration","MozTransitionDuration","OTransitionDuration","transitionDuration","msTransitionDuration","isHorizontal","childrenLength","finalBoundry","axisDelta","handledDelta","hasMoved","swipeScrollTolerance","preventMovementUntilSwipeScrollTolerance","swipeMovementStarted","cancelClick","transitionTimingFunction","slideStyle","minHeight","msTransitionTimingFunction","MozTransitionTimingFunction","WebkitTransitionTimingFunction","OTransitionTimingFunction","selectedStyle","prevStyle","_getRequireWildcardCache","newObj","hasPropertyDescriptor","_interopRequireWildcard","_reactEasySwipe","_cssClasses","_Thumbs","_document","_window","_animations","Carousel","thumbsRef","carouselWrapperRef","listRef","itemsRef","clearAutoPlay","timer","isMouseEntered","isFocusWithinTheCarousel","prevKey","decrement","firstItem","updateSizes","hasMount","onClickItem","onClickThumb","animationHandlerResponse","swipeAnimationHandler","positions","selectItem","resetAutoPlay","emulateTouch","newIndex","isKeyboardEvent","animationHandler","handleOnChange","slideImages","onImageLoad","forceUpdate","initState","setupCarousel","forceFocus","stopSwipingHandler","setupAutoPlay","destroyAutoPlay","destroyCarousel","bindEvents","initialImage","getInitialImage","setMountState","unbindEvents","carouselWrapper","stopOnHover","startOnLeave","useKeyboardArrows","navigateWithKeyboard","_this$carouselWrapper","isClone","isSelected","isPrevious","minWidth","slideProps","setItemsRef","ITEM","handleClickItem","renderItem","showIndicators","renderIndicator","changeItem","showStatus","statusFormatter","showThumbs","setThumbsRef","onSelectItem","handleClickThumb","thumbWidth","renderThumbs","isSwipeable","swipeable","canShowArrows","showArrows","hasPrev","hasNext","itemsClone","renderItems","firstClone","lastClone","swiperProps","SLIDER","containerStyles","onSwipeForward","onSwipeBackwards","dynamicHeight","itemHeight","getVariableItemHeight","verticalSwipe","ariaLabel","ROOT","setCarouselWrapperRef","CAROUSEL","renderControls","renderArrowPrev","onClickPrev","leftArrow","WRAPPER","setListRef","renderArrowNext","onClickNext","rightArrow","renderStatus","onClickHandler","ARROW_PREV","ARROW_NEXT","DOT","images","defaultStatusFormatter","_dimensions","Thumbs","itemsWrapperRef","itemsListRef","wrapperSize","outerWidth","visibleItems","_state","getFirstItem","setupThumbs","destroyThumbs","itemClass","thumbProps","itemListStyles","MozTransform","MsTransform","MsTransitionDuration","setItemsWrapperRef","slideRight","slideLeft","setItemsListRef","_classnames","_default","customClassName","isSlider","carousel","isSwiping","thumbs","animated","thumb","slide","dot","marginRight","_Carousel","_types","watchOnlyPathname","lastLocation","setLastLocation","preventLastLocation","startTransitionImpl","BrowserRouter","future","historyRef","setStateImpl","v7_startTransition","navigationType","ABSOLUTE_URL_REGEX","Link","absoluteHref","relative","reloadDocument","preventScrollReset","unstable_viewTransition","isExternal","currentUrl","targetUrl","internalOnClick","replaceProp","navigate","isModifiedEvent","shouldProcessLinkClick","useLinkClickHandler","DataRouterHook","DataRouterStateHook","DataRouterContext","DataRouterStateContext","NavigationContext","LocationContext","RouteContext","outlet","isDataRoute","RouteErrorContext","useHref","useInRouterContext","useResolvedPath","joinedPathname","useLocation","useMatch","static","useNavigate","router","useDataRouterContext","UseNavigateStable","useCurrentRouteId","activeRef","fromRouteId","useNavigateStable","dataRouterContext","routePathnamesJson","useNavigateUnstable","useParams","routeMatch","_temp2","useRoutesImpl","dataRouterState","parentMatches","parentParams","parentPathnameBase","locationFromContext","_parsedLocationArg$pa","parsedLocationArg","renderedMatches","_renderMatches","DefaultErrorComponent","_state$errors","useDataRouterState","UseRouteError","routeId","useRouteError","lightgrey","preStyles","backgroundColor","defaultErrorElement","RenderErrorBoundary","revalidation","errorInfo","routeContext","RenderedRoute","staticContext","errorElement","_deepestRenderedBoundaryId","_dataRouterState2","_dataRouterState","errorIndex","getChildren","hookName","useRouteContext","thisRoute","Route","Router","basenameProp","locationProp","staticProp","navigationContext","locationContext","trailingPathname","Routes","createRoutesFromChildren","treePath","loader","hasErrorBoundary","shouldRevalidate","handle","reducePropsToState","handleStateChangeOnClient","mountedInstances","emitChange","SideEffect","recordedState","getDisplayName","__WEBPACK_EXTERNAL_MODULE_react__","installedModules","moduleId","getter","react__WEBPACK_IMPORTED_MODULE_0__","__rest","hasGetUserMedia","getUserMedia","constraints","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","Webcam","requestUserMediaId","unmounted","hasUserMedia","requestUserMedia","onUserMediaError","audioConstraintsChanged","audioConstraints","videoConstraintsChanged","videoConstraints","minScreenshotWidthChanged","minScreenshotWidth","minScreenshotHeightChanged","minScreenshotHeight","stopAndCleanup","stopMediaStream","getVideoTracks","getAudioTracks","removeTrack","revokeObjectURL","getScreenshot","screenshotDimensions","getCanvas","screenshotFormat","screenshotQuality","canvasWidth","canvasHeight","forceScreenshotSourceSize","mirrored","translate","imageSmoothingEnabled","imageSmoothing","drawImage","sourceSelected","myRequestUserMediaId","handleUserMedia","optionalSource_1","sourceId","constraintToSourceId_1","constraint","ideal","MediaStreamTrack","getSources","sources","audioSource","videoSource","audioSourceId","videoSourceId","srcObject","createObjectURL","onUserMedia","videoStyle","childrenProps","__self","__source","jsx","jsxs","_status","_result","createContext","_currentValue2","_threadCount","_defaultValue","_globalName","createFactory","createRef","startTransition","unstable_act","super_","prefilter","normalize","lhs","rhs","groupCollapsed","groupEnd","actionTransformer","titleFormatter","collapsed","colors","started","startedTime","took","stateTransformer","errorTransformer","logErrors","diffPredicate","DeepDiff","observableDiff","applyDiff","applyChange","revertChange","isConflict","transformer","createLogger","createThunkMiddleware","formatProdErrorMessage","$$observable","observable","randomString","ActionTypes","INIT","REPLACE","PROBE_UNKNOWN_ACTION","createStore","enhancer","currentReducer","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","replaceReducer","nextReducer","outerSubscribe","observeState","combineReducers","reducers","reducerKeys","finalReducers","shapeAssertionError","finalReducerKeys","assertReducerShape","hasChanged","previousStateForKey","nextStateForKey","compose","funcs","applyMiddleware","middlewares","_dispatch","middlewareAPI","sortIndex","setImmediate","expirationTime","priorityLevel","scheduling","isInputPending","MessageChannel","port2","port1","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","unstable_wrapCallback","scriptpath","urlArgs","$script","idOrDone","optDone","idOrDoneIsDone","loopFn","dset","force","ready","missing","dep","ANY","Comparator","comp","loose","semver","COMPARATORLOOSE","COMPARATOR","SemVer","cmp","intersects","Range","includePrerelease","safeRe","SPACE_CHARACTERS","raw","formatted","parseRange","isNullSet","isAny","comps","memoKey","FLAG_INCLUDE_PRERELEASE","FLAG_LOOSE","cached","HYPHENRANGELOOSE","HYPHENRANGE","hyphenReplace","COMPARATORTRIM","comparatorTrimReplace","TILDETRIM","tildeTrimReplace","CARETTRIM","caretTrimReplace","rangeList","parseComparator","replaceGTE0","rangeMap","comparators","thisComparators","isSatisfiable","rangeComparators","thisComparator","rangeComparator","testSet","remainingComparators","testComparator","otherComparator","replaceCarets","replaceTildes","replaceXRanges","replaceStars","isX","replaceTilde","TILDELOOSE","TILDE","replaceCaret","CARETLOOSE","CARET","replaceXRange","XRANGELOOSE","XRANGE","gtlt","xM","xm","xp","anyX","STAR","GTE0PRE","GTE0","incPr","$0","fM","fm","fpr","tM","tm","tpr","prerelease","allowed","minor","patch","MAX_LENGTH","MAX_SAFE_INTEGER","compareIdentifiers","LOOSE","FULL","build","compareMain","comparePre","compareBuild","release","identifierBase","neq","rtl","coerceRtlRegex","COERCERTLFULL","COERCERTL","COERCEFULL","COERCE","versionA","versionB","version1","version2","v1","v2","v1Higher","highVersion","lowVersion","highHasPre","throwErrors","parsed","internalRe","constants","identifiers","valid","clean","rcompare","compareLoose","rsort","coerce","satisfies","toComparators","maxSatisfying","minSatisfying","minVersion","validRange","outside","gtr","ltr","simplifyRange","subset","SEMVER_SPEC_VERSION","RELEASE_TYPES","rcompareIdentifiers","MAX_SAFE_COMPONENT_LENGTH","MAX_SAFE_BUILD_LENGTH","NODE_DEBUG","anum","bnum","firstKey","looseOption","emptyOpts","LETTERDASHNUMBER","safeRegexReplacements","createToken","isGlobal","safe","makeSafeRegex","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","BUILDIDENTIFIER","MAINVERSION","PRERELEASE","BUILD","FULLPLAIN","MAINVERSIONLOOSE","PRERELEASELOOSE","LOOSEPLAIN","XRANGEIDENTIFIER","XRANGEIDENTIFIERLOOSE","GTLT","XRANGEPLAIN","XRANGEPLAINLOOSE","COERCEPLAIN","LONETILDE","LONECARET","r2","versions","maxSV","rangeObj","minSV","minver","setMin","comparator","compver","hilo","gtfn","ltefn","ltfn","ecomp","ranges","simplified","minimumVersionWithPreRelease","minimumVersion","simpleSubset","eqSet","gtltComp","higher","lower","hasDomLT","hasDomGT","higherGT","lowerLT","needDomLTPre","needDomGTPre","sawNonNull","OUTER","simpleSub","simpleDom","isSub","style_to_object_1","StyleToJS","CUSTOM_PROPERTY_REGEX","HYPHEN_REGEX","NO_HYPHEN_REGEX","VENDOR_PREFIX_REGEX","MS_VENDOR_PREFIX_REGEX","trimHyphen","skipCamelCase","__decorate","decorators","decorate","__param","paramIndex","decorator","__metadata","metadataKey","metadataValue","__awaiter","__values","__read","__spread","__spreadArrays","pack","__await","__asyncGenerator","asyncIterator","resume","fulfill","settle","__asyncDelegator","__asyncValues","__makeTemplateObject","cooked","__classPrivateFieldGet","receiver","__classPrivateFieldSet","readCookie","cleanValue","cleanupCookieValue","doNotParse","cookies","defaultSetOptions","changeListeners","HAS_DOCUMENT_COOKIE","previousCookies","_checkChanges","domCookies","parseCookies","_emitChange","newCookies","_startPolling","pollingInterval","_stopPolling","doNotUpdate","getAll","stringValue","finalOptions","maxAge","addChangeListener","cookieStore","removeChangeListener","dec","eqIdx","endIdx","tryDecode","opt","fieldContentRegExp","__toString","toUTCString","httpOnly","sameSite","hasValue","v4","byteToHex","bth","msCrypto","rnds8","rnds","_nodeId","_clockseq","rng","bytesToUuid","_lastMSecs","_lastNSecs","clockseq","seedBytes","msecs","nsecs","tmh","SkeletonThemeContext","defaultEnableAnimation","styleOptionsToCssProperties","baseColor","highlightColor","borderRadius","circle","enableAnimation","SkeletonTheme","Wrapper","containerTestId","styleProp","originalPropsStyleOptions","contextStyleOptions","propsStyleOptions","inline","countCeil","thisStyle","fractionalPart","fractionalWidth","skeletonSpan","PlatformLoggerServiceImpl","getPlatformInfoString","getProviders","provider","getComponent","isVersionServiceProvider","getImmediate","logString","name$q","version$1","DEFAULT_ENTRY_NAME","PLATFORM_LOG_STRING","_apps","_serverApps","_components","_addComponent","addComponent","_addOrOverwriteComponent","addOrOverwriteComponent","_registerComponent","serverApp","_getProvider","heartbeatController","getProvider","triggerHeartbeat","_removeServiceInstance","instanceIdentifier","clearInstance","_isFirebaseApp","_isFirebaseServerApp","settings","_clearComponents","ERRORS","ERROR_FACTORY","FirebaseAppImpl","_isDeleted","_name","_automaticDataCollectionEnabled","automaticDataCollectionEnabled","_container","checkDestroyed","isDeleted","FirebaseServerAppImpl","serverConfig","_serverConfig","_finalizationRegistry","FinalizationRegistry","automaticCleanup","_refCount","incRefCount","releaseOnDeref","registerVersion","refCount","decRefCount","deleteApp","initializeApp","rawConfig","existingApp","newApp","initializeServerApp","_serverAppConfig","appOptions","nameObj","nameString","imul","getApp","getApps","cleanupProviders","libraryKeyOrName","libraryMismatch","versionMismatch","onLog","logCallback","setLogLevel","logLevel","DB_NAME","DB_VERSION","STORE_NAME","dbPromise","getDbPromise","oldVersion","createObjectStore","originalErrorMessage","writeHeartbeatsToIndexedDB","heartbeatObject","tx","transaction","objectStore","computeKey","idbGetError","HeartbeatServiceImpl","_heartbeatsCache","_storage","HeartbeatStorageImpl","_heartbeatsCachePromise","getUTCDateString","heartbeats","lastSentHeartbeatDate","singleDateHeartbeat","hbTimestamp","overwrite","getHeartbeatsHeader","heartbeatsToSend","unsentEntries","heartbeatsCache","maxSize","heartbeatEntry","countBytes","extractHeartbeatsForHeader","headerString","_canUseIndexedDBPromise","runIndexedDBEnvironmentCheck","idbHeartbeatObject","readHeartbeatsFromIndexedDB","heartbeatsObject","existingHeartbeatsObject","instanceFactory","multipleInstances","serviceProps","instantiationMode","onInstanceCreated","setInstantiationMode","setMultipleInstances","setServiceProps","setInstanceCreatedCallback","instancesDeferred","instancesOptions","onInitCallbacks","normalizedIdentifier","normalizeInstanceIdentifier","deferred","isInitialized","shouldAutoInitialize","getOrInitializeService","setComponent","isComponentEager","instanceDeferred","services","INTERNAL","_delete","isComponentSet","getOptions","existingCallbacks","existingInstance","invokeOnInitCallbacks","ComponentContainer","providers","LogLevel","levelStringToEnum","VERBOSE","INFO","WARN","SILENT","defaultLogLevel","ConsoleMethod","defaultLogHandler","logType","Logger","_logLevel","_logHandler","_userLogHandler","logHandler","userLogHandler","setUserLogHandler","customLogLevel","ignored","padRight","padLeft","_createForOfIteratorHelper","allowArrayLike","normalCompletion","didErr","_e2","_toPrimitive","hint","prim","toPrimitive","_toPropertyKey","decodeNamedCharacterReference","characterReference","unreachable","nameRe","nameReJsx","emptyOptions","_prodErrorMap","prodErrorMap","_DEFAULT_AUTH_ERROR_FACTORY","logClient","_logError","_fail","authOrCode","createErrorInternal","_createError","_errorWithCustomMessage","errorMap","_serverAppCurrentUserOperationNotSupportedError","fullParams","_errorFactory","_assert","debugFail","failure","debugAssert","_getCurrentUrl","_isHttpOrHttps","_getCurrentScheme","Delay","shortDelay","longDelay","onLine","_emulatorUrl","emulator","FetchProvider","fetchImpl","headersImpl","responseImpl","Headers","Response","SERVER_ERROR_MAP","DEFAULT_API_TIMEOUT_MS","_addTidIfNecessary","tenantId","_performApiRequest","customErrorMap","_performFetchWithErrorHandling","_getAdditionalHeaders","languageCode","fetchArgs","_getFinalTarget","apiHost","fetchFn","_canInitEmulator","networkTimeout","NetworkTimeout","clearNetworkTimeout","json","_makeTaggedError","serverErrorCode","serverErrorMessage","authError","_performSignInRequest","serverResponse","_serverResponse","apiScheme","_parseEnforcementState","enforcementStateStr","errorParams","phoneNumber","_tokenResponse","isEnterprise","grecaptcha","enterprise","RecaptchaConfig","siteKey","recaptchaEnforcementState","recaptchaKey","getProviderEnforcementState","providerStr","enforcementState","isProviderEnabled","isAnyProviderEnabled","getRecaptchaConfig","getAccountInfo","utcTimestampToDateString","utcTimestamp","secondsStringToMilliseconds","_parseToken","_tokenExpiresIn","parsedToken","_logoutIfInvalidated","bypassAuthState","isUserInvalidated","currentUser","signOut","ProactiveRefresh","isRunning","errorBackoff","_start","schedule","_stop","getInterval","wasError","stsTokenManager","iteration","getIdToken","UserMetadata","createdAt","lastLoginAt","_initializeTime","lastSignInTime","creationTime","_copy","_reloadWithoutSaving","idToken","coreAccount","_notifyReloadListener","newProviderData","providerUserInfo","extractProviderData","providerData","providerId","oldIsAnonymous","isAnonymous","newIsAnonymous","passwordHash","localId","photoURL","photoUrl","emailVerified","rawId","StsTokenManager","refreshToken","accessToken","isExpired","updateFromServerResponse","expiresIn","updateTokensAndExpiration","updateFromIdToken","forceRefresh","refresh","clearRefreshToken","oldToken","tokenApiHost","access_token","expires_in","refresh_token","requestStsToken","expiresInSec","fromJSON","manager","_assign","_clone","_performRefresh","assertStringOrUndefined","UserImpl","proactiveRefresh","reloadUserInfo","reloadListener","_persistUserIfCurrent","_notifyListenersIfCurrent","getIdTokenResult","userInternal","signInProvider","authTime","issuedAtTime","signInSecondFactor","reload","userInfo","newUser","_onReload","_startProactiveRefresh","_stopProactiveRefresh","_updateTokensIfNecessary","tokensRefreshed","deleteAccount","_redirectEventId","_fromJSON","plainObjectTokenManager","_fromIdTokenResponse","idTokenResponse","_fromGetAccountInfoResponse","instanceCache","_getInstance","cls","InMemoryPersistence","_isAvailable","_set","_get","_remove","_addListener","_listener","_removeListener","inMemoryPersistence","_persistenceKeyName","PersistenceUserManager","persistence","userKey","fullUserKey","fullPersistenceKey","boundEventHandler","_onStorageEvent","setCurrentUser","getCurrentUser","blob","removeCurrentUser","savePersistenceForRedirect","setPersistence","newPersistence","persistenceHierarchy","availablePersistences","selectedPersistence","userToMigrate","migrationHierarchy","_shouldAllowMigration","_getBrowserName","_isIEMobile","_isFirefox","_isBlackBerry","_isWebOS","_isSafari","_isChromeIOS","_isAndroid","_isIOS","_isMobileBrowser","_getClientVersion","clientPlatform","frameworks","reportedPlatform","reportedFrameworks","AuthMiddlewareQueue","pushCallback","onAbort","wrappedCallback","runMiddleware","nextUser","onAbortStack","beforeStateCallback","originalMessage","PasswordPolicyImpl","responseOptions","customStrengthOptions","minPasswordLength","maxPasswordLength","containsLowercaseCharacter","containsLowercaseLetter","containsUppercaseCharacter","containsUppercaseLetter","containsNumericCharacter","containsNonAlphanumericCharacter","allowedNonAlphanumericCharacters","forceUpgradeOnSignin","schemaVersion","validatePassword","passwordPolicy","validatePasswordLengthOptions","validatePasswordCharacterOptions","meetsMinPasswordLength","meetsMaxPasswordLength","passwordChar","updatePasswordCharacterOptionsStatuses","AuthImpl","heartbeatServiceProvider","appCheckServiceProvider","emulatorConfig","operations","authStateSubscription","Subscription","idTokenSubscription","beforeStateQueue","redirectUser","isProactiveRefreshEnabled","EXPECTED_PASSWORD_POLICY_SCHEMA_VERSION","_isInitialized","_deleted","_initializationPromise","_popupRedirectResolver","_agentRecaptchaConfig","_tenantRecaptchaConfigs","_projectPasswordPolicy","_tenantPasswordPolicies","lastNotifiedUid","appVerificationDisabledForTesting","clientVersion","sdkClientVersion","_initializeWithPersistence","popupRedirectResolver","persistenceManager","_shouldInitProactively","_initialize","initializeCurrentUser","assertedPersistence","_currentUser","_updateCurrentUser","initializeCurrentUserFromIdToken","directlySetCurrentUser","authIdToken","previouslyStoredUser","futureCurrentUser","needsTocheckMiddleware","authDomain","getOrInitRedirectPersistenceManager","redirectUserEventId","storedUserEventId","tryRedirectSignIn","_overrideRedirectResult","reloadAndSetCurrentUserOrClear","redirectResolver","_completeRedirectFn","_setRedirectUser","useDeviceLanguage","navigatorLanguage","_getUserLanguage","updateCurrentUser","userExtern","skipBeforeStateCallbacks","notifyAuthListeners","redirectPersistenceManager","_getRecaptchaConfig","_getPasswordPolicyInternal","_updatePasswordPolicy","_getPasswordPolicy","_getPersistence","_updateErrorMap","onAuthStateChanged","completed","registerStateListener","beforeAuthStateChanged","onIdTokenChanged","authStateReady","revokeAccessToken","tokenType","redirectManager","resolver","_redirectPersistence","_redirectUserForId","currentUid","isUnsubscribed","addObserver","_logFramework","framework","_getFrameworks","heartbeatsHeader","appCheckToken","_getAppCheckToken","appCheckTokenResult","_logWarn","_castAuth","externalJSProvider","loadJS","recaptchaV2Script","recaptchaEnterpriseScript","gapiScript","_loadJS","_generateCallbackName","MockGreCAPTCHATopLevel","MockGreCAPTCHA","_siteKey","_parameters","FAKE_TOKEN","RecaptchaEnterpriseVerifier","authExtern","verify","retrieveRecaptchaToken","clientType","retrieveSiteKey","injectRecaptchaFields","isCaptchaResp","isFakeToken","verifier","captchaResponse","newRequest","phoneEnrollmentInfo","recaptchaToken","phoneSignInInfo","handleRecaptchaFlow","authInstance","actionName","actionMethod","recaptchaAuthProvider","requestWithRecaptcha","requestWithRecaptchaFields","_initializeRecaptchaConfig","authInternal","connectAuthEmulator","disableWarnings","extractProtocol","authority","hostAndPort","bracketedIPv6","parsePort","extractHostAndPort","portStr","attachBanner","sty","border","margin","classList","emitEmulatorWarning","protocolEnd","AuthCredential","signInMethod","_getIdTokenResponse","_auth","_linkToIdToken","_idToken","_getReauthenticationResolver","linkEmailPassword","signInWithPassword","EmailAuthCredential","_email","_password","_tenantId","_fromEmailAndPassword","_fromEmailAndCode","oobCode","returnSecureToken","signInWithEmailLink$1","signInWithEmailLinkForLinking","signInWithIdp","OAuthCredential","pendingToken","_fromParams","cred","oauthToken","oauthTokenSecret","buildRequest","autoCreate","requestUri","postBody","sendPhoneVerificationCode","VERIFY_PHONE_NUMBER_FOR_EXISTING_ERROR_MAP_","PhoneAuthCredential","_fromVerification","verificationId","verificationCode","_fromTokenResponse","temporaryProof","signInWithPhoneNumber$1","_makeVerificationRequest","linkWithPhoneNumber$1","verifyPhoneNumberForExisting","sessionInfo","ActionCodeURL","actionLink","searchParams","parseMode","continueUrl","parseLink","doubleDeepLink","iOSDeepLink","parseDeepLink","EmailAuthProvider","PROVIDER_ID","credential","credentialWithLink","emailLink","actionCodeUrl","EMAIL_PASSWORD_SIGN_IN_METHOD","EMAIL_LINK_SIGN_IN_METHOD","FederatedAuthProvider","defaultLanguageCode","customParameters","setDefaultLanguage","setCustomParameters","customOAuthParameters","getCustomParameters","BaseOAuthProvider","scopes","addScope","getScopes","FacebookAuthProvider","FACEBOOK_SIGN_IN_METHOD","credentialFromResult","userCredential","credentialFromTaggedObject","credentialFromError","tokenResponse","oauthAccessToken","GoogleAuthProvider","GOOGLE_SIGN_IN_METHOD","oauthIdToken","GithubAuthProvider","GITHUB_SIGN_IN_METHOD","TwitterAuthProvider","TWITTER_SIGN_IN_METHOD","UserCredentialImpl","operationType","providerIdForResponse","_forOperation","MultiFactorError","_fromErrorAndOperation","_processCredentialSavingMfaContextIfNecessary","_link$1","_reauthenticate","_signInWithCredential","signInWithCustomToken","customToken","signInWithCustomToken$1","startEnrollPhoneMfa","STORAGE_AVAILABLE_KEY","BrowserPersistenceClass","storageRetriever","BrowserLocalPersistence","poll","onStorageEvent","localCache","pollTimer","fallbackToPolling","forAllChangedKeys","oldValue","_oldValue","notifyListeners","detachListener","triggerListeners","storedValue","StorageEvent","attachListener","browserLocalPersistence","BrowserSessionPersistence","browserSessionPersistence","Receiver","eventTarget","handlersMap","receivers","isListeningto","newInstance","messageEvent","eventId","eventType","ports","promises","_allSettled","_subscribe","eventHandler","_unsubscribe","_generateEventId","digits","Sender","removeMessageHandler","messageChannel","_send","completionTimer","ackTimer","finally","_isWorker","DB_OBJECTSTORE_NAME","DB_DATA_KEYPATH","DBPromise","toPromise","getObjectStore","isReadWrite","_openDatabase","objectStoreNames","_deleteDatabase","_putObject","_deleteObject","IndexedDBLocalPersistence","pendingWrites","sender","serviceWorkerReceiverAvailable","activeServiceWorker","_workerInitializationPromise","initializeServiceWorkerMessaging","_openDb","_withRetries","numAttempts","initializeReceiver","initializeSender","_origin","keyProcessed","_poll","serviceWorker","_getActiveServiceWorker","notifyServiceWorker","controller","_withPendingWrite","getObject","getAllRequest","keysInResult","fbase_key","localKey","indexedDBLocalPersistence","startSignInPhoneMfa","RECAPTCHA_VERIFIER_TYPE","_verifyPhoneNumber","phoneInfoOptions","startPhoneMfaEnrollmentRequest","startPhoneMfaEnrollmentResponse","injectRecaptchaV2Token","phoneSessionInfo","mfaEnrollmentId","multiFactorHint","multiFactorUid","startPhoneMfaSignInRequest","mfaPendingCredential","startPhoneMfaSignInResponse","phoneResponseInfo","sendPhoneVerificationCodeRequest","sendPhoneVerificationCodeResponse","_reset","recaptchaV2Verifier","recaptchaV2Token","recaptchaVersion","PhoneAuthProvider","verifyPhoneNumber","phoneOptions","applicationVerifier","_withDefaultResolver","resolverOverride","PHONE_SIGN_IN_METHOD","IdpCredential","_buildIdpRequest","returnIdpCredential","_signIn","_reauth","_link","AbstractPopupRedirectOperation","pendingPromise","eventManager","onExecution","registerConsumer","onAuthEvent","urlResponse","getIdpTask","unregisterAndCleanUp","unregisterConsumer","cleanUp","_POLL_WINDOW_CLOSE_TIMEOUT","PopupOperation","authWindow","pollId","currentPopupAction","executeNotNull","_openPopup","associatedEvent","_originValidation","_isIframeWebStorageSupported","pollUserCancellation","closed","PENDING_REDIRECT_KEY","redirectOutcomeMap","RedirectAction","readyOutcome","pendingRedirectKey","resolverPersistence","hasPendingRedirect","_getAndClearPendingRedirectStatus","_getRedirectResult","resolverExtern","AuthEventManager","cachedEventUids","consumers","queuedRedirectEvent","hasHandledPotentialRedirect","lastProcessedEventTime","authEventConsumer","isEventForConsumer","sendToConsumer","saveEventToCache","onEvent","hasEventBeenHandled","consumer","isNullRedirectEvent","isRedirectEvent","eventIdMatches","eventUid","IP_ADDRESS_REGEX","HTTP_REGEX","_validateOrigin","authorizedDomains","_getProjectConfig","matchDomain","expected","ceUrl","escapedDomainPattern","NETWORK_TIMEOUT","resetUnloadedGapiModules","beacon","___jsl","CP","loadGapi","loadGapiIframe","gapi","iframes","ontimeout","Iframe","cbName","cachedGApiLoader","PING_TIMEOUT","IFRAME_PATH","EMULATED_IFRAME_PATH","IFRAME_ATTRIBUTES","EID_FROM_APIHOST","getIframeUrl","eid","fw","_openIframe","_loadGapi","where","messageHandlersFilter","CROSS_ORIGIN_IFRAMES_FILTER","dontclear","iframe","restyle","setHideOnLeave","networkError","networkErrorTimer","clearTimerAndResolve","ping","BASE_POPUP_OPTIONS","resizable","statusbar","toolbar","AuthPopup","_open","scrollbars","optionsString","_isIOSStandalone","initMouseEvent","openAsNewWindowIOS","newWin","WIDGET_PATH","EMULATOR_WIDGET_PATH","FIREBASE_APP_CHECK_FRAGMENT_ID","_getRedirectUrl","redirectUrl","additionalParams","tid","paramsDict","appCheckTokenFragment","getHandlerBase","WEB_STORAGE_SUPPORT_KEY","browserPopupRedirectResolver","eventManagers","originValidationPromises","_openRedirect","_setWindowLocation","initAndGetManager","iframeEvent","authEvent","AuthInterop","internalListeners","getUid","assertAuthConfigured","addAuthTokenListener","updateProactiveRefresh","removeAuthTokenListener","authIdTokenMaxAge","lastPostedIdToken","mintCookieFactory","idTokenResult","idTokenAge","getAuth","initialOptions","initializeAuth","authTokenSyncPath","isSecureContext","authTokenSyncUrl","mintCookie","authEmulatorHost","hierarchy","_initializeAuthInstance","_instanceIdentifier","_instance","getVersionForPlatform","setSDKVersion","DOMStorageWrapper","domStorage_","prefix_","prefixedName_","storedVal","MemoryStorage","cache_","isInMemoryStorage","createStoragefor","domStorageName","domStorage","PersistentStorage","SessionStorage","LUIDGenerator","sha1","sha1Bytes","buildLogMessage_","varArgs","firstLog_","enableLogging$1","logger_","persistent","logWrapper","fatal","isInvalidJSONNumber","POSITIVE_INFINITY","NEGATIVE_INFINITY","MIN_NAME","MAX_NAME","nameCompare","aAsInt","tryParseInt","bAsInt","stringCompare","requireKey","ObjectToUniqueKey","splitStringBySize","segsize","dataSegs","doubleToIEEE754String","ln","hexByteString","hexByte","INTEGER_REGEXP_","intVal","exceptionGuard","setTimeoutNonBlocking","Deno","unrefTimer","AppCheckTokenProvider","appName_","appCheckProvider","appCheck","addTokenChangeListener","addTokenListener","notifyForInvalidToken","FirebaseAuthTokenProvider","firebaseOptions_","authProvider_","auth_","removeTokenChangeListener","EmulatorTokenProvider","OWNER","PROTOCOL_VERSION","FORGE_DOMAIN_RE","APP_CHECK_TOKEN_PARAM","WEBSOCKET","LONG_POLLING","RepoInfo","webSocketOnly","nodeAdmin","persistenceKey","includeNamespaceInQueryParams","isUsingEmulator","_host","internalHost","isCacheableHost","isCustomHost","newHost","toURLString","repoInfoConnectionURL","repoInfo","connURL","repoInfoNeedsQueryParam","StatsCollection","counters_","incrementCounter","collections","reporters","statsManagerGetCollection","hashString","PacketReceiver","onMessage_","pendingResponses","currentResponseNum","closeAfterResponse","onClose","closeAfter","responseNum","handleResponse","requestNum","toProcess","FIREBASE_LONGPOLL_START_PARAM","BrowserPollConnection","connId","applicationId","authToken","transportSessionId","lastSessionId","bytesSent","bytesReceived","everConnected_","log_","stats_","urlFn","onDisconnect","curSegmentNum","onDisconnect_","myPacketOrderer","isClosed_","connectTimeoutTimer_","onClosed_","called","wrappedFn","executeWhenDOMReady","scriptTagHolder","FirebaseIFrameScriptHolder","command","arg1","arg2","arg3","arg4","incrementIncomingBytes_","sendNewPolls","pN","urlParams","uniqueCallbackIdentifier","connectURL","addTag","startLongPoll","addDisconnectPingFrame","forceAllow","forceAllow_","forceDisallow","forceDisallow_","isAvailable","UI","markConnectionHealthy","shutdown_","myDisconnFrame","dataStr","base64data","MAX_URL_DATA_SIZE","enqueueSegment","pw","commandCB","onMessageCB","outstandingRequests","pendingSegs","currentSerial","myIFrame","createIFrame_","iframeContents","contentDocument","alive","myID","myPW","newRequest_","theURL","curDataString","theSeg","seg","addLongPollTag_","segnum","totalsegs","serial","doNewRequest","keepaliveTimeout","loadCB","doNodeLongPoll","newScript","rstate","WebSocketImpl","MozWebSocket","WebSocket","WebSocketConnection","keepaliveTimer","frames","totalFrames","connectionURL_","mySock","onopen","onclose","handleIncomingFrame","isOldAndroid","oldAndroidRegex","oldAndroidMatch","previouslyFailed","appendFrame_","fullMess","jsonMess","handleNewFrameCount_","frameCount","extractFrameCount_","mess","resetKeepAlive","remainingData","sendString_","responsesRequiredToBeHealthy","healthyTimeout","TransportManager","ALL_TRANSPORTS","IS_TRANSPORT_INITIALIZED","globalTransportInitialized_","initTransports_","isWebSocketsAvailable","isSkipPollConnection","transports_","transports","initialTransport","upgradeTransport","Connection","repoInfo_","applicationId_","appCheckToken_","authToken_","onReady_","onKill_","connectionCount","pendingDataMessages","state_","transportManager_","start_","conn","conn_","nextTransportId_","primaryResponsesRequired_","onMessageReceived","connReceiver_","onConnectionLost","disconnReceiver_","tx_","rx_","secondaryConn_","isHealthy_","healthyTimeoutMS","healthyTimeout_","everConnected","onConnectionLost_","onSecondaryConnectionLost_","onPrimaryMessageReceived_","onSecondaryMessageReceived_","dataMsg","sendData_","tryCleanupConnection","onSecondaryControl_","controlData","cmd","upgradeIfSecondaryHealthy_","secondaryResponsesRequired_","parsedData","layer","proceedWithUpgrade_","onControl_","onDataMessage_","onPrimaryResponse_","handshakePayload","onHandshake_","onConnectionShutdown_","onReset_","sendPingOnPrimaryIfNecessary_","onConnectionEstablished_","tryStartUpgrade_","startUpgrade_","closeConnections_","ServerActions","pathString","onComplete","refreshAuthToken","refreshAppCheckToken","onDisconnectPut","onDisconnectMerge","onDisconnectCancel","reportStats","stats","EventEmitter","allowedEvents_","listeners_","trigger","validateEventType_","eventData","getInitialEvent","OnlineMonitor","getInstance","online_","currentlyOnline","MAX_PATH_DEPTH","MAX_PATH_LENGTH_BYTES","Path","pathOrString","pieceNum","pieces_","copyTo","pieceNum_","newEmptyPath","pathGetFront","pathGetLength","pathPopFront","pathGetBack","pathSlice","pathParent","pieces","pathChild","childPathObj","childPieces","pathIsEmpty","newRelativePath","outerPath","innerPath","outer","pathEquals","pathContains","ValidationPath","errorPrefix_","parts_","byteLength_","validationPathCheckValid","validationPath","validationPathToErrorString","VisibilityMonitor","visibilityChange","visible_","visible","RECONNECT_MIN_DELAY","PersistentConnection","onDataUpdate_","onConnectStatus_","onServerInfoUpdate_","authTokenProvider_","appCheckTokenProvider_","authOverride_","nextPersistentConnectionId_","interruptReasons_","listens","outstandingPuts_","outstandingGets_","outstandingPutCount_","outstandingGetCount_","onDisconnectRequestQueue_","connected_","reconnectDelay_","maxReconnectDelay_","securityDebugCallback_","establishConnectionTimer_","requestCBHash_","requestNumber_","realtime_","forceTokenRefresh_","invalidAuthTokenCount_","invalidAppCheckTokenCount_","firstConnection_","lastConnectionAttemptTime_","lastConnectionEstablishedTime_","onVisible_","onOnline_","onResponse","curReqNum","initConnection_","outstandingGet","_path","_queryObject","sendGet_","currentHashFn","queryId","_queryIdentifier","_queryParams","loadsAllData","listenSpec","hashFn","sendListen_","warnOnListenWarnings_","removeListen_","warnings","indexSpec","indexPath","tryAuth","reduceReconnectDelayIfAdminCredential_","tryAppCheck","authMethod","requestData","onAuthRevoked_","onAppCheckRevoked_","unlisten","sendUnlisten_","queryObj","sendOnDisconnect_","putInternal","sendPut_","queued","errorReason","reqNum","onDataPush_","onListenRevoked_","onSecurityDebugPacket_","handleTimestamp_","sendConnectStats_","restoreState_","scheduleConnect_","establishConnection_","online","onRealtimeDisconnect_","cancelSentTransactions_","shouldReconnect_","timeSinceLastConnectAttempt","reconnectDelay","onDataMessage","nextConnectionId_","canceled","closeFn","sendRequestFn","interrupt","serverTimeOffset","normalizedPathString","explanation","queries","clientName","NamedNode","Wrap","Index","getCompare","indexedValueChanged","oldNode","newNode","oldWrapped","newWrapped","minPost","MIN","__EMPTY_NODE","KeyIndex","isDefinedOn","maxPost","makePost","indexValue","KEY_INDEX","SortedMapIterator","startKey","isReverse_","resultGenerator_","nodeStack_","getNext","LLRBNode","RED","SortedMap","EMPTY_NODE","inorderTraversal","reverseTraversal","min_","minKey","maxKey","insert","fixUp_","removeMin_","isRed_","moveRedLeft_","smallest","rotateRight_","moveRedRight_","rotateLeft_","colorFlip_","nr","checkMaxDepth_","blackDepth","check_","BLACK","comparator_","root_","getPredecessorKey","rightParent","getIterator","resultGenerator","getIteratorFrom","getReverseIteratorFrom","getReverseIterator","NAME_ONLY_COMPARATOR","NAME_COMPARATOR","MAX_NODE$2","priorityHashText","validatePriorityNode","priorityNode","isLeafNode","getPriority","__childrenNodeConstructor","nodeFromJSON$1","MAX_NODE$1","LeafNode","value_","priorityNode_","lazyHash_","updatePriority","newPriorityNode","getImmediateChild","childName","getChild","hasChild","getPredecessorChildName","childNode","updateImmediateChild","newChildNode","updateChild","numChildren","forEachChild","exportFormat","toHash","compareTo","compareToLeafNode_","otherLeaf","otherLeafType","thisLeafType","otherIndex","VALUE_TYPE_ORDER","thisIndex","withIndex","isIndexed","equals","PRIORITY_INDEX","aPriority","bPriority","indexCmp","LOG_2","Base12Num","current_","bits_","nextBitIsOne","buildChildSet","childList","keyFn","mapSortFn","buildBalancedTree","namedNode","middle","base12","buildPennant","chunkSize","childTree","attachPennant","pennant","isOne","buildFrom12Array","_defaultIndexMap","fallbackObject","IndexMap","Default","indexes_","indexSet_","indexKey","sortedMap","hasIndex","indexDefinition","addIndex","existingChildren","sawIndexedValue","indexName","newIndexSet","newIndexes","addToIndexes","indexedChildren","existingSnap","newChildren","removeFromIndexes","ChildrenNode","children_","indexMap_","newIndexMap","newPriority","newImmediateChild","numKeys","allIntegerKeys","childHash","resolveIndex_","predecessor","getFirstChildName","getFirstChild","getLastChildName","getLastChild","wrappedNode","startPost","endPost","MAX_NODE","otherChildrenNode","thisIter","otherIter","thisCurrent","otherCurrent","MAX","setMaxNode","USE_HINZE","nodeFromJSON","childData","childrenHavePriority","childSet","sortedChildSet","setNodeFromJSON","PathIndex","indexPath_","extractChild","snap","aChild","bChild","valueNode","VALUE_INDEX","changeValue","snapshotNode","changeChildAdded","changeChildRemoved","changeChildChanged","oldSnap","IndexedFilter","index_","newChild","affectedPath","optChangeAccumulator","oldChild","trackChildChange","updateFullNode","newSnap","filtersNodes","getIndexedFilter","RangedFilter","indexedFilter_","startPost_","getStartPost_","endPost_","getEndPost_","startIsInclusive_","startAfterSet_","endIsInclusive_","endBeforeSet_","getStartPost","getEndPost","isWithinStart","isWithinEnd","filtered","hasStart","startName","getIndexStartName","getIndexStartValue","hasEnd","endName","getIndexEndName","getIndexEndValue","LimitedFilter","withinDirectionalStart","reverse_","withinEndPost","withinStartPost","withinDirectionalEnd","compareRes","rangedFilter_","limit_","getLimit","isViewFromLeft","fullLimitUpdateChild_","childKey","childSnap","changeAccumulator","oldEventCache","newChildNamedNode","windowBoundary","oldChildSnap","nextChild","getChildAfterChild","compareNext","newEventCache","QueryParams","limitSet_","startSet_","startNameSet_","endSet_","endNameSet_","viewFrom_","indexStartValue_","indexStartName_","indexEndValue_","indexEndName_","hasLimit","hasAnchoredLimit","queryParamsToRestQueryStringParameters","queryParams","startParam","endParam","queryParamsGetQueryObject","viewFrom","ReadonlyRestClient","getListenId_","listens_","listenId","thisListen","queryStringParameters","restRequest_","xhr","SnapshotHolder","rootNode_","getNode","updateSnapshot","newSnapshotNode","newSparseSnapshotTree","sparseSnapshotTreeRemember","sparseSnapshotTree","sparseSnapshotTreeForEachTree","prefixPath","tree","sparseSnapshotTreeForEachChild","StatsListener","collection_","last_","newStats","stat","StatsReporter","collection","server_","statsToReport_","statsListener_","reportStats_","reportedStats","haveStatsToReport","OperationType","newOperationSourceServerTaggedQuery","fromUser","fromServer","tagged","AckUserWrite","affectedTree","revert","ACK_USER_WRITE","operationForChild","subtree","ListenComplete","LISTEN_COMPLETE","Overwrite","OVERWRITE","Merge","MERGE","CacheNode","node_","fullyInitialized_","filtered_","isFullyInitialized","isFiltered","isCompleteForPath","isCompleteForChild","EventGenerator","query_","eventGeneratorGenerateEventsForType","eventGenerator","registrations","eventCache","filteredChanges","change","aWrapped","bWrapped","eventGeneratorCompareChanges","materializedChange","prevName","eventGeneratorMaterializeSingleChange","registration","respondsTo","newViewCache","serverCache","viewCacheUpdateEventSnap","viewCache","eventSnap","viewCacheUpdateServerSnap","serverSnap","viewCacheGetCompleteEventSnap","viewCacheGetCompleteServerSnap","emptyChildrenSingleton","ImmutableTree","fromObject","childPath","EmptyChildren","findRootMostMatchingPathAndValue","childExistingPathAndValue","findRootMostValueAndPath","toSet","setTree","newTree","fold","fold_","pathSoFar","findOnPath","findOnPath_","pathToFollow","foreachOnPath","foreachOnPath_","currentRelativePath","foreach","foreach_","foreachChild","CompoundWrite","writeTree_","empty","compoundWriteAddWrite","compoundWrite","rootmost","rootMostPath","newWriteTree","compoundWriteAddWrites","newWrite","compoundWriteRemoveWrite","compoundWriteHasCompleteWrite","compoundWriteGetCompleteNode","compoundWriteGetCompleteChildren","compoundWriteChildCompoundWrite","shadowingNode","compoundWriteIsEmpty","compoundWriteApply","applySubtreeWrite","writeTree","priorityWrite","writeTreeChildWrites","newWriteTreeRef","writeTreeRemoveWrite","writeId","allWrites","writeToRemove","removedWriteWasVisible","removedWriteOverlapsWithOtherWrites","currentWrite","writeTreeRecordContainsPath_","visibleWrites","writeTreeLayerTree_","writeTreeDefaultFilter_","lastWriteId","writeTreeResetTree_","writeRecord","writes","treeRoot","writePath","deepNode","writeTreeCalcCompleteEventCache","completeServerCache","writeIdsToExclude","includeHiddenWrites","subMerge","writeTreeRefCalcCompleteEventCache","writeTreeRef","writeTreeRefCalcCompleteEventChildren","completeServerChildren","completeChildren","topLevelSet","writeTreeCalcCompleteEventChildren","writeTreeRefCalcEventCacheAfterServerOverwrite","existingEventSnap","existingServerSnap","childMerge","writeTreeCalcEventCacheAfterServerOverwrite","writeTreeRefShadowingWrite","writeTreeShadowingWrite","writeTreeRefCalcIndexedSlice","completeServerData","toIterate","writeTreeCalcIndexedSlice","writeTreeRefCalcCompleteChild","existingServerCache","writeTreeCalcCompleteChild","writeTreeRefChild","ChildChangeAccumulator","changeMap","oldChange","oldType","getChanges","NO_COMPLETE_CHILD_SOURCE","getCompleteChild","WriteTreeCompleteChildSource","writes_","viewCache_","optCompleteServerCache_","serverNode","viewProcessorApplyOperation","viewProcessor","oldViewCache","writesCache","completeCache","filterServerNode","viewProcessorApplyUserOverwrite","viewProcessorApplyServerOverwrite","changedChildren","curViewCache","viewProcessorCacheHasChild","viewProcessorApplyUserMerge","viewProcessorApplyServerMerge","ackUserWrite","serverChildren","viewProcessorRevertUserWrite","ackPath","mergePath","serverCachePath","viewProcessorAckUserWrite","oldServerNode","viewProcessorGenerateEventCacheAfterServerEvent","viewProcessorListenComplete","isLeafOrEmpty","oldCompleteSnap","viewProcessorMaybeAddValueEvent","changePath","oldEventSnap","completeEventChildren","completeNode","oldEventNode","updatedPriority","childChangePath","newEventChild","eventChildUpdate","changedSnap","oldServerSnap","newServerCache","serverFilter","newServerNode","viewProcessorApplyMerge","viewMergeTree","childMergeTree","isUnknownDeepMerge","View","initialViewCache","eventRegistrations_","indexFilter","processor_","newViewProcessor","initialServerCache","initialEventCache","eventGenerator_","viewGetCompleteServerCache","viewIsEmpty","viewRemoveEventRegistration","eventRegistration","cancelError","cancelEvents","maybeEvent","createCancelEvent","existing","hasAnyCallback","viewApplyOperation","viewGenerateEventsForChanges_","eventRegistrations","moves","eventGeneratorGenerateEventsForChanges","referenceConstructor$1","referenceConstructor","SyncPoint","views","syncPointApplyOperation","syncPoint","optCompleteServerCache","syncPointGetView","serverCacheComplete","eventCacheComplete","syncPointAddEventRegistration","viewAddEventRegistration","initialChanges","viewGetInitialEvents","syncPointRemoveEventRegistration","hadCompleteView","syncPointHasCompleteView","viewQueryId","_repo","syncPointGetQueryViews","syncPointGetCompleteServerCache","syncPointViewForQuery","syncPointGetCompleteView","syncPointViewExistsForQuery","syncTreeNextQueryTag_","SyncTree","listenProvider_","syncPointTree_","pendingWriteTree_","tagToQueryMap","queryToTagMap","syncTreeApplyUserOverwrite","syncTree","writeTreeAddOverwrite","syncTreeApplyOperationToSyncPoints_","syncTreeAckUserWrite","writeTreeGetWrite","syncTreeApplyServerOverwrite","syncTreeRemoveEventRegistration","skipListenerDedup","maybeSyncPoint","removedAndEvents","removingDefault","covered","parentSyncPoint","newViews","maybeChildSyncPoint","childMap","childViews","syncTreeCollectDistinctViewsForSubTree_","newQuery","syncTreeCreateListenerForView_","startListening","syncTreeQueryForListening_","syncTreeTagForQuery","defaultTag","stopListening","queryToRemove","tagToRemove","syncTreeMakeQueryKey_","removedQuery","removedQueryKey","removedQueryTag","syncTreeRemoveTags_","syncTreeApplyTaggedQueryOverwrite","queryKey","syncTreeQueryKeyForTag_","syncTreeParseQueryKey_","queryPath","syncTreeApplyTaggedOperation_","syncTreeAddEventRegistration","skipSetupListener","foundAncestorDefaultView","pathToSyncPoint","childSyncPoint","viewAlreadyExists","queriesToStop","childQueries","queryToStop","syncTreeSetupListener_","syncTreeCalcCompleteEventCache","syncTreeApplyOperationHelper_","syncPointTree","syncTreeApplyOperationDescendantsHelper_","childOperation","childServerCache","childWritesCache","viewGetServerCache","syncTreeApplyTaggedListenComplete","syncTreeApplyListenComplete","errorForServerCode","splitIndex","ExistingValueProvider","DeferredValueProvider","syncTree_","path_","generateWithValues","resolveDeferredLeafValue","existingVal","serverValues","resolveScalarDeferredValue","resolveComplexDeferredValue","unused","existingNode","resolveDeferredValueTree","resolveDeferredValue","resolveDeferredValueSnapshot","rawPri","leafNode","childrenNode","Tree","childCount","treeSubTree","pathObj","treeGetValue","treeSetValue","treeUpdateParents","treeHasChildren","treeForEachChild","treeForEachDescendant","includeSelf","childrenFirst","treeGetPath","childEmpty","treeIsEmpty","childExists","treeUpdateChild","INVALID_KEY_REGEX_","INVALID_PATH_REGEX_","MAX_LEAF_SIZE_","isValidKey","isValidPathString","validateFirebaseData","hasDotValue","hasActualChild","validationPathPush","validationPathPop","validatePathString","argumentName","validateRootPathString","validateUrl","parsedUrl","isValidRootPathString","EventQueue","eventLists_","recursionDepth_","eventQueueQueueEvents","eventQueue","eventDataList","currList","getPath","eventQueueRaiseEventsAtPath","eventQueueRaiseQueuedEventsMatchingPredicate","eventPath","eventQueueRaiseEventsForChangedPath","changedPath","sentAll","eventList","eventListRaise","eventFn","getEventRunner","INTERRUPT_REASON","MAX_TRANSACTION_RETRIES","Repo","forceRestClient_","appCheckProvider_","dataUpdateCount","eventQueue_","nextWriteId_","interceptServerDataCallback_","transactionQueueTree_","persistentConnection_","repoStart","repo","authOverride","isMerge","repoOnDataUpdate","repoOnConnectStatus","connectStatus","repoUpdateInfo","repoOnServerInfoUpdate","statsReporter_","creatorFunction","statsManagerGetOrCreateReporter","infoData_","infoSyncTree_","infoEvents","serverSyncTree_","repoServerTime","repoGenerateServerValues","taggedChildren","changeTree","syncTreeApplyTaggedQueryMerge","taggedSnap","syncTreeApplyServerMerge","repoRerunTransactions","repoLog","resolvedOnDisconnectTree","resolved","repoAbortTransactions","repoRunOnDisconnectEvents","repoGetNextWriteId","repoRemoveEventCallbackForQuery","repoInterrupt","repoGetLatestState","excludeSets","repoSendReadyTransactions","repoPruneCompletedTransactionsBelowNode","repoBuildTransactionQueue","setsToIgnore","txn","currentWriteId","latestState","snapToSend","latestHash","retryCount","currentOutputSnapshotRaw","dataToSend","pathToSend","currentOutputSnapshotResolved","unwatcher","repoSendTransactionQueue","rootMostTransactionNode","repoGetAncestorTransactionNode","txnsToRerun","abortTransaction","currentNode","currentInputSnapshot","newDataNode","oldWriteId","newNodeResolved","applyLocally","repoRerunTransactionQueue","transactionNode","transactionQueue","repoAggregateTransactionQueuesForNode","nodeQueue","treeForEachAncestor","repoAbortTransactionsOnNode","lastSent","parseRepoInfo","dataURL","parseDatabaseURL","scheme","subdomain","colonInd","slashInd","questionMarkInd","pathStringDecoded","piece","decodePath","queryString","kv","decodeQuery","hostWithoutPort","dotInd","PUSH_CHARS","lastPushTime","lastRandChars","DataEvent","snapshot","exportVal","CancelEvent","CallbackContext","snapshotCallback","cancelCallback","onValue","expDataSnapshot","previousChildName","onCancel","hasCancelCallback","userCallback","QueryImpl","_orderByCalled","ReferenceImpl","sameRepo","samePath","sameQueryIdentifier","pathToUrlEncodedString","DataSnapshot","_node","_index","childRef","exists","_checkNotDeleted","_root","ValueEventRegistration","callbackContext","ChildEventRegistration","eventToCheck","cancelCallbackOrListenOptions","onlyOnce","onceCallback","dataSnapshot","repoAddEventCallbackForQuery","expCallback","syncPointSetReferenceConstructor","syncTreeSetReferenceConstructor","FIREBASE_DATABASE_EMULATOR_HOST_VAR","repos","useRestClient","repoManagerDatabaseFromApp","authProvider","dbUrl","databaseURL","isEmulator","dbEmulatorHost","authTokenProvider","appRepos","repoManagerCreateRepo","Database","_repoInternal","_instanceStarted","_rootInternal","repoManagerDeleteRepo","apiName","getDatabase","tokenProvider","mockUserToken","repoManagerApplyEmulatorSettings","connectDatabaseEmulator","simpleListen","echo","onEcho","PENDING_TIMEOUT_MS","PACKAGE_VERSION","INTERNAL_AUTH_VERSION","INSTALLATIONS_API_URL","TOKEN_EXPIRATION_BUFFER","ERROR_DESCRIPTION_MAP","isServerError","getInstallationsEndpoint","extractAuthTokenInfoFromResponse","responseExpiresIn","getErrorFromResponse","requestName","serverCode","serverMessage","serverStatus","getHeaders","Accept","getHeadersWithAuth","appConfig","getAuthorizationHeader","retryIfServerError","sleep","VALID_FID_PATTERN","INVALID_FID","generateFid","fidByteArray","fid","b64String","fidChangeCallbacks","fidChanged","callFidChangeCallbacks","getBroadcastChannel","closeBroadcastChannel","broadcastFidChange","broadcastChannel","BroadcastChannel","DATABASE_NAME","DATABASE_VERSION","OBJECT_STORE_NAME","updateFn","getInstallationEntry","installations","registrationPromise","installationEntry","oldEntry","registrationStatus","clearTimedOutRequest","updateOrCreateInstallationEntry","entryWithPromise","inProgressEntry","registrationTime","registeredInstallationEntry","heartbeatService","authVersion","responseValue","createInstallationRequest","registerInstallation","waitUntilFidRegistration","triggerRegistrationIfNecessary","updateInstallationRequest","generateAuthTokenRequest","getGenerateAuthTokenEndpoint","installation","tokenPromise","isEntryRegistered","oldAuthToken","isAuthTokenExpired","isAuthTokenValid","updateAuthTokenRequest","waitUntilAuthTokenRequest","inProgressAuthToken","requestTime","makeAuthTokenRequestInProgressEntry","updatedInstallationEntry","fetchAuthTokenFromServer","installationsImpl","completeInstallationRegistration","getMissingValueError","valueName","INSTALLATIONS_NAME","publicFactory","configKeys","extractAppConfig","internalFactory","getId","DEFAULT_SW_PATH","DEFAULT_SW_SCOPE","DEFAULT_VAPID_KEY","ENDPOINT","CONSOLE_CAMPAIGN_ID","CONSOLE_CAMPAIGN_NAME","CONSOLE_CAMPAIGN_TIME","MessageType$1","MessageType","arrayToBase64","uint8Array","base64ToArray","base64String","rawData","outputArray","OLD_DB_NAME","OLD_DB_VERSION","OLD_OBJECT_STORE_NAME","upgradeDb","dbGet","firebaseDependencies","tokenDetails","oldTokenDetails","senderId","dbNames","databases","newVersion","upgradeTransaction","oldDetails","p256dh","fcmToken","createTime","swScope","vapidKey","checkTokenDetails","migrateOldDatabase","dbSet","ERROR_MAP","requestDeleteToken","unsubscribeOptions","getEndpoint","responseData","getBody","web","applicationPubKey","TOKEN_EXPIRATION_MS","getTokenInternal","messaging","pushSubscription","swRegistration","pushManager","getSubscription","userVisibleOnly","applicationServerKey","getPushSubscription","dbOptions","currentOptions","isVapidKeyEqual","isEndpointEqual","isAuthEqual","isP256dhEqual","isTokenValid","updatedToken","updateOptions","requestUpdateToken","updatedTokenDetails","updateToken","getNewToken","subscribeOptions","requestGetToken","externalizePayload","internalPayload","collapseKey","collapse_key","messageId","fcmMessageId","messagePayloadInternal","propagateNotificationPayload","propagateDataPayload","fcmOptions","click_action","analyticsLabel","analytics_label","propagateFcmOptions","s1","s2","resultArray","_mergeStrings","MessagingService","analyticsProvider","deliveryMetricsExportedToBigQueryEnabled","onBackgroundMessageHandler","onMessageHandler","logEvents","isLogServiceStarted","messagingSenderId","registerDefaultSw","browserErrorMessage","getToken$1","Notification","permission","requestPermission","updateVapidKey","ServiceWorkerRegistration","updateSwReg","serviceWorkerRegistration","logToScion","NOTIFICATION_CLICKED","PUSH_RECEIVED","logEvent","message_id","message_name","message_time","message_device_time","messageEventListener","isFirebaseMessaging","dataPayload","WindowMessagingFactory","WindowMessagingInternalFactory","isWindowSupported","PushSubscription","getMessagingInWindow","onMessage$1","own","emptyMap","dashSomething","tableElements","tableCellElement","docs","toJsxRuntime","filePath","development","jsxDEV","isStaticChildren","developmentCreate","productionCreate","ancestors","elementAttributeNameCase","evaluater","createEvaluater","ignoreInvalidStyle","passKeys","passNode","stylePropertyNameCase","tableCellAlignToStyle","parentSchema","findComponentFromName","alignValue","createProperty","createElementProps","createChildren","addChildren","estree","expression","evaluateExpression","crashEstree","mdxExpression","objectExpression","createJsxElementProps","mdxJsxElement","evaluateProgram","mdxEsm","countsByName","commaSeparated","ruleId","toCamel","parseStyle","domCasing","cssCasing","transformStyleToCssCasing","transformStylesToCssCasing","allowExpression","computed","place","toDash","getDefaultExportFromCjs","URL_REGEX","FIRST_SEGMENT_REGEX","SLASH_DOT_REGEX","SLASH_DOT_DOT_REGEX","URLToolkit","urlToolkit","buildAbsoluteURL","baseURL","relativeURL","alwaysNormalize","basePartsForNormalise","parseURL","normalizePath","buildURLFromParts","relativeParts","baseParts","netLoc","pathParts","builtParts","fragment","baseURLPath","newPath","urlToolkitExports","isFiniteNumber","ErrorTypes","ErrorDetails","fakeLogger","exportedLogger","exportLoggerFunctions","debugConfig","consolePrintFn","DECIMAL_RESOLUTION_REGEX","ATTR_LIST_REGEX","AttrList","parseAttrList","clientAttrs","decimalInteger","intValue","hexadecimalInteger","hexadecimalIntegerAsNumber","decimalFloatingPoint","optionalFloat","enumeratedString","decimalResolution","isSCTE35Attribute","DateRange","dateRangeAttr","dateRangeWithSameId","_startDate","_endDate","_badValueForSameId","previousAttr","ID","CLASS","plannedDuration","endOnNext","LoadStats","chunkCount","bwEstimate","parsing","buffering","ElementaryStreamTypes","BaseSegment","baseurl","_byteRange","_url","relurl","elementaryStreams","setByteRange","byteRangeEndOffset","byteRange","byteRangeStartOffset","_decryptdata","rawProgramDateTime","programDateTime","tagList","sn","levelkeys","keyLoader","startPTS","endPTS","startDTS","endDTS","deltaPTS","maxStartPTS","minEndPTS","bitrateTest","initSegment","endList","urlId","decryptdata","NONE","getDecryptData","keyFormats","endProgramDateTime","encrypted","_this$_decryptdata","setKeyFormat","keyFormat","abortRequests","_this$loader","_this$keyLoader","setElementaryStreamInfo","clearElementaryStreamInfo","Part","partAttrs","frag","fragOffset","independent","audiovideo","LevelDetails","baseUrl","PTSKnown","alignedSliding","averagetargetduration","endCC","endSN","fragments","fragmentHint","partList","dateRanges","live","ageHeader","advancedDateTime","advanced","availabilityDelay","misses","startCC","startSN","startTimeOffset","targetduration","totalduration","m3u8","canBlockReload","canSkipUntil","canSkipDateRanges","skippedSegments","recentlyRemovedDateranges","partHoldBack","holdBack","partTarget","preloadHint","renditionReports","tuneInGoal","deltaUpdateFailed","driftStartTime","driftEndTime","driftStart","driftEnd","encryptedFragments","playlistParsingError","variableList","hasVariableRefs","reloaded","partSnDiff","lastPartSn","partIndexDiff","lastPartIndex","hasProgramDateTime","levelTargetDuration","drift","runTime","edge","partEnd","fragmentEnd","_this$partList","_this$fragments","age","_this$partList2","_this$partList3","base64encodedStr","convertDataUriToArrayBytes","uri","colonsplit","keydata","semicolonsplit","commasplit","isbase64","keyIdbytes","strToUtf8array","subarray","paddedkeyIdbytes","getKeyIdBytes","optionalSelf","KeySystems","CLEARKEY","FAIRPLAY","PLAYREADY","WIDEVINE","KeySystemFormats","keySystemFormatToKeySystemDomain","KeySystemIds","keySystemIdToKeySystemDomain","systemId","keySystemDomainToKeySystemFormat","keySystem","getKeySystemsForConfig","drmSystems","widevineLicenseUrl","keySystemsToAttempt","requestMediaKeySystemAccess","_optionalSelf$navigat","sliceUint8","isHeader$2","isFooter","getID3Data","readSize","canParse$2","getTimeStamp","getID3Frames","isTimeStampFrame","readTimeStamp","getFrameData","id3Data","frameData","decodeFrame","decodePrivFrame","decodeURLFrame","decodeTextFrame","owner","utf8ArrayToStr","privateData","timeStampFrame","pts33Bit","exitOnNull","getTextDecoder","char2","char3","hexDump","UINT32_MAX$1","RemuxerTrackIdConfig","id3","bin2str","readUint16","readUint32","readSint32","readUint64","writeUint32","findBox","endbox","subresults","parseSegmentIndex","sidx","references","timescale","earliestPresentationTime","firstOffset","startByte","referencesCount","referenceIndex","referenceInfo","referenceSize","subsegmentDuration","parseInitSegment","traks","trak","tkhd","trackId","mdhd","hdlr","hdlrType","soun","vide","stsdData","parseStsd","trex","stsd","sampleEntries","sampleEntriesEnd","fourCC","codec","encBox","sinf","schm","frma","avcCBox","toHex","codecBox","esdsBox","skipBERInteger","objectType","firstByte","audioObjectType","hvcCBox","profileByte","profileSpace","generalProfileIdc","profileCompat","tierFlag","levelIDC","constraintIndicator","constraintString","byte","dvcCBox","addLeadingZero","vpcCBox","bitDepth","av1CBox","highBitDepth","twelveBit","monochrome","chromaSubsamplingX","chromaSubsamplingY","chromaSamplePosition","colorPrimaries","transferCharacteristics","matrixCoefficients","videoFullRangeFlag","parseSinf","computeRawDurationFromSamples","trun","sampleCount","appendUint8Array","data1","data2","temp","parseSamples","timeOffset","seiSamples","videoData","samples","isHEVCFlavor","moof","moofOffset","traf","baseTime","tfdt","tfhd","tfhdFlags","defaultSampleDuration","defaultSampleSizePresent","defaultSampleSize","defaultSampleFlagsPresent","tfhdOffset","delimit","baseCodec","isHEVC","dataOffsetPresent","dataOffset","firstSampleFlagsPresent","sampleDurationPresent","sampleDuration","sampleSizePresent","sampleFlagsPresent","sampleCompositionOffsetsPresent","compositionOffset","trunOffset","sampleOffset","ix","naluTotalSize","naluSize","isSEIMessage","parseSEIMessageFromNALu","naluHeader","naluType","unescapedData","headerSize","pts","discardEPB","seiPtr","payloadType","payloadSize","leftOver","payPtr","providerCode","userStructure","userDataType","enabled","totalBytes","byteArray","uuidStrArray","userDataBytes","userData","EPBPositions","newLength","sourceIndex","mp4pssh","keyids","kids","kidCount","dataSize","mp4Box","parsePssh","dataSizeOrKidCount","keyUriToKeyIdMap","LevelKey","clearKeyUriToKeyIdMap","formatversions","keyFormatVersions","isCommonEncryption","keyId","pssh","segmentNumber","uint8View","createInitializationVector","keyBytes","PlayReadyKeySystemUUID","keyBytesUtf16","keyByteStr","xmlKeyBytes","keyData","keyIdArray","swap","cur","changeEndianness","padded","VARIABLE_REPLACEMENT_REGEX","hasVariableReferences","substituteVariablesInAttributes","attributeNames","substituteVariables","variableReference","variableName","variableValue","addVariableDefinition","parentUrl","VALUE","QUERYPARAM","importVariableDefinition","sourceVariableList","IMPORT","getMediaSource","preferManagedMediaSource","MediaSource","ManagedMediaSource","WebKitMediaSource","sampleEntryCodesISO","a3ds","alac","alaw","dra1","dtsc","dtse","dtsh","enca","fLaC","flac","FLAC","g719","g726","m4ae","mha1","mha2","mhm1","mhm2","mlpa","mp4a","Opus","opus","samr","sawb","sawp","sevc","sqcp","ssmv","twos","ulaw","avc1","avc2","avc3","avc4","avcp","av01","drac","dva1","dvav","dvh1","dvhe","encv","hev1","hvc1","mjp2","mp4v","mvc1","mvc2","mvc3","mvc4","resv","rv60","s263","svc1","svc2","vp08","vp09","stpp","wvtt","areCodecsMediaSourceSupported","codecs","isCodecMediaSourceSupported","_MediaSource$isTypeSu","isTypeSupported","mimeTypeForCodec","videoCodecPreferenceValue","videoCodec","codecsSetSelectionPreferenceValue","codecSet","preferenceValue","CODEC_COMPATIBLE_NAMES","AUDIO_CODEC_REGEXP","getCodecCompatibleName","lowerCaseCodec","codecsToCheck","getCodecCompatibleNameLower","pickMostCompleteCodecName","parsedCodec","levelCodec","MASTER_PLAYLIST_REGEX","MASTER_PLAYLIST_MEDIA_REGEX","IS_MEDIA_PLAYLIST","LEVEL_PLAYLIST_REGEX_FAST","LEVEL_PLAYLIST_REGEX_SLOW","M3U8Parser","findGroup","mediaGroupId","isMediaPlaylist","parseMasterPlaylist","contentSteering","levels","sessionData","sessionKeys","levelsWithKnownCodecs","_level$unknownCodecs","bitrate","setCodecs","CODECS","unknownCodecs","sessionAttrs","dataId","sessionKey","parseKey","variableAttributes","contentSteeringAttributes","pathwayId","parseStartTimeOffset","stripUnknownCodecLevels","parseMasterPlaylistMedia","groupsByType","AUDIO","audioCodec","SUBTITLES","textCodec","medias","LANGUAGE","assocLang","CHANNELS","characteristics","CHARACTERISTICS","instreamId","autoselect","forced","URI","groupCodec","assignCodec","parseLevelPlaylist","levelUrlId","multivariantVariableList","currentInitSegment","currentSN","currentPart","discontinuityCounter","prevFrag","firstPdtIndex","createNextFrag","nextByteRange","setFragLevelKeys","assignProgramDateTime","value1","value2","skipAttrs","dateRange","levelKey","mapAttrs","setInitSegment","serverControlAttrs","partInfAttrs","previousFragmentPart","part","preloadHintAttrs","renditionReportAttrs","fragmentLength","firstFragment","lastFragment","lastSn","fragPrev","backfillProgramDateTimes","keyTagAttributes","_keyAttrs$METHOD","_keyAttrs$KEYFORMAT","keyAttrs","decryptmethod","METHOD","decrypturi","decryptiv","decryptkeyformatversions","KEYFORMATVERSIONS","decryptkeyformat","KEYFORMAT","IV","resolvedUri","startAttributes","codecsAttributeValue","typeCodes","isCodecType","groupItem","codecProperty","codecValue","BYTERANGE","PlaylistContextType","PlaylistLevelType","mapContextToLevelType","getResponseUrl","PlaylistLoader","hls","loaders","registerListeners","startLoad","startPosition","stopLoad","destroyInternalLoaders","MANIFEST_LOADING","onManifestLoading","LEVEL_LOADING","onLevelLoading","AUDIO_TRACK_LOADING","onAudioTrackLoading","SUBTITLE_TRACK_LOADING","onSubtitleTrackLoading","unregisterListeners","createInternalLoader","PLoader","pLoader","Loader","getInternalLoader","resetInternalLoader","deliveryDirectives","_context$deliveryDire","loadPolicy","loaderContext","manifestLoadPolicy","playlistLoadPolicy","timeoutRetry","errorRetry","levelDetails","details","audioTracks","subtitleTracks","targetDuration","maxLowLatencyPlaylistRefresh","maxTimeToFirstByteMs","maxLoadTimeMs","legacyRetryCompatibility","loaderConfig","maxRetry","maxNumRetry","retryDelayMs","maxRetryDelay","maxRetryDelayMs","loaderCallbacks","onSuccess","networkDetails","handleTrackOrLevelPlaylist","handleMasterPlaylist","handleManifestParsingError","handleNetworkError","onTimeout","parsedResult","subtitles","captions","audioTrack","MANIFEST_LOADED","levelId","levelType","singleLevel","handlePlaylistLoaded","NETWORK_ERROR","MANIFEST_PARSING_ERROR","UNKNOWN","MANIFEST_LOAD_TIMEOUT","MANIFEST_LOAD_ERROR","LEVEL_LOAD_TIMEOUT","LEVEL_LOAD_ERROR","AUDIO_TRACK_LOAD_TIMEOUT","AUDIO_TRACK_LOAD_ERROR","SUBTITLE_TRACK_LOAD_TIMEOUT","SUBTITLE_LOAD_ERROR","levelIndex","_error","LEVEL_EMPTY_ERROR","LEVEL_PARSING_ERROR","getCacheAge","LEVEL_LOADED","AUDIO_TRACK_LOADED","SUBTITLE_TRACK_LOADED","sendAddTrackEvent","videoEl","initEvent","addCueToTrack","cue","cues","getCueById","addCue","textTrackCue","TextTrackCue","err2","clearCurrentCues","removeCue","removeCuesInRange","cuesFound","firstCueInRange","mid","getFirstCueIndexAfterTime","getCuesInRange","filterSubtitleTracks","textTrackList","MetadataSchema","getCueClass","VTTCue","createCueWithDataFields","Cue","MAX_CUE_ENDTIME","MAX_VALUE","dateRangeDateToTimelineSeconds","ID3TrackController","id3Track","dateRangeCuesAppended","_registerListeners","_unregisterListeners","MEDIA_ATTACHED","onMediaAttached","MEDIA_DETACHING","onMediaDetaching","FRAG_PARSING_METADATA","onFragParsingMetadata","BUFFER_FLUSHING","onBufferFlushing","LEVEL_UPDATED","onLevelUpdated","createTrack","getID3Track","textTracks","textTrack","addTextTrack","enableEmsgMetadataCues","enableID3MetadataCues","updateId3CueEnds","_this$id3Track","endOffset","enableDateRangeMetadataCues","idsToRemove","dateTimeOffset","appendedDateRangeCues","durationKnown","nextDateRangeWithSameClass","candidateDateRange","otherDateRange","_cue","LatencyController","stallCount","_latency","timeupdateHandler","timeupdate","latency","maxLatency","liveMaxLatencyDuration","liveMaxLatencyDurationCount","targetLatency","liveSyncDuration","liveSyncDurationCount","lowLatencyMode","userConfig","maxLiveSyncOnStallIncrease","liveSyncPosition","liveEdge","estimateLiveEdge","syncPosition","edgeStalled","maxLevelUpdateAge","forwardBufferLength","bufferedRanges","buffered","_this$levelDetails","BUFFER_STALLED_ERROR","computeLatency","maxLiveSyncPlaybackRate","distanceFromTarget","rate","playbackRate","HdcpLevels","VideoRangeValues","HlsSkip","getSkipValue","HlsUrlParameters","msn","skip","addDirectives","Level","_attrs","frameRate","fragmentError","loadError","realBitrate","supportedPromise","supportedResult","_avgBitrate","_audioGroups","_subtitleGroups","_urlId","addGroupId","maxBitrate","averageBitrate","videoRange","hasAudioGroup","hasGroup","hasSubtitleGroup","audioGroups","subtitleGroups","audioGroupIds","audioGroupId","textGroupIds","textGroupId","_this$audioGroups","_this$subtitleGroups","addFallback","updateFromToPTS","fragFrom","fragTo","fragToPTS","updateFragPTSDTS","fragStartPts","fragEndPts","fragIdx","mergeDetails","newDetails","oldFragments","oldInit","PTSFrag","ccOffset","intersectionFn","newFrags","oldFrags","oldFrag","newFrag","mapFragmentIntersection","_currentInitSegment","oldDateRanges","deltaDateRanges","mergeDateRanges","newFragments","oldParts","newParts","oldPart","newPart","mapPartIntersection","adjustSliding","addSliding","getPartWith","partIndex","_level$details","findPart","reassignFragmentLevelIndexes","isTimeoutError","FRAG_LOAD_TIMEOUT","KEY_LOAD_TIMEOUT","getRetryConfig","isTimeout","getRetryDelay","retryConfig","backoffFactor","backoff","getLoaderConfigWithoutReties","loderConfig","loaderResponse","httpStatus","retryForHttpStatus","BinarySearch","comparisonFn","minIndex","maxIndex","currentIndex","currentElement","comparisonResult","findFragmentByPTS","fragPrevious","bufferEnd","maxFragLookUpTolerance","nextFragLookupTolerance","fragNext","bufferEdgeError","fragmentWithinToleranceTest","firstDuration","fragmentWithinFastStartSwitch","foundFragment","candidate","candidateLookupTolerance","pdtWithinToleranceTest","pdtBufferEnd","NetworkErrorAction","ErrorActionFlags","BasePlaylistController","logPrefix","requestScheduled","canLoad","clearTimer","loadPlaylist","switchParams","playlistUri","foundIndex","currentGoal","hlsUrlParameters","shouldLoadPlaylist","playlist","shouldReloadPlaylist","playlistLoaded","previousDetails","elapsed","endSn","lastPart","lastAdvanced","cdnAge","getDeliveryDirectives","bufferInfo","mainForwardBufferInfo","reloadInterval","distanceToLiveEdgeMs","liveEdgeMaxTargetDurations","lastSegmentDuration","computeReloadInterval","estimatedTimeUntilUpdate","previousDeliveryDirectives","checkRetry","errorEvent","errorDetails","errorAction","_errorEvent$context","levelRetry","EWMA","halfLife","estimate","weight","alpha_","estimate_","totalWeight_","adjAlpha","getTotalWeight","getEstimate","zeroFactor","EwmaBandWidthEstimator","slow","fast","defaultEstimate","defaultTTFB","defaultEstimate_","minWeight_","minDelayMs_","slow_","fast_","defaultTTFB_","ttfb_","durationMs","numBytes","durationS","bandwidthInBps","sampleTTFB","ttfb","canEstimate","getEstimateTTFB","SUPPORTED_INFO_DEFAULT","decodingInfoResults","powerEfficient","smooth","SUPPORTED_INFO_CACHE","requiresMediaCapabilitiesDecodingInfo","audioTracksByGroup","currentVideoRange","currentFrameRate","currentBw","audioPreference","audioCodecPreference","channelsPreference","maxChannels","audioChannels","audioTrackGroup","getMediaDecodingInfoPromise","mediaCapabilities","videoCodecs","audioCodecs","baseVideoConfiguration","framerate","transferFunction","contentType","_audioTracksByGroup$g","channelsNumber","decodingInfoKey","mediaConfig","spatialRendering","getMediaDecodingInfoKey","decodingInfo","getVideoSelectionOptions","videoPreference","preferHDR","allowedVideoRanges","matchMedia","mediaQueryList","badQuery","isHdrSupported","logStartCodecCandidateIgnored","codeSet","findMatchingOption","matchPredicate","matchesOption","characteristicsA","characteristicsB","arrA","arrB","characteristicsMatch","audioMatchPredicate","searchDownAndUpList","TaskLoop","_boundTick","_tickTimer","_tickInterval","_tickCallCount","tick","onHandlerDestroying","onHandlerDestroyed","clearNextTick","hasInterval","hasNextTick","millis","doTick","tickImmediate","FragmentState","FragmentTracker","activePartLists","endListFragments","timeRanges","bufferPadding","hasGaps","BUFFER_APPENDED","onBufferAppended","FRAG_BUFFERED","onFragBuffered","FRAG_LOADED","onFragLoaded","getAppendedFrag","activeParts","activePart","appendedPTS","getBufferedFrag","fragmentEntity","detectEvictedFragments","elementaryStream","timeRange","playlistType","appendedPart","appendedPartSn","removeFragment","esData","isNotBuffered","isTimeBuffered","detectPartialFragments","fragKey","getFragmentKey","isFragHint","streamInfo","getBufferedTimes","isPartial","removeParts","snToKeep","fragBuffered","getPartialFragment","timePadding","bestFragment","bestOverlap","isEndListAppended","lastFragmentEntity","hasFragment","hasParts","_this$activePartLists","removeFragmentsInRange","withGapOnly","unbufferedOnly","snToRemove","removeAllFragments","_fragmentEntity$range","_fragmentEntity$range2","_fragmentEntity$range3","noopBuffered","BufferHelper","isBuffered","getBuffered","maxHoleDuration","vbuffered","bufferedInfo","nextStart","buffered2","buf2len","buf2end","bufferStartNext","bufferLen","bufferStart","ChunkMetadata","transmuxing","executeStart","executeEnd","findFirstFragWithCC","_fragments$i","adjustFragmentStart","sliding","adjustSlidingStart","alignStream","lastFrag","switchDetails","shouldAlignOnDiscontinuities","referenceFrag","prevDetails","curDetails","prevFrags","curFrags","prevStartFrag","findDiscontinuousReferenceFrag","alignDiscontinuities","alignMediaPlaylistByPDT","refDetails","refFragments","refFrag","targetCC","refPDT","targetPDT","MIN_CHUNK_SIZE","FragmentLoader","partLoadTimeout","onProgress","LoadError","FRAG_LOAD_ERROR","FragmentILoader","fLoader","DefaultILoader","createGapLoadError","createLoaderContext","fragLoadPolicy","highWaterMark","resetLoader","resetIV","INTERNAL_ABORTED","loadPart","updateStatsFromPart","partLoadedData","fragStats","partStats","partTotal","estTotalParts","estLoadedParts","estRemainingBytes","fragLoading","partLoading","rangeStart","_frag$decryptdata","byteRangeStart","byteRangeEnd","fragmentLen","MEDIA_ERROR","FRAG_GAP","AESCrypto","aesIV","FastAESKey","expandKey","AESDecryptor","rcon","subMix","Uint32Array","invSubMix","sBox","invSBox","ksRows","keySchedule","invKeySchedule","initTable","uint8ArrayToUint32Array_","newArray","subMix0","subMix1","subMix2","subMix3","invSubMix0","invSubMix1","invSubMix2","invSubMix3","sx","x4","x8","keyBuffer","sameKey","ksRow","invKsRow","sbox","networkToHostOrderSwap","inputArrayBuffer","nRounds","invSBOX","initVector","initVector0","initVector1","initVector2","initVector3","inputInt32","Int32Array","outputInt32","t0","t1","t2","t3","s0","s3","inputWords0","inputWords1","inputWords2","inputWords3","swapWord","Decrypter","removePKCS7Padding","logEnabled","softwareDecrypter","fastAesKey","remainderData","currentIV","currentResult","useSoftware","enableSoftwareAES","browserCrypto","webkitSubtle","isSync","outputBytes","paddingBytes","removePadding","softwareDecrypt","decryptResult","webCryptoDecrypt","logOnce","currentChunk","getValidChunk","onWebCryptoError","aesKey","splitPoint","TimeRanges","State","BaseStreamController","fragmentTracker","fragCurrent","transmuxer","mediaBuffer","lastCurrentTime","nextLoadPosition","loadedmetadata","retryDate","fragmentLoader","levelLastLoaded","startFragRequested","decrypter","initPTS","onvseeking","onvended","onManifestLoaded","onTickEnd","resetTransmuxer","pauseBuffering","resumeBuffering","_streamEnded","getLevelDetails","_this$levelLastLoaded","onMediaSeeking","onMediaEnded","autoStartLoad","ended","detach","maxBufferHole","resetLoadingState","fragStartOffset","fragEndOffset","pastFragment","loadFragment","targetBufferTime","_loadFragForPlayback","_doFragLoad","fragContextChanged","_handleFragmentLoadProgress","_handleFragmentLoadComplete","resetFragmentLoading","clearTrackerIfNeeded","_this$mediaBuffer","getFwdBufferInfo","minForwardBufferLength","maxBufferLength","backtrackFragment","reduceMaxBufferLength","checkLiveUpdate","flushMainBuffer","flushScope","_loadInitSegment","decryptData","FRAG_DECRYPT_ERROR","FRAG_DECRYPTED","tstart","tdecrypt","completeInitSegmentLoad","fragBufferedComplete","_frag$startPTS","_frag$endPTS","_this$fragCurrent","_this$fragPrevious","_this$levels","seekToStartPos","fragLoadedEndData","partsLoaded","fragLoaded","chunkMeta","progressCallback","keyLoadingPromise","loadClear","keyLoadedData","KEY_LOADED","KEY_LOADING","getNextPart","doFragPartsLoad","handleFragLoadError","FRAG_LOADING","loadedEndOfParts","dataOnProgress","progressive","fragLoadedData","fromPart","initialPartList","loadedPart","nextPart","handleFragLoadAborted","OTHER_ERROR","INTERNAL_EXCEPTION","_handleTransmuxerFlush","getCurrentContext","updateLevelTiming","getFragmentWithSN","bufferFragmentData","noBacktracking","_buffer","BUFFER_APPENDING","dropped","flushBufferGap","fragDuration","segmentFraction","bufferable","getLoadPosition","getFwdBufferInfoAtPos","bufferedFragAtPos","getMaxBufferLength","levelBitrate","maxBufLen","maxBufferSize","maxMaxBufferLength","threshold","reducedLength","fragOrPart","getNextFragment","fragLen","initialLiveManifestSize","getInitialLiveFragment","getFragmentAtPosition","mapToInitFragWhenRequired","isLoopLoading","trackerState","getNextFragmentLoopLoading","gapStart","nextFragment","nextbufferInfo","contiguous","independentAttrOmitted","PDTValue","findFragmentByPDT","targetSN","findFragWithCC","liveStart","loadingParts","curSNIdx","fragState","nextFrag","synchronizeToLiveEdge","withinSlidingWindow","alignPlaylists","slidingStart","firstLevelLoad","aligned","alignedSlidingStart","waitForCdnTuneIn","setStartPosition","offsetInMultivariantPlaylist","onFragmentOrKeyLoadError","filterType","_this$fragCurrent2","gapTagEncountered","resetStartWhenNotLoaded","resetFragmentErrors","reduceLengthAndFlushBuffer","flushBuffer","afterBufferFlushed","bufferType","bufferedTimeRanges","resetWhenMissingContext","removeUnbufferedFrags","_this$transmuxer","parsedDuration","LEVEL_PTS_UPDATED","FRAG_PARSING_ERROR","FRAG_PARSED","recoverWorkerError","ChunkCache","chunks","dataLength","concatUint8Arrays","dummyTrack","inputTimeScale","sequenceNumber","BaseAudioDemuxer","_audioTrack","_id3Track","frameIndex","cachedData","basePTS","lastPTS","resetInitSegment","trackDuration","resetTimeStamp","deaultTimestamp","resetContiguity","canParse","appendFrame","demux","lastDataIndex","initPTSFn","dts","partialData","videoTrack","demuxSampleAes","isHeaderPattern$1","getHeaderLength","getFullFrameLength","isHeader$1","probe$1","headerLength","frameLength","newOffset","initTrackConfig","samplerate","adtsObjectType","adtsExtensionSamplingIndex","adtsChannelConfig","manifestCodec","adtsSamplingRates","adtsSamplingIndex","channelCount","emit","getAudioConfig","getFrameDuration","appendFrame$2","stamp","parseFrameHeader","_length","_sample","chromeVersion$1","BitratesMap","SamplingRateMap","SamplesCoefficients","BytesInSlot","appendFrame$1","parseHeader","samplesPerFrame","sampleRate","mpegVersion","mpegLayer","bitRateIndex","sampleRateIndex","paddingBit","channelMode","bitRate","sampleCoefficient","bytesInSlot","isHeaderPattern","isHeader","probe","emsgSchemePattern","getAudioBSID","bsid","numBits","AC3Demuxer","segmentCodec","samplingRateCode","frameSizeCode","skipCount","lfeon","bsmod","BaseVideoParser","VideoSample","createVideoSample","units","getLastNalUnit","_VideoSample","lastUnit","pushAccessUnit","nbSamples","lastSample","ExpGolomb","bytesAvailable","bitsAvailable","loadWord","workingBytes","availableBytes","skipBits","skipBytes","readBits","valu","skipLZ","leadingZeroCount","skipUEG","skipEG","readUEG","clz","readEG","readBoolean","readUByte","readUShort","readUInt","skipScalingList","deltaScale","lastScale","nextScale","readSPS","numRefFramesInPicOrderCntCycle","scalingListCount","frameCropLeftOffset","frameCropRightOffset","frameCropTopOffset","frameCropBottomOffset","profileIdc","chromaFormatIdc","picOrderCntType","picWidthInMbsMinus1","picHeightInMapUnitsMinus1","frameMbsOnlyFlag","pixelRatio","readSliceType","AvcVideoParser","parseAVCPES","pes","parseAVCNALu","spsfound","audFound","_VideoSample2","iskey","sliceType","_track$pixelRatio","_track$pixelRatio2","sps","codecarray","codecstring","pps","naluState","lastState","unitType","lastUnitStart","lastUnitType","SampleAesDecrypter","decryptBuffer","encryptedData","decryptAacSample","sampleIndex","curUnit","encryptedBuffer","decryptedBuffer","decryptAacSamples","getAvcEncryptedData","decodedData","encryptedDataLen","Int8Array","outputPos","inputPos","getAvcDecryptedUnit","uint8DecryptedData","decryptAvcSample","unitIndex","decryptAvcSamples","curUnits","PACKET_LENGTH","TSDemuxer","typeSupported","sampleAes","pmtParsed","_duration","_pmtId","_videoTrack","_txtTrack","aacOverFlow","videoParser","syncOffset","scanwindow","foundPat","packetStart","tsPackets","parsePID","pesData","isSampleAes","videoPid","audioPid","id3Pid","audioData","unknownPID","pmtId","tsPacketErrors","stt","parsePES","parseAACPES","parseMPEGPES","parseAC3PES","parseID3PES","parsePAT","parsedPIDs","parsePMT","segmentVideoCodec","segmentAudioCodec","emitParsingError","demuxResult","extractRemainingSamples","frameMissingBytes","sampleLength","frameOverflowBytes","recoverable","frameDuration","id3Sample","tableEnd","esInfoLength","logEncryptedSamplesFoundInUnencryptedStream","mpeg","mp3","ac3","parsePos","descriptorLen","pesLen","pesHdrLen","pesPts","pesDts","pesFlags","payloadStartOffset","dataLen","AAC","getSilentFrame","UINT32_MAX","MP4","avcC","btrt","dinf","dref","esds","ftyp","mdat","mdia","mfhd","minf","moov","dac3","mvex","mvhd","pasp","sdtp","stbl","stco","stsc","stsz","stts","vmhd","smhd","videoHdlr","audioHdlr","HDLR_TYPES","STTS","STSC","STCO","STSZ","VMHD","SMHD","STSD","majorBrand","avc1Brand","minorVersion","FTYP","box","DINF","upperWordDuration","lowerWordDuration","baseMediaDecodeTime","boxes","dependsOn","isDependedOn","hasRedundancy","avcc","hSpacing","vSpacing","configlen","audioStsd","sampleDependencyTable","upperWordBaseMediaDecodeTime","lowerWordBaseMediaDecodeTime","arraylen","cts","isLeading","paddingValue","isNonSync","degradPrio","movie","MPEG_TS_CLOCK_FREQ_HZ","toTimescaleFromBase","destScale","srcBase","toMsFromMpegTsClock","chromeVersion","safariWebkitVersion","MP4Remuxer","ISGenerated","_initPTS","_initDTS","nextAvcDts","nextAudioPts","videoSampleDuration","isAudioContiguous","isVideoContiguous","videoTrackConfig","defaultTimeStamp","resetNextTimestamp","getVideoStartPts","videoSamples","rolloverDetected","firstPts","minPTS","normalizePts","remux","accurateTimeOffset","audioTimeOffset","videoTimeOffset","hasAudio","hasVideo","enoughAudioSamples","enoughVideoSamples","_videoTrack$pixelRati","_config$pixelRatio","_videoTrack$pixelRati2","_config$pixelRatio2","generateIS","firstKeyFramePTS","firstKeyFrameIndex","findKeyframeIndex","forceKeyFrameOnDiscontinuity","audiovideoTimestampDelta","remuxAudio","audioTrackLength","remuxVideo","firstKeyFrame","flushTextTrackMetadataCueSamples","flushTextTrackUserdataCueSamples","audioSamples","initDTS","computePTSDTS","timeScale","inputSamples","outputSamples","firstDTS","lastDTS","mp4SampleDuration","maxPTS","sortSamples","initTime","deltadts","deltapts","inputDuration","averageSampleDuration","foundHole","foundOverlap","firstPTS","nbNalu","naluLen","dtsStep","nbUnits","sampleLen","mdatSize","MUX_ERROR","REMUX_ALLOC_ERROR","stretchedLastFrame","minDtsDelta","minPtsDelta","maxDtsDelta","maxPtsDelta","VideoSampleUnits","ptsDelta","mp4SampleLength","unitData","unitDataLen","lastFrameDuration","stretchShortVideoTrack","gapTolerance","deltaToFrameEnd","compositionTimeOffset","Mp4Sample","nextDts","nextPts","getSamplesPerFrame","scaleFactor","inputSampleDuration","rawMPEG","alignedWithVideo","timeOffsetMpegTS","maxAudioFramesDrift","newStamp","fillFrame","_nbSamples","audioSample","unitLen","remuxEmptyAudio","init90kHz","silentFrame","reference","isKeyframe","getParsedTrackCodec","muxConfig","txtTrack","captionTrack","initData","hasMoofData","segmentedData","segmentedRange","moofs","segmentValidRange","extractID3Track","emsgs","emsgInfo","schemeIdUri","presentationTimeDelta","presentationTime","eventDuration","leftPresentationTime","rightPresentationTime","parseEmsg","emitInitSegment","initTracks","lastEndTime","defaultInitPTS","generateInitSegment","encBoxes","isAudio","tenc","tencKeyId","patchEncyptionData","_initData","_initData2","rawDuration","videoDuration","audioDuration","trafs","trackDefault","truns","sidxMinStart","sidxMaxEnd","sidxDuration","sidxs","subSegmentDuration","getDuration","fmp4","getStartDTS","decodeTime","minDuration","isInvalidInitPts","upper","offsetStartDTS","canGetFrameLength","canParse$1","Transmuxer","demuxer","remuxer","decryptionPromise","transmuxConfig","currentTransmuxState","configure","uintData","discontinuity","trackSwitch","initSegmentChange","defaultInitPts","initSegmentData","encryptionType","getEncryptionType","getDecrypter","emptyResult","resetMuxers","needsProbing","configureTransmuxer","resetInitialTimestamp","transmux","transmuxResults","demuxResultOrPromise","isPromise","flushRemux","remuxResult","transmuxSampleAes","transmuxUnencrypted","mux","_muxConfig$i$demux","Remuxer","Demuxer","TransmuxConfig","TransmuxState","eventemitter3","EE","emitter","_events","_eventsCount","clearEvent","eventNames","names","listenerCount","a1","a2","a3","a4","a5","prefixed","TransmuxerInterface","onTransmuxComplete","onFlush","useWorker","workerContext","onwmsg","enableWorker","forwardMessage","m2tsTypeSupported","workerPath","__HLS_WORKER_BUNDLE__","scriptURL","worker","loadWorker","objectURL","injectWorker","onWorkerMessage","resetWorker","terminate","_frag$initSegment","_lastFrag$initSegment","snDiff","partDiff","transmuxResult","handleTransmuxComplete","transmuxerError","handleFlushResult","_this$workerContext","subtitleOptionsIdentical","trackList1","trackList2","mediaAttributesIdentical","attrs1","attrs2","customAttributes","stableRenditionId","subtitleAttribute","subtitleTrackMatchesTextTrack","subtitleTrack","BufferableInstance","timeranges","getRange","BufferOperationQueue","sourceBufferReference","buffers","queues","executeNext","insertAbort","appendBlocker","updating","shiftAndExecuteNext","VIDEO_CODEC_PROFILE_REPLACE","removeSourceChildren","sourceChildren","specialCea608CharsCodes","getCharForByte","NR_ROWS","NR_COLS","rowsLowCh1","rowsHighCh1","rowsLowCh2","rowsHighCh2","backgroundColors","CaptionsLogger","verboseLevel","numArrayToHexArray","numArray","hexArray","PenState","foreground","underline","italics","background","flash","setStyles","styles","newPenState","StyledUnicodeChar","uchar","penState","setChar","setPenState","newChar","Row","chars","currPenState","cueStartTime","setCursor","absPos","moveCursor","relPos","newPos","backSpace","insertChar","clearFromPos","startPos","clearToEndOfRow","getTextString","setPenStyles","CaptionScreen","currRow","nrRollUpRows","lastOutputScreen","setPen","setPAC","pacData","newRow","topRowIndex","prevLineTime","indent","prevPos","setBkgData","bkgData","setRollUpRows","nrRows","rollUp","getDisplayText","topRow","asOneRow","displayText","rowNr","rowText","getTextAndFormat","Cea608Channel","channelNumber","outputFilter","chNr","displayedMemory","nonDisplayedMemory","currRollUpRow","writeScreen","getHandler","setHandler","newHandler","setMode","newMode","insertChars","outputDataUpdate","ccRCL","ccBS","ccAOF","ccAON","ccDER","ccRU","ccFON","ccRDC","ccTR","ccRTD","ccEDM","ccCR","ccENM","ccEOC","ccTO","nrCols","ccMIDROW","secondByte","colorIndex","newCue","dispatchCue","cueSplitAtTime","Cea608Parser","out1","out2","currentChannel","cmdHistory","byteList","cmdFound","charsFound","hasCmdRepeated","setLastCmd","parseCmd","parseMidrow","parsePAC","parseBackgroundAttributes","parseChars","currChNr","interpretPAC","pacIndex","channelNr","charCodes","charCode1","oneCode","OutputFilter","timelineController","trackName","cueRanges","addCues","createCaptionsTrack","AllowedDirections","AllowedAlignments","isAllowedValue","lcValue","findAlignSetting","cobj","baseObj","hasBeenReset","_id","_pauseOnExit","_startTime","_endTime","_text","_region","_vertical","_snapToLines","_line","_lineAlign","_position","_positionAlign","_size","_align","setting","findDirectionSetting","displayState","getCueAsHTML","WebVTT","convertCueToDOMTree","StringDecoder","parseTimeStamp","computeSeconds","Settings","dflt","defaultKey","integer","keyValueDelim","groupDelim","align","parseCue","regionList","oInput","consumeTimeStamp","skipWhitespace","vals","lineAlign","snapToLines","consumeCueSettings","fixLineBreaks","VTTParser","oncue","onparsingerror","onflush","collectNextLine","alreadyCollectedLine","hasSubstring","LINEBREAKS","inputString","searchString","generateCueId","parseWebVTT","vttByteArray","vttCCs","callBack","errorCallBack","vttLines","srcScale","toMpegTsClockFromTimescale","parsingError","cueTime","timestampMapMPEGTS","timestampMapLOCAL","inHeader","currCC","cueOffset","webVttMpegTsMapOffset","new","prevCC","presentationOffset","_prevCC","calculateOffset","secs","mins","cueString2millis","IMSC1_CODEC","HMSF_REGEX","TIME_UNIT_REGEX","textAlignToLineAlign","parseIMSC1","ttmlList","syncTime","toTimescaleFromScale","ttml","xmlDoc","defaultRateInfo","subFrameRate","frameRateMultiplier","tickRate","rateInfo","styleElements","collectionToDictionary","getElementCollection","regionElements","cueElements","cueElement","cueText","getTextContent","hasAttribute","parseTtmlTime","timestampParsingError","ttsNs","regionStyle","styleAttributes","regionStyleName","getAttributeNS","getTtmlStyles","parseTTML","parentName","elementsWithId","dict","_node$childNodes","hasAttributeNS","timeAttributeValue","parseHoursMinutesSecondsFrames","parseTimeUnits","captionsOrSubtitlesFromCharacteristics","canReuseVttTextTrack","inUseTrack","manifestTrack","CapLevelController","autoLevelCapping","firstLevel","restrictedLevels","clientRect","streamController","setStreamController","unregisterListener","stopCapping","FPS_DROP_LEVEL_CAPPING","onFpsDropLevelCapping","MEDIA_ATTACHING","onMediaAttaching","MANIFEST_PARSED","onManifestParsed","LEVELS_UPDATED","onLevelsUpdated","BUFFER_CODECS","onBufferCodecs","droppedLevel","isLevelAllowed","HTMLVideoElement","detectPlayerSize","capLevelToPlayerSize","startCapping","maxLevel","getMaxLevel","nextLevelSwitch","capLevelIndex","validLevels","getMaxLevelByMediaSize","getDimensions","boundsRect","contentScaleFactor","ignoreDevicePixelRatio","restrictedLevel","maxLevelIndex","squareSize","curLevel","nextLevel","LOGGER_PREFIX","EMEController","keyFormatPromise","keySystemAccessPromises","_requestLicenseFailureCount","mediaKeySessions","keyIdToKeySessionPromise","setMediaKeysQueue","CDMCleanupPromise","onMediaEncrypted","_onMediaEncrypted","onWaitingForKey","_onWaitingForKey","onMediaDetached","requestMediaKeySystemAccessFunc","licenseXhrSetup","licenseResponseCallback","drmSystemOptions","MEDIA_DETACHED","getLicenseServerUrl","keySystemConfiguration","licenseUrl","getServerCertificateUrl","serverCertificateUrl","attemptKeySystemAccess","uniqueCodec","keySystems","getMediaKeysPromise","mediaKeys","EMEKeyError","KEY_SYSTEM_ERROR","KEY_SYSTEM_NO_ACCESS","supportedConfigurations","errMessage","mediaKeySystemConfigs","initDataTypes","persistentState","distinctiveIdentifier","sessionTypes","sessionType","audioCapabilities","robustness","audioRobustness","encryptionScheme","audioEncryptionScheme","videoCapabilities","videoRobustness","videoEncryptionScheme","createMediaKeySystemConfigurations","getSupportedMediaKeySystemConfigurations","keySystemAccess","_keySystemAccessPromises","mediaKeySystemAccess","certificateRequest","fetchServerCertificate","createMediaKeys","certificate","setMediaKeysServerCertificate","createMediaKeySessionContext","mediaKeysSession","mediaKeySessionContext","keyStatus","renewKeySession","keySessionContext","getKeyIdString","generateRequestWithPreferredKeySession","removeSession","updateKeySession","_mediaKeySessionConte","keySession","selectKeySystemFormat","getKeyFormatPromise","keySystemsInConfig","getKeySystemSelectionPromise","keySystemFormat","loadKey","keyInfo","keyDetails","keySessionContextPromise","getKeySystemForKeyPromise","throwIfDestroyed","attemptSetMediaKeys","handleError","KEY_SYSTEM_NO_KEYS","KEY_SYSTEM_NO_CONFIGURED_LICENSE","initDataType","logMessage","keySystemDomain","psshResults","parseMultiPssh","psshInfo","keyIdHex","keyContext","oldKeyIdHex","_keySystemToKeySystem","setMediaKeysPromise","setMediaKeys","_this$config$drmSyste","_this$config$drmSyste2","generateRequestFilter","generateRequest","mappedInitData","_this$hls","licenseStatus","_onmessage","renewLicense","onkeystatuseschange","_onkeystatuseschange","onKeyStatusChange","keyUsablePromise","KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED","KEY_SYSTEM_STATUS_INTERNAL_ERROR","_context$mediaKeysSes","KEY_SYSTEM_NO_SESSION","keyStatuses","certLoader","certLoadPolicy","contex","KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED","cert","setServerCertificate","success","KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED","keyMessage","requestLicense","KEY_SYSTEM_SESSION_UPDATE_FAILED","unpackPlayReadyKeyMessage","licenseChallenge","xmlString","keyMessageXml","_header$querySelector","_header$querySelector2","challengeElement","challengeText","setupLicenseXHR","keysListItem","licenseXhrSetupResult","keyLoadPolicy","KEY_SYSTEM_LICENSE_REQUEST_FAILED","attemptsLeft","licenseXhr","emeEnabled","mediaKeysList","keySessionCount","CmObjectType","CmStreamingFormat","CmcdHeaderField","CmcdHeaderMap","OBJECT","REQUEST","SESSION","STATUS","SfItem","SfToken","DICT","throwError","BARE_ITEM","BYTES","DECIMAL","INTEGER","STRING_REGEX","TOKEN","KEY","serializeByteSequence","binary","serializeInteger","isInvalidInt","roundToEven","precision","decimalShift","EPSILON","flooredValue","serializeDecimal","roundedValue","serializeToken","serializeBareItem","serializeString","serializeBoolean","serializeDate","serializeKey","serializeParams","serializeItem","serializeDict","optionalWhiteSpace","isTokenField","toRounded","toHundred","CmcdFormatters","mtp","nor","fromPath","urlToRelativePath","rtp","encodeCmcd","cmcd","encodeSfDict","processCmcd","appendCmcdHeaders","headerMap","customHeaderMap","shards","_headerMap$find","toCmcdHeaders","CMCD_PARAM","REGEX","appendCmcdQuery","toCmcdQuery","cloneRenditionGroups","groupCloneMap","uriReplacement","cloneId","clonedTracks","clonedTrack","performUriReplacement","stableId","perOptionKey","HOST","PARAMS","perOptionUris","perVariantUri","AGE_HEADER_LINE_REGEX","XhrLoader","xhrSetup","requestTimeout","retryTimeout","abortInternal","onprogress","_this$callbacks","loadInternal","openAndSendXhr","readystatechange","loadprogress","loadtimeout","useResponseText","_response","responseURL","_this$context","lengthComputable","getAllResponseHeaders","getResponseHeader","FetchLoader","fetchSetup","getRequest","initParams","credentials","getRequestParameters","LENGTH","FetchError","contentRange","byteRangeLength","byteRangeHeader","getByteRangeLength","getContentLength","loadProgressively","chunkCache","reader","getReader","pump","WHITESPACE_CHAR","Cues","captionScreen","indenting","_track$cues","cueA","cueB","hlsDefaultConfig","defaultAudioCodec","capLevelOnFPSDrop","backBufferLength","frontBufferFlushThreshold","highBufferWatchdogPeriod","nudgeOffset","nudgeMaxRetry","liveDurationInfinity","liveBackBufferLength","startLevel","startFragPrefetch","fpsDroppedMonitoringPeriod","fpsDroppedMonitoringThreshold","appendErrorMaxRetry","abrController","_hls","lastLevelLoadSec","lastLoadedFragLevel","firstSelection","_nextAutoLevel","nextAutoLevelKey","codecTiers","partCurrent","bitrateTestDelay","bwEstimator","_abandonRulesCheck","autoLevelEnabled","timeLoading","minAutoLevel","paused","ttfbEstimate","bufferStarvationDelay","loadedFirstByte","getBwEstimate","expectedLen","timeStreaming","loadRate","fragLoadedDelay","bwe","nextLoadLevel","fragLevelNextLoadedDelay","levelNextBitrate","getTimeToLoadFrag","nextAutoLevel","nextLoadLevelBitrate","abrBandWidthUpFactor","resetEstimator","FRAG_LOAD_EMERGENCY_ABORTED","initEstimator","abrEwmaDefaultEstimate","abrEwmaSlowVoD","abrEwmaFastVoD","onFragLoading","LEVEL_SWITCHING","onLevelSwitching","onLevelLoaded","MAX_AUTO_LEVEL_UPDATED","onMaxAutoLevelUpdated","ignoreFragment","_data$part","BUFFER_ADD_CODEC_ERROR","BUFFER_APPEND_ERROR","timeToFirstByteSec","bandwidth","fragSizeBits","isSwitch","timeLoadingMs","abrEwmaSlowLive","abrEwmaFastLive","abrMaxWithRealBitrate","loadedBytes","loadedDuration","fragBufferedData","processingMs","firstAutoLevel","maxAutoLevel","maxStartDelay","maxStarvationDelay","abrAutoLevel","findBestLevel","clamped","forcedAutoLevel","useEstimate","loadedFirstFrag","getAutoLevelKey","nextABRAutoLevel","getNextABRAutoLevel","getStarvationDelay","currentFragDuration","avgbw","bwFactor","abrBandWidthFactor","bwUpFactor","_bestLevel","maxLoadingDelay","bestLevel","minLevel","autoLevel","loadLevel","maxFetchDuration","selectionBaseLevel","allAudioTracks","currentCodecSet","trackGroup","hasDefault","hasAutoSelect","channelsKey","hasDefaultAudio","hasAutoSelectAudio","getAudioTracksByGroup","tiers","tier","minBitrate","minFramerate","maxScore","videoRanges","SDR","lesserWidthOrHeight","audioGroup","getCodecTiers","startTier","codecSets","preferStereo","hasStereo","hasCurrentVideoRange","selectedScore","matchingVideoRanges","maxHeight","maxFramerate","candidateTier","getStartCodecTier","ttfbEstimateSec","levelsSkipped","_levelInfo$supportedR","levelInfo","upSwitch","useMediaCapabilities","removeLevel","avgDuration","adjustedbw","fetchDuration","bufferController","_objectUrl","operationQueue","bufferCodecEventsExpected","_bufferCodecEventsTotal","mediaSource","lastMpegAudioChunk","appendSource","appendErrors","pendingTracks","sourceBuffer","_onEndStreaming","_onStartStreaming","_onMediaSourceOpen","_onMediaEmptied","updateMediaElementDuration","checkPendingTracks","_onMediaSourceClose","_onMediaSourceEnded","mediaSrc","_initSourceBuffer","hasSourceTypes","getSourceBufferTypes","BUFFER_RESET","onBufferReset","onBufferAppending","BUFFER_EOS","onBufferEos","onFragParsed","FRAG_CHANGED","onFragChanged","codecEvents","altAudio","_ms$constructor","objectUrl","MMS","addSource","endOfStream","resetBuffer","_this$mediaSource","removeBufferListeners","sourceBuffers","removeSourceBuffer","sourceBufferCount","trackNames","changeType","_trackCodec","currentCodecFull","currentCodec","trackCodec","nextCodec","appendChangeType","chunkStats","bufferAppendingStart","fragBuffering","partBuffering","checkTimestampOffset","fragStart","timestampOffset","appendExecutor","sourceBufferName","QUOTA_EXCEEDED_ERR","BUFFER_FULL_ERROR","appendErrorCount","flushOperation","removeExecutor","BUFFER_FLUSHED","buffersAppendedTo","blockBuffers","trimBuffers","ending","maxBackBufferLength","targetBackBufferPosition","flushBackBuffer","frontBufferLength","maxFrontBufferLength","targetFrontBufferPosition","flushFrontBuffer","BACK_BUFFER_REACHED","LIVE_BACK_BUFFER_REACHED","numBufferedRanges","levelDuration","mediaDuration","msDuration","updateSeekableRange","setLiveSeekableRange","pendingTracksCount","createSourceBuffers","BUFFER_CREATED","BUFFER_INCOMPATIBLE_CODECS_ERROR","_track$levelCodec","addSourceBuffer","sbName","addBufferListener","_onSBUpdateStart","_onSBUpdateEnd","_onSBUpdateError","removedRanges","_this$media","_this$media$querySele","_this$mediaSource2","_this$mediaSource3","BUFFER_APPENDING_ERROR","removeStart","removeEnd","appendBuffer","onUnblocked","blockingOperations","capLevelController","errorController","playlistError","penalizedRenditions","onErrorOut","getVariantLevelIndex","_data$frag","_data$level","KEY_LOAD_ERROR","getFragRetryOrSwitchAction","_data$context","_data$context$levelDe","getPlaylistRetryOrSwitchAction","getLevelSwitchAction","restrictedHdcpLevel","hdcpLevel","keySystemError","LEVEL_SWITCH_ERROR","BUFFER_SEEK_OVER_HOLE","BUFFER_NUDGE_ON_STALL","variantLevelIndex","fragmentErrors","_data$frag2","_data$context2","fragErrorType","findAudioCodecAlternate","findVideoCodecAlternate","playlistErrorType","playlistErrorGroupId","_level$audioGroups","_level$subtitleGroups","levelCandidate","fragCandidate","_data$errorAction","sendAlternateToPenaltyBox","recoverMediaError","switchLevel","maxHdcpLevel","fpsController","isVideoPlaybackQualityAvailable","lastTime","lastDroppedFrames","lastDecodedFrames","getVideoPlaybackQuality","checkFPSInterval","checkFPS","decodedFrames","droppedFrames","currentPeriod","currentDropped","currentDecoded","droppedFPS","FPS_DROP","totalDroppedFrames","currentLevel","videoPlaybackQuality","totalVideoFrames","droppedVideoFrames","webkitDecodedFrameCount","webkitDroppedFrameCount","abrEwmaDefaultEstimateMax","minAutoBitrate","testBandwidth","steeringManifestLoadPolicy","manifestLoadingTimeOut","manifestLoadingMaxRetry","manifestLoadingRetryDelay","manifestLoadingMaxRetryTimeout","levelLoadingTimeOut","levelLoadingMaxRetry","levelLoadingRetryDelay","levelLoadingMaxRetryTimeout","fragLoadingTimeOut","fragLoadingMaxRetry","fragLoadingRetryDelay","fragLoadingMaxRetryTimeout","cueHandler","enableWebVTT","enableIMSC1","enableCEA708Captions","captionsTextTrack1Label","captionsTextTrack1LanguageCode","captionsTextTrack2Label","captionsTextTrack2LanguageCode","captionsTextTrack3Label","captionsTextTrack3LanguageCode","captionsTextTrack4Label","captionsTextTrack4LanguageCode","renderTextTracksNatively","subtitleStreamController","currentTrackId","tracksBuffered","mainDetails","SUBTITLE_TRACKS_UPDATED","onSubtitleTracksUpdated","SUBTITLE_TRACK_SWITCH","onSubtitleTrackSwitch","onSubtitleTrackLoaded","SUBTITLE_FRAG_PROCESSED","onSubtitleFragProcessed","fragEnd","endOffsetSubtitles","mediaPlaylist","currentTrack","mediaBufferTimeRanges","_track$details","mainSlidingStartFragment","mainBufferInfo","trackDetails","foundFrag","lookupTolerance","mainBufferLength","maxConfigBuffer","subtitleTrackController","groupIds","tracksInGroup","selectDefaultTrack","queuedDefaultTrack","asyncPollTrackChange","pollTrackChange","useTextTrackPolling","subtitlePollingInterval","_subtitleDisplay","onTextTracksChanged","findTrackForTextTrack","setSubtitleTrack","subtitleDisplay","toggleTrackModes","trackInActiveGroup","currentGroups","subtitlePreference","groupIndex","allIndex","findTrackId","subtitleTracksUpdated","selectDefault","allSubtitleTracks","newId","setSubtitleOption","subtitleOption","nextTrack","lastTrack","trackLoaded","unparsedVttFrags","captionsTracks","nonNativeCaptionsTracks","cea608Parser1","cea608Parser2","lastCc","captionsProperties","textTrack1","textTrack2","textTrack3","textTrack4","FRAG_PARSING_USERDATA","onFragParsingUserdata","onFragDecrypted","INIT_PTS_FOUND","onInitPtsFound","SUBTITLE_TRACKS_CLEARED","onSubtitleTracksCleared","initCea608Parsers","channel1","channel2","channel3","channel4","merged","cueRange","overlap","CUES_PARSED","getExistingTrack","createNativeTrack","createNonNativeTrack","existingTrack","createTextTrack","closedCaptions","NON_NATIVE_TEXT_TRACKS_FOUND","_cleanTracks","hasIMSC1","inUseTracks","textTrackKind","unusedTextTracks","tracksList","captionsTrack","instreamIdMatch","closedCaptionsForLevel","_data$part$index","decrypted","trackPlaylistMedia","_parseIMSC1","_parseVTTs","_appendCues","maxAvCC","missingInitPTS","_fallbackToIMSC1","fragLevel","ccBytes","ccdatas","extractCea608Data","actualCCBytes","tmpByte","ccbyte1","ccbyte2","ccType","audioStreamController","videoBuffer","videoTrackCC","waitingVideoCC","bufferedTrack","switchingTrack","waitingData","flushing","bufferFlushed","cachedTrackLoadedData","AUDIO_TRACKS_UPDATED","onAudioTracksUpdated","AUDIO_TRACK_SWITCHING","onAudioTrackSwitching","onAudioTrackLoaded","onBufferCreated","onBufferFlushed","doTickIdle","_levels$trackId","seeking","clearWaitingFragment","atGap","atBufferSyncLimit","mainFrag","flushAudioIfNeeded","_handleTransmuxComplete","AUDIO_TRACK_SWITCHED","_id3$samples","completeAudioSwitch","mapFragment","_bufferInitSegment","FRAG_PARSING_INIT_SEGMENT","emittedID3","emittedText","variantAudioCodecs","_track$details2","bufferedAttributes","switchAttributes","audioTrackController","audioTracksUpdated","selectedTrackId","setAudioTrack","_this$groupIds","setAudioOption","audioOption","switchIndex","renditions","variantMap","currentVideoCodec","matchingVideo","findClosestLevelWithAudioGroup","withoutCodecAndChannelsMatch","emeController","cmcdController","sid","cid","useHeaders","includeKeys","starved","audioBuffer","onWaiting","onPlaying","applyPlaylistData","MANIFEST","applyFragmentData","getObjectType","VIDEO","MUXED","getTopBandwidth","getBufferLength","createPlaylistLoader","createFragmentLoader","randomUUID","contentId","_data$tracks$audio","_data$tracks$video","HLS","bandwidthEstimate","isVideo","TIMED_TEXT","contentSteeringController","pathwayPriority","timeToLoad","reloadTimer","penalizedPathways","loadSteeringManifest","levelToRemove","errorPathway","getPathwayForGroupId","pathways","updatePathwayPriority","filterParsedLevels","pathwayLevels","getLevelsForPathway","selectedLevel","levelAfterChange","defaultPathway","clonePathways","pathwayClones","audioGroupCloneMap","subtitleGroupCloneMap","pathwayClone","baseId","clonedVariants","baseLevel","clonedAudioGroupId","clonedSubtitleGroupId","clonedLevel","throughput","steeringData","TTL","reloadUri","loadedSteeringData","steeringManifest","STEERING_MANIFEST_LOADED","ttlMs","deepCpy","enableStreamingMode","currentLoader","ReadableStream","fetchSupported","chromeOrFirefox","LevelController","_levels","_firstLevel","_maxAutoLevel","_startLevel","currentLevelIndex","manualLevelIndex","steering","onParsedComplete","resetLevels","redundantSet","generatePathwaySet","resolutionFound","videoCodecFound","audioCodecFound","levelParsed","_audioCodec","_videoCodec","avcdata","convertAVC1ToAVCOTI","FRAMERATE","HDCP","PATHWAY","RESOLUTION","VIDEO_RANGE","pathwayCount","filterAndSortMediaOptions","filteredLevels","MANIFEST_INCOMPATIBLE_CODECS_ERROR","assignTrackIdsByGroup","unsortedLevels","valueA","valueB","firstLevelInPlaylist","_this$hls$userConfig","firstLevelBitrate","startingBwEstimate","audioOnly","edata","forceStartLoad","newLevel","lastLevelIndex","lastLevel","lastPathwayId","levelSwitchingData","manualLevel","configStartLevel","_data$deliveryDirecti2","_data$deliveryDirecti","_this$currentLevel","checkMaxAutoUpdated","KeyLoader","keyUriToKeyInfo","_loader$context","createKeyLoadError","loadingFrag","_keyInfo","_keyInfo2","_keyInfo$mediaKeySess","keyLoadPromise","loadKeyHTTP","loadKeyEME","getSourceBuffer","SourceBuffer","WebKitSourceBuffer","isMSESupported","GapController","nudgeRetry","stallReported","stalled","moved","activeFrag","seeked","beginSeek","_stalledDuration","hasEnoughBuffer","noBufferGap","startJump","maxStartGapJump","partialOrGap","_trySkipBufferHole","tnow","stalledDuration","_reportStall","bufferedWithHoles","_tryFixBufferStall","stalledDurationMs","_tryNudgeBuffer","bufferStarved","waiting","gapLength","startGap","startFrag","startProvisioned","moreToLoad","provisioned","targetTime","StreamController","audioCodecSwap","gapController","_forceStartLoad","fragPlaying","onvplaying","onvseeked","fragLastKbps","couldBacktrack","audioCodecSwitch","onFragLoadEmergencyAborted","onAudioTrackSwitched","checkBuffer","checkFragmentChanged","getMainFwdBufferInfo","lastDetails","_this$backtrackFragme","backtrackFrag","_loadBitrateTestFrag","followingBufferedFrag","immediateLevelSwitch","abortCurrentFrag","fetchdelay","fragPlayingCurrent","bufferedFrag","nextBufferedFrag","maxStart","startPts","onMediaPlaying","onMediaSeeked","aac","heaac","_sourceBuffer$prototy","changeTypeSupported","_curLevel$details","newLevelId","_getAudioCodec","fromAltAudio","mediaTrack","swapAudioCodec","isFirstFragment","isFirstInDiscontinuity","backtrack","audioMetadata","fragCurrentLevel","LEVEL_SWITCHED","currentFrag","currentProgramDateTime","epocMs","Hls","codecsForVideoContainer","codecForAudioContainer","DefaultConfig","defaultConfig","coreComponents","networkControllers","_emitter","_autoLevelCapping","_maxHdcpLevel","latencyController","levelController","_media","triggeringException","enableLogs","defaultsCopy","deprecatedSettings","policyName","policyNotSet","report","deprecatedSetting","mergeConfig","ConfigAbrController","ConfigBufferController","ConfigCapLevelController","ConfigErrorController","ConfigFpsController","playListLoader","id3TrackController","ConfigContentSteeringController","createController","AudioStreamControllerClass","SubtitleStreamControllerClass","ControllerClass","controllerInstance","eventObject","DESTROYING","detachMedia","attachMedia","loadSource","loadedSource","loadingSource","shouldStartCapping","newCapLevelToPlayerSize","isHdcpLevel","playingDate","_this$audioTrackContr","_this$subtitleTrackCo","audioTrackId","subtitleTrackId","urlAttributes","consoleLogger","concreteLogger","forward","_len2","_key2","_len3","_key3","deprecate","_len4","_key4","lvl","debugOnly","moduleName","baseLogger","rej","makeString","getLastOfPath","Empty","cleanKey","canNotTraverseDeeper","regexEscape","_entityMap","deepFind","keySeparator","mix","joinedPath","getCleanedCode","ResourceStore","defaultNS","ignoreJSONStructure","addNamespaces","removeNamespaces","getResource","lng","addResource","addResources","addResourceBundle","removeResourceBundle","hasResourceBundle","getResourceBundle","compatibilityAPI","getDataByLanguage","hasLanguageSomeTranslations","postProcessor","processors","addPostProcessor","translator","processor","checkedLoadedFor","Translator","changeLanguage","interpolation","extractFromKey","nsSeparator","namespaces","wouldCheckForNsInKey","seemsNaturalLanguage","userDefinedKeySeparator","userDefinedNsSeparator","possibleChars","looksLikeObjectPath","nestingRegexp","lastKey","overloadTranslationOptionHandler","returnDetails","appendNamespaceToCIMode","usedKey","exactUsedKey","usedLng","usedNS","usedParams","getUsedParamsDetails","resUsedKey","resExactUsedKey","resType","joinArrays","handleAsObjectInI18nFormat","i18nFormat","handleAsObject","returnObjects","returnedObjectHandler","resTypeIsArray","newKeyToUse","deepKey","extendTranslation","usedDefault","needsPluralHandling","hasDefaultValue","defaultValueSuffix","pluralResolver","getSuffix","defaultValueSuffixOrdinalFallback","ordinal","isValidLookup","resForMissing","missingKeyNoValueFallbackToKey","updateMissing","lngs","fallbackLngs","languageUtils","getFallbackCodes","fallbackLng","saveMissingTo","toResolveHierarchy","specificDefaultValue","defaultForMissing","missingKeyHandler","backendConnector","saveMissing","saveMissingPlurals","getSuffixes","suffix","appendNamespaceToMissingKey","parseMissingKeyHandler","defaultVariables","skipInterpolation","skipOnVariables","nestBef","nest","postProcess","postProcessorNames","applyPostProcessor","postProcessPassResolved","i18nResolved","extracted","fallbackNS","needsZeroSuffixLookup","shouldUseIntlApi","needsContextHandling","codes","hasLoadedNamespace","finalKeys","addLookupKeys","pluralSuffix","zeroSuffix","pluralSeparator","ordinalPrefix","contextKey","contextSeparator","possibleKey","returnNull","returnEmptyString","resourceStore","optionsKeys","useOptionsReplaceForData","LanguageUtil","supportedLngs","getScriptPartFromCode","formatLanguageCode","getLanguagePartFromCode","specialCases","lowerCaseLng","cleanCode","isSupportedCode","nonExplicitSupportedLngs","getBestMatchFromCodes","cleanedLng","lngOnly","supportedLng","fallbacks","fallbackCode","fallbackCodes","addCode","sets","_rulesPluralsTypes","nonIntlVersions","intlVersions","suffixesOrder","two","few","many","PluralResolver","compatibilityJSON","PluralRules","numbers","plurals","createRules","addRule","getRule","needsPlural","rule","pluralCategories","getPluralFormsOfKey","pluralCategory1","pluralCategory2","pluralCategory","select","getSuffixRetroCompatible","noAbs","simplifyPluralSuffix","returnSuffix","deepFindWithDefaults","defaultData","getPathWithDefaults","Interpolator","escapeValue","iOpts","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapePrefix","unescapeSuffix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","resetRegExp","regexpStr","regexpUnescapeStr","regexpUnescape","nestingRegexpStr","replaces","regexSafe","handleFormat","interpolationkey","missingInterpolationHandler","safeValue","todo","matchedVar","clonedOptions","handleHasOptions","inheritedOptions","sep","matchedSingleQuotes","matchedDoubleQuotes","doReduce","createCachedFormatter","Formatter","NumberFormat","relativetime","ListFormat","addCached","mem","formatName","optStr","parseFormatStr","valOptions","formatParams","Connector","backend","waitingReads","maxParallelReads","readingCalls","maxRetries","queueLoad","toLoad","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","pendingCount","pushPath","removePending","loadedKeys","fcName","tried","prepareLoading","loadOne","fallbackValue","isUpdate","clb","initImmediate","partialBundledLanguages","tDescription","transformOptions","I18n","external","defOpts","createClassOnDemand","ClassOrObject","languageDetector","detection","finish","initializedStoreOnce","loadResources","usedCallback","resolvedLanguage","setResolvedLanguage","reloadResources","use","lngInLngs","isLanguageChangingTo","setLngProps","setLng","cacheUserLanguage","getFixedT","keyPrefix","fixedT","resultKey","setDefaultNamespace","lastLng","loadNotPending","loadState","precheck","preResult","loadNamespaces","loadLanguages","preloaded","newLngs","createInstance","cloneInstance","forkResourceStore","mergedOptions","instanceOfAny","constructors","idbProxyableTypes","cursorAdvanceMethods","cursorRequestMap","transactionDoneMap","transactionStoreNamesMap","transformCache","reverseTransformCache","idbProxyTraps","IDBTransaction","wrapFunction","IDBDatabase","IDBCursor","advance","continue","continuePrimaryKey","storeNames","transformCachableValue","cacheDonePromiseForTransaction","IDBObjectStore","IDBIndex","IDBRequest","promisifyRequest","openDB","blocked","blocking","terminated","openPromise","deleteDB","readMethods","writeMethods","cachedMethods","getMethod","targetFuncName","useIndex","isWrite","storeName","oldTraps","unencoded","encodeBase64","encoded","decodeBase64","JOSEError","claim","JOSENotSupported","JWSInvalid","JWTInvalid","isCryptoKey","CryptoKey","unusable","isAlgorithm","getHashLength","checkUsage","usages","checkSigCryptoKey","getNamedCurve","namedCurve","actual","withAlg","isJWK","kty","jwk","keyUsages","crv","subtleMapping","key_ops","exportKeyValue","privCache","pubCache","isKeyObject","importAndCache","cryptoKey","export","dp","dq","usage","modulusLength","saltLength","parameter","jwkMatchesOp","symmetricTypeCheck","allowJwk","checkKeyType","asymmetricTypeCheck","checkKeyTypeWithJwk","Err","recognizedDefault","recognizedOption","protectedHeader","joseHeader","crit","recognized","FlattenedSign","setProtectedHeader","_protectedHeader","setUnprotectedHeader","unprotectedHeader","_unprotectedHeader","jws","protected","CompactSign","_flattened","numericDate","validateInput","ProduceJWT","setIssuer","issuer","setSubject","subject","setAudience","audience","setJti","jwtId","jti","setNotBefore","nbf","epoch","setExpirationTime","setIssuedAt","SignJWT","fromMarkdown","encoding","transforms","canContainEols","enter","autolink","opener","autolinkProtocol","onenterdata","autolinkEmail","atxHeading","blockQuote","characterEscape","codeFenced","codeFlow","codeFencedFenceInfo","codeFencedFenceMeta","codeIndented","codeText","codeTextData","codeFlowValue","definitionDestinationString","definitionLabelString","definitionTitleString","emphasis","hardBreakEscape","hardBreak","hardBreakTrailing","htmlFlow","htmlFlowData","htmlText","htmlTextData","listItem","listItemValue","onenterlistitemvalue","listOrdered","onenterlistordered","listUnordered","paragraph","onenterreference","referenceString","resourceDestinationString","resourceTitleString","setextHeading","strong","thematicBreak","exit","closer","atxHeadingSequence","onexitatxheadingsequence","onexitautolinkemail","onexitautolinkprotocol","characterEscapeValue","onexitdata","characterReferenceMarkerHexadecimal","onexitcharacterreferencemarker","characterReferenceMarkerNumeric","characterReferenceValue","onexitcharacterreferencevalue","onexitcharacterreference","onexitcodefenced","codeFencedFence","onexitcodefencedfence","onexitcodefencedfenceinfo","onexitcodefencedfencemeta","onexitcodeindented","onexitcodetext","onexitdefinitiondestinationstring","onexitdefinitionlabelstring","onexitdefinitiontitlestring","onexithardbreak","onexithtmlflow","onexithtmltext","onexitimage","onexitlabel","labelText","onexitlabeltext","lineEnding","onexitlineending","onexitlink","onexitreferencestring","onexitresourcedestinationstring","onexitresourcetitlestring","onexitresource","onexitsetextheading","setextHeadingLineSequence","onexitsetextheadinglinesequence","setextHeadingText","onexitsetextheadingtext","mdastExtensions","compile","tokenStack","listStack","prepareList","sliceSerialize","defaultOnError","lineIndex","firstBlankLineIndex","atMarker","containerBalance","listSpread","tailIndex","tailEvent","_spread","and","onExitError","expectingFirstListItemValue","flowCodeInside","setextHeadingSlurpLineEnding","codePointAt","atHardBreak","inReference","referenceType","ancestor","characterReferenceType","ordered","compiler","combined","extension","defaultFootnoteBackContent","rereferenceIndex","defaultFootnoteBackLabel","footer","clobberPrefix","footnoteBackContent","footnoteBackLabel","footnoteLabel","footnoteLabelTagName","footnoteLabelProperties","listItems","footnoteOrder","footnoteById","safeId","backReferences","counts","footnoteCounts","dataFootnoteBackref","tailTail","dataFootnotes","listItemLoose","blockquote","applyData","break","footnoteReference","counter","reuseCounter","dataFootnoteRef","ariaDescribedBy","sup","allowDangerousHtml","imageReference","definitionById","inlineCode","linkReference","listLoose","table","firstRow","tableContent","tableCell","tableRow","toml","yaml","footnoteDefinition","toHast","foot","subtype","contents","createState","trimMarkdownSpaceStart","passThrough","shallow","unknownHandler","defaultUnknownHandler","hName","hChildren","hProperties","deserialize","serialized","unpair","BigInt","deserializer","EMPTY","asString","shouldSkip","serialize","lossy","strict","serializer","structuredClone","VOID","PRIMITIVE","ARRAY","DATE","REGEXP","MAP","SET","BIGINT","includeImageAlt","includeHtml","blankLine","tokenize","nok","factorySpace","consume","asciiAlpha","regexCheck","asciiAlphanumeric","asciiAtext","asciiControl","asciiDigit","asciiHexDigit","asciiPunctuation","markdownLineEnding","markdownLineEndingOrSpace","markdownSpace","unicodePunctuation","unicodeWhitespace","chunkStart","combineExtensions","syntaxExtension","hook","constructs","decodeNumericCharacterReference","fromCodePoint","characterEscapeOrReference","$2","normalizeIdentifier","resolveAll","normalizeUri","subtokenize","eventsArray","jumps","otherEvent","subevents","_tokenizer","_isInFirstContentOfListItem","subcontent","eventIndex","startPositions","tokenizer","childEvents","gaps","adjust","breaks","sliceStream","defineSkip","_gfmTasklistFirstContentOfListItem","SpliceBuffer","deleteCount","chunkedPush","pushMany","unshiftMany","marker","atBreak","sequence","continuation","containerState","_closeFlow","furtherBlankLines","initialBlankLine","notInCurrentItem","indentConstruct","null","initialSize","inside","onBlank","listItemPrefixWhitespaceConstruct","endOfPrefix","otherPrefix","contBefore","factoryDestination","literalType","literalMarkerType","rawType","stringType","balance","enclosedBefore","enclosed","enclosedEscape","rawEscape","factoryLabel","markerType","labelInside","labelEscape","factoryTitle","factoryWhitespace","labelAfter","markerAfter","destinationBefore","destinationAfter","titleBefore","afterWhitespace","defined","beforeMarker","titleAfter","titleAfterOptionalWhitespace","afterPrefix","furtherStart","headingAtx","contentEnd","contentStart","sequenceOpen","sequenceFurther","setextUnderline","htmlBlockNames","htmlRawNames","concrete","closingTag","markerB","declarationOpen","tagCloseStart","continuationDeclarationInside","commentOpenInside","cdataOpenInside","slash","basicSelfClosing","completeClosingTagAfter","completeAttributeNameBefore","completeEnd","completeAttributeName","completeAttributeNameAfter","completeAttributeValueBefore","completeAttributeValueQuoted","completeAttributeValueUnquoted","completeAttributeValueQuotedAfter","completeAfter","continuationCommentInside","continuationRawTagOpen","continuationClose","continuationCdataInside","continuationStart","blankLineBefore","continuationAfter","nonLazyContinuationStart","continuationStartNonLazy","continuationBefore","continuationRawEndTag","nonLazyContinuation","lineStart","closeStart","startBefore","beforeSequenceClose","sequenceClose","sizeOpen","sequenceCloseAfter","initialPrefix","beforeSequenceOpen","infoBefore","atNonLazyBreak","metaBefore","contentBefore","beforeContentChunk","contentChunk","labelEnd","newEvents","_inactive","_balanced","insideSpan","labelStart","labelEndNok","resourceConstruct","labelEndOk","referenceFullConstruct","referenceNotFull","referenceCollapsedConstruct","resourceBefore","resourceOpen","resourceEnd","resourceDestinationAfter","resourceDestinationMissing","resourceBetween","resourceTitleAfter","referenceFullAfter","referenceFullMissing","referenceCollapsedOpen","labelStartImage","classifyCharacter","attention","openingSequence","closingSequence","nextEvents","_close","movePoint","attentionMarkers","_bufferIndex","schemeOrEmailAtext","emailAtext","schemeInsideOrEmailAtext","urlInside","emailAtSignOrDot","emailLabel","emailValue","returnState","tagOpen","commentEnd","commentClose","lineEndingBefore","cdata","cdataClose","cdataEnd","instructionClose","tagClose","tagCloseBetween","tagOpenBetween","tagOpenAttributeName","tagOpenAttributeNameAfter","tagOpenAttributeValueBefore","tagOpenAttributeValueQuoted","tagOpenAttributeValueUnquoted","tagOpenAttributeValueQuotedAfter","lineEndingAfter","lineEndingAfterPrefix","labelStartLink","tailExitIndex","headEnterIndex","between","contentInitial","flowInitial","createTokenizer","columnStart","resolveAllConstructs","consumed","constructFactory","addResult","onsuccessfulcheck","accountForPotentialSkip","expandTabs","atTab","serializeChunks","main","expectedCode","startBufferIndex","endBufferIndex","sliceChunks","chunkIndex","onreturn","bogusState","listOfConstructs","constructIndex","currentConstruct","handleListOfConstructs","handleMapOfConstructs","handleConstruct","startPoint","startPrevious","startCurrentConstruct","startEventsIndex","startStack","childFlow","childToken","lineStartOffset","continued","documentContinue","checkNewContainers","closeFlow","indexBeforeExits","indexBeforeFlow","exitContainers","documentContinued","flowStart","_gfmTableDynamicInterruptHack","containerConstruct","thereIsANewContainer","thereIsNoNewContainer","containerContinue","flowContinue","writeToChild","endOfFile","chunkInside","continuationConstruct","contentContinue","afterConstruct","createResolver","initializeFactory","resolveAllLineSuffixes","notText","extraResolver","tabs","bufferIndex","postprocess","preprocess","atCarriageReturn","endPosition","definitions","normal","xlink","xLinkActuate","xLinkArcRole","xLinkHref","xLinkRole","xLinkShow","xLinkTitle","xLinkType","xml","caseInsensitiveTransform","xmlnsxlink","xmlnsXLink","aria","ariaActiveDescendant","ariaAtomic","booleanish","ariaAutoComplete","ariaBusy","ariaChecked","ariaColCount","ariaColIndex","ariaColSpan","ariaControls","spaceSeparated","ariaCurrent","ariaDetails","ariaDisabled","ariaDropEffect","ariaErrorMessage","ariaExpanded","ariaFlowTo","ariaGrabbed","ariaHasPopup","ariaHidden","ariaInvalid","ariaKeyShortcuts","ariaLabelledBy","ariaLevel","ariaLive","ariaModal","ariaMultiLine","ariaMultiSelectable","ariaOrientation","ariaOwns","ariaPlaceholder","ariaPosInSet","ariaPressed","ariaReadOnly","ariaRelevant","ariaRequired","ariaRoleDescription","ariaRowCount","ariaRowIndex","ariaRowSpan","ariaSelected","ariaSetSize","ariaSort","ariaValueMax","ariaValueMin","ariaValueNow","ariaValueText","acceptcharset","classname","htmlfor","httpequiv","abbr","allow","boolean","allowPaymentRequest","allowUserMedia","decoding","dirName","overloadedBoolean","fetchPriority","imageSizes","imageSrcSet","inert","onAfterPrint","onAuxClick","onBeforeMatch","onBeforePrint","onBeforeToggle","onBeforeUnload","onBlur","onCanPlay","onCanPlayThrough","onContextLost","onContextMenu","onContextRestored","onCopy","onCueChange","onCut","onDblClick","onDragEnd","onDragEnter","onDragExit","onDragLeave","onDragOver","onDrop","onDurationChange","onEmptied","onEnded","onFocus","onFormData","onHashChange","onInput","onInvalid","onKeyPress","onKeyUp","onLanguageChange","onLoadedData","onLoadEnd","onLoadStart","onMessageError","onMouseEnter","onMouseLeave","onMouseOut","onMouseOver","onOffline","onOnline","onPageHide","onPageShow","onPaste","onPause","onPlay","onPopState","onRateChange","onRejectionHandled","onReset","onResize","onScrollEnd","onSecurityPolicyViolation","onSeeked","onSeeking","onSelect","onSlotChange","onStalled","onStorage","onSubmit","onSuspend","onTimeUpdate","onToggle","onUnhandledRejection","onUnload","onVolumeChange","popover","popoverTarget","popoverTargetAction","shadowRootClonable","shadowRootDelegatesFocus","shadowRootMode","slot","typeMustMatch","writingSuggestions","aLink","archive","borderColor","bottomMargin","charOff","classId","codeBase","codeType","declare","face","hSpace","leftMargin","longDesc","lowSrc","noResize","noHref","noShade","noWrap","prompt","rev","rightMargin","standby","topMargin","valueType","vAlign","vLink","vSpace","allowTransparency","svg","dataType","horizOriginY","navDown","navDownLeft","navDownRight","navLeft","navNext","navPrev","navRight","navUp","navUpLeft","navUpRight","onActivate","onBegin","onEnd","onFocusIn","onFocusOut","onMouseWheel","onRepeat","onShow","onZoom","strokeDashArray","strokeDashOffset","strokeLineCap","strokeLineJoin","strokeMiterLimit","transformOrigin","playbackOrder","timelineBegin","commaOrSpaceSeparated","defaultAction","editable","focusHighlight","fr","hatchContentUnits","hatchUnits","initialVisibility","mediaCharacterEncoding","mediaContentEncodings","mediaTime","overlay","phase","pitch","propagate","requiredFonts","requiredFormats","side","snapshotTime","syncBehavior","syncBehaviorDefault","syncMaster","syncTolerance","syncToleranceDefault","transformBehavior","dash","camelcase","dashes","kebab","hastToReact","caseSensitiveTransform","checks","DefinedInfo","mark","Info","Schema","powers","singleMatcher","multiMatcher","decodeComponents","decodeUriComponent","encodedURI","replaceMap","customDecodeURIComponent","splitOnFirst","isNullOrUndefined","strictUriEncode","encodeFragmentIdentifier","validateArrayFormatSeparator","keysSorter","removeHash","hashStart","parseNumbers","parseBooleans","extract","arrayFormat","arrayFormatSeparator","isEncodedArray","arrayValue","parserForArrayFormat","parameter_","key2","shouldFilter","skipNull","skipEmptyString","keyValueSep","encoderForArrayFormat","objectCopy","parseUrl","url_","parseFragmentIdentifier","fragmentIdentifier","stringifyUrl","getHash","urlObjectForFragmentEncode","exclude","i18nInstance","setI18n","getI18n","voidElement","alreadyWarned","warnOnce","loadedClb","i18n","matchHtmlEntity","htmlEntities","unescapeHtmlEntity","bindI18n","bindI18nStore","transEmptyNodeValue","transSupportBasicHtmlNodes","transWrapTextNodes","transKeepBasicHtmlNodesFor","useSuspense","checkLength","i18nIsDynamicList","getAsArray","nodesToString","i18nOptions","stringNode","childrenArray","keepArray","childIndex","childPropsCount","shouldKeepChild","childChildren","renderNodes","targetString","combinedTOpts","shouldUnescape","emptyChildrenButNeedsHandling","keep","ast","renderInner","rootReactNode","mappedChildren","mapAST","hasValidReactChildren","pushTranslatedJSX","isVoid","dummy","reactNode","astNode","reactNodes","translationContent","newTarget","isValidTranslationWithChildren","isEmptyTransWithHTML","isKnownComponent","wrapTextNodes","Trans","i18nKey","tOptions","i18nFromProps","tFromProps","additionalProps","reactI18nextOptions","react","nodeAsString","hashTransKey","interpolationOverride","translation","useAsParent","defaultTransParent","initReactI18next","I18nContext","ReportNamespaces","usedNamespaces","addUsedNamespaces","getUsedNamespaces","composeInitialProps","ForComponent","i18nInitialProps","getInitialProps","componentsInitialProps","reportNamespaces","initialI18nStore","initialLanguage","i18nFromContext","defaultNSFromContext","usePrevious","useTranslation","notReadyT","optsOrDefaultValue","retNotReady","oldI18nextHasLoadedNamespace","getT","nsMode","setT","joinedNS","previousJoinedNS","boundReset","isInitial","withTranslation","I18nextWithTranslation","forwardedRef","passDownProps","tReady","withRef","Translation","I18nextProvider","useSSR","lngResources","initializedLanguageOnce","withSSR","I18nextWithSSR","plural","selectOrdinal","Skeleton","changelog","emptyPlugins","emptyRemarkRehypeOptions","safeProtocol","deprecations","Markdown","allowedElements","allowElement","disallowedElements","rehypePlugins","remarkPlugins","remarkRehypeOptions","skipHtml","unwrapDisallowed","urlTransform","defaultUrlTransform","deprecation","mdastTree","hastTree","runSync","colon","questionMark","numberSign","remarkParse","remarkRehype","tab","trimLines","trimLine","bail","trough","pipeline","middlewareIndex","fnExpectsCallback","middelware","CallableInstance","Processor","Compiler","attachers","freezeIndex","frozen","transformers","attacher","assertUnfrozen","realFile","vfile","assertParser","assertCompiler","parseTree","realDone","compileTree","compileResult","isUint8Array","processSync","assertDone","assertNode","outputTree","resultingTree","addPlugin","addList","addPreset","entryIndex","primary","currentPrimary","unified","asyncName","looksLikeAVFile","castFactory","tests","anyFactory","checkAsRecord","nodeAsRecord","propsFactory","typeFactory","testFunction","looksLikeANode","pointEnd","pointStart","stringifyPosition","CONTINUE","EXIT","SKIP","visitParents","visitor","parents","subresult","grandparents","toResult","nodeAsParent","testOrVisitor","visitorOrReverse","maybeReverse","VFileMessage","causeOrReason","optionsOrParentOrPlace","legacyCause","note","VFile","cwd","stored","assertNonEmpty","assertPart","dirname","assertPath","extname","stem","fail","minpath","seenNonSlash","firstNonSlashEnd","extnameIndex","unmatchedSlash","startPart","startDot","preDotState","joined","absolute","allowAboveRoot","lastSlashIndex","lastSegmentLength","lastSlash","dots","normalizeString","minproc","urlToPath","third","getPathFromURLPosix","isUrl","fileUrlOrPath"],"sourceRoot":""}